Librem 5 - Bootloop: "Synchronous Abort" handler

Hi all,

I’ve got a Librem5 Evergreen which seems to be stuck in a bootloop.
Didn’t do anything (really) funky, it had firefox installed with some webapps + some flatpaks for matrix communication etc. But I didn’t touch anything outside my home dir (manually atleast).

The phone was working fine but it ran out of battery yesterday and now I can’t seem to boot it anymore. Just a rundown of what I’ve tried so far:

  • Let the battery charge a couple of hours
    If I measure the battery with a multimeter, it reads 4.2V, so seems charged I think?
  • Reflashing the phone doesn’t seem to work
    The ‘uuu’ tool doesn’t seem to be able to find the phone.

Since nothing seemed to work, I opened up the phone and soldered the uart headers on it to get the raw u-boot logs:

U-Boot SPL 2019.04-g17a6c2261c (Sep 10 2021 - 11:20:49 -0700)
Initializing pinmux
power_bd71837_init
power_init_board: reset cause 16
REG09 0x44
REG02 0x3d
REG09 0x44
REG03 0x3a
REG02 0x33
REG07 0x9d
VBUS good 1
VBUS mV 5100
VBAT mV 4184
REG03 0xae
Initializing ECSPI bus
board_ecspi_init: starting
DDRINFO: start DRAM init
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from MMC1
Initializing FSL USDHC port 0

U-Boot 2019.04-g17a6c2261c (Sep 10 2021 - 11:20:49 -0700), Build: jenkins-u-boot_builds-uboot_librem5_build-82

CPU:   Freescale i.MX8MQ rev2.1 1500 MHz (running at 1000 MHz)
CPU:   Commercial temperature grade (0C to 95C) at 36C
Reset cause: POR
Model: Librem 5
DRAM:  3 GiB
board_init: starting 4184 mV
board_init: initializing USB clk
init_tps65982: starting
tps65982_wait_for_app: starting
tps65982 mode ␄APP 
tps65982 boot successful
REG0B 0x31
VBUS good 1
VBUS mV 5000
REG0B 0x26
VBUS_STAT 0x1
USB SDP IINLIM 500mA
CHRG_STAT 0x0
PG_STAT 0x1
SDP_STAT 0x1
VSYS_STAT 0x0
REG00 0x48
IINLIM 500 mA
EN_HIZ 0x0
EN_ILIM 0x1
VBAT mV 4184
tps65982_get_max_current: starting
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial

 BuildInfo:
  - ATF 1fd3ff8
  - U-Boot 2019.04-g17a6c2261c

Board name: librem5
Board rev:  5
fastboot_key_pressed : 1
flash target is MMC:0
Net:   No ethernet found.
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2328 bytes read in 4 ms (568.4 KiB/s)
## Executing script at 80000000
SCRIPT FAILED: continuing...
MMC: no card present
starting USB...
USB0:   board_usb_init: starting
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
USB1:   Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
USB2:   Device 'usb@38200000': seq 1 is in use by 'dwc3_0'
board_usb_init: starting
"Synchronous Abort" handler, esr 0x96000004
elr: 0000000040246104 lr : 00000000402460c0 (reloc)
elr: 00000000fff7b104 lr : 00000000fff7b0c0
x0 : 000d000900160045 x1 : 00000000308600b4
x2 : 00000000fff588f0 x3 : 0000000000000001
x4 : 00000000ffffffff x5 : 0000000000000000
x6 : 00000000ffffffd0 x7 : 0000000000000044
x8 : 00000000ff52e6b0 x9 : 0000000000000008
x10: 00000000ff52f530 x11: 0000000000002ed0
x12: 00000000ff52e6ac x13: 0000000000002aec
x14: 00000000ff52e6ac x15: 00000000ffffffff
x16: 0000000000000028 x17: 0000000000000000
x18: 00000000ff534d70 x19: 00000000fffdbbd8
x20: 00000000fffdb000 x21: 00000000ff5369b0
x22: 00000000fffa6e38 x23: 00000000ff5367b0
x24: 00000000fffbcb43 x25: 00000000fffd3bc8
x26: 0000000000000000 x27: 0000000000000000
x28: 0000000000000000 x29: 00000000ff52e790

