Documentation and python library for decoding omnipod communications. Join the Slack channel to discuss this work.
We have figured out the RF modulation. See the RF Modulation wiki page for more details and tools. We have also figured out packet structure, including the packet CRC and message CRC(!) We are now working on decoding meaning of the bytes in the body for each of the Commands.
There are two ways we could use help, beyond trying to crack the two byte crc at the end of messages (though if you want to tackle that, please do!):
- Capture data from different pods and commands using omni_listen_rfcat. If you can document what was being done with the PDM while the packets were recorded, that would be a plus, but raw data can be helpful too. Submit these as gists or post them to #shared-files in the Slack channel.
- Start decoding fields for individual commands. Even without knowing how to generate the CRC, the raw data for commands and responses is clear, so it is possible to start decoding which bytes mean what. A good way to start doing this is to repeatedly perform a certain type of action on the PDM tweaking 1 thing each time, and inspecting the generated packets to see which bytes differ.
One of the following. If you use the TI stick, you will need to flash firmware onto it using a CC-Debugger.
Prerequisites:
- python 2.7
- pip
- rfcat
- PyUSB - you can install this with pip:
pip install pyusb
, orsudo pip install pyusb
- On mac, you'll need libusb.
brew install libusb
(If you don't have Homebrew installed, go here first: https://brew.sh/) - Tip: You may need to install the dateutil package at https://pypi.python.org/pypi/python-dateutil. Extract it to somewhere and run the command:
python setup.py install
You can install openomni in editable mode like this:
git clone https://github.com/openaps/openomni.git
cd openomni
pip install -e .
** Note: You may need to add 'sudo' before the pip install line if you are using a system python install.
** Note: You can capture packets by plugging an RFCat into a USB port -- then go to the command line, and navigate to this directory: /openomni/bin/ and type:
omni_listen_rfcat
Then issue commands from your PDM and they'll appear at the command line.
=======
** Please note the details below are related to a project created to better understand how the omnipod communicates **
Join the Slack channel to discuss this work.
(To view, you must be logged into the OmniAPS Slack channel. Click here to join.)
- @dan
- @larsonlr
- @t1djoe
- @joakimornstedt
- @pete
- @marius
- @DanaMLewis
- @Garidan
- @SeattleBrighton
- Find out more about the NightScout community here.
- Find out more about the OpenAPS open source DIY artificial pancreas project here.
- Thanks for supporting this effort!!
- All code updates require the use of Pull Requests.
- Documentation updates can be made directly on master.
https://files.slack.com/files-pri/T0B2X082E-F0D390KTP/download/pod_datacap_23oct2015.odt