Librem5-flash-image and 2nd state give LIBUSB_ERROR_TIMEOUT

I am faced with a strange problem that I did not have so far while I flashed my Librem 5 many times, I went through all the other post that talks about the error message: LIBUSB_ERROR_TIMEOUT

But my problem seems different, indeed I downloaded the script, with all dependencies (including for python) but my Librem 5 refuses to update after the flash of uboot, it blocks in step two, with this error message.

I used to do it with a kvm but I even tried it on two computers live on debian, changed the USB-C cable, tried multiple times in one direction and then in the other, and the problem persists, while the Librem 5 works perfectly.

passed the rights udev (with succés) first used the update script in automatic with default image of 2023, then with elements loaded independent, just boot with uuu, loaded the most recent images but nothing does it, someone has an idea? Maybe the boot partition is too full, I checked with jumpdrive but there are still 210mo available
 I confess that I do not know what is wrong.

Here is the exact error code

gustav@robot:/media/gustav/FLASH/librem5-flash-image$ sudo ./scripts/librem5-flash-image --stable --skip-download --dir ‘/media/gustav/FLASH’
2025-04-13 16:04:12 INFO Looking for librem5r4 luks current image
2025-04-13 16:04:13 INFO Found disk image Build “stable” ‘Last stable librem5r4 build’ from Fri Jun 23 22:21:40 2023
2025-04-13 16:04:13 INFO Looking for librem5 u-boot
2025-04-13 16:04:14 INFO Found uboot Build “stable” from Wed Jun 21 13:54:04 2023
2025-04-13 16:04:14 INFO Downloading to /media/gustav/FLASH
2025-04-13 16:04:14 INFO Skipping download and using local image ‘/media/gustav/FLASH/librem5r4.img’
uuu (Universal Update Utility) for nxp imx chips – lib1.4.193

Success 0 Failure 1

1:6 2/ 3 [HID(R):LIBUSB_ERROR_TIMEOUT ] SDPV: write -f u-boot-librem5

Traceback (most recent call last):
File “/media/gustav/FLASH/librem5-flash-image/./scripts/librem5-flash-image”, line 628, in
sys.exit(main())
^^^^^^
File “/media/gustav/FLASH/librem5-flash-image/./scripts/librem5-flash-image”, line 611, in main
flash_image(uuu_target, args.debug)
File “/media/gustav/FLASH/librem5-flash-image/./scripts/librem5-flash-image”, line 403, in flash_image
subprocess.check_call([‘uuu’, uuu_target])
File “/usr/lib/python3.11/subprocess.py”, line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command ‘[‘uuu’, ‘/media/gustav/FLASH/flash_librem5r4.lst’]’ returned non-zero exit status 255.

Here is a command list suite that I also tried

sudo ./scripts/librem5-flash-image --udev;

sudo sh -c “uuu -udev >> /etc/udev/rules.d/99-uuu.rules”
sudo udevadm control --reload
sudo udevadm control --reload-rules

uuu u-boot-librem5.imx

sudo ./scripts/librem5-flash-image --stable --skip-download --skip-cleanup --dir ‘/media/gustav/FLASH’ --skip-flash

And finally screenshoot of the kvm that allows to see that the step wrong thing came when the phone goes into Purism USB download gadget

Thank you











1 Like

So booting into Jumpdrive works? How are you doing it?

2 Likes

Thank’s for your express return :smiley: :heartbeat:

I follow what it’s explain here

how-to-investigate-and-fix-a-librem-5-installation-that-hangs-at-boot

I do

./boot-purism-librem5.sh

and do this

  • Then identify the partition on sdc:
$ lsblk /dev/sdc
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdc      8:32   1 29,1G  0 disk
├─sdc1   8:33   1  465M  0 part
└─sdc2   8:34   1 28,7G  0 part
  • Decrypt and mount the root partition (in this example it’s sdc2 but mind that yours may vary):
sudo mkdir -p /mnt/jumpdrive/emmc
sudo cryptsetup luksOpen /dev/sdc2 jumpdrive-emmc  # replace sdc2 with your individual device name

sudo mount /dev/mapper/jumpdrive-emmc /mnt/jumpdrive/emmc

and i can access on boot and emmc with apparently no problem, I think

boot partition
But I mounted the boot partition (well I think I’m not an expert far from it) with gnome disk, sry for that, I take the shortcut, but maybe, it’s not the real boot partition

emmc

But I don’t use something like that

mkdir -p /boot
mount /dev/mmcblk0boot0 /boot

Maybe there is still a partition of the disk above? Or in a memory. Not 100% sure that I explored everything, all this is very new for me. But I did not feel that there were mistakes, sudo dmesg -w. send expected return

1 Like

I asked because booting Jumpdrive involves the exact same process like flashing does, so in order to successfully boot it over USB you need to have passed the stage that errors out when you attempt to flash.

The only variable that’s different there is that Jumpdrive likely uses an older u-boot. You could try to point librem5-flash-image to the u-boot file from the Jumpdrive archive and see if that works.

That’s not a /boot partition, but a bootloader one.

2 Likes

Sry again but, I’m looking for file on Jumpdrive, it’s seem use a u-boot-librem.bin and the Librem5-flash-image seem to use a u-boot-librem.imx

I need what kind of command on Librem5-flash-image to use it ? Or maybe I just need to modify the .bin to a .imx on .lst from Librem5-flash-image to do that ? Or rename directly the .bin file on .imx (I wouldn’t want to blow it all up :sweat_smile: I prefer to ask)

1 Like

librem5-flash-image --uboot path/to/u-boot-librem5.bin

(you need the latest librem5-flash-image version, 0.0.5, but I’ve seen that you have it on the screenshots)

1 Like

My mistake in the tutorial (step 15), I guess.
Do you have an idea for a less confusing name for the mountpoint (rather than /boot)?

1 Like

It’s not the mount point that’s wrong, but the device - /dev/mmcblk0boot0 is a bootloader partition and you can’t mount it (unless you made some weird things to it on your own :wink: ). You’re after /dev/mmcblk0p1 instead.

1 Like

Thanks for the pointer @dos.

Turns out that the post is now locked and I can no longer edit it.
So the mistake is going to stick around for now.

1 Like

Use a different USB port.