- Đây là dự án nhằm đọc dữ liệu sức khỏe và hoạt động cục bộ từ nhẫn thông minh Colmi R02 giá rẻ, hướng tới sử dụng 100% offline mà không cần ứng dụng đám mây
- Nhắm tới Colmi R02, R06 và R10; dự án đưa ra kinh nghiệm rằng nếu phần mô tả sản phẩm ghi dùng ứng dụng QRing thì có khả năng tương thích
- Hiện đã reverse-engineer được đo nhịp tim và SPO2 theo thời gian thực, nhật ký bước chân, nhịp tim, giấc ngủ, đặt thời gian và cả đo “stress”, nhưng việc diễn giải nhật ký bước chân vẫn còn một số phần chưa hoàn thiện
- CLI sau khi cài bằng
pipx có thể thực hiện quét BLE, đo thời gian thực, đồng bộ SQLite, xem thông tin thiết bị, gửi lệnh thô, khởi động lại và đặt thời gian
- Giao tiếp dùng BLE GATT và cấu trúc gói 16 byte; có thể truy cập mà không cần binding hay khóa bảo mật nên tiện, nhưng việc đánh giá quyền riêng tư là tùy người dùng
Client offline cho dòng nhẫn thông minh Colmi R02
- colmi_r02_client là một Python client mã nguồn mở để đọc dữ liệu từ nhẫn thông minh dòng Colmi R02
- Dự án nhấn mạnh việc sử dụng 100% mã nguồn mở và 100% offline
- Colmi R02 là nhẫn thông minh hoặc thiết bị đeo theo dõi thể chất có giá khoảng 20 USD, bao gồm các cảm biến sau
- Gia tốc kế
- Theo dõi bước chân
- Theo dõi giấc ngủ
- Cử chỉ
- Nhịp tim (HR)
- Độ bão hòa oxy trong máu (SPO2)
- Tác giả biết đến chiếc nhẫn qua công trình ATC_RF03 của atc1441 và bài viết trên Hackaday
Thiết bị tương thích và nơi mua
- Các thiết bị tương thích hoàn toàn gồm
- Colmi R02
- Colmi R06
- Colmi R10
- Có kinh nghiệm rằng nếu danh sách sản phẩm hướng dẫn dùng ứng dụng QRing thì có khả năng tương thích với client này
- Dự án cung cấp liên kết mua trên AliExpress; nếu liên kết hỏng thì có thể tìm “COLMI R02”
- Có trường hợp mua tại “Colmi official store” với giá 22 CAD bao gồm vận chuyển
Các chức năng đã reverse-engineer và việc còn lại
- Các chức năng hiện đang hoạt động hoặc đã được phân tích gồm
- Nhịp tim thời gian thực và SPO2
- Nhật ký bước chân
- Nhật ký nhịp tim định kỳ
- Đặt thời gian cho nhẫn
- Đặt tần suất ghi nhật ký HR
- Nhật ký SPO2
- Theo dõi giấc ngủ
- Đo “stress”
- Với nhật ký bước chân, hiện vẫn chưa hiểu hoàn toàn cách một ngày được chia nhỏ như thế nào
- Các chức năng dự kiến gồm
- Thêm nhiều chức năng CLI hơn
- Xuất dữ liệu nhịp tim và bước chân ở dạng dễ xem
- Giao diện web đơn giản
Cách dùng dòng lệnh
- Để quản lý gói Python như một chương trình độc lập, dự án khuyến nghị mạnh việc cài pipx
- Lệnh cài đặt như sau
pipx install git+https://github.com/tahnok/colmi_r02_client
- Tìm nhẫn ở gần bằng
colmi_r02_util scan
colmi_r02_util scan
Found device(s)
Name | Address
--------------------------------------------
R02_341C | 70:CB:0D:D0:34:1C
- Sau khi có địa chỉ BLE, có thể đọc nhịp tim theo thời gian thực
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]
- Dữ liệu của nhẫn có thể đồng bộ vào 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
- Schema cơ sở dữ liệu nằm trong database_schema.sql
- Xem trợ giúp CLI mới nhất bằng
colmi_r02_client --help
- Các lệnh bao gồm các chức năng sau
- Xem nhật ký nhịp tim
- Xem và đặt cấu hình nhật ký nhịp tim
- Xem nhịp tim thời gian thực
- Xem dữ liệu bước chân
- Xem thông tin thiết bị và mức pin
- Gửi lệnh thô
- Khởi động lại nhẫn
- Đặt thời gian cho nhẫn
- Đồng bộ dữ liệu nhẫn vào SQLite
Thư viện và tài liệu
Giao thức giao tiếp BLE
- Ghi chú phân tích thô được tổng hợp tại notes.tahnok.ca, với điểm bắt đầu là 2024-07-07 Smart Ring Hacking
- Nhẫn có thể đọc và ghi qua BLE
- Không cần binding hay khóa bảo mật để bắt đầu
- Về mặt bảo mật, điều này có thể không tốt, nhưng dự án giải thích rằng phạm vi của nhẫn rất nhỏ và họ không quá lo về việc lộ số bước hay thông tin nhịp tim
- Quyết định cuối cùng được để cho người dùng
- Nhẫn có dịch vụ BLE GATT với UUID sau
6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
- Có hai characteristic quan trọng
- RX
6E400002-B5A3-F393-E0A9-E50E24DCCA9E: đích ghi
- TX
6E400003-B5A3-F393-E0A9-E50E24DCCA9E: đích đăng ký nhận, nơi nhận phản hồi gói do nhẫn gửi
- Cấu trúc này rất giống Nordic UART Service và giao tiếp UART/Serial thông thường
Cấu trúc gói 16 byte
- Nhẫn giao tiếp bằng gói 16 byte cho cả gửi và nhận
- Byte đầu tiên luôn đóng vai trò là lệnh, thẻ hoặc kiểu
- Ví dụ, gói yêu cầu mức pin bắt đầu bằng
0x03
- Gói phản hồi cũng bắt đầu bằng
0x03
- Byte cuối cùng luôn là checksum/crc
- 14 byte ở giữa là subdata hoặc dữ liệu payload
- Một số yêu cầu cần diễn giải nhiều phản hồi cùng lúc để lấy dữ liệu
- Cấu trúc gói yêu cầu/phản hồi của từng chức năng có thể xem trong mã nguồn của chức năng tương ứng
- Các cặp yêu cầu/phản hồi đã được kiểm chứng và phần diễn giải dữ liệu dạng con người đọc được cũng có thể tham khảo trong test
Liên kết liên quan
1 bình luận
Ý kiến trên Hacker News
Rất mong được nghịch thử cái này. Vừa đặt mua một chiếc. Tôi đã dùng tới hai chiếc nhẫn Oura, nhưng không khuyến nghị
Không biết cái này đáng tin đến mức nào, nhưng nó chỉ $14, không phải $300, và cũng không bắt trả tiền hằng tháng để truy cập một API mập mờ
Hoặc là bán nhẫn và kèm miễn phí hội viên trọn đời như Garmin https://connect.garmin.com/, hoặc là cho thuê/lease thiết bị theo hợp đồng và thu phí hằng tháng. Không thể làm cả hai
Oura bắt đầu từ 469 CAD https://ouraring.com/product/rings/oura-ring-4/silver, rồi còn thêm 7.99 CAD mỗi tháng https://support.ouraring.com/hc/en-us/articles/360052018753-...
Tôi đang rất mong có một nhẫn theo dõi giấc ngủ tương tự có thể dùng offline với thứ như Gadgetbridge
Có nhẫn tương tự nào có NFC không?
Tôi không có nhu cầu dùng các tính năng sức khỏe thông minh; chúng trông như đồ chơi sức khỏe dựa trên dữ liệu. Trong khi đó NFC có thể dùng vào hàng trăm việc, từ thanh toán đến ra vào cửa, thẻ giao thông
Cũng có thể đưa các token bảo mật như thanh toán hay mở cửa vào đó, nhưng có thể khá phức tạp. Vì nhẫn là mục tiêu nhận diện nhỏ, đôi khi khó tìm đúng vị trí nhận khi áp vào điện thoại
Và phần mềm thì cấp thấp và khó dùng. Tôi đã lỡ biến nhẫn của mình vĩnh viễn thành chế độ chỉ đọc
Bài đánh giá ở đây: https://shkspr.mobi/blog/2024/02/giving-the-finger-to-mfa-a-...
Những triển khai cho phép người dùng làm vậy thì bảo mật rất yếu, và dù vẫn còn được dùng khá phổ biến, chúng đang dần bị loại bỏ. Vì vậy nếu đó không phải là hệ thống bạn tự quản lý, hoặc bạn không cực kỳ thân với người phụ trách IT, thì không có cách nào
Trước đây khi còn $60 tôi đã mua bản “V1”, và nếu biết xử lý đúng cách thì nó thực sự hoạt động. Tôi cũng đã thấy trên AliExpress có những chiếc nhẫn tuyên bố hỗ trợ cùng tính năng, nhưng chưa tự dùng thử
Có vẻ cũng có nhẫn kép NFC/RFID vừa dùng được như NFC thông thường, vừa dùng được cho ra vào chung cư 125kHz
Có chiếc nhẫn nào có cảm ứng hoặc nút vật lý không? Nếu là bánh xe có cảm giác click thì càng tốt. Với phần hiển thị, tôi hình dung nhiều LED RGB riêng lẻ, nhưng cách khác cũng được
Những thiết bị giá rẻ kiểu này an toàn đến mức nào? Có phải lo pin phát nổ không? Tôi tìm thấy bài nói rằng chuyện đó đã xảy ra với nhẫn Oura: https://www.reddit.com/r/ouraring/comments/s1fave/ring_batte...
Phần cứng đúng là đang rẻ đi thật! Nhưng phần mềm thì…
Tôi mua một chiếc đèn ngủ $20, trong đó có đèn LED, bộ thu Bluetooth, đồng hồ và báo thức, cả sạc không dây iPhone. Nó còn có mic nên có thể stream mọi cuộc trò chuyện của tôi đi đâu đó; mục đích bề ngoài là nghe tôi hát rồi nhấp nháy đèn theo cao độ
Nó cũng kèm một ứng dụng tiện lợi để đặt đồng hồ và đèn. Nhưng vì lỗi phần mềm, báo thức reo mỗi đêm lúc 01:00 AM. Không thể tắt bằng app chính thức, và có vẻ không phải thứ do lập trình viên thật sự làm ra. Dù vậy có lẽ ở đâu đó trong Bluetooth stack có bug, đủ để lấy quyền root của đèn và tự sửa… nếu có thời gian
Ước gì các nhà sản xuất phần cứng vô danh ít nhất cũng bỏ một bộ công cụ hack tối thiểu vào hộp sản phẩm
Các thiết bị thông minh kiểu này thường còn để lại cổng debug trên bo mạch, nên có thể dễ dàng tiếp cận bằng kẹp
Nhìn vào pull request GadgetBridge[0] mà dingensundso nhắc đến, có một trang tốt đã tài liệu hóa khá nhiều BLE API, kể cả các lệnh: https://colmi.puxtril.com/
[0]: https://news.ycombinator.com/item?id=41834048
Trông khá thú vị. Có chiếc nhẫn tương tự nào cũng có cảm biến nhiệt độ không? Sẽ rất hay nếu một ứng dụng mã nguồn mở có thể phát hiện bạn sắp ốm trước một hai ngày, giống như nhẫn Oura hay ứng dụng Vitals mới của Apple Watch
Hoặc có ai biết liệu chỉ với các cảm biến có trong chiếc nhẫn này thì có làm được không?
Chỉ cần quét thiết bị rồi đọc dữ liệu là được à? Hoàn toàn không có xác thực, và nó phát không dây các chỉ số cho bất kỳ ai quan tâm sao?
Nó sẽ là vấn đề với những thứ như bàn phím dùng để nhập mật khẩu, nhưng nếu chỉ là hàng xóm nhìn lén nhiệt kế trong phòng khách của tôi, hoặc ai đó nhìn lén dây đeo đo nhịp tim của tôi khi tôi chạy bộ ngang qua, thì thực tế có vẻ không phải vấn đề lớn
Vào thời Bluetooth còn tệ hại trước đây, nhiều thiết bị không có màn hình cũng hard-code mã ghép đôi là 000000. Dù sao thì bảo mật cũng không tăng lên được bao nhiêu. Khác với thiết bị kết nối Internet, nó không phải kiểu bị phơi ra trước hàng tỷ troll trên toàn thế giới vào bất kỳ thời điểm nào
Rốt cuộc, nếu không có ứng dụng thì nó gần như là một thiết bị thu thập dữ liệu thuần túy, hầu như không thể tương tác. Lẽ ra có thể làm kiểu gõ lên bề mặt để đưa nó vào chế độ ghép đôi, nhưng hiện tại nó sẽ ghép đôi với bất kỳ thiết bị nào yêu cầu
Hy vọng sẽ có ai đó làm firmware tùy chỉnh cho chiếc nhẫn này. Dự án ATC_RF03 được liên kết có một phần công việc liên quan, nhưng tôi chưa rõ hiện còn ai tiếp tục làm không
Tuyệt. Tôi đã đeo Apple Watch rồi nhưng vẫn đặt một chiếc $18 trên Temu
Tôi thích ý tưởng về một món đồ có thể giao tiếp trực tiếp để lấy dữ liệu thời gian thực, mà không cần cài ứng dụng điện thoại làm trung gian
Vài tháng trước, qua video YouTube này[1], tôi biết rằng các thiết bị theo dõi giấc ngủ đều khá thiếu chính xác khi so với đo đa ký giấc ngủ đúng chuẩn. Tuy nhiên, cách mỗi thiết bị thiếu chính xác lại khác nhau
[1]: https://www.youtube.com/watch?v=mjOYhxLJP90
Có ai biết gia tốc kế trong các loại nhẫn này có đủ chính xác để phát hiện té ngã không? Tôi đang nghĩ đến những bệnh nhân cao tuổi từ chối dùng smartwatch hoặc các thiết bị “trông như dành cho người già”
Có rất nhiều nội dung hack bổ sung hay ở https://github.com/atc1441/ATC_RF03_Ring/issues/13
Nhân tiện @tahnok, công việc chính của tôi là reverse engineering BLE cho các thiết bị cấp y tế, nên tôi rất muốn cùng hack cái này