You are reading a single comment by @fanoush and its replies. Click here to read the full conversation.
  • Just to let you know that I made some progress with DS-D6 fitness tracker. I have build older 1.87 espruino (before this commit) which was still using SDK11 and SoftDevice S132 v2.0 (same as current firmware) . First I flashed it via gdb over SWD but it did not boot and the bootloader stayed in DFU mode. So I tried to find out why and modified stock fitness app to see if there is some failed checksum or something. I found version strings and lowered all parts (100.016.051 to 090.015.050) and reflashed this and it booted just fine. So there is no checksum (at least over whole app binary). However with the lower version the android app told me there is OTA update! So I let it and it updated the device. However after reboot everything worked except display which showed some random pixels and parts of bigger digits showing time. Button and bluetooth still worked and when trying to pair with the app via bluetooth I noticed the watch name changed to DS-D9! So I got firmware for different model! Then I found out the last part of FW version .051/.050 matches manuCode field in /assets/DSBLEBandD.json inside app apk. 50 is indeed DS-D9 while 51 is DS-D6. Also after update I found on sdcard folder /sdcard/Mpow Band/update/ with nordic style DFU zip package with .dat, .bin and manifest.json inside! So while the DFU bootloader does not advertise Nordic DFU service, it is using same update format. Knowing that I used older legacy 0.5.3 nrfutil (matching SDK11) to make package from DS-D6 firmware dump with similar manifest.json as the DS-D9 zip and then tried serial DFU update. And it worked! I got some timeouts and interruptions with black magic probe serial port so I used real serial adapter and it went to 100% and rebooted back into working DS-D6 firmware! So I tried to update back to 'bad' DS-D9 and then back and it all worked as expected.

    And as final experiment I packaged that older 1.87 espruino build that did not boot previously, flashed it via DFU and .... it worked! So now I have both serial and bluetooth espruino console working (with original Desay bootloader and old softdevice) and it is possible without opening the watch :-)

    So now I need to figure out how to rebuild current version with older Nordic SDK and SoftDevice or I better try to upgrade the bootloader and softdevice somehow via DFU. Or if current DFU bootloader does not support updating itself I need to make custom app that will do it. Or possibly I can try first reflash just bootloader to older Nordic one from SDK11 that works with same soft device (possibly via Flash module while running Espruino?) and then proceed with Nordic tools without any custom Desay stuff.

    I updated my wiki here https://github.com/fanoush/ds-d6/wiki/DFU-update with some details.

About

Avatar for fanoush @fanoush started