OMRON X4/X7 - Daten der Blutdruckmessgeräte via Bluetooth auslesen
Seit kurzem “darf” ich mich mit dem Thema Blutdruckmessung befassen und habe dazu zwei Geräte vorliegen:
Die mitgelieferte App hat so diverse Probleme. Obwohl die Geräte Daten für zwei Personen erfassen können, beherrscht die App jeweils nur eine Datenquelle. Damit braucht man für jede Kombination von Gerät und Person ein separates Smartphone. Außerdem ist das Senioren-Smartphone meiner Mutter zu alt für die App und ich habe keine Lust, nur deswegen ein neues Handy anzuschaffen.
Glücklicherweise gibt es tolle OpenSource-Software wie den Universal Blood Pressure Manager, um die Geräte auch ganz ohne Cloud-Zwang auszulesen. Und die Software läuft auch bei meiner Mutter auf dem Linux (Ubuntu) Rechner.
Für das X4 braucht man die neueste (noch unveröffentlichte) Version der Software (siehe Kapitel zum X4 Smart weiter unten). Die aktuellste Version hab ich zwischenzeitlich mal als UBPM Linux Release (für Ubuntu 24.04) abgelegt:
- ubpm-1.3.1-ubuntu-24.04.7z
Zur Installationsudo install.sh
aufrufen. Das Programm erfordert die folgende Qt5 Pakete:libqt5serialport5 libqt5charts5 libqt5sql5-sqlite libqt5bluetooth5 libqt5help5 libqt5printsupport5t64
.
Nun ist aber die Kopplung und das Auslesen der Geräte nicht ganz trivial (Auswahl des korrekten Plugins) und es gibt auch noch verschiedene Modelle mit unterschiedlichen Kopplungsanforderungen. Es hat etwas gedauert, bis ich aus beiden Geräte die Daten auslesen konnte, daher schreibe ich hier meine Erkenntnisse und Erfahrungen zum Thema Bluetooth-Kommunikation detailliert auf.
Allgemeines zu den Geräten
Beide Geräte kommunizieren via Bluetooth. Jedes Gerät hat einen Bluetooth-Knopf, der bei das Geräte kurzem Druck in den Auslese-Modus versetzt (es blinkt ein “⎕” auf dem Display) und bei längerem Druck das Geräte in den Pairing-Modus versetzt (es blinkt ein “P” auf dem Display).
Kopplung mit Ubuntu Bluetooth Einstellungen
Ein erster Schritt ist die Bluetooth-Kopplung des Geräts.
Ich habe das Nachfolgende unter Ubuntu 24.04 getestet, aber das Prozedere sollte auf anderen Linux Distros ähnlich funktionieren.
In den Bluetooth-Einstellungen schaltet man die Gerätesuche ein. Das OMRON Gerät schaltet man in den Pairing-Modus. Nun wird das Gerät angezeigt, beispielsweise das X7 Smart als BLESmart_00000259005FBF1192D4 (00:5F:BF:11:92:D4)
Wenn man nun auf verbinden klickt, wird das Geräte gekoppelt und als X7 Smart angezeigt.
Bluetooth Software
Zur Diagnose und Kopplung von Bluetooth Geräten gibt es verschiedenste Tools. Ich stelle hier zwei vor:
Blueman
Blueman ist eine graphische Bluetoothverwaltung:
1
2
3
4
# Installation aus den Ubuntu-Paketquellen
sudo apt install blueman
# Start des Tray-Programms
blueman-tray
Nun erscheint am oberen Bildschirmrand ein Bluetooth-Symbol. Man kann sich hier Informationen zu Bluetoothgeräten anzeigen lassen und die Kommunikation zu Bluetooth-Geräten wird überwacht.
bluetoothctl
Das Konsolenprogramm bluetoothctl kann auch zur Diagnose von Bluetooth-Problemen benutzt werden.
1
2
# Installation aus den Ubuntu-Paketquellen
sudo apt install bluez-tools
Die Verwendung des Programmens wird unten erklärt.
Benötigt das Modell einen Pairing-Key?
Bei OMRON-Geräten gibt es zwei verschiedene Bluetooth-Varianten. Je manchen Modellen muss man vor der Datenübertragung einen Pairing-Key schreiben (einmalig). Bei anderen Modellen ist das nicht notwendig. Herausfinden kann man das über eine Analyse der bereitgestellten Services:
Mit Blueman geht man in die Geräte-Seite und wählt dort das OMRON Gerät aus (entweder als X7 Smart angezeigt oder als BLESmart_00000259005FBF1192D4 oder ähnliches):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
00:5F:BF:11:92:D4
public
BLESmart_00000259005FBF1192D4
BLESmart_00000259005FBF1192D4
0x000000
0x0381
blueman
ja
nein
nein
nein
nein
00001800-0000-1000-8000-00805f9b34fb Generischer Zugang
00001801-0000-1000-8000-00805f9b34fb Generisches Attribut
00001805-0000-1000-8000-00805f9b34fb Zeitdienst
0000180a-0000-1000-8000-00805f9b34fb Geräteinformationen
0000180f-0000-1000-8000-00805f9b34fb Batterie-Dienst
00001810-0000-1000-8000-00805f9b34fb Blutdruck
0000181c-0000-1000-8000-00805f9b34fb Nutzerdaten
5df5e817-a945-4f81-89c0-3d4e9759c07c Proprietär
ecbe3980-c9a2-11e1-b1bd-0002a5d5c51b Proprietär
/org/bluez/hci0
{76: [2, 21, 173, 208, 10, 2, 74, 107, 78, 102, 162, 236, 116, 211, 132, 86, 178, 95, 0, 1, 0, 1, 196], 526: [1, 1, 79, 0, 25, 6, 0, 0]}
Diese Ausgabe gibt Auskunft darüber, was das Gerät liefert.
Ist in dieser Auflistung die UUID ecbe3980-c9a2-11e1-b1bd-0002a5d5c51b aufgeführt, so braucht dieses Gerät einen Pairing-Key.
Mit bluetoothctl erhält man die gleiche Ausgabe wie folgt.
Vor der Verwendung von bluetoothctl alle anderen Bluetooth-Konfigurationstools und -seiten zunächst schließen!
- Das Gerät mit Bluetooth-Taste in den Pairing Modus versetzen (“P” blinkt)
- bluetoothctl starten und scannen einschalten
1
2
3
4
5
6
7
8
9
10
11
bluetoothctl
[bluetooth]# scan on
...
[bluetooth]# [CHG] Device 00:5F:BF:11:92:D4 Name: BLEsmart_00000259005FBF1192D4
[bluetooth]# [CHG] Device 00:5F:BF:11:92:D4 Alias: BLEsmart_00000259005FBF1192D4
[bluetooth]# [CHG] Device 00:5F:BF:11:92:D4 ManufacturerData.Key: 0x020e (526)
[bluetooth]# [CHG] Device 00:5F:BF:11:92:D4 ManufacturerData.Value:
[bluetooth]# 01 09 48 00 12 06 00 00 ..H.....
...
[bluetooth]# scan off
Mein X7-Gerät wird hier unter der Adresse 00:5F:BF:11:92:D4 gefunden.
Die Geräte-Adresse ist hardwareabhängig und bei jedem Gerät anders.
Nun kann man sich die Information über das Gerät mit info <adresse>
anzeigen lassen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[bluetooth]# info 00:5F:BF:11:92:D4
Device 00:5F:BF:11:92:D4 (public)
Name: BLESmart_00000259005FBF1192D4
Alias: BLESmart_00000259005FBF1192D4
Appearance: 0x0381 (897)
Paired: yes
Bonded: yes
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Current Time Service (00001805-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
UUID: Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
UUID: Blood Pressure (00001810-0000-1000-8000-00805f9b34fb)
UUID: User Data (0000181c-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (5df5e817-a945-4f81-89c0-3d4e9759c07c)
UUID: Vendor specific (ecbe3980-c9a2-11e1-b1bd-0002a5d5c51b)
ManufacturerData.Key: 0x020e (526)
ManufacturerData.Value:
01 01 48 00 12 06 00 00 ..H.....
RSSI: 0xffffffd7 (-41)
TxPower: 0x0000 (0)
Auch hier wird die UUID ecbe3980-c9a2-11e1-b1bd-0002a5d5c51b ausgegeben.
Falls man nun versuchen sollte, sich mit dem Gerät zu verbinden (
connect <adresse>
) so schlägt das fehl. Zunächst muss man den Pairing-Key schreiben.
Welcher Modultyp ist es?
Mit der Geräte-Liste (Abschnitt Devices) kann man herausfinden, welcher Typ dem eigenen Gerät entspricht:
- Beim X4 Smart ist es ein HEM-7155T
- Beim X7 Smart ist es ein HEM-7361T
OMRON X7 Smart
Pairing-Schlüssel schreiben
Bei Geräten mit Pairing-Key muss dieser einmalig geschrieben werden. Das kann man entweder mit der UBPM-Software und dem jeweiligen Plugin machen, oder mit einem Python-Script.
Das Schreiben des Pairing-Schlüssels klappt nicht immer und scheint von der Historie der Bluetooth-Verbindungsversuche abzuhängen. Ich hatte schließlich Erfolg, indem ich einen frischen Reboot durchgeführt habe und direkt danach den Pairing-Schlüssel geschrieben habe.
Mit dem alten UBPM Plugin (Softwareversion <= 1.13.0)
- ubpm Software starten
- Konfigurationsdialog öffnen und unter Gerät die jeweilige Import-Erweiterung (aka Plugin) auswählen; bei mir ist das HEM-7361T.so und Änderungen Speichern
- Gerät in Pairing-Modus versetzen (“P” sollte blinken)
- Den Datenimport-Dialog öffnen
- Auf “Gerät entdecken” klicken und warten, bis die Auswahlbox befüllt ist
- Gerät auswählen (falls nicht schon voreingestellt) und auf “Gerät verbinden” klicken und warten, bis unten die Herstellerinfos und Firmware-Version angezeigt wird
- (nur beim ersten Mal) dann den Pairing-Schlüssel schreiben; wenn das erfolgreich war, ändert sich das blinkende “P” in ein “⎕” (blinkendes Viereck)
- schließlich auf “Importieren”-klicken
Hier ist das nochmal als Videoaufzeichnung:
Mit dem neuen, allgemeinen UBPM Plugin (Softwareversion > 1.13.0)
In der neuesten Softwareversion wählt man einfach omron-bluetooth.so aus
- Gerät in Pairing-Modus versetzen (“P” sollte blinken)
- Den Datenimport-Dialog öffnen und Modell wählen
- Entdecken auswählen und dann das Modell in der Dropdown-Liste auswählen (falls nicht schon vorausgewählt)
- Verbinden anklicken und warten, bis unten die Herstellerinfos und Firmware-Version angezeigt wird
- (nur beim ersten Mal) dann den Pairing-Schlüssel schreiben; wenn das erfolgreich war, ändert sich das blinkende “P” in ein “⎕” (blinkendes Viereck)
- schließlich auf “Importieren”-klicken
Hier ist das nochmal als Videoaufzeichnung:
Mit Python
Zunächst lädt man sich die Python-Software omblepy herunter:
- als Quelltextkopie archiviert: omblepy-2025-09-06.7z
- oder den aktuelle Quelltext von der Webseite omblepy
Im Quelltext vom git-repo muss man noch den Schlüssel ersetzen:
von
1
examplePairingKey = bytearray.fromhex("deadbeaf12341234deadbeaf12341234") #arbitrary choise
zu
1
examplePairingKey = bytearray.fromhex("5542504d2d50616972696e674b657921") #upbm key
Nun versetzt man das Gerät in den Pairing-Modus und startet das Script unter Angabe des richtigen Moduls:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$ python3 ./omblepy.py -p -d HEM-7361T
2025-09-08 22:28:10,198 - omblepy - INFO - Attempt to import module for device hem-7361t
To improve your chance of a successful connection please do the following:
-remove previous device pairings in your OS's bluetooth dialog
-enable bluetooth on you omron device and use the specified mode (pairing or normal)
-do not accept any pairing dialog until you selected your device in the following list
Select your Omron device from the list below...
+----+-------------------+-------------------------------+------+
| ID | MAC | NAME | RSSI |
+----+-------------------+-------------------------------+------+
| 0 | 00:5F:BF:11:92:D4 | BLEsmart_00000259005FBF1192D4 | -42 |
| 1 | 70:0C:2F:FB:F4:53 | 70-0C-2F-FB-F4-53 | -59 |
| 2 | 4E:03:E1:F1:DC:A5 | 4E-03-E1-F1-DC-A5 | -73 |
| 3 | 47:0B:A1:63:02:54 | 47-0B-A1-63-02-54 | -75 |
| 4 | C2:89:48:2F:AF:A1 | C2-89-48-2F-AF-A1 | -75 |
| 5 | C0:95:6D:6B:D2:12 | C0-95-6D-6B-D2-12 | -80 |
| 6 | DB:F9:9D:02:A7:D1 | DB-F9-9D-02-A7-D1 | -90 |
| 7 | 56:92:F2:3B:33:EE | 56-92-F2-3B-33-EE | -90 |
| 8 | DB:AA:F2:5D:51:A9 | DB-AA-F2-5D-51-A9 | -90 |
| 9 | 54:BD:79:04:2F:67 | [TV] Samsung 7 Series (49) | -92 |
| 10 | 62:64:C6:69:CE:9F | 62-64-C6-69-CE-9F | -93 |
| 11 | 84:2A:FD:DF:44:F8 | 84-2A-FD-DF-44-F8 | -95 |
| 12 | C7:7C:38:62:5F:26 | C7-7C-38-62-5F-26 | -95 |
| 13 | D0:AE:05:29:DD:2E | D0-AE-05-29-DD-2E | -95 |
| 14 | 41:9E:5B:D0:8A:4E | 41-9E-5B-D0-8A-4E | -97 |
| 15 | 6C:4A:85:45:5F:CE | 6C-4A-85-45-5F-CE | -97 |
| 16 | 61:E5:C4:DF:A8:39 | 61-E5-C4-DF-A8-39 | -98 |
| 17 | DC:97:58:54:A7:71 | MiTV-MOOQ1 | -99 |
| 18 | 66:C6:D2:B3:66:48 | ET-2860 Series | -100 |
| 19 | F0:10:A5:F7:B6:B8 | Sa80b832436e10985C | -101 |
| 20 | 7D:44:52:0B:E2:A8 | 7D-44-52-0B-E2-A8 | -102 |
+----+-------------------+-------------------------------+------+
Enter ID or just press Enter to rescan.
0
2025-09-08 22:28:17,569 - omblepy - INFO - Attempt connecting to 00:5F:BF:11:92:D4.
2025-09-08 22:28:24,160 - omblepy - INFO - Paired device successfully with new key bytearray(b'UBPM-PairingKey!').
2025-09-08 22:28:24,160 - omblepy - INFO - From now on you can connect omit the -p flag, even on other PCs with different bluetooth-mac-addresses.
2025-09-08 22:28:24,782 - omblepy - INFO - unpair and disconnect
2025-09-08 22:28:26,741 - omblepy - ERROR - Bleak AssertionError during disconnect. This usually happens when using the bluezdbus adapter.
2025-09-08 22:28:26,741 - omblepy - ERROR - You can find the upstream issue at: https://github.com/hbldh/bleak/issues/641
2025-09-08 22:28:26,742 - omblepy - ERROR - AssertionError details:
Die Fehlermeldung am Ende kann man ignorieren, solange der Pairing-Key geschrieben wurde.
Bei mir hat das mehrfach nicht funktioniert. Ich habe dann den Rechner neu gestartet und gleich nach dem Login das Python-Script ausgeführt und dann hat es geklappt.
Daten auslesen
Zum Auslesen der Daten braucht man nun das Gerät nur in den Auslese-Modus versetzen (kurz Bluetooth-Taste drücken) und dann kann man über Entdecken, Verbinden, Importieren die Daten sofort in die Software importieren.
OMRON X4 Smart
Beim X4 Smart läuft das Prozedere ähnlich.
Erkennen, ob Pairing-Schlüssel notwendig ist
Dann lässt man sich genau wie beim X7 oben die UUIDs ausgeben.
1
2
3
4
5
6
7
8
9
10
11
12
$ bluetoothctl
Waiting to connect to bluetoothd...[bluetooth]# Agent registered
[bluetooth]# scan on
[bluetooth]# SetDiscoveryFilter success
[bluetooth]# Discovery started
[bluetooth]# [CHG] Controller 48:A4:72:8D:AC:10 Discovering: yes
[bluetooth]# [NEW] Device E7:A6:E2:D4:08:52 BLESmart_000000B5E7A6E2D40852
[bluetooth]# scan off
[bluetooth]# Discovery stopped
[bluetooth]# [CHG] Device E7:A6:E2:D4:08:52 TxPower is nil
[bluetooth]# [CHG] Device E7:A6:E2:D4:08:52 RSSI is nil
[bluetooth]# [CHG] Controller 48:A4:72:8D:AC:10 Discovering: no
Das X4 Smart hat bei mir die Geräte-Adresse E7:A6:E2:D4:08:52. Ausgabe von info
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[bluetooth]# info E7:A6:E2:D4:08:52
Device E7:A6:E2:D4:08:52 (random)
Name: BLESmart_000000B5E7A6E2D40852
Alias: BLESmart_000000B5E7A6E2D40852
Paired: no
Bonded: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Blood Pressure (00001810-0000-1000-8000-00805f9b34fb)
ManufacturerData.Key: 0x020e (526)
ManufacturerData.Value:
01 29 e3 00 3c 2e 00 2e .)..<...
RSSI: 0xffffffd2 (-46)
TxPower: 0x0000 (0)
Bei meinem X4 ist die UUID ecbe3980-c9a2-11e1-b1bd-0002a5d5c51b nicht dabei, also wird kein Pairing-Schlüssel benötigt.
Als Modultyp steht HEM-7155T in der Liste für das X4 Smart-Modell.
In der alten Version des Universal Blood Pressure Managers ( <= 1.13.0) wurde das X4 Smart aber von diesem Modul nicht erkannt, weil es diese UUID nicht geliefert hat. Es half hier nur ein Patchen des Quelltextes im Plugin, der für diese X4 Variante die Check und das Senden des Pairing-Schlüssels deaktiviert hat. In der neuen Version der Software klappt die Datenübernahme.
Daten importieren
Das Gerät muss erst in den Bluetooth-Einstellungen (Ubuntu Konfigurationsdialog) gepairt werden. Das ist wichtig, da sonst die Software zwar das Gerät erkennt und auch eine Verbindung aufbauen kann, aber der Datenimport selbst ohne das Pairing nicht funktioniert.
Dann wählt man in der neuen OPBM Version das generische Omron-Import-Modul omron-bluetooth.so aus. Im neuen universellen Plugin gibt es 3 Varianten des X4 Smart/HEM-7155T, wobei bei mir die Variante HEM-7155T (V3) (eine der Varianten ohne Pairing-Schlüssel) funktioniert hat.
Es ist beim X4 Smart wichtig, dass das Gerät im Pairing-Modus ist (“P” blinkt”). Wenn man nur den Auslese-Modus anschaltet (“⎕” blinkt), funktioniert der Import derzeit nicht und man erhält einen Verbindungsfehler. In diesem Fall unterscheidet sich mein X4 Smart vom X7 Smart.
Falls beim Import die Daten (Datum und Werte) nicht stimmen, sollte man es mit einer anderen Plugin-Version versuchen. Bei mir hat der Import mit der V2-Version zwar auch funktioniert, aber die Werte waren Quatsch.
Allgemeine Dinge, die mir beim Import von OMRON-Daten aufgefallen sind
Beim Import werden stets alle jemals belegten Plätze importiert, unabhängig davon, ob man am Gerät die bisher erfassten Daten gelöscht hat. Das Gerät löscht also die historischen Daten selbst nicht, sondern setzt nur den “benutzte Slots” Zähler zurück. Datenschutz (bei Weitergabe eines Gebrauchtgeräts) geht anders…
UBPM Code Debuggen/Anpassen
Hier noch ein paar Notizen, falls man selbst mal den Code durchgehen will.
Ubuntu 24.04, Qt 5
Benötigte Pakete zusätzlich zu den üblichen Verdächtigen:
- qttools5-dev für Qt Help
- libqt5charts5 für Qt Charts
- libqt5serialport5-dev für Qt SerialPort
- qtconnectivity5-dev für Qt Bluetooth
Zum Debuggen
Im Verzeichnis ubpm/sources/build/Desktop-Debug/mainapp/
den symbolischen Link anlegen:
1
ln -s ../plugins Plugins