Device stuck in boot loop

Just started playing with my Mini Dock for the first time. Hardware looks amazing, but the app development is frustrating. REALLY frustrating, specifically because as I was trying the examples of LVGL, when my device restarted to run the app, it got stuck in a boot loop!

Tried (and succeeded) to refresh the firmware, but that doesn’t erase the user data/apps, so it’s still stuck in the boot loop even though the firmware updated.

Also tried holding down the back button for 15 seconds, but nothing.

Can’t get to the web settings because again, it’s rebooting before connecting to the web, and I can’t get to the settings page to enable it to be visible to the desktop.

Also tried going into Thonny and using it to delete the app folder on the device, but it can’t connect because the dock keeps rebooting before it does.

Tried connecting via Thonny with the device in Firmware Update mode thinking that would at least stop the app from crashing things, but Thonny says the device is busy and can’t connect that way either.

So I’m effed it seems. Any ideas on how to resolve this, or is this thing bricked short of me opening it up and attaching a JTAG or something (which I don’t actually have/know how to do anyway.)

Hello,

For the problem you encountered, we judge that there is a problem with the LVGL example created for you, which may be caused by some irregular operations.

The following is our reserved method for restoring factory settings:

  1. Press and hold the encoder button in the upper right corner, and then plug in the power of the Mini Dock. The screen will not light up until the screen lights up (about 15s), then release the encoder.

  2. The screen will display the title of ‘Online Firmware Upgrade’. At this time, you need to press the lower right button twice.

  3. Now the screen will display a pop-up window of failed upgrade. At this time, you press the button in the lower right corner once to close the pop-up window. At this time, your device has been successfully restored to factory settings.

Regarding the LVGL example problem, you can provide your sample code and we will further check it for you. At the same time, we will further consider the problem you encountered to facilitate you to have a better experience.

If you have any questions about the use of the product, please feel free to contact us.

Thanks. Fortunately I bought two of them so I switched to the other one and have been using that, but will try to erase this one maybe over the weekend. Thanks!

Phew! Worked like a charm! My unit is officially back in business!

BTW, an idea for avoiding this in the future… one thing you can do is in your startup firmware, track a persistent ‘boot state’ which you update as you progress through your boot steps. Once everything is done and the device started, you switch the state to ‘boot success’ or simply clear/remove it entirely.

The way it could work is at the start of your boot sequence, you could check the value. If it’s missing, you know this is the first time booting your device (at least since being reset, refreshed, whatever) or if you employed the ‘boot success’ flag, that the last time it started up was successful. In either case, you proceed through the boot steps as normal.

In my case however, the system crash was from my app. If this state mechanism was employed, the most recent state would be ‘launching app’, not ‘boot successful’ (or missing.) This would tell the current boot sequence there was a problem launching the app last time, so this time, skip launching it, instead displaying a message to the user there may be a problem with the given app. Asides from that, you proceed through the rest of your boot steps, hopefully making it to the end, thus clearing the boot state, or again, setting it to ‘boot successful’

Note: Even though the app launch was skipped on this boot, that won’t matter to the next boot, which just needs to know ‘Did the last boot sequence succeed?’ In other words, does the next boot sequence need to do something different to avoid a crash? That’s why it doesn’t matter that the app wasn’t launched this time. The boot sequence itself completed and that’s what matters. Plus, thanks to the message about their being a problem with the app crashing the prior boot, hopefully the user would fix or delete it, meaning the next boot can proceed as normal.

Now if they didn’t fix or delete it, then on the next boot, it would again crash, causing the subsequent boot to again say 'Hey… app ‘x’ caused a boot crash so you may want to fix it, before again, skipping launching it and proceeding through to the end.

Anyway, just an idea I had. Trying to think of ways to mitigate the situation I was in in a user-friendly way that doesn’t require all I tried, nor your steps above. But again, your steps above worked so I’m again good to go. Thanks!

One last suggestion… if it’s not already, put the above in a FAQ for people like myself to find when troubleshooting. While I am impressed at how fast you replied, and how thorough, solving the issue in the first reply, it would still be nice to find that info without having to come to the forums. Maybe even display it on the firmware update page saying how the regular update will not erase user data. If that’s what you are trying to do, follow these steps instead.

In other words, put it right where a person would naturally go should something like this happen to them.

Alternately, add an option on the firmware update screen to also clear the user data. We do that here at Apple when restoring our own internal test devices. As part of installing the latest firmware, we have the option to keep our user data, or reset it giving us an out-of-box experience on next boot. Simple and efficient.

Hello,

Your suggestions are very useful. I have shared them with our R&D staff and they are very happy to adopt them.

They will make further adjustments to this item and modify it in subsequent versions.

Regarding the document guidelines, we will put them into the user manual as soon as possible.

Thank you again for your suggestions. If you have any questions about the use of the product, please feel free to contact us.