Thanks for the responses.
I will do some testing to see how different firmware versions and enabling/disabling deep sleep and/or BT helps.
A comment on Reddit by user u/tehhedger seems to provide some more insight:
We have no idea what happens on the second core that is responsible for BT. Its firmware is an encrypted blob, provided by chip manufacturer, and the only way to communicate with it is over shared memory and a set of hardware semaphores.
Flipper’s MCU has hardware-enforced security mechanisms protecting that second core, so we cannot do anything to inspect its state besides very limited GPIO debug outputs that are mostly useless in this particular case, since we have no idea of second core’s internal workings.
That second core manages its state on its own, and we cannot force it into low-power states needed for proper deep sleep. We can only arrange certain conditions and expect it to enter sleep mode. Furthermore, we cannot restart that second core without resetting the whole MCU, if it fails for any reason.
Sometimes, with deep sleep enabled, second core encounters a hard fault and halts. From the main firmware running on first core, we can only see an indication that such fault had happened. And since there are no recovery mechanisms from that state besides whole chip reset, that’s what we do. And display that particular message.
We reported the issue to ST, chip manufacturer, and they confirmed that it indeed exists. However, they didn’t give us any estimate on new C2 firmware that would have that fixed. And they didn’t suggest any workarounds. So we have to wait.
Seems like solutions are being worked on as we speak. We just have to give it some more time.
There is however one major component, which seems completely omitted from the discussion:
It seems to be a binary problem. As in, you have it or you don’t.
How can this be, if not for some hardware issue / quality control gone wrong / etc?
Be transparent about this. The Flipper community is quite well connected, this isn’t the sort of thing you can just sweep under the rug.