Raspbian 12 Bookworm and 11 Bullseye for Libre Computer Boards

For those looking for a headless setup: ignore the Raspberry Pi Imager configuration GUI, it is completely ignored. The Raspberry Pi Imager only does two things:

  1. Creates a file called firstrun.sh that will configure the device on the first boot (and then delete firstrun.sh)
  2. Adds systemd.run=/boot/firstrun.sh to the cmdline.txt file

The problem is that firstrun.sh is never executed because cmdline.txt is completely ignored, see here for confirmation: Raspbian 12 Bookworm and 11 Bullseye for Libre Computer Boards - #78 by librecomputer

You can use Raspberry Pi Imager to perform this setup through the GUI on first boot

@librecomputer could you remove this recommendation from the post or provide a workaround to make sure that firstrun.sh is executed?

1 Like

We can include this in the July release. Thanks for bringing this up.

Hi,

do you have an ETA of the July release? I’m kinda waiting for this - for multiple reasons.
And because I have 5 S905 boards with emmc I’d like to do this in one step.

Cheers

I just noticed the July releases were posted yesterday. I’m surprised there was no announcement.?
https://distro.libre.computer/ci/raspbian/11/

We push the beta release to the server already. It’s 99% there and way better than the previous images in every conceivable way. However there’s still some finishing touches like the first-run.sh mentioned that we need to integrate.

We have added firstrun.sh functionality in the first partition (mounted as /boot/efi) to our Raspbian 11 images. Raspbian 10 does not seem to have this functionality so we did not add it to Raspbian 10. This will be released as part of the image update cycle in a few days.

Cool!
Out of curiosity, what method did you use to trigger it? I believe that on an RPi, they insert a line in cmdline.txt that calls firstrun.sh (and I believe it deletes this line upon successful completion). But, I’m assuming that you still aren’t doing anything with the cmdline.txt file, right?

We just added a systemd service wanted by multi-user.target after local-fs.target. We ripped out all of the hacky stuff Raspberry Pi’s bash scripts do since we have better facilities for those anyway.

2023-05-03-raspbian-bullseye-arm64+aml-s905x-cc.img.xz
error during boot. lite version works fine but desktop version does not work. during the boot, a mounting error is mentioned and the full system will never boot or install.
i tried dd and rpi-imager.

Probably an error with your flash tool or MicroSD card. What is the exact error?

We have no problems booting that image.

Le Potato has a very long bootup (at least for me) where it will take ~5min before anything shows up on the HDMI display. As long as all three (blue green red) LEDs are lit it should eventually display something. It seems more picky about uSD cards than an RPi, where even cheap throwaway cards work in a RPi don’t work on Le Potato. Use a SanDisk or Samsung uSD card for best results.

This should not be the case. It should show video within 3 seconds of power on. What is the make and model of your display?

I’ve tried with tons of displays.
Seiki 39" 4k
Uperfect mini (1080p)
some no-name RPi touchscreen display (1024x600)
Samsung 4k TV
Element 4k TV
Spectre 4k monitor
and too many more

The time from plugin to display is always super long.

On a different note, replacing ‘bullseye’ with ‘bookworm’ in all the apt sources and doing a full dist-upgrade to try to upgrade to debian 12 base makes the GUI horrible after reboot - it seems to replace all the rpi desktop with something that seems to be debian but not really.

Is there any way to get the rpi desktop back, or should I just reflash back to debian11 base?

You are doing something wrong then. Those displays should be supported. We have Debian 12. Why are you upgrading Raspbian which is based on Debian 11?

Does Libre have a recommended upgrade procedure for its boards for when new images are published? Is the procedure the same whether it is a point release vs. a full version upgrade?

For example, if I have a Le Potato running the 2022-09-22 release of Raspbian Bullseye, what is the procedure for upgrading to the 2023-05-03 Bullseye release?

Is this the same procedure you would recommend for going from Buster to Bullseye (or Bullseye to Bookworm, once that is released)?

I am assuming that simply running apt upgrade is not going to take care of upgrading the bootloader and microboot? So, at some point, I am going to need to do something more if I want to take advantage of all the latest fixes and features, right?

To break it down:

  1. Bootloader

This is too dangerous for us to update without bricking existing setups. We leave this up to the user to do via libretech-flash-tool with the force parameter.

  1. Linux

This is automatically updated.

  1. Userspace

