1 poin oleh GN⁺ 2024-10-15 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2024-10-15
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

    • Secara pribadi, menurut saya perusahaan seharusnya tidak boleh “menjual” perangkat yang tidak berfungsi tanpa langganan. Itu adalah model sewa, terutama ketika penyedia layanannya hanya satu
      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-...
    • Oura Ring tampaknya punya akurasi pelacakan yang bagus, berbeda dari kebanyakan smartwatch. Namun data yang dikumpulkannya dan model langganannya terlihat mengerikan
      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

    • Ada. Saya punya Z1 Ring
      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-...
    • Masalah dengan ide itu adalah semua implementasi RFID yang aman mengecualikan pengguna. Artinya, Anda tidak bisa membeli ring/keyfob/implan NFC lalu begitu saja menyalin kartu bank atau kartu transportasi
      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
    • Dangerous Things adalah produsen implan RFID/NFC yang populer, dan mereka menjual ring dual-frequency 125kHz+13.56MHz yang bisa dikloning, tetapi harganya terlalu mahal ($130)
      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
    • Setahu saya produk seperti itu ada. Saya melihat banyak di AliExpress saat mencari writer untuk mengkloning tag akses RFID apartemen saya
      Sepertinya ada juga ring NFC/RFID ganda yang bisa dipakai sebagai NFC biasa sekaligus untuk akses apartemen 125kHz
    • Saya juga tidak akan memakai fitur kesehatan pintar, tetapi alih-alih NFC saya ingin memakainya sebagai pengontrol dan perangkat tampilan
      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...

    • Saya tidak terlalu khawatir. Baterainya sangat kecil, dan kemungkinan dipotting dengan resin, jadi tampaknya kecil kemungkinan rusak
  • 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

    • Mengejutkan bahwa ada cukup banyak pelanggan dengan kontrol nada yang bagus sampai-sampai kegunaan “mendengarkan nyanyian lalu membuat lampu berkedip mengikuti nada” punya pasar
    • Anda bisa membukanya dengan hati-hati. Bisa saja merusak lampu kesayangan Anda, dan pastikan mencabut colokan listriknya terlebih dahulu
      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?

    • Dari pengalaman saya, detak jantung saat istirahat, detak jantung saat tidur, dan variabilitas detak jantung adalah indikator yang baik bahwa penyakit akan datang
    • Saya juga ingin mencari produk yang punya sensor suhu. Sepertinya belum ada sama sekali di kisaran harga ini, ya?
  • Jadi cukup memindai perangkat lalu membacanya? Tidak ada autentikasi sama sekali, dan strukturnya menyiarkan hasil pengukuran secara nirkabel ke siapa pun yang berminat?

    • Konfigurasi yang pada dasarnya tanpa autentikasi cukup umum pada perangkat Bluetooth belakangan ini
      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
    • Antarmuka cincin ini sangat minimal. Sensornya mencakup akselerometer untuk menghitung langkah, dua LED dan fotodioda untuk mendapatkan detak jantung dan oksigen darah, dan di dalamnya hanya ada satu LED status yang menunjukkan status pengisian daya
      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

    • Saya juga memesan hal yang sama. Saya ingin mencoba menambahkan data pelacakan tidur dari cincin ini ke data pelacakan tidur Apple Watch
      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