You can advertise, connect, perform the handshake and talk with a pump using this script.
Warning
Bluez needs to be patched for it to work!
The pump asks for an MTU of 184 bytes, however we have had trouble if Bluez automatically exchanged to this number.
On Android, we found out that even though the same 184 is exchanged, the app never performs requestMtu() and the data rate seems to stay on the default 23 bytes (at least on the observed device models).
So, the current workaround is to force Bluez by patching it: in src/shared/gatt_server.c function find_info_cb() passes the MTU size encode_find_info_rsp(), which builds the response packet. Just before that call you can hardcode mtu = 23; and after recompilation it should work.
Please consult your distrubtion's guide or the internet on how to re-build system packages.
Setting IO capability to 3 (NoInputNoOutput) is also very important, because the device asks for the MITM flag, but does not support LE Secure Connections. This makes the kernel default to the Just Works method and will not immediately reject the pairing request.