Userspace utilities are automatically updated. Sometimes we make changes to the base configuration like adding default packages, etc. These are not automatic but not consequential to your image if you don’t use them.

So bootloader resized on the uSD card? Then a full re-flash of a new .img download will include the latest bootloader as well?

MBR sits on sector 0.
Bootloader depending on the board start from 1 and end before 2047.
Filesystems start on sector 2048.

There is no overlap so any OS image can be moved to any board.

We refresh the images every 1-6 months to utilize the latest bootloaders. You can also use the libretech-flash-tool to install the very latest bootloader.

Thanks, I was able to do this successfully. For anyone who is curious, these were the detailed steps I took:

  1. Backup SD Card before starting as this operation could destroy data or render the card unbootable if something goes wrong (I used Win32 Disk Imager on a laptop to create a full backup image of my SD card and 7Zip to compress the image for storage on my laptop. I tested the backup by using Raspberry Pi Imager to write the backed-up image to a new SD card - Note: Raspberry Pi Imager is able to handle compressed images without the need to decompress first. I then Booted from the new/backup SD card to verify my backup was good).

  2. Download the libretech-flash-tool (I downloaded it to a folder on by LePotato, which was running Raspian, but this tool is just a collection of shell scripts, so it looks like you could probably run these from any Linux computer). Use the following command:
    git clone https://github.com/libre-computer-project/libretech-flash-tool.git

  3. Change to the new directory:
    cd libretech-flash-tool

  4. Use the following command to get a list of boards supported by the tool:
    ./lft.sh board-list

  5. Use the following command to get a list of block devices that the tool can write to (note: it will not display the device that you booted from even though it is capable to write to the boot device, but it will display other devices such as an SD card inserted into a USB card reader):
    ./lft.sh dev-list
    If you are planning to update the boot loader on the card you booted from, you can type “lsblk” to list all the block devices and find your card name there (in this case, my card was “mmcblk1”):

$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk1     179:0    0 29.5G  0 disk
├─mmcblk1p1 179:1    0  256M  0 part /boot/efi
└─mmcblk1p2 179:2    0 29.3G  0 part /
  1. You then flash the bootloader by typing:
    $ sudo ./lft.sh bl-flash [Board] [Device]
    (replace board with the board name from the list above that matches your board, and device with the device name for your SD card). For my example, this looks like the following:
    $ sudo ./lft.sh bl-flash aml-s905x-cc mmcblk1
    However, if device you typed is the boot device, you will get an error.
    BOOTLOADER_flash: DEVICE mmcblk1 is not a valid target.
    To get around this, you can use the “force” option:
    $ sudo ./lft.sh bl-flash aml-s905x-cc mmcblk1 force
    The process is very fast and you will see something like the following:
BOOTLOADER_flash: !!!WARNING!!! DEVICE mmcblk1 is mounted.
BOOTLOADER_get: downloading aml-s905x-cc bootloader to /tmp/tmp.9AVLF3IOwL.

--2023-08-22 18:39:51--  https://boot.libre.computer/ci//aml-s905x-cc
Resolving boot.libre.computer (boot.libre.computer)... 2600:3c00::f03c:93ff:fea1:358c, 192.53.162.101
Connecting to boot.libre.computer (boot.libre.computer)|2600:3c00::f03c:93ff:fea1:358c|:443... connected.

HTTP request sent, awaiting response... 200 OK
Length: 802816 (784K) [application/octet-stream]
Saving to: ‘/tmp/tmp.9AVLF3IOwL’

/tmp/tmp.9AVLF3IOwL           100%[=================================================>] 784.00K  1.83MB/s    in 0.4s

2023-08-22 18:39:52 (1.83 MB/s) - ‘/tmp/tmp.9AVLF3IOwL’ saved [802816/802816]

BOOTLOADER_get: downloaded aml-s905x-cc bootloader to /tmp/tmp.9AVLF3IOwL.
BOOTLOADER_flash: !!!WARNING!!! DEVICE mmcblk1 is mounted.
1568+0 records in
1568+0 records out
802816 bytes (803 kB, 784 KiB) copied, 0.0372677 s, 21.5 MB/s
BOOTLOADER_flash: bootloader written to mmcblk1 successfully.

After that you can reboot. If you have a serial console cable connected during the bootup, you should see a message early in the startup (before Grub) that shows the U-Boot version:
U-Boot 2023.07+ (Aug 16 2023 - 07:25:18 -0400) Libre Computer AML-S905X-CC

2 Likes