Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bootloop after a manual reset while wearing the watch #317

Closed
JF002 opened this issue Apr 27, 2021 · 28 comments
Closed

Bootloop after a manual reset while wearing the watch #317

JF002 opened this issue Apr 27, 2021 · 28 comments
Labels
bug Something isn't working

Comments

@JF002
Copy link
Collaborator

JF002 commented Apr 27, 2021

Yesterday evening, the battery was completely empty. I put the watch on the charging cradle (it rebooted correctly) and went to sleep.
This morning I took the watch out of the cradle (it was still running fine) and manually reset it (long press on the button). Instead of rebooting into InfiniTime, it entered into an infinite bootloop : Green pine cone, display glitch, pinecone again. I tried to revert to previous firmware and to load the recovery firmware using the bootloader but none would load correctly.

It looks like the bootloader does its work but that InfiniTime cannot freezes during its initialisation and that the watchdog resets the watch. As none of the firmware would run, even the recovery one, it looks like something was preventing the firmware to init. It could be caused by the I²C bus that is frozen (it happened when we were working on integrating the motion sensor, but we thought we fixed that issue...).

I bootloop'd during more than 7h (8h -> 15h/3PM) and the battery finally drained. I restarted correctly once I charged it again.

I managed to reproduce this issue only once by resetting the watch while wearing it on my wrist. If motion/step sensor involved?

@pfeerick
Copy link
Contributor

pfeerick commented Apr 28, 2021

This sounds like the exact same issue I mentioned on the discord chat a couple of days ago... I did a manual reset, and it went into an infinite bootloop. I don't believe motion was involved in this case, as it was lying flat on the floor.

I happened whilst I was getting ready to video it for #316. I manually reset the watch so that uptime wasn't a factor... and it went spastic... In fact, because of that, I actually have it on video...

https://youtu.be/JF18_JHMudk

