- Sağlık ve aktivite verilerini düşük maliyetli Colmi R02 akıllı yüzükten yerel olarak okumayı amaçlayan bir proje; bulut uygulaması olmadan %100 çevrimdışı kullanımı hedefliyor
- Colmi R02·R06·R10 hedefleniyor; ürün açıklamasında QRing uygulaması kullanımından bahsediliyorsa uyumlu olabileceğine dair pratik bir kural sunuluyor
- Şu anda gerçek zamanlı kalp atış hızı·SPO2, adım·kalp atışı·uyku günlükleri, saat ayarı ve “stres” ölçümü tersine mühendislikle çözülmüş durumda; ancak adım günlüğü yorumlamasında hâlâ eksik kalan kısımlar var
- CLI,
pipx kurulumundan sonra BLE taraması, gerçek zamanlı ölçüm, SQLite eşitleme, cihaz bilgisi sorgulama, ham komut gönderme, yeniden başlatma ve saat ayarı yapabiliyor
- İletişim, BLE GATT ve 16 baytlık paket yapısını kullanıyor; eşleştirme veya güvenlik anahtarı olmadan erişilebildiği için pratik, ancak gizlilik değerlendirmesi kullanıcıya kalıyor
Colmi R02 serisi akıllı yüzükler için çevrimdışı istemci
- colmi_r02_client, Colmi R02 serisi akıllı yüzüklerden veri okumak için açık kaynaklı bir Python istemcisidir
- Proje, %100 açık kaynak ve %100 çevrimdışı kullanımı vurguluyor
- Colmi R02, yaklaşık 20 dolar seviyesinde bir akıllı yüzük veya fitness giyilebilir cihazı ve şu sensörleri içeriyor
- İvmeölçer
- Adım takibi
- Uyku takibi
- Jestler
- Kalp atış hızı (HR)
- Kandaki oksijen doygunluğu (SPO2)
- Yüzüğün keşfedilme hikâyesi olarak atc1441'in ATC_RF03 çalışması ve Hackaday coverage bağlantısı veriliyor
Uyumlu cihazlar ve satın alma yolları
- Tam uyumlu cihazlar şunlar
- Colmi R02
- Colmi R06
- Colmi R10
- Ürün listesinde QRing uygulaması kullanımı belirtiliyorsa bu istemciyle uyumlu olabileceğine dair pratik bir kural var
- Satın alma bağlantısı olarak AliExpress veriliyor; bağlantı çalışmazsa “COLMI R02” diye aratmak yeterli
- “Colmi official store” üzerinden kargo dahil 22 CAD fiyatla satın alındığı örneği de yer alıyor
Tersine mühendislikle çözülen özellikler ve kalan işler
- Şu anda çalışan veya analiz edilen özellikler şunlar
- Gerçek zamanlı kalp atış hızı ve SPO2
- Adım günlükleri
- Periyodik kalp atış hızı günlükleri
- Yüzük saatini ayarlama
- HR günlük sıklığını ayarlama
- SPO2 günlükleri
- Uyku takibi
- “Stres” ölçümü
- Adım günlüklerinde günün nasıl bölündüğü henüz tamamen anlaşılmış değil
- Planlanan özellikler şunlar
- Daha fazla CLI özelliği eklemek
- Kalp atış hızı ve adım verilerini daha iyi görünen şekilde sunmak
- Basit bir web arayüzü
Komut satırı kullanımı
- Python paketlerini bağımsız çalıştırılabilir programlar gibi yönetmek için pipx kurulması özellikle öneriliyor
- Kurulum komutu şöyle
pipx install git+https://github.com/tahnok/colmi_r02_client
- Yakındaki yüzükleri aramak için
colmi_r02_util scan kullanılıyor
colmi_r02_util scan
Found device(s)
Name | Address
--------------------------------------------
R02_341C | 70:CB:0D:D0:34:1C
- BLE adresi elde edildiğinde gerçek zamanlı kalp atış hızı okunabiliyor
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]
- Yüzük verileri SQLite ile eşitlenebiliyor
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
- Veritabanı şeması database_schema.sql içinde bulunuyor
- Güncel CLI yardımını görmek için
colmi_r02_client --help kullanılabiliyor
- Komutlar şu işlevleri içeriyor
- Kalp atış hızı günlüklerini görüntüleme
- Kalp atış hızı günlük ayarlarını görüntüleme ve değiştirme
- Gerçek zamanlı kalp atış hızını görüntüleme
- Adım verilerini görüntüleme
- Cihaz bilgisi ve pil seviyesini görüntüleme
- Ham komut gönderme
- Yüzüğü yeniden başlatma
- Yüzük saatini ayarlama
- Yüzük verilerini SQLite ile eşitleme
Kütüphane ve belgeler
BLE iletişim protokolü
- Ham analiz notları notes.tahnok.ca üzerinde derlenmiş; başlangıç noktası 2024-07-07 Smart Ring Hacking
- Yüzük BLE üzerinden okunup yazılabiliyor
- Başlamak için eşleştirme veya güvenlik anahtarı gerekmiyor
- Güvenlik açısından bu iyi olmayabilir, ancak yüzüğün menzili çok küçük ve adım sayısı ya da kalp atış bilgisi sızıntısı konusunda büyük bir endişe taşınmadığı belirtiliyor
- Nihai karar kullanıcıya bırakılıyor
- Yüzükte şu UUID'ye sahip bir BLE GATT servisi bulunuyor
6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
- Önemli iki characteristic var
- RX
6E400002-B5A3-F393-E0A9-E50E24DCCA9E: yazma hedefi
- TX
6E400003-B5A3-F393-E0A9-E50E24DCCA9E: abone olunan hedef; yüzüğün gönderdiği paket yanıtlarının alındığı yer
- Bu yapı, Nordic UART Service ve genel UART/Serial iletişimine çok benziyor
16 baytlık paket yapısı
- Yüzük, hem gönderim hem alımda 16 baytlık paketler ile iletişim kuruyor
- İlk bayt her zaman komut, etiket veya tür rolünü üstleniyor
- Örneğin pil seviyesi isteği paketi
0x03 ile başlıyor
- Yanıt paketi de
0x03 ile başlıyor
- Son bayt her zaman checksum/crc oluyor
- Ortadaki 14 bayt subdata veya payload verisi
- Bazı isteklerde veri elde etmek için birden fazla yanıtı birlikte yorumlamak gerekiyor
- Belirli işlevlerin istek/yanıt paket yapıları ilgili işlevin kaynak kodunda incelenebilir
- Doğrulanmış istek/yanıt çiftleri ve insan tarafından okunabilir veri yorumları testlerde de referans alınabiliyor
İlgili bağlantılar
1 yorum
Hacker News yorumları
Bunu kurcalamayı dört gözle bekliyorum. Az önce bir tane sipariş ettim. İki tane Oura yüzük kullandım, tavsiye etmem
Bunun ne kadar güvenilir olacağını bilmiyorum ama $14’tı; $300 değil ve belirsiz bir API’ye erişmek için her ay para ödemenizi de istemiyor
Ya Garmin gibi yüzüğü satıp ömür boyu üyeliği ücretsiz dahil etsinler https://connect.garmin.com/, ya da sözleşmeyle cihazı lease/kiraya verip aylık kullanım ücreti alsınlar. İkisi birden olmaz
Oura 469 CAD’den başlıyor https://ouraring.com/product/rings/oura-ring-4/silver, üstüne aylık 7.99 CAD ekleniyor https://support.ouraring.com/hc/en-us/articles/360052018753-...
Gadgetbridge gibi bir şeyle çevrimdışı kullanılabilen benzer bir uyku takip yüzüğünü sabırsızlıkla bekliyorum
NFC’li benzer bir yüzük var mı acaba?
Akıllı sağlık özelliklerini kullanacağım yok; veri odaklı sağlık oyuncağı gibi duruyorlar. Öte yandan NFC için ödemeden giriş kontrolüne, ulaşım kartına kadar yüzlerce kullanım alanı bulunabilir
Ödeme ya da kapı açma gibi güvenlik token’larını içine koymak mümkün, ama epey karmaşık olabiliyor. Yüzüğün algılanan alanı küçük olduğu için telefona tutarken alıcı konumunu bulmak bazen zor oluyor
Ayrıca yazılımı düşük seviyeli ve nazlı. Yanlışlıkla yüzüğümü kalıcı salt okunur moda soktum
İncelemem burada: https://shkspr.mobi/blog/2024/02/giving-the-finger-to-mfa-a-...
Kullanıcının bunu yapabildiği uygulamalar güvenlik açısından çok zayıf ve hâlâ yaygın kullanılsalar da giderek kullanımdan kaldırılıyorlar. Bu yüzden kendi yönettiğiniz bir sistem değilse ya da IT sorumlusuyla çok yakın değilseniz bunun bir yolu yok
Eskiden $60 iken “V1”ini almıştım; düzgün kullanmayı biliyorsanız gerçekten çalışıyor. AliExpress’te de aynı işlevi desteklediğini iddia eden yüzükler gördüm ama henüz kendim denemedim
Hem normal NFC olarak hem de 125kHz apartman girişi için kullanılabilen NFC/RFID çift yüzükler de var gibi
Dokunmatik ya da fiziksel düğmesi olan bir yüzük var mı? Tıklamalı bir tekerlek olsa daha da iyi olurdu. Gösterge olarak birkaç ayrı RGB LED hayal ediyorum ama başka yöntemler de olur
Bu düşük maliyetli cihazlar ne kadar güvenli? Batarya patlamasından endişe etmeli miyiz? Oura yüzükte böyle bir şey olduğuna dair bir gönderi buldum: https://www.reddit.com/r/ouraring/comments/s1fave/ring_batte...
Donanım gerçekten ucuzluyor! Ama yazılım…
$20’lık bir yatak lambası aldım; içinde LED aydınlatma, Bluetooth alıcısı, saat ve alarm, iPhone kablosuz şarjı var. Bir de mikrofonu var; tüm konuşmalarımı bir yerlere stream edebilir, görünürdeki amacı ise şarkı söyleyişimi dinleyip ışıkları perdeye göre yanıp söndürmek
Saati ve ışıkları ayarlamak için kullanışlı bir uygulaması da var. Ama yazılım kusuru yüzünden alarm her gece 01:00 AM’de çalıyor. Resmi uygulamayla kapatamadım; gerçek bir programcı tarafından yapılmış bir şeye benzemiyor. Yine de Bluetooth stack’inin bir yerinde bug var gibi, lambada root yetkisi alıp kendim düzeltebilirim… vaktim olursa
İsimsiz donanım üreticileri ürün kutusuna en azından asgari bir hack kiti koysa keşke
Bu tür akıllı cihazlarda kart üzerinde çoğu zaman debug portu bırakılıyor ve kelepçeyle kolayca erişilebiliyor
dingensundso’nun bahsettiği GadgetBridge pull request’ine[0] bakınca, BLE API’sinin komutlara kadar oldukça kapsamlı belgelendiği iyi bir site var: https://colmi.puxtril.com/
[0]: https://news.ycombinator.com/item?id=41834048
İlginç görünüyor. Sıcaklık sensörü de olan benzer bir yüzük var mı? Oura Ring ya da Apple Watch’un yeni Vitals uygulaması gibi, açık kaynaklı bir uygulamayla bir iki gün önceden hasta olup olmadığını algılayabilmek ilginç olurdu
Ya da bunun bu yüzükteki sensörlerle bile mümkün olup olmadığını bilen var mı?
Sadece cihazı tarayıp okumak yeterli mi? Hiç kimlik doğrulama yok ve ölçümleri ilgilenen herkese kablosuz olarak saçan bir yapı mı?
Parola girdiğiniz klavye gibi şeylerde bu sorun olur, ama komşumun oturma odası termometreme bakması ya da ben koşarken birinin kalp atış hızı kayışımı izlemesi söz konusuysa, gerçekte çok büyük bir sorun gibi görünmüyor
Bluetooth’un kötü eski günlerinde, ekranı olmayan cihazların eşleştirme kodunu doğrudan 000000 olarak hardcode ettiği durumlar da çoktu. Zaten güvenliği pek artırmıyordu. İnternete bağlı cihazlardan farklı olarak, herhangi bir anda dünyanın dört bir yanındaki milyarlarca troll’e açık bir yapı değil
Sonuçta uygulama olmadan neredeyse hiç etkileşime girilemeyen saf bir veri toplama cihazı. Yüzeye dokunarak eşleştirme moduna girmesini sağlayabilirlerdi, ancak şu anda istekte bulunan herhangi bir cihazla eşleşiyor
Birinin bu yüzük için özel firmware geliştirmesini umuyorum. Bağlantısı verilen ATC_RF03 projesinde bir miktar çalışma var, ama hâlâ kimin üzerinde çalışmaya devam ettiğini bilmiyorum
Harika. Zaten Apple Watch takıyorum ama Temu’dan $18’lık bir tane sipariş ettim
Arada aracı rolü gören bir telefon uygulaması kurmadan, doğrudan arayüzleyip gerçek zamanlı veri çekebilen bir şey olması fikri hoşuma gitti
Birkaç ay önce bu YouTube videosunda[1], uyku takip cihazlarının doğru düzgün bir polisomnografiyle karşılaştırıldığında hepsinin epey hatalı olduğunu öğrendim. Ancak her birinin hata yapma biçimi birbirinden farklı
[1]: https://www.youtube.com/watch?v=mjOYhxLJP90
Bu yüzüklerdeki ivmeölçerlerin düşmeleri algılayacak kadar hassas olup olmadığını bilen var mı? Akıllı saatleri ya da “yaşlılara yönelik gibi görünen” cihazları reddeden yaşlı bir hastayı düşünüyorum
https://github.com/atc1441/ATC_RF03_Ring/issues/13 adresinde birçok iyi ek hack içeriği var
Bu arada @tahnok, ben ana işim olarak tıbbi sınıf cihazlarda BLE tersine mühendisliği yapıyorum; bunu birlikte hack’lemeyi çok isterim