Hacker News new | past | comments | ask | show | jobs | submit login
Custom firmware for MI fitness band (github.com/atc1441)
147 points by ITwork2019 4 months ago | hide | past | favorite | 39 comments



The original software on these is really bad. e.g. if move between time zones during the day then Mi Fitness app most likely won't get all data out of device. Also Mi Fitness cannot download data of previous date out of the device. Steps counter is also very bad at keeping track if you move slowly e.g. in your apartment.


> Also Mi Fitness cannot download data of previous date out of the device

Exactly the reason I ditched it. It stopped auto-syncing data after some stupid android-app split. Like they have 3-4 apps? All similar, but supports different hardware.

In Mi Band 2 / 3 days it was working quite good.


Steps get over counted anyway by just moving your arm. I had one on while strumming guitar and it thought I'd walked thousands of steps.


This is why everything should always use UTC internally. Timezones are a presentation layer problem.


Is there a good fitness band to measure sleep quality that lets you download the data from a Linux machine, or at least lets you see the data on screen?

With "see the data on screen", I mean at least some quality index, not just the number of hours you slept.


I have a Garmin Venu 2 that acts like a thumb drive when plugged in on Linux (and I assume other OSs). The files it stores exercise data as are accessible with a few FOSS tools. You can also put music on it this way. I haven't tried to extract and view sleep data to desktop, but it will show sleep scores and charts on the devices screen. I believe most Garmin behave this way when plugged in, so can be used without cloud/app interaction.

I would be interested to know if others have interesting linux desktop software or workflows for working with this data when it comes off your watch


Contrary to many android wearables, the most recent google pixel watch 2 is reasonably good at sleep tracking according to the quantified scientist: https://www.youtube.com/watch?v=Ef1by8kJfk4&t=1109s

Google partnered with fitbit last year and now sleep data and other biometrics are shared with the fitbit app. The good thing about this is that you can access your data via fitbit's API, there is a python package for this process: https://github.com/orcasgit/python-fitbit. You can read this article if you want more details on how to configure oauth to make this work: https://towardsdatascience.com/using-the-fitbit-web-api-with...

The cons of this setup is that you still need an android phone synched with your watch and is not too privacy friendly, but sure, you could run the code on your linux machine


> Google partnered with fitbit last year and now sleep data and other biometrics are shared with the fitbit app

Google owns Fitbit, and it’s not clear what the future of Fitbit is as a standalone brand or product line


For me, the Google Pixel 2 is just not a good device. I recently bought one to replace an Amazfit GTR 4. So many wrong things in the Pixel, I went back to the GTR 4. Doesn't track heart rate or 02 during non-sleep periods, for example, and impossible to see individual readings on the phone. Doesn't show enough text of the alerts. ECG readings are awkward and not automatic (though the GTR 4 does not have them, they are so awkward on the Pixel, they might as well not be there - it insisted I switch the device to the other wrist to get a reading).


Oh, and the GTR 4 battery lasts about 10 days for me. The Pixel never lasted more than two.


I use Arduino and piezo on the plank under the mattress: https://files.catbox.moe/y6ehk6.gif


But what does that tell you about your sleep cycles and sleep quality? It just shows you moving around in bed.


Isn't "movement in bed" how all sleep monitors work? (aside from the clinical test with electrodes stuck to your head)

I always assumed the main metric used by sleep apps for watches is movement.


>Isn't "movement in bed" how all sleep monitors work?

No.

The best ones monitor your brainwaves, and the best wearables monitor the next best ting, your hear rate and blood oxygen.

You can get knocked out by drugs, alcohol or just die in your sleep from apnea so you'll not move around in bed and your bed motion sensors are useless.

You need to tap into the body's vital signs to know your sleep stages accurately, especially REM.


For anyone interested in how Apple Watch measures sleep stages, here's a deep dive that goes into details about how the accelerator is used to estimate respiration rate, etc in order to classify sleep stages

https://www.apple.com/healthcare/docs/site/Estimating_Sleep_...


Sleep cycles are very hard to measure reliably, basically no wrist worn device should be trusted for that.


I find wrist sleep apps accurate enough for showing me trends over time and correlations between things that make sleep worse (e.g. drinking before bed shows different sleeping patterns than not drinking). Interesting and useful data but I agree it's not scientifically precise.


