Cli tool to read records from Omron Bluetooth-LE measurement instruments
operating system / hardware | supported | install instruction / comment |
---|---|---|
win10 | ✅ | install python, enable installer checkbox add to path in cmd pip install terminaltables bleak |
win11 | ❌ | instructions of win10 work in principle, but win11 ble pairing dialog timeout is only 1 second. |
nixos23.05 | ✅ | in configuration.nix, set hardware.bluetooth.enable = true; . For temporary python shell:nix-shell -p python3.11 python311Packages.bleak python311Packages.terminaltables |
debian11/12 | ❓/❌ | unreliable, depends on bt-hardware / bluez-version if pairing will work. Install python and packages with apt install python3.12 pip3 install bleak terminaltables |
raspberry pi os + PI 4B / 5 |
✅ | see debian 12 for install instructions |
mac | ❌ | the used bluetooth library bleak is missing the pairing feature on osx |
all os + esp32 |
✅ | see under-development esp32 bridge version. |
For the first time pairing process you need to use the -p flag and enable pairing mode by holding the bluetooth button until you see the blinking -P- in the display:
python ./omblepy.py -p -d HEM-7322T
Linux might start python2.X, use the correct command to launch a python3.X interpreter on your machine e.g. python3
.
After the first connection the -p flag can be omitted, even when executing omblepy on a different device:
python ./omblepy.py -d HEM-7322T
If you preform this pairing for ubpm, just use one of the supported devices (e.g. -d HEM-7322T
), even if your device model is different. As far as I know the pairing process is simmilar for all omron devices. If you use an unsupported device it is expected that the pairing will work and that the -P- on the display of the omron device will change to a small square. But the tool will crash futher in the readout, because the data format / readout commands for the stored records are different. Nevertheless your omron device is now bound to the mac address of your pc and ubpm should work without mac address spoofing.
If you see the message "Could not enter key programming mode." or "Failure to programm new key." the pairing procedure did NOT work. Please see the troubleshooting section and if the problem persists please open an issue.
Success is indicated by the message "Paired device successfully with new key".
flag | alternative long flag | always required | required on first connection | potentialy dangerous eeprom write | description | usage example |
---|---|---|---|---|---|---|
-h |
--help |
- | - | - | display help for all possible flags, similar to this table | python3 ./omblepy.py -h |
-d |
--device |
✔️ | ✔️ | - | select which device libary will be loaded from here | python3 ./omblepy.py -d HEM-7322T |
-p |
--pair |
❌ | ✔️ | - | use to write pairing key on first connection with this pc | python3 ./omblepy.py -d HEM-7322T -p |
-m |
--mac |
❌ | ❌ | - | select omron devices mac and skip bluetooth scan and device selection dialog | python3 ./omblepy.py -d HEM-7322T -m 11:22:33:44:55:66 |
-n |
--newRecOnly |
❌ | ❌ | ❗ | instead of downloading all records, check and update the "new records couter" and only transfer new records | python3 ./omblepy.py -d HEM-7322T -n |
-t |
--timeSync |
❌ | ❌ | ❗ | synchronize omron internal clock with system time | python3 ./omblepy.py -d HEM-7322T -t |
--loggerDebug |
❌ | ❌ | - | displays every ingoing and outgoing data for debugging purposes | python3 ./omblepy.py -d HEM-7322T --loggerDebug |
Potentialy dangerous, referes to the possibility to mess up the calibration data for the pressure sensor, which is likely stored in the eeprom in the settings region.
This is most important when you are trying to add support for a new device.
device model | sold under name | pairing | basic data readout | new record counter | time sync | contributors / testers / help by |
---|---|---|---|---|---|---|
HEM-7150T | BP7250 | ✔️ | ✔️ | ❓ | ❓ | Toei79, userx14 |
HEM-7155T | M400 / M4 | ✔️ | ✔️ | ✔️ | ✔️ | dromie, RobertWojtowicz |
HEM-7322T | M700 Intelli IT | ✔️ | ✔️ | ✔️ | ✔️ | userx14 |
HEM-7342T | BP7450 | ✔️ | ✔️ | ❓ | ❓ | Toei79, userx14 |
HEM-7361T | M500 Intelli IT / M7 Intelli IT | ✔️ | ✔️ | ✔️ | ✔️ | LazyT, userx14, zivanfi |
HEM-7530T | Omron Complete | ✔️ | ✔️ (no EKG) | ❌ | ❌ | Toei79, userx14 |
HEM-7600T | Omron Evolv | ✔️ | ✔️ | ✔️ | ✔️ | vulcainman |
✔️=tested working, ❓=not tested , ❌=not supported yet
Please open an issue if you can test a feature or an currently unsupported device.
It is potentially dangerous to write to the eeprom on devices where the eeprom layout is unknown (see Flags table),
since the calibration data for the pressure sensor is likeley also stored there.
--loggerDebug
flag and please open an issue.sudo systemctl restart bluetooth
.sudo rm -r /var/lib/bluetooth/$yourBtCardMacAddress
.bluetoothctl
to confirm pairing dialogs by typing yes
when promped, some graphical interfaces will not show the pairing dialog for the second adapter.The general communication is handled in the first 250 lines of omblepy.py.
PC -> omron device command type bytes | function | packet size |
---|---|---|
0000 |
start of transmission / read device id from eeprom | 0x08 bytes with checksum |
0100 |
read data from eeprom | 0x08 bytes with checksum |
01c0 |
write data to eeprom | 0x08 bytes + sizeof(data to write) |
0f00 |
end of transmission | 0x08 bytes |
omron device -> PC response type bytes | function | packet size |
---|---|---|
8000 |
response start transmission | 0x18 bytes with checksum |
8100 |
response read data | 0x08 bytes + sizeof(attached data read from eeprom) |
81c0 |
response write data | same size as corresponding write command |
8f00 |
response end transmission | 0x08 bytes |
Example message sent to request a read of 0x26 bytes starting from address 0x0260: messagelength | command type | start address | readsize | padding | crc, such that all bytes xored = 0 |
---|---|---|---|---|---|
0x08 | 0x0100 | 0x0260 | 0x26 | 0x00 | 0x4d |
A huge thank you goes to LazyT and his UBPM project which provided extremely usefull insight how the reception with multiple bluetooth channels works.
The export2garmin project can be used to import the data from the omron device into Garmin Connect.
The USB communcation of selected omron medical equipment is implemented by libomron and shares some simmilarities with the bluetooth communication.