- 低価格の Colmi R02スマートリング から健康・アクティビティデータをローカルに読み出すためのプロジェクトで、クラウドアプリなしで 100%オフライン 利用を目指す
- Colmi R02・R06・R10が対象で、製品説明に QRingアプリ の使用が記載されていれば互換性がある可能性が高いという経験則を示している
- 現在、リアルタイム心拍数・SPO2、歩数・心拍・睡眠ログ、時刻設定、「ストレス」測定までリバースエンジニアリング済みだが、歩数ログの解釈にはまだ未解明の部分がある
- CLIは
pipx でインストール後、BLEスキャン、リアルタイム測定、SQLite同期、デバイス情報取得、生コマンド送信、再起動、時刻設定を実行できる
- 通信は BLE GATT と16バイトのパケット構造を使用し、バインディングやセキュリティキーなしでアクセスできて便利だが、プライバシー上の判断はユーザーに委ねられる
Colmi R02系スマートリング向けオフラインクライアント
- colmi_r02_client はColmi R02系スマートリングのデータを読み取るためのオープンソースPythonクライアント
- プロジェクトは 100%オープンソース、100%オフライン での利用を強調している
- Colmi R02は約 20ドル 価格帯のスマートリングまたはフィットネスウェアラブルで、次のセンサーを含む
- 加速度計
- 歩数トラッキング
- 睡眠トラッキング
- ジェスチャー
- 心拍数(HR)
- 血中酸素飽和度(SPO2)
- リングを知った経緯として、atc1441の ATC_RF03 の取り組みと Hackaday coverage を挙げている
互換デバイスと購入経路
- 完全に互換性のあるデバイスは次の通り
- Colmi R02
- Colmi R06
- Colmi R10
- 製品一覧で QRingアプリ の使用が案内されていれば、このクライアントと互換性がある可能性が高いという経験則がある
- 購入リンクとして AliExpress を提供しており、リンク切れの場合は「COLMI R02」で検索すればよい
- 「Colmi official store」で送料込み 22カナダドル で購入した事例がある
リバースエンジニアリング済みの機能と残作業
- 現在動作する、または解析済みの機能は次の通り
- リアルタイム心拍数 とSPO2
- 歩数ログ
- 定期的な心拍ログ
- リングの時刻設定
- HRログ頻度の設定
- SPO2ログ
- 睡眠トラッキング
- 「ストレス」測定
- 歩数ログについては、1日がどのように分割されるのかがまだ完全には理解されていない状態
- 予定されている機能は次の通り
- より多くの CLI機能 の追加
- 心拍数と歩数データの見やすい出力
- 簡単なWebインターフェース
コマンドラインでの使い方
- Pythonパッケージを独立実行プログラムのように管理するには、pipx のインストールを強く推奨する
- インストールコマンドは次の通り
pipx install git+https://github.com/tahnok/colmi_r02_client
- 近くのリングの検索は
colmi_r02_util scan で実行する
colmi_r02_util scan
Found device(s)
Name | Address
--------------------------------------------
R02_341C | 70:CB:0D:D0:34:1C
- BLEアドレスを取得すると、リアルタイム心拍数を読み取れる
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]
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
- データベーススキーマは database_schema.sql にある
- 最新のCLIヘルプは
colmi_r02_client --help で確認する
- コマンドには次の機能が含まれる
- 心拍ログの照会
- 心拍ログ設定の照会と設定
- リアルタイム心拍数の照会
- 歩数データの照会
- デバイス情報とバッテリー残量の照会
- 生コマンド送信
- リングの再起動
- リングの時刻設定
- リングデータのSQLiteへの同期
ライブラリとドキュメント
BLE通信プロトコル
- 生の分析ノートは notes.tahnok.ca に整理されており、出発点は 2024-07-07 Smart Ring Hacking
- リングは BLE で読み書きできる
- 開始するのにバインディングやセキュリティキーは不要
- セキュリティ面では好ましくない可能性があるが、リングの範囲は非常に狭く、歩数や心拍情報の露出を大きく心配していないという説明が付いている
- 最終的な判断はユーザーに委ねられる
- リングには次のUUIDの BLE GATTサービス がある
6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
- 重要なcharacteristicは2つ
- RX
6E400002-B5A3-F393-E0A9-E50E24DCCA9E: 書き込み先
- TX
6E400003-B5A3-F393-E0A9-E50E24DCCA9E: 購読先で、リングが送信したパケット応答を受け取る場所
- この構造は Nordic UART Service と一般的なUART/Serial通信に非常によく似ている
16バイトのパケット構造
- リングは送信・受信の両方で 16バイトパケット により通信する
- 1バイト目は常にコマンド、タグ、タイプの役割を持つ
- 例えばバッテリー残量要求パケットは
0x03 で始まる
- 応答パケットも
0x03 で始まる
- 最後のバイトは常に checksum/crc
- 中央の14バイトは subdata またはペイロードデータ
- 一部の要求は、複数の応答をまとめて解釈しないとデータを得られない
- 特定機能の要求・応答パケット構造は、その機能のソースコードで確認できる
- 検証済みの要求・応答ペアと、人間が読めるデータ解釈はテストでも参考にできる
関連リンク
1件のコメント
Hacker Newsのコメント
これを触ってみるのが楽しみ。さっき1つ注文した。Ouraリングは2つも使ってみたけど、おすすめしない
これがどれほど信頼できるかは分からないけど、$14だったし、$300でもなく、微妙なAPIにアクセスするために毎月お金を払えとも言ってこない
Garminのようにリングを売って生涯メンバーシップを無料で含めるか https://connect.garmin.com/、あるいは契約でデバイスをリース/レンタルして月額利用料を取るべき。両方やってはいけない
Ouraは469 CADからで https://ouraring.com/product/rings/oura-ring-4/silver、さらに月額7.99 CADがかかる https://support.ouraring.com/hc/en-us/articles/360052018753-...
Gadgetbridgeのようなものでオフラインで使える、似たような睡眠トラッキングリングを切実に待っている
NFC付きの似たようなリングもあるのだろうか?
スマートヘルス機能は使い道がなく、データ駆動の健康系おもちゃのように見える。一方でNFCなら、決済から入退室、交通系カードまで何百通りもの用途が見つかる
決済やドア解錠のようなセキュリティトークンを入れることも可能だが、かなり複雑になり得る。リングは読み取り対象が小さいので、スマートフォンにかざして使うときに受信位置を見つけにくいことがある
それにソフトウェアが低レベルで扱いづらい。うっかり自分のリングを永久的な読み取り専用モードにしてしまった
レビューは https://shkspr.mobi/blog/2024/02/giving-the-finger-to-mfa-a-... にある
ユーザーがそれをできる実装はセキュリティが非常に弱く、まだ広く使われてはいるものの、徐々に廃止されつつある。だから自分で管理しているシステムでないか、IT担当者ととても親しい場合でない限り、方法はない
以前$60だったときに「V1」を買ったが、ちゃんと扱い方を知っていれば実際に動く。AliExpressでも同じ機能に対応すると主張するリングを見かけたが、まだ自分では試していない
通常のNFCとしても使え、125kHzのアパート入館にも使えるNFC/RFIDデュアルリングもあるようだ
タッチや物理ボタンがあるリングはあるだろうか?クリック感のあるホイールならさらに良い。表示装置としては複数の個別RGB LEDを想像しているが、別の方式でも構わない
こういう低価格デバイスはどれくらい安全なのだろう?バッテリー爆発を心配すべき? Ouraリングでそういうことがあったという投稿を見つけた: https://www.reddit.com/r/ouraring/comments/s1fave/ring_batte...
ハードウェアは本当に安くなっている! でもソフトウェアは……
$20のベッドサイドランプを買ったら、LED照明、Bluetoothレシーバー、時計とアラーム、iPhoneのワイヤレス充電まで入っていた。マイクも付いていて、私の会話をすべてどこかへストリーミングできるが、表向きの目的は私の歌を聞いて音程に合わせて照明を点滅させることだ
時計と照明を設定する便利なアプリも付属している。ところがソフトウェアの不具合で、毎晩01:00 AMにアラームが鳴る。公式アプリでは止められず、本物のプログラマーが作ったものではないように見える。それでもBluetoothスタックのどこかにバグがあって、ランプのroot権限を取得して自分で直せそうではある……時間があれば
無名のハードウェアメーカーが、製品の箱に最低限のハッキングキットくらい入れてくれるといいのに
こういうスマートデバイスは基板にデバッグポートが残っていることが多く、クランプで簡単にアクセスできる
dingensundsoが言及していたGadgetBridgeのプルリクエスト[0]を見ると、BLE APIがコマンドまでかなり詳しく文書化された良いサイトがある: https://colmi.puxtril.com/
[0]: https://news.ycombinator.com/item?id=41834048
面白そう。温度センサーも付いている似たようなリングはあるのだろうか? OuraリングやApple Watchの新しいVitalsアプリのように、オープンソースアプリで1〜2日前に体調を崩しそうか検知できたら面白そう
それとも、このリングに入っているセンサーだけでも可能なのか知っている人はいる?
ただデバイスをスキャンしてから読み取ればいいだけ? 認証がまったくなく、興味のある誰にでも測定値を無線でばらまく仕組みなの?
パスワードを入力するキーボードのようなものでは問題になるが、隣人が自分のリビングの温度計をのぞき見したり、自分がジョギングで通り過ぎるときに誰かが心拍数ストラップをのぞき見したりする程度なら、実際には大きな問題には思えない
Bluetoothの良くなかった昔には、画面のない機器がペアリングコードを単に000000にハードコードしていることも多かった。いずれにしてもセキュリティが大きく高まるわけではなかった。インターネット接続機器と違って、どの瞬間にも世界中の何十億もの荒らしにさらされる構造ではない
結局、アプリなしではほとんど操作できない純粋なデータ収集デバイス。表面をタップしてペアリングモードに入らせることもできたはずだが、現状では要求してくるどんなデバイスともペアリングされる
誰かがこのリング向けのカスタムファームウェアを作ってくれることを期待している。リンク先のATC_RF03プロジェクトに一部作業はあるが、まだ誰かが継続して作業しているのかは分からない
すばらしい。すでにApple Watchを着けているけれど、Temuで**$18**のものを1つ注文した
中継役になるスマホアプリをインストールせず、直接インターフェイスしてリアルタイムデータを取り出せるもの、というアイデアが気に入った
数か月前、このYouTube動画[1]で、睡眠トラッキング機器はきちんとした睡眠ポリグラフ検査と比べるとどれもかなり不正確だと知った。ただし、それぞれ不正確さの出方が互いに異なる
[1]: https://www.youtube.com/watch?v=mjOYhxLJP90
こうしたリングの加速度計が、転倒を検知できるほど精密かどうか知っている人はいる? スマートウォッチや「高齢者向けっぽく見える」機器を拒む高齢患者を想定している
https://github.com/atc1441/ATC_RF03_Ring/issues/13 に、よい追加ハックの内容がたくさんある
ちなみに @tahnok、自分は本業で医療グレード機器のBLEリバースエンジニアリングをしているので、一緒にこれをハックしてみたい