I agree, which is why I think that it would be more interesting, and probably more honest, to show some sort of "sleep quality" index instead.


I use Withings. Both their watches and their Sleep tracking mat can do sleep quality tracking. I use the latter at home, or their watch when I travel. So I have data no matter where I am.

They have an export/takeout form in the app, which will create an archive with all your info and send you an email, and they provide instructions to parse it (e.g. in Excel). They also have an API, but it requires setting up a public OAuth endpoint for authentication (for Web apps) or pre-approval (for Mobile apps).


Garmin watches expose their data as a mountable filesystem. They're generally very good quality-wise as well.


I've been looking for this too - high quality sleep tracker that doesnt connect to the internet that produces downloadable metrics. I dont think it exists.

If gadgetbridge wrote an oura ring connector id buy one in a heartbeat. I had a mi 5 and the data quality was so crap.


Amazfit watch gives a "score" that can be seen on device screen, in addition to the total hours and and breakdown per awake / REM / deep / light time.


Yes, many activity trackers do this.

It is interesting to wear 2 of the same trackers, one in each wrist, and see if they are close to agreeing.

I do that with 2 Mi Bands.

The variance of a single point estimate is infinite.


I'd love to see a full featured open-source firmware for the Mi bands, as the original firmware requires an device-specific Xiaomi-issued key for Bluetooth pairing. For obtaining this key you have to use the Amazfit App with an Xiaomi account at least once. For details check out https://gadgetbridge.org/basics/pairing/huami-xiaomi-server/

While thinking about it, I wonder if that's even compliant with GDPR, as it forces users to provide their email address for no good reason.


I just need a way to download the data on my PC so I can keep a backup, since I had to switch 2/3 apps to keep using the Mi Band since 2015. I have 8 years of sleep/steps/heart tracked and no easy way to export and visualize the data.


An open source(ish) fitness tracker would be great. I like the idea of being able to write apps for my Apple Watch to add custom features (I.e. automatic rest timers when weightlifting) but don't want a smartwatch or soemthing with that small of a battery. A WHOOP that I don't have to pay monthly for and can get some programmability out of would be great


BangleJs and Pinetime


Oh neat. I've got a handful of these things. They're cheap enough that when the band breaks or the screen gets a decent scratch you don't feel bad just buying another one.


It really depends on what makes you feel bad. Funny coincidence, I just found mine yesterday after it sitted 2 years in a drawer as I hate having things tell me what to do.


Yep, the waste would make me feel terrible.


Note that this fw is for the latest mi band 8


so they didn't enable the write-protection after flashing?


It has OTA firmware upgrades, I suppose if they did that they wouldn't be able to update the firmware.


If I remember correctly you can disable flashing through UART/whatever without disabling OTA flashing.

Eg. The ESP32 has this feature.


If you care about battery life, I haven’t found a better option than these little guys.


While still a “sister”/subsidiary company, Huami’s Amazfit Bip (particularly the 1st gen but I think also the Bip S IIRC) have transflective memory-in-pixel screens with 1-3 months of battery life (3 months being almost an anomaly that I experienced with a fresh battery) - while still tracking movement and sleep.

I got an Amazfit Band 7 after my OG Bip died. More info as far as blood o2 and fitness recovery & VO2 estimates etc, but it loses the compass, barometer, a physical button (bizarrely imo) & a few month(s) of battery life. The OLED is certainly nicer in some situations (almost always indoors) but I very much miss the battery life. Oh, and lots of app & custom watchface support too.

Btw if you have a larger budget, Garmin is also apparently pretty good with good battery life and a very similar screen type (and much better sports tracking).


Transflective LCD, e-paper or similar always visible low-power display technology is mandatory for infrequently charged compact wearables.

I tried I like Amazfit Bip (older, more contrast, low refresh frequency) and Amazfit Bip S (newer, less contrast, higher refresh frequency, music playback control) devices that work for more than a month on one charge. For Android synchronization one can use excellent FOSS Gadgetbridge app.


Fossil Hybrid watches. Four weeks battery life. Supported by Gadgetbridge, so no need to upload your health data to a third party. Can run custom code on the watch.


PineTime has quite good battery life. Probably not as good. But a week?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: