Welcome to the openomni wiki! Here we describe how the Omnipod and PDM communicate with each other.
Because of the pod's safety mechanism of erring out when it gets direction from two devices, we have to completely replicate the PDM. Sending a single basal will not be enough. It's the initialization, setting the programs, etc. And we have to have the ability to set up at least some of the basic profiles in whatever application we choose to program the pod so that it can have the normal basals in addition to all the temporary changes. Read further if you want to help writing device drivers for use with OpenAPS or AndroidAPS in combination with an Omnipod!
How to read PDM/POD messages
We first started decoding with this Python openomni RFcat reader, but when we needed extra data from the sub messages which were being send, we switched to a more detailed C program running on Linux to sniff RF packets using a much cheaper RTLSDR dongle.
Run Linux or create a Virtual Machine with Linux using Virtualbox or Parallels and go to this repo to install the software: https://github.com/ps2/rtlomni
For the previously used openomni setup you can follow the readme guide on OSX computers on the main page. or for a windows machine this install guide: Alternate installation instructions for using RFcat
- The protocol is described top-to-bottom at Protocol.
- Communications between PDM and pod are sent over radio frequencies.
- The lowest level of information exchange is packet exchange.
- Packets are assembled into a specific message structure.
- We've managed to get the CRC and Nonce decoded to establish a proper communication between the PDM and POD.
- We are currently working on understanding the different Message Types.
How to help
Please add pages using this convention containing packet captures, along with what you were doing to cause the packet exchange. For example, if it's a temp basal command, describe the % change and duration you selected in the UI, and then add your capture here:
We are still focussing on failures with the Pod. So if you can help record these types that would be great!
We also need help in development of 3 types of device drivers to integrate in the 3 main solutions currently available: