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:
Creates a file called firstrun.sh that will configure the device on the first boot (and then delete firstrun.sh)
Adds systemd.run=/boot/firstrun.sh to the cmdline.txt file
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.
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.
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.
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?
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?
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.
Linux
This is automatically updated.
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.
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:
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).
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
Change to the new directory: cd libretech-flash-tool
Use the following command to get a list of boards supported by the tool: ./lft.sh board-list
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 /
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