1 पॉइंट द्वारा GN⁺ 2024-10-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • कम कीमत वाली 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

  • इसे Python library के रूप में import करके अपने tools बनाए जा सकते हैं
  • docstring-based documentation colmi_r02_client.client और documentation site पर देखी जा सकती है

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 होता है
    • बाकी 15 bytes को जोड़कर, result को 255 से divide करने पर मिले remainder से calculate किया जाता है
    • implementation colmi_r02_client.packet.checksum में है
  • बीच के 14 bytes subdata या payload data होते हैं
    • कुछ requests additional data शामिल करती हैं
    • लगभग सभी responses requested data को subdata के रूप में return करते हैं
    • time setting packet का example colmi_r02_client.set_time.set_time_packet में है
  • कुछ 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

  • colmi-docs
  • Gadgetbridge के Colmi support से जुड़ा PR

1 टिप्पणियां

 
GN⁺ 2024-10-15
Hacker News की राय
  • इसे आज़माने के बारे में सोचकर उत्साहित हूं। अभी-अभी एक ऑर्डर किया। मैंने दो Oura rings इस्तेमाल की हैं, लेकिन सिफारिश नहीं करूंगा
    यह कितना भरोसेमंद होगा, पता नहीं, लेकिन यह $14 का था, $300 का नहीं, और किसी अस्पष्ट API तक पहुंचने के लिए हर महीने पैसे देने को भी नहीं कहता

    • निजी तौर पर, मुझे लगता है कि कंपनियों को ऐसे डिवाइस “बेचने” की अनुमति नहीं होनी चाहिए जो subscription के बिना काम नहीं करते। खासकर जब service provider सिर्फ एक ही हो, तो यह rental model है
      या तो 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-...
    • Oura ring की tracking accuracy, ज्यादातर smartwatches के उलट, अच्छी लगती है। लेकिन जो data यह collect करती है और इसका subscription model भयानक लगता है
      Gadgetbridge जैसी किसी चीज़ के साथ offline इस्तेमाल की जा सकने वाली मिलती-जुलती sleep tracking ring का बेसब्री से इंतज़ार कर रहा हूं
  • क्या NFC वाली कोई मिलती-जुलती ring भी है?
    Smart health features मेरे काम के नहीं हैं, और data-driven health toy जैसे लगते हैं। इसके उलट NFC के payment से लेकर access और transit card तक सैकड़ों उपयोग हो सकते हैं

    • है। मेरे पास Z1 Ring है
      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-...
    • उस idea की समस्या यह है कि RFID की सभी सुरक्षित implementations user को बाहर रखती हैं। यानी आप NFC ring/keyfob/implant खरीदकर bank card या transit card को बस copy नहीं कर सकते
      जिन implementations में user ऐसा कर सकता है, वे security में बहुत कमजोर होती हैं, और भले ही अभी आम हैं, धीरे-धीरे हटाई जा रही हैं। इसलिए अगर यह आपका खुद का managed system नहीं है, या IT वाले से आपकी बहुत अच्छी जान-पहचान नहीं है, तो कोई रास्ता नहीं है
    • Dangerous Things लोकप्रिय RFID/NFC implant निर्माता है, और वे 125kHz+13.56MHz dual-frequency cloning-capable ring बेचते हैं, लेकिन कीमत बहुत ज़्यादा है ($130)
      पहले जब यह $60 की थी, मैंने “V1” खरीदी थी, और अगर आपको इसे ठीक से handle करना आता है तो यह सच में काम करती है। AliExpress पर भी ऐसी rings देखी हैं जो वही capability support करने का दावा करती हैं, लेकिन अभी खुद इस्तेमाल नहीं की हैं
    • मेरी जानकारी में ऐसे products हैं। अपने apartment के RFID access tag को clone करने के लिए writer ढूंढते समय AliExpress पर काफी दिखे थे
      लगता है कि NFC/RFID dual ring भी हैं जिन्हें general NFC के लिए और 125kHz apartment access के लिए इस्तेमाल किया जा सकता है
    • Smart health features मेरे भी काम के नहीं हैं, लेकिन NFC के बजाय मैं इसे controller और display device की तरह इस्तेमाल करना चाहूंगा
      क्या 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...

    • मुझे बहुत चिंता नहीं है। battery बेहद छोटी है, और शायद resin में potted है, इसलिए damage होने की संभावना कम लगती है
  • 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 ही डाल दें

    • यह हैरानी की बात है कि “गाना सुनकर pitch के हिसाब से lights blink करना” use case marketable हो सके, इतने pitch control वाले अच्छे customers मौजूद हैं
    • इसे सावधानी से खोलकर देखा जा सकता है। आपका प्यारा lamp खराब भी हो सकता है, और पहले power plug ज़रूर निकालना चाहिए
      ऐसे 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 से ही यह संभव है?

    • मेरे अनुभव में resting heart rate, नींद के दौरान heart rate, और heart rate variability बीमारी आने के अच्छे indicators रहे हैं
    • temperature sensor वाला product मैं भी ढूंढना चाहूंगा। अभी इस price range के आसपास तो बिल्कुल नहीं दिखता, है न?
  • क्या बस device को scan करके read करना होता है? authentication बिल्कुल नहीं है, और यह measurements को wirelessly हर उस व्यक्ति तक broadcast करता है जिसे interest हो?

    • असल में authentication न होना आजकल Bluetooth devices में काफी आम है
      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 नहीं है
    • ring का interface बहुत minimal है। sensors में कदम गिनने के लिए accelerometer, heart rate और blood oxygen पाने के लिए दो LEDs और photodiode हैं, और अंदर charging status दिखाने के लिए बस एक status LED है
      कुल मिलाकर 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 मुझे पसंद आया

    • मैंने भी बिल्कुल वही order किया। Apple Watch के sleep tracking data में इस ring का sleep tracking data जोड़कर देखना चाहता हूं
      कुछ महीने पहले इस 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 करके देखना चाहूंगा