- कम कीमत वाली Colmi R02 स्मार्ट रिंग से health और activity डेटा local तौर पर पढ़ने का प्रोजेक्ट, जिसका लक्ष्य cloud app के बिना 100% offline उपयोग है
- Colmi R02·R06·R10 लक्ष्य डिवाइस हैं, और यह अनुभवजन्य नियम देता है कि अगर product description में QRing app इस्तेमाल करने की बात लिखी हो, तो compatibility की संभावना है
- अभी real-time heart rate·SPO2, steps·heart rate·sleep logs, time setting, और “stress” measurement तक reverse-engineer हो चुके हैं, लेकिन steps log की व्याख्या में अभी कुछ हिस्सा बाकी है
- CLI में
pipx install करने के बाद BLE scan, real-time measurement, SQLite sync, device info query, raw command भेजना, reboot, और time setting चलाए जा सकते हैं
- communication BLE GATT और 16-byte packet structure का उपयोग करता है, और binding या security key के बिना access संभव है, इसलिए सुविधाजनक है लेकिन privacy का फैसला user पर है
Colmi R02 सीरीज स्मार्ट रिंग के लिए offline client
- colmi_r02_client Colmi R02 सीरीज smart ring का डेटा पढ़ने के लिए open-source Python client है
- प्रोजेक्ट 100% open source, 100% offline उपयोग पर जोर देता है
- Colmi R02 करीब $20 price range की smart ring या fitness wearable है, जिसमें ये sensors शामिल हैं
- accelerometer
- step tracking
- sleep tracking
- gestures
- heart rate (HR)
- blood oxygen saturation (SPO2)
- रिंग के बारे में पता चलने के स्रोत के तौर पर atc1441 के ATC_RF03 काम और Hackaday coverage को जोड़ा गया है
Compatible devices और खरीदने के रास्ते
- पूरी तरह compatible devices ये हैं
- Colmi R02
- Colmi R06
- Colmi R10
- अगर product listing में QRing app इस्तेमाल करने का निर्देश हो, तो यह अनुभवजन्य नियम है कि इस client के साथ compatible होने की संभावना है
- खरीदारी लिंक के रूप में AliExpress दिया गया है, और link dead हो जाए तो “COLMI R02” search किया जा सकता है
- “Colmi official store” से shipping सहित CAD 22 में खरीदने का एक उदाहरण है
Reverse-engineered features और बाकी काम
- अभी काम कर रहे या analyze किए गए features ये हैं
- real-time heart rate और SPO2
- steps log
- periodic heart rate log
- ring time setting
- HR log frequency setting
- SPO2 log
- sleep tracking
- “stress” measurement
- steps log में एक दिन कैसे divided है, यह अभी पूरी तरह समझा नहीं गया है
- planned features ये हैं
- और ज्यादा CLI features जोड़ना
- heart rate और steps data का बेहतर दिखने वाला output
- simple web interface
Command-line usage
- Python package को standalone program की तरह manage करने के लिए pipx install करने की मजबूत recommendation है
- install command यह है
pipx install git+https://github.com/tahnok/colmi_r02_client
- आसपास की ring खोजने के लिए
colmi_r02_util scan चलाएं
colmi_r02_util scan
Found device(s)
Name | Address
--------------------------------------------
R02_341C | 70:CB:0D:D0:34:1C
- BLE address मिलने पर real-time heart rate पढ़ा जा सकता है
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]
- ring data को SQLite में sync किया जा सकता है
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 database_schema.sql में है
- latest CLI help
colmi_r02_client --help से देखें
- commands में ये features शामिल हैं
- heart rate log query
- heart rate log settings query और setting
- real-time heart rate query
- steps data query
- device info और battery level query
- raw command भेजना
- ring reboot
- ring time setting
- ring data को SQLite में sync करना
Library और documentation
BLE communication protocol
- raw analysis notes notes.tahnok.ca पर व्यवस्थित हैं, और starting point 2024-07-07 Smart Ring Hacking है
- ring को BLE से read और write किया जा सकता है
- शुरू करने के लिए binding या security key की जरूरत नहीं है
- security के लिहाज से यह अच्छा नहीं हो सकता, लेकिन explanation में कहा गया है कि ring की range बहुत छोटी है और steps count या heart rate info expose होने को लेकर बड़ी चिंता नहीं है
- अंतिम फैसला user पर छोड़ा गया है
- ring में इस UUID की BLE GATT service है
6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
- दो important characteristics हैं
- RX
6E400002-B5A3-F393-E0A9-E50E24DCCA9E: write target
- TX
6E400003-B5A3-F393-E0A9-E50E24DCCA9E: subscription target, जहां ring द्वारा भेजे गए packet responses मिलते हैं
- यह structure Nordic UART Service और सामान्य UART/Serial communication से बहुत मिलता-जुलता है
16-byte packet structure
- ring transmit और receive दोनों में 16-byte packets से communication करती है
- पहला byte हमेशा command, tag, type की भूमिका निभाता है
- उदाहरण के लिए battery level request packet
0x03 से शुरू होता है
- response packet भी
0x03 से शुरू होता है
- आखिरी byte हमेशा checksum/crc होता है
- बीच के 14 bytes subdata या payload data होते हैं
- कुछ requests में data पाने के लिए कई responses को साथ में interpret करना पड़ता है
- किसी specific feature के request-response packet structure को उस feature के source code में देखा जा सकता है
- verified request-response pairs और human-readable data interpretation को tests में भी reference के तौर पर देखा जा सकता है
Related links
1 टिप्पणियां
Hacker News की राय
इसे आज़माने के बारे में सोचकर उत्साहित हूं। अभी-अभी एक ऑर्डर किया। मैंने दो Oura rings इस्तेमाल की हैं, लेकिन सिफारिश नहीं करूंगा
यह कितना भरोसेमंद होगा, पता नहीं, लेकिन यह $14 का था, $300 का नहीं, और किसी अस्पष्ट API तक पहुंचने के लिए हर महीने पैसे देने को भी नहीं कहता
या तो Garmin की तरह ring बेचें और lifetime membership मुफ्त में शामिल करें https://connect.garmin.com/, या फिर contract के तहत डिवाइस को lease/rent पर दें और monthly usage fee लें। दोनों नहीं होने चाहिए
Oura 469 CAD से शुरू होता है https://ouraring.com/product/rings/oura-ring-4/silver, और इसके ऊपर monthly 7.99 CAD लगता है https://support.ouraring.com/hc/en-us/articles/360052018753-...
Gadgetbridge जैसी किसी चीज़ के साथ offline इस्तेमाल की जा सकने वाली मिलती-जुलती sleep tracking ring का बेसब्री से इंतज़ार कर रहा हूं
क्या NFC वाली कोई मिलती-जुलती ring भी है?
Smart health features मेरे काम के नहीं हैं, और data-driven health toy जैसे लगते हैं। इसके उलट NFC के payment से लेकर access और transit card तक सैकड़ों उपयोग हो सकते हैं
payment या दरवाज़ा खोलने जैसे security token डालना भी संभव है, लेकिन यह काफी जटिल हो सकता है। ring में पहचान के लिए area छोटा होता है, इसलिए phone से इस्तेमाल करते समय receiving position ढूंढना कभी-कभी मुश्किल होता है
और software low-level और झंझट वाला है। मैंने गलती से अपनी ring को permanently read-only mode में डाल दिया
review यहां है: https://shkspr.mobi/blog/2024/02/giving-the-finger-to-mfa-a-...
जिन implementations में user ऐसा कर सकता है, वे security में बहुत कमजोर होती हैं, और भले ही अभी आम हैं, धीरे-धीरे हटाई जा रही हैं। इसलिए अगर यह आपका खुद का managed system नहीं है, या IT वाले से आपकी बहुत अच्छी जान-पहचान नहीं है, तो कोई रास्ता नहीं है
पहले जब यह $60 की थी, मैंने “V1” खरीदी थी, और अगर आपको इसे ठीक से handle करना आता है तो यह सच में काम करती है। AliExpress पर भी ऐसी rings देखी हैं जो वही capability support करने का दावा करती हैं, लेकिन अभी खुद इस्तेमाल नहीं की हैं
लगता है कि NFC/RFID dual ring भी हैं जिन्हें general NFC के लिए और 125kHz apartment access के लिए इस्तेमाल किया जा सकता है
क्या touch या physical buttons वाली ring है? अगर clicky wheel हो तो और भी अच्छा। display device के तौर पर मैं कई individual RGB LEDs सोच रहा हूं, लेकिन दूसरे तरीके भी ठीक हैं
ऐसे सस्ते devices कितने safe होते हैं? क्या battery explosion की चिंता करनी चाहिए? मुझे Oura ring में ऐसा होने के बारे में एक post मिला: https://www.reddit.com/r/ouraring/comments/s1fave/ring_batte...
Hardware वाकई सस्ता होता जा रहा है! लेकिन software…
मैंने $20 का bedside lamp खरीदा जिसमें LED lighting, Bluetooth receiver, clock और alarm, और iPhone wireless charging तक है। इसमें mic भी है, जिससे मेरी सारी conversations कहीं stream की जा सकती हैं; हालांकि दिखने वाला उद्देश्य यह है कि यह मेरा गाना सुने और pitch के हिसाब से lights blink करे
clock और lights set करने के लिए एक सुविधाजनक app भी साथ है। लेकिन software defect की वजह से हर रात 01:00 AM पर alarm बजता है। official app से इसे बंद नहीं किया जा सका, और यह किसी असली programmer द्वारा बनाया हुआ नहीं लगता। फिर भी Bluetooth stack में कहीं bug है, जिससे शायद lamp का root access लेकर इसे खुद fix किया जा सकता है… अगर समय हो तो
अच्छा होगा अगर बिना नाम वाले hardware manufacturers product box में कम-से-कम कोई hacking kit ही डाल दें
ऐसे smart devices में अक्सर board पर debug port बचा रहता है, जिसे clamp से आसानी से access किया जा सकता है
dingensundso द्वारा बताए गए GadgetBridge pull request[0] को देखें तो, BLE API को commands तक काफी detail में document करने वाली एक अच्छी site है: https://colmi.puxtril.com/
[0]: https://news.ycombinator.com/item?id=41834048
दिलचस्प लग रहा है। क्या ऐसा कोई मिलता-जुलता ring है जिसमें temperature sensor भी हो? Oura ring या Apple Watch के नए Vitals app की तरह अगर open source app से एक-दो दिन पहले पता चल सके कि आप बीमार पड़ने वाले हैं, तो मज़ेदार होगा
या क्या किसी को पता है कि इस ring में मौजूद sensors से ही यह संभव है?
क्या बस device को scan करके read करना होता है? authentication बिल्कुल नहीं है, और यह measurements को wirelessly हर उस व्यक्ति तक broadcast करता है जिसे interest हो?
password type करने वाले keyboard जैसी चीज़ों के लिए यह problem है, लेकिन अगर पड़ोसी मेरे living room thermometer को देख ले या मैं jogging करते हुए निकलूं तो कोई मेरा heart rate strap देख ले, तो असल में यह कोई बड़ी problem नहीं लगती
Bluetooth के पुराने खराब दिनों में बिना screen वाले devices में pairing code को बस 000000 hardcode कर देना भी काफी आम था। वैसे भी उससे security बहुत बढ़ती नहीं थी। Internet-connected devices के उलट, यह किसी भी पल दुनिया भर के अरबों trolls के सामने exposed रहने वाला model नहीं है
कुल मिलाकर app के बिना लगभग interact न किया जा सकने वाला एक pure data collection device है। सतह पर tap करके इसे pairing mode में डालने की व्यवस्था बनाई जा सकती थी, लेकिन फिलहाल यह request करने वाले किसी भी device से pair हो जाता है
उम्मीद है कोई इस ring के लिए custom firmware बनाएगा। linked ATC_RF03 project में कुछ काम हुआ है, लेकिन पता नहीं अभी कोई उस पर काम जारी रखे हुए है या नहीं
शानदार। मैं पहले से Apple Watch पहनता हूं, फिर भी Temu से $18 वाला एक order कर दिया
बिना बीच में काम करने वाला phone app install किए, सीधे interface करके real-time data निकाल सकने वाली चीज़ का idea मुझे पसंद आया
कुछ महीने पहले इस YouTube video[1] में पता चला कि sleep tracking devices, proper polysomnography के मुकाबले, सभी काफी inaccurate हैं। हालांकि हर एक की inaccurate होने की शैली अलग-अलग है
[1]: https://www.youtube.com/watch?v=mjOYhxLJP90
क्या किसी को पता है कि इन rings के accelerometer fall detection के लिए पर्याप्त precise हैं? एक elderly patient को ध्यान में रख रहा हूं जो smartwatch या “बुज़ुर्गों वाली दिखने वाली” devices से मना करता है
https://github.com/atc1441/ATC_RF03_Ring/issues/13 पर कई अच्छे extra hacking details हैं
वैसे @tahnok, मैं अपने day job में medical-grade devices की BLE reverse engineering करता हूं, इसलिए इसे साथ में hack करके देखना चाहूंगा