zmkfirmware / zmk

ZMK Firmware Repository
https://zmk.dev/
MIT License
2.84k stars 2.86k forks source link

Nice nano will periodically get stuck in bootloader, requiring bootloader reflash #315

Closed petejohanson closed 4 years ago

petejohanson commented 4 years ago

Since we introduced BLE profiles, we've had many user experience problems w/ their nice nano getting "stuck" in the bootloader, and after reflashing ZMK, the next power cycle it goes directly to bootloader again. Reflashing the bootloader w/ adafruit-nrfutil seems to be the only fix for this.

There seems to be some correlation w/ this issue and heavy BLE profile switching, reported by myself and several other users.

Some guesses:

Nicell commented 4 years ago

I have some interesting findings for this issue. I've been able to consistently recreate this issue by spamming cycle effect on RGB, which triggers a save to the settings storage every time. It took somewhere around 600 times for it to break the board.

While playing with the storage partition I noted this:

I'm wondering if NVS is improperly erasing flash pages when it fills up. That seems likely. I think we should try a different settings back end to see if the issue is alleviated.

8utl3r commented 4 years ago

Can confirm this is happening to me. I have a Corne with nice!nano. On the split it seems only to happen to the left half. Let me know if I can help or test a fix. :) that said I have limited understanding of how the firmware build stuff works. As in I'm not sure how to pull changes from the main ZMK repo to my own repo...

petejohanson commented 4 years ago

Can confirm this is happening to me. I have a Corne with nice!nano. On the split it seems only to happen to the left half. Let me know if I can help or test a fix. :) that said I have limited understanding of how the firmware build stuff works. As in I'm not sure how to pull changes from the main ZMK repo to my own repo...

Do you use BT profile switching often?

8utl3r commented 4 years ago

@petejohanson yup, very frequently