Resetting CPU ...

resetting ...

I’m not an expert, but I don’t like the:
## Executing script at 80000000
SCRIPT FAILED: continuing…

But from what I gather, the board_usb_init seems to be failing, don’t know if it’s because of the previous script failing, but the USB failing to start would explain the ‘uuu’ tool not working.

Just as some extra info, the ‘uuu’ tool is reporting these devices:
uuu (Universal Update Utility) for nxp imx chips – libuuu_1.4.243-6-g422c5b5

Connected Known USB Devices
Path	 Chip	 Pro	 Vid	 Pid	 BcdVersion
==================================================
3:93	 MX8MQ	 SDP:	 0x1FC9	0x012B	 0x0001

While I see that the VID/PID in the script is 0x316d/0x4c05 , or maybe this is because it can’t boot properly, I don’t know.

Anyone has experience with this or any ideas? Cause for now, I’m without Librem5 :(…

KR,

Laurens

EDIT: Forgot to mention, If I don’t have the battery in the phone and just connect the usb, it’s also stuck in a bootloop but with different behaviour, it just reset without logging anything:

U-Boot SPL 2019.04-g17a6c2261c (Sep 10 2021 - 11:20:49 -0700)
Initializing pinmux
power_bd71837_init
power_init_board: reset cause 0
REG09 0x44
REG02 0x3d
REG09 0x44
REG03 0x3a
REG02 0x33
REG07 0x9d
VBUS good 1
VBUS mV 5100
VBAT mV 2304
REG03 0xae
Initializing ECSPI bus
board_ecspi_init: starting
DDRINFO: start DRAM init
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from MMC1
Initializing FSL USDHC port 0
�
U-Boot SPL 2019.04-g17a6c2261c (Sep 10 2021 - 11:20:49 -0700)
Initializing pinmux
power_bd71837_init
power_init_board: reset cause 8
REG09 0x44
REG02 0x31
REG09 0x44
REG03 0x2e
REG02 0x33
REG07 0x9d
VBUS good 1
VBUS mV 5100
VBAT mV 2304
REG03 0xae
Initializing ECSPI bus
board_ecspi_init: starting
DDRINFO: start DRAM init
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from MMC1
Initializing FSL USDHC port 0

This makes me fear it’s something hardware related… maybe USB port broken somehow?

I believe that this VID/PID is the Librem 5 successfully in Serial Downloader mode. lsusb should confirm that.

What’s your host environment? There are various versions of uuu around and the right version may or may not be present out-of-the-box, depending on your host distro.

I see those numbers in a script too but my level of knowledge doesn’t extend to explaining how that works. On that limited basis, I don’t think it is intended that the VID/PID in the script matches the VID/PID before you execute the script.

The comment in the script that I am looking at is

# Use uboot to write a file to the rootfs
CFG: FB:  -vid 0x316d -pid 0x4c05
CFG: SDP: -chip MX8MQ -compatible MX8MQ -vid 0x316d -pid 0x4c05

Just a generic comment about your approach … as creative as it is, you don’t have a baseline for comparison. That is, as you didn’t have the UART headers connected when the phone was working, you don’t know whether that “error” is “normal”.

I suggest you contact support@puri.sm and try some simpler things first.

Indeed, they don’t have to match it seems. Those are the VID/PID of the Librem5 when it’s fully booted so no relation to the one I’m seeing with ‘uuu’.

You are correct, I don’t have a baseline so can’t really compare. I’ll try contacting support@puri.sm and see what they recommend.

EDIT: Just FYI, host environment is Arch Linux, uuu: libuuu_1.4.243-6-g422c5b5 .