Show DFU mode on the device screen instead of leaving the last frame up
Problem
When a device is put into DFU mode for a firmware update, the screen keeps showing whatever frame was drawn last. To anyone looking at the device it just looks frozen: the UI is stuck, nothing responds, and there is no indication that the device is waiting to be flashed.
This is confusing on its own, and it is worse when an update fails partway. The device is left sitting in its bootloader with a stale screen, and the only clue is the blinking LED, which most people won't read as "this device is in DFU mode".
Request
Draw a DFU screen before jumping to the bootloader, so the device says what state it is in. Something minimal is enough:
- "DFU Mode" or "Firmware Update"
- a short line telling the user not to power the device off
- ideally the device name or address, so it can be matched to the device shown in the updater app
The bootloader itself has no display driver, so this needs to be drawn by the firmware immediately before the reboot into DFU. Clearing the screen instead of leaving the stale frame would already be an improvement over what happens today.
Why it matters
Clients drive DFU over BLE, and the update can take a while or fail and leave the device waiting. Right now the device gives the user nothing to go on, so a normal update looks like a crash, and a failed one looks like a bricked device.
Source: meshtastic/firmware