1 puan yazan GN⁺ 2024-10-15 | 1 yorum | WhatsApp'ta paylaş
  • 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

  • Python kütüphanesi olarak içe aktarılıp doğrudan araçlar geliştirilebiliyor
  • Docstring tabanlı belgeler colmi_r02_client.client ve belge sitesi üzerinden görülebiliyor

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ı istekler ek veri içeriyor
    • Neredeyse tüm yanıtlar, istenen veriyi subdata olarak döndürüyor
    • Saat ayarlama paketi örneği colmi_r02_client.set_time.set_time_packet bağlantısında görülebilir
  • 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

 
GN⁺ 2024-10-15
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

    • Kişisel olarak, şirketlerin abonelik olmadan çalışmayan cihazları “satmasının” engellenmesi gerektiğini düşünüyorum. Özellikle hizmet sağlayıcı tek bir tarafsa bu bir kiralama modelidir
      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-...
    • Oura Ring, çoğu akıllı saate kıyasla takip doğruluğu açısından iyi görünüyor. Ancak topladığı veriler ve abonelik modeli berbat görünüyor
      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

    • Var. Bende Z1 Ring var
      Ö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-...
    • Bu fikrin sorunu, güvenli RFID uygulamalarının hepsinin kullanıcıyı dışarıda bırakması. Yani bir NFC yüzük/anahtarlık/implant alıp banka kartınızı ya da ulaşım kartınızı öylece kopyalayamazsınız
      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
    • Dangerous Things popüler bir RFID/NFC implant üreticisi; 125kHz+13.56MHz çift frekanslı, klonlanabilir bir yüzük satıyorlar ama fiyatı çok yüksek ($130)
      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
    • Böyle ürünlerin olduğunu biliyorum. Apartman RFID giriş etiketimi kopyalamak için çakmak ararken AliExpress’te bolca görmüştüm
      Hem normal NFC olarak hem de 125kHz apartman girişi için kullanılabilen NFC/RFID çift yüzükler de var gibi
    • Akıllı sağlık özelliklerini ben de kullanmam, ama NFC yerine kontrolcü ve gösterge cihazı olarak kullanmak isterdim
      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...

    • Çok endişelenmezdim. Batarya son derece küçük ve muhtemelen reçineyle potting yapılmış, bu yüzden hasar görme ihtimali düşük gibi
  • 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

    • “Şarkıyı dinleyip perdeye göre ışıkları yanıp söndürme” kullanım senaryosunun pazarlanabilir olmasına yetecek kadar entonasyonu iyi müşteri olması şaşırtıcı
    • Dikkatlice açıp bakabilirsiniz. Değerli lambanızı bozabilirsiniz tabii; ayrıca önce mutlaka fişini çekmelisiniz
      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ı?

    • Benim deneyimime göre dinlenme kalp atış hızı, uykudaki kalp atış hızı ve kalp atış hızı değişkenliği, hastalığın yaklaşmakta olduğuna dair iyi göstergelerdi
    • Sıcaklık sensörü olan bir ürün ben de bulmak isterim. Henüz bu fiyat aralığına yakın hiçbir şey yok gibi mi?
  • Sadece cihazı tarayıp okumak yeterli mi? Hiç kimlik doğrulama yok ve ölçümleri ilgilenen herkese kablosuz olarak saçan bir yapı mı?

    • Pratikte kimlik doğrulaması olmayan kurulumlar günümüz Bluetooth cihazlarında oldukça yaygın
      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
    • Yüzüğün arayüzü çok minimal. Sensör olarak adımları sayan bir ivmeölçer, kalp atış hızı ve kandaki oksijeni almak için iki LED ile bir fotodiyot var; içeride de şarj durumunu gösteren tek bir durum LED’i bulunuyor
      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

    • Ben de aynısından sipariş ettim. Apple Watch’un uyku takibi verilerine bu yüzüğün uyku takibi verilerini eklemeyi denemek istiyorum
      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