... which ended a couple hours later (probably about 4 hours, as the battery wasn't fully charged...) with this near the end...

https://youtu.be/MEKfSajl7tk

What makes it even weirder, is I'd just been watchdog and hard resetting the watch several times, in order to validate that the issue was repeatable...

Trying to revert to the prior firmware (blue pinecone), and use the recovery firmware (red pinecone) did nothing other than act as if it is if it were copying the firmwares across, but nothing more... it would just boot loop. I verified afterwards that I did indeed have the recovery firmware, so it just did not trigger at all.

It started up again fine when I put it in the charge cradle, and has behaved fine since then. And, even with this failure mode, it was entirely recoverable on a factory sealed pinetime, so whilst the desired end user experience, is at least not fatal.

@GithubUser5462
Copy link

Mine is looping right now. It was sitting on the table doing nothing for at least 12h.

I tried to reconnect it with the phone but GB and nRF Connect were not able to detect it, even with the scan option and even if I woke up the watch with the button multiple times.

nRF Connect can now detect it before the watch finishes loading but it is stuck in a loop.
Prior firmware and recovery firmware did not fix the loop for me either.

@nlfx
Copy link
Contributor

nlfx commented Apr 29, 2021

I encountered the exact same boot loop two days ago. I managed since then to reproduce twice the problem, but had to restart the watch 100+ times to do it.

However, I didn't find any reliable way to repeat this issue:

  • It happened once when wearing the watch, twice with the watch flat on a table.
  • It happened when rebooting from time face main menu, and also from battery menu.
  • It always happened with Bluetooth connected, but given that I only managed to trigger this bug 3 times and had Bluetooth on in ~ 70% of restarts, that might very well be unrelated.

I'm not familiar with nRF52, but I see in the bootloader code that all peripherals get created and initialized. Could this create some kind of deadlock when InfiniTime tries to re-initialize the same peripherals (SPI for instance)?

Would it be possible to "un-initialize" these peripheral before jumping from the bootloader to the PineTime firmware? Maybe some unneeded peripherals running are also the cause for the increased power consumption reported in InfiniTimeOrg/pinetime-mcuboot-bootloader#8?

But as said above, I've never worked with nRF52 so these are probably some wild uneducated guesses.

@JF002 JF002 added the bug Something isn't working label Apr 29, 2021
@Chasarr
Copy link

Chasarr commented Jun 4, 2021

Nothing to add here except that the bug is still there on the latest release, (Infinitime 1.1, bootloader 1.0, recovery 0.14.1) but I assume you already knew that. I fully charged my Pinetime over the night, noticed my phone wouldn't connect to it so I restarted it only to be met with a bootloop.

@geekbozu
Copy link
Member

geekbozu commented Jul 6, 2021

We know it still exists but never hurts to add more confirmation I guess?
Would not connect over Bluetooth while out, Reset it on my wrist -> boot loop. Battery was at ~60% at this time.
Infinitime 1.2.0 Bootloader 1.0.0

@myxor
Copy link

myxor commented Jul 15, 2021

I was able to reproduce a freeze as follows:

  1. device is charging
  2. turn screen on while keep it charing
  3. try to open main menu (swipe vom left to right)
  4. device is frozen

Only thing which i could do in that state was turning it off but now it won't turn on again. I guess i will have to wait until the battery is drained.

@Chasarr
Copy link

Chasarr commented Jul 15, 2021

I wasn't able to reproduce this, unfortunately

@Riksu9000
Copy link
Contributor

I just got a bootloop after messing with twiMaster. I was working on #492 and tried to make twiMaster wake up only just before reading and sleep right after. If twiMaster is causing the problem, maybe we should remove all twiMaster.Sleep() and twiMaster.Wakeup() calls, and just run them in twiMaster.Read() and twiMaster.Write(), making these functions always safe?

It could be caused by the I²C bus that is frozen (it happened when we were working on integrating the motion sensor, but we thought we fixed that issue...).

Can the bus somehow be reinitialized on each reset? Can the firmware be made to boot even if i2c doesn't work to reflash the firmware? Or is the motion sensor causing the problem, and only resetting it fixes it?

@Riksu9000
Copy link
Contributor

Actually this sounds very likely to be caused by the bus being frozen. Manual/watchdog reset can happen at any point, so maybe sometimes it will reset while the bus is being used, causing the devices to get confused. This would explain the inconsistency.

@Dperrigo18
Copy link

I don't have much to add but I'm on 1.3.0 and without me doing anything today it rebooted and is now stuck in a bootloop with the pinecone and 1.0.0.
It has been rebooting at random intervals but it usually goes either to the InfiniTime screen in which I apply the firmware or boots back into InfiniTime.

@hubmartin
Copy link
Contributor

hubmartin commented Aug 4, 2021

Just my 2cents, when I pressed the back cover on my new unsealed PineTime I've noticed that pressing the button doesn't turn on the screen on. When I released the pressure on the back cover the watch LCD turned on. It was like the watch sensed the button pressed, but continued to work after releasing the pressure. I also had a few reboot cycles when I was pressing hard on the back of watches.
First I thought that there is a short circuit on the button flex PCB so I added capton tape between solder joint and LCD screen. But the behavior was the same. I was thinking that maybe I'm pressing hard on I2C connector to the pulse sensor. I fixed that by removing some foam plastic between pulse meter pcb and battery.

UPDATE: This was solved by adding kapton tape between lcd touch flex and the PT PCB. I've noticed tha metal stiffener on that touch flex was grinding PCB signal trace on the PineTime PCB.

@doenietzomoeilijk
Copy link

doenietzomoeilijk commented Aug 9, 2021

I appear to have run into the same issue. Pinetime is on 1.3.0. After noticing it had lost its Bluetooth connection to GadgetBridge, I manually rebooted, and am now admiring a white-to-green pinecone transition, a bit of a wait, a blink, and then it'll reboot again. Tried blue-coning with no visible effect. Tried redconing but the PineTime reboots before GadgetBridge can get a firmware transfer going, it seems. I can re-pair, and after the boot (or at least when the cone is green), GadgetBridge is able to connect for a short while.

I'll leave it to drain and I'll try again...

Update: after leaving it to shut down by itself and putting it back on the cradle, things are peachy again.

@myxor
Copy link

myxor commented Sep 27, 2021

My unit does this since a few days:

  1. It boots, shows green pinecone
  2. Shows blue pinecone
  3. Shows red pinecone
  4. After a second or two it starts rebooting

Pressing the button seems not to change anything.
I let the battery drain two times already but not yet any success to get it booting correctly.

Gadgetbridge and nrfConnect App are not able to see the device at any time during the boot loop it seems.

@Riksu9000
Copy link
Contributor

My unit does this since a few days:

  1. It boots, shows green pinecone
  2. Shows blue pinecone
  3. Shows red pinecone
  4. After a second or two it starts rebooting

Pressing the button seems not to change anything.
I let the battery drain two times already but not yet any success to get it booting correctly.

Gadgetbridge and nrfConnect App are not able to see the device at any time during the boot loop it seems.

Sounds like the button is broken and the watch thinks its constantly pressed down, because the color should only change when the button is held as far as I know.

@Riksu9000
Copy link
Contributor

Has this happened to anyone after version 1.4.0, or can this be closed now?

@geekbozu
Copy link
Member

I have not encountered this again. I would like to leave it open for a while longer in case any stragglers/unlucky souls stumble across it, I think your cleanups have helped this however.

@Buddhalobes
Copy link

Buddhalobes commented Oct 15, 2021

Has this happened to anyone after version 1.4.0, or can this be closed now?

Unfortunatly just happened to me on 1.4.0.

Sealed unit arrived last night and after running it through a work day, I was looking through Gadgetbridge settings and found the companion app setting. On flipping that on it said that the connection had to be re-paired to work so I deleted the watch entry and tried to make a new one. It would not connect to the watch, so I held the button to reboot the watch.

It is now boot looping and has a entry in Gadget bridge that cycles connectivity with each loop so any attempt at using the firmware recovery tools fail.

Update: 6 hours later acording to this post time stamp and the watch bootlooped until the battery drained out and now it booted into the os just fine once I placed it on the charger

@eshankiyer
Copy link

Unfortunately the plague has claimed another victim. I tried to boot the pinetime into recovery mode to flash new firmware

I got an infinitime screen on the watch and flashed new firmware using nRF connect on iOS. I flashed it and it booted into the safe infinitime logo state. Rinse and repeat

@Avamander
Copy link
Collaborator

Which firmware, why was recovery necessary? Crucial details really.

@Riksu9000
Copy link
Contributor

I got an infinitime screen on the watch and flashed new firmware using nRF connect on iOS. I flashed it and it booted into the safe infinitime logo state. Rinse and repeat

This is a bit different because you got the issue when flashing, whereas others got this when manually resetting. Could this be a separate issue?

Also sounds like you have an older bootloader. The new bootloader should look like this. Does the older bootloader have known issues?

bootloader-1 0

@JF002
Copy link
Collaborator Author

JF002 commented Dec 30, 2021

I'm closing this one as it doesn't seem to reproduce on newer version of the bootloader and InfiniTime. Feel free to re-open if necessary.

@JF002 JF002 closed this as completed Dec 30, 2021
@Dperrigo18
Copy link

Dperrigo18 commented Oct 4, 2023

I just wanted to add that my pinetime just started bootlooping recently after the battery reached 0.
I don't believe once it reached 0 it turned off, it just started to bootloop.
It was running the newest version of infinitime.
Also holding the button to get the blue and red pinecones make no change to the watch bootlooping.
This has also happened to my friends watch some time ago.
I did try to let the watch actually turn off but once placed on the charger it started again.

@djpeter84
Copy link

djpeter84 commented Nov 9, 2023

Have same issue. Watch was working well for months. now stuck in boot loop. using boot 1.0.0 and and InfiniTime 1.13. I noticed that the heart sensor had not been working for a few weeks and the green "light" on the back stays on. Has there been a fix for this?

@JHarding86
Copy link

I just powered on my pinetime for the first time in a while. Booted ok, then I restarted it because Bluetooth wasn't working. Now it's stuck at the infini time logo. Nothing I do will make it boot...

@FintasticMan
Copy link
Member

The screen with the InfiniTime logo is the recovery firmware. To get out of it, you need to connect to the device over bluetooth, and flash a firmware update.

You might need to unpair and re-pair for that to work.

@djpeter84
Copy link

djpeter84 commented Nov 16, 2023

The screen with the InfiniTime logo is the recovery firmware. To get out of it, you need to connect to the device over bluetooth, and flash a firmware update.

You might need to unpair and re-pair for that to work.

I get this when i try to install:

Screenshot_20231116-061404
Screenshot_20231116-061521

@FintasticMan
Copy link
Member

Hmm strange, does the watch show anything?

@djpeter84
Copy link

Hmm strange, does the watch show anything?

no, just the green load pine screen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests