- Proyek ini bertujuan membaca data kesehatan dan aktivitas secara lokal dari smart ring Colmi R02 berbiaya rendah, dengan target penggunaan 100% offline tanpa aplikasi cloud
- Menargetkan Colmi R02·R06·R10, dan memberikan aturan praktis bahwa jika deskripsi produk menyebut penggunaan aplikasi QRing, kemungkinan perangkat tersebut kompatibel
- Saat ini telah berhasil direkayasa balik fitur detak jantung real-time·SPO2, log langkah·detak jantung·tidur, pengaturan waktu, hingga pengukuran “stres”, meski masih ada bagian yang belum tuntas dalam interpretasi log langkah
- CLI dapat dipakai setelah instalasi
pipx untuk menjalankan pemindaian BLE, pengukuran real-time, sinkronisasi SQLite, kueri info perangkat, pengiriman perintah mentah, reboot, dan pengaturan waktu
- Komunikasi memakai BLE GATT dan struktur paket 16 byte, serta dapat diakses tanpa binding atau kunci keamanan, sehingga praktis tetapi penilaian privasi tetap menjadi tanggung jawab pengguna
Klien offline untuk smart ring seri Colmi R02
- colmi_r02_client adalah klien Python open source untuk membaca data dari smart ring seri Colmi R02
- Proyek ini menekankan penggunaan 100% open source dan 100% offline
- Colmi R02 adalah smart ring atau wearable kebugaran di kisaran harga $20 dan memiliki sensor berikut
- Akselerometer
- Pelacakan langkah
- Pelacakan tidur
- Gestur
- Detak jantung (HR)
- Saturasi oksigen darah (SPO2)
- Jalur penemuan perangkat ini dikaitkan dengan karya atc1441 ATC_RF03 dan ulasan Hackaday
Perangkat kompatibel dan jalur pembelian
- Perangkat yang sepenuhnya kompatibel adalah sebagai berikut
- Colmi R02
- Colmi R06
- Colmi R10
- Ada aturan praktis bahwa jika daftar produk menyarankan penggunaan aplikasi QRing, kemungkinan perangkat itu kompatibel dengan klien ini
- Tautan pembelian yang disediakan adalah AliExpress, dan jika tautannya mati cukup cari “COLMI R02”
- Ada contoh pembelian dari “Colmi official store” seharga CAD 22 termasuk pengiriman
Fitur yang sudah direkayasa balik dan pekerjaan yang tersisa
- Fitur yang saat ini sudah berfungsi atau telah dianalisis adalah sebagai berikut
- Detak jantung real-time dan SPO2
- Log langkah
- Log detak jantung periodik
- Pengaturan waktu ring
- Pengaturan frekuensi log HR
- Log SPO2
- Pelacakan tidur
- Pengukuran “stres”
- Untuk log langkah, pembagian hari masih belum sepenuhnya dipahami
- Fitur yang direncanakan adalah sebagai berikut
- Menambahkan lebih banyak fitur CLI
- Output yang lebih rapi untuk data detak jantung dan langkah
- Antarmuka web sederhana
Cara pakai lewat command line
- Sangat disarankan memasang pipx agar paket Python bisa dikelola seperti program mandiri
- Perintah instalasinya adalah sebagai berikut
pipx install git+https://github.com/tahnok/colmi_r02_client
- Pencarian ring di sekitar dijalankan dengan
colmi_r02_util scan
colmi_r02_util scan
Found device(s)
Name | Address
--------------------------------------------
R02_341C | 70:CB:0D:D0:34:1C
- Setelah alamat BLE didapat, Anda bisa membaca detak jantung real-time
colmi_r02_client --address=70:CB:0D:D0:34:1C get-real-time heart-rate
Starting reading, please wait.
[81, 81, 79, 79, 79, 79]
- Data ring dapat disinkronkan ke SQLite
colmi_r02_client --address=3A:08:6A:6F:EB:EC sync
Writing to /home/wes/src/colmi_r02_client/ring_data.sqlite
Syncing from 2024-12-01 01:43:04.723232+00:00 to 2024-12-01 02:03:20.150315+00:00
Done
- Skema database tersedia di database_schema.sql
- Bantuan CLI terbaru dapat dilihat dengan
colmi_r02_client --help
- Perintahnya mencakup fitur berikut
- Melihat log detak jantung
- Melihat dan mengatur pengaturan log detak jantung
- Melihat detak jantung real-time
- Melihat data langkah
- Melihat info perangkat dan level baterai
- Mengirim perintah mentah
- Me-reboot ring
- Mengatur waktu ring
- Menyinkronkan data ring ke SQLite
Library dan dokumentasi
Protokol komunikasi BLE
- Catatan analisis mentah dirangkum di notes.tahnok.ca, dan titik awalnya adalah 2024-07-07 Smart Ring Hacking
- Ring dapat dibaca dan ditulis melalui BLE
- Tidak memerlukan binding atau kunci keamanan untuk mulai menggunakannya
- Dari sisi keamanan ini mungkin bukan hal yang baik, tetapi dijelaskan bahwa jangkauan ring sangat kecil dan penulis tidak terlalu khawatir soal kebocoran jumlah langkah atau info detak jantung
- Keputusan akhir diserahkan kepada pengguna
- Ring memiliki layanan BLE GATT dengan UUID berikut
6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
- Ada dua characteristic penting
- RX
6E400002-B5A3-F393-E0A9-E50E24DCCA9E: target untuk menulis
- TX
6E400003-B5A3-F393-E0A9-E50E24DCCA9E: target untuk berlangganan, tempat menerima respons paket yang dikirim ring
- Struktur ini sangat mirip dengan Nordic UART Service dan komunikasi UART/Serial pada umumnya
Struktur paket 16 byte
- Ring berkomunikasi menggunakan paket 16 byte baik saat mengirim maupun menerima
- Byte pertama selalu berperan sebagai perintah, tag, atau tipe
- Misalnya paket permintaan level baterai dimulai dengan
0x03
- Paket respons juga dimulai dengan
0x03
- Byte terakhir selalu merupakan checksum/crc
- Empat belas byte di tengah adalah subdata atau data payload
- Beberapa permintaan memerlukan interpretasi beberapa respons sekaligus untuk mendapatkan datanya
- Struktur paket permintaan dan respons untuk fitur tertentu bisa dilihat di source code fitur tersebut
- Pasangan permintaan-respons yang telah diverifikasi dan interpretasi data yang dapat dibaca manusia juga bisa dijadikan referensi di test
Tautan terkait
1 komentar
Komentar Hacker News
Saya menantikan untuk mengutak-atik ini. Baru saja pesan satu. Saya sudah pernah memakai dua Oura Ring, dan tidak merekomendasikannya
Saya tidak tahu seberapa bisa diandalkan benda ini, tapi harganya $14, bukan $300, dan juga tidak meminta bayaran bulanan untuk mengakses API yang setengah matang
Entah jual ring seperti Garmin dan sertakan keanggotaan seumur hidup secara gratis https://connect.garmin.com/, atau sewakan/pinjamkan perangkat lewat kontrak dan tarik biaya bulanan. Jangan lakukan keduanya
Oura mulai dari 469 CAD https://ouraring.com/product/rings/oura-ring-4/silver, ditambah 7.99 CAD per bulan https://support.ouraring.com/hc/en-us/articles/360052018753-...
Saya sangat menantikan ring pelacak tidur serupa yang bisa dipakai offline dengan sesuatu seperti Gadgetbridge
Apakah ada ring serupa yang punya NFC?
Fitur kesehatan pintar tidak akan saya pakai, dan tampak seperti mainan kesehatan berbasis data. Sebaliknya, NFC bisa punya ratusan kegunaan, dari pembayaran hingga akses masuk dan kartu transportasi
Memasukkan token keamanan seperti untuk pembayaran atau membuka pintu memang mungkin, tapi bisa cukup rumit. Karena area ring yang dikenali kecil, kadang sulit menemukan posisi penerima saat dipakai dengan ponsel
Selain itu, perangkat lunaknya level rendah dan rewel. Saya tidak sengaja membuat ring saya menjadi mode hanya-baca secara permanen
Ulasannya ada di https://shkspr.mobi/blog/2024/02/giving-the-finger-to-mfa-a-...
Implementasi yang memungkinkan pengguna melakukan itu keamanannya sangat lemah, dan meski masih cukup umum dipakai, perlahan mulai disingkirkan. Jadi tidak ada cara, kecuali itu sistem yang Anda kelola sendiri atau Anda sangat akrab dengan orang IT-nya
Dulu saya membeli “V1” saat harganya $60, dan kalau Anda tahu cara menanganinya dengan benar, memang berfungsi. Saya juga melihat ring di AliExpress yang mengklaim mendukung fungsi yang sama, tetapi belum mencobanya sendiri
Sepertinya ada juga ring NFC/RFID ganda yang bisa dipakai sebagai NFC biasa sekaligus untuk akses apartemen 125kHz
Apakah ada ring dengan sentuhan atau tombol fisik? Lebih bagus lagi kalau ada roda dengan klik taktil. Untuk perangkat tampilan, saya membayangkan beberapa LED RGB individual, tapi cara lain juga tidak masalah
Seberapa amankah perangkat murah seperti ini? Apakah harus khawatir soal baterai meledak? Saya menemukan tulisan bahwa hal seperti itu pernah terjadi pada Oura Ring: https://www.reddit.com/r/ouraring/comments/s1fave/ring_batte...
Hardware benar-benar makin murah! Tapi software-nya…
Saya membeli lampu meja seharga $20 yang berisi lampu LED, penerima Bluetooth, jam dan alarm, bahkan pengisi daya nirkabel iPhone. Ada mikrofonnya juga, jadi bisa saja men-stream semua percakapan saya ke suatu tempat; tujuan resminya adalah mendengarkan saya bernyanyi lalu membuat lampu berkedip mengikuti nada
Ada juga aplikasi praktis untuk mengatur jam dan lampu. Namun karena cacat software, alarm berbunyi setiap malam pada 01:00 AM. Tidak bisa dimatikan lewat aplikasi resmi, dan rasanya bukan benda yang dibuat oleh programmer sungguhan. Meski begitu, sepertinya ada bug di suatu tempat di Bluetooth stack, jadi mungkin saya bisa mendapatkan akses root ke lampu itu dan memperbaikinya sendiri… kalau ada waktu
Saya berharap produsen hardware tanpa nama setidaknya menyertakan kit hacking minimal di kotak produknya
Perangkat pintar seperti ini sering meninggalkan port debug di papan, sehingga mudah diakses dengan clamp
Jika melihat pull request GadgetBridge[0] yang disebut dingensundso, ada situs bagus yang mendokumentasikan BLE API cukup banyak, sampai ke perintahnya: https://colmi.puxtril.com/
[0]: https://news.ycombinator.com/item?id=41834048
Terlihat menarik. Apakah ada cincin serupa yang juga punya sensor suhu? Akan menarik kalau ada aplikasi open source yang bisa mendeteksi apakah kita akan sakit satu-dua hari sebelumnya, seperti cincin Oura atau aplikasi Vitals baru di Apple Watch
Atau adakah yang tahu apakah itu mungkin hanya dengan sensor yang ada di cincin ini?
Jadi cukup memindai perangkat lalu membacanya? Tidak ada autentikasi sama sekali, dan strukturnya menyiarkan hasil pengukuran secara nirkabel ke siapa pun yang berminat?
Ini memang jadi masalah untuk hal seperti keyboard tempat memasukkan kata sandi, tetapi kalau sebatas tetangga mengintip termometer ruang tamu saya, atau seseorang mengintip strap detak jantung saya saat saya lewat joging, rasanya secara praktik bukan masalah besar
Pada masa buruk Bluetooth dulu, banyak perangkat tanpa layar yang meng-hardcode kode pairing sebagai 000000. Toh keamanannya juga tidak bertambah banyak. Berbeda dari perangkat yang terhubung ke internet, ini bukan struktur yang setiap saat terekspos ke miliaran troll di seluruh dunia
Pada akhirnya, tanpa aplikasi ini nyaris berupa perangkat pengumpul data murni yang hampir tidak bisa diajak berinteraksi. Bisa saja dibuat agar masuk ke mode pairing dengan mengetuk permukaannya, tetapi saat ini ia akan pairing dengan perangkat apa pun yang memintanya
Saya berharap ada yang membuat firmware kustom untuk cincin ini. Ada sebagian pekerjaan di proyek ATC_RF03 yang ditautkan, tetapi saya belum tahu apakah masih ada yang terus mengerjakannya
Keren. Saya sudah memakai Apple Watch, tetapi tetap memesan satu yang $18 dari Temu
Saya suka gagasan barang yang bisa di-interface langsung untuk mengambil data real-time, tanpa memasang aplikasi ponsel sebagai perantara
Beberapa bulan lalu lewat video YouTube ini[1], saya tahu bahwa semua perangkat pelacak tidur cukup tidak akurat jika dibandingkan dengan polisomnografi yang benar. Namun cara masing-masing perangkat meleset itu berbeda-beda
[1]: https://www.youtube.com/watch?v=mjOYhxLJP90
Apakah ada yang tahu apakah akselerometer di cincin-cincin seperti ini cukup presisi untuk mendeteksi jatuh? Saya membayangkan pasien lansia yang menolak smartwatch atau perangkat yang “terlihat seperti untuk orang tua”
Ada banyak tambahan hacking yang bagus di https://github.com/atc1441/ATC_RF03_Ring/issues/13
Sebagai catatan, @tahnok, pekerjaan utama saya adalah reverse engineering BLE untuk perangkat kelas medis, jadi saya ingin ikut mengutak-atik ini bersama