Libre Computer Board BIOS/Firmware Update Images

This board has not been released. It’s not possible for you to have purchased it.

I received my purchase and it is a v1 board. I made an assumption that was incorrect.

Thank you for your prompt response.

Thanks for the quick reply and sorry for the delay on my part (had to dig up a serial adapter to get the logs).

Fair enough. What would be the easiest way to reenable it? My own build of U-Boot? I could presumably add it to boot_targets but it seems I can’t save the environment:

=> saveenv
Saving Environment to FAT... Card did not respond to voltage select! : -110
** Bad device specification mmc 0 **
Failed (1)

This seems to only happen in certain circumstances but I’m not quite sure what. Perhaps it’s the attempted tftp without an ipaddr set first.

=> setenv serverip 192.168.0.1
=> tftpboot        
Speed: 100, full duplex
*** ERROR: `ipaddr' not set
=> setenv ipaddr 192.168.0.199
=> tftpboot        
Speed: 100, full duplex
*** Warning: no boot file name; using 'C0A800C7.img'
Using ethernet@c9410000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.199
Filename 'C0A800C7.img'.
Load address: 0x1000000
Loading: *         
TFTP error: 'File not found' (1)
Not retrying...    
=> pxe get         
missing environment variable: pxeuuid
...
Filename 'pxelinux.cfg/default-arm-meson-aml-s805x-ac'.
Load address: 0x1080000
Loading: *         
TFTP error: 'File not found' (1)
Not retrying...    
Retrieving file: pxelinux.cfg/default-arm-meson
Speed: 100, full duplex
Using ethernet@c9410000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.199
Filename 'pxelinux.cfg/default-arm-meson'.
Load address: 0x1080000
Loading:  UDP wrong checksum 0000000a 00009e02
T  UDP wrong checksum 0000000a 00009e02
T T  UDP wrong checksum 0000000a 00009e02
T T T T  UDP wrong checksum 0000000a 00009e02
T T T
Retry count exceeded; starting again
Retrieving file: pxelinux.cfg/default-arm
Speed: 100, full duplex
Using ethernet@c9410000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.199
Filename 'pxelinux.cfg/default-arm'.
Load address: 0x1080000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...

From a power-on reset, if I set the serverip and boot target to pxe, it works:

GXL:BL1:9ac50e:bb16dc;FEAT:ADFC318C:0;POC:1;RCY:0;SPI:0;0.0;CHK:0;
TE: 35045

BL2 Built : 15:21:18, Aug 28 2019. gxl g1bf2b53 - luan.yuan@droid15-sz

set vcck to 1120 mv
set vddee to 1000 mv
Board ID = 11
CPU clk: 1200MHz
DDR enable rdbi
DQS-corr enabled
DDR scramble enabled
DDR4 chl: Rank0 16bit @ 1080MHz

bist_test rank: 0 17 00 2f 2d 1a 41 17 00 2f 2d 19 41 23 23 23 24 24 24 23 23 23 23 23 23 643
Rank0: 1024MB(auto)-2T-18
AddrBus test pass!
Set ddr ssc: ppm1000-
Load fip header from SPI, src: 0x0000c000, des: 0x01400000, size: 0x00004000, part: 0
New fip structure!
Load bl30 from SPI, src: 0x00010000, des: 0x013c0000, size: 0x0000d600, part: 0
Load bl31 from SPI, src: 0x00020000, des: 0x05100000, size: 0x0001b800, part: 0
Load bl33 from SPI, src: 0x0003c000, des: 0x01000000, size: 0x00094200, part: 0
NOTICE:  BL31: v1.3(release):c3714b49be
NOTICE:  BL31: Built : 09:23:36, Jun 20 2023. gxl bl-3.5.0 gc3714b49be - jenkins@walle02-sh
NOTICE:  BL3-1: GXL normal boot!
NOTICE:  BL31: BL33 decompress pass
mpu_config_enable:system pre init ok
OPS=0x34
dmc sec lock
[Image: gxl_v1.1.3509-d977ed20a4 2023-06-20 09:43:46 jenkins@walle02-sh]
21 0d 34 00 bf fe 3e 53 5b 00 26 ca 06 8f 10 02
[0.756439 Inits done]
secure task start!
high task start!
low task start!
ERROR:   Error initializing runtime service opteed_fast


U-Boot 2023.07+ (May 15 2024 - 23:35:02 -0400) Libre Computer AML-S805X-AC

Model: Libre Computer AML-S805X-AC
SoC:   Amlogic Meson GXL (S805X) Revision 21:d (34:2)
DRAM:  512 MiB (effective 1 GiB)
Core:  177 devices, 33 uclasses, devicetree: separate
WDT:   Not starting watchdog@98d0
MMC:   mmc@74000: 0
Loading Environment from FAT... Card did not respond to voltage select! : -110
** Bad device specification mmc 0 **
Card did not respond to voltage select! : -110
** Bad device specification mmc 0 **
Couldn't find partition mmc 0
Card did not respond to voltage select! : -110
** Bad device specification mmc 0 **
Couldn't find partition mmc 0
Error: could not access storage.
[BL31]: tee size: 0
[BL31]: tee size: 0
Net:   eth0: ethernet@c9410000
starting USB...
Bus usb@c9000000: dwc3_meson_gxl_get_phys: usb2 ports: 2
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@c9000000 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
Scanning for bootflows in all bootdevs
Seq  Method       State   Uclass    Part  Name                      Filename
---  -----------  ------  --------  ----  ------------------------  ----------------
Scanning global bootmeth 'efi_mgr':
Scanning bootdev 'mmc@74000.bootdev':
Card did not respond to voltage select! : -110
No more bootdevs
---  -----------  ------  --------  ----  ------------------------  ----------------
(0 bootflows, 0 valid)
=> setenv boot_targets pxe
=> setenv serverip 192.168.0.1
=> boot
Scanning for bootflows in all bootdevs
Seq  Method       State   Uclass    Part  Name                      Filename
---  -----------  ------  --------  ----  ------------------------  ----------------
Scanning global bootmeth 'efi_mgr':
Speed: 100, full duplex
BOOTP broadcast 1
DHCP client bound to address 192.168.0.49 (3 ms)
Scanning bootdev 'ethernet@c9410000.bootdev':
missing environment variable: pxeuuid
Retrieving file: pxelinux.cfg/01-42-50-73-68-14-46
Speed: 100, full duplex
Using ethernet@c9410000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.49
Filename 'pxelinux.cfg/01-42-50-73-68-14-46'.
Load address: 0x1080000
Loading: ##################################################  446 Bytes
         13.7 KiB/s
done
Bytes transferred = 446 (1be hex)
  0  pxe          ready   ethernet     0  ethernet@c9410000.bootdev extlinux/extlinux.conf
** Booting bootflow 'ethernet@c9410000.bootdev.0' with pxe
...

In the meantime, I’ve done this. I had to remove CONFIG_BOOTP_SERVERIP=y from configs/libretech-ac_defconfig and add pxe or dhcp back to BOOT_TARGETS in include/configs/meson64.h.

The description doesn’t say when this update is needed or what it does.

I think this update is a u-boot update that is only used if the system has already been configured to boot with a spi-flash device that is attached to the spi pins. (I.e. not needed if booting from SD Card or eMMC).

Is this correct?

No, it’s configured to be bootable even if SPI NOR is empty as long as it’s on a proper bootable device that the SoC checks like MicroSD or eMMC.

I have a Renegade. I’m using the download images from the Libre web site as available today (August 20, 2024)
roc-rk3328-cc-spiflash is 24MB and dated October 13, 2023.

Are those images complete and up-to-date or is this boot update still needed?

It looks like this is ‘raw’ code that self-executes and updates the lowest level boot loader binary? I.e. not u-boot.

Why is it called “spi-flash”? Are there any release notes that say what this update does?

ROC-RK3328-CC does not have SPI NOR. The bootloader has to be part of the image per the OP. That is an internal test image from our CI infrastructure. Hence the CI in the URL.

Get images from www.libre.computer Download section or use libretech-flash-tool.

2024-11-15 15:49:49 root@lepotato:~# libretech-flash-tool
libretech-flash-tool: command not found
2024-11-15 15:49:59 root@lepotato:~# 

Is there supposed to be an extra package installed? (this is raspbian12 image)

Edit: nevermind, I see this is a whole project GitHub - libre-computer-project/libretech-flash-tool

2024-11-15 16:00:14 root@lepotato:~# git clone https://github.com/libre-computer-project/libretech-flash-tool.git
Cloning into 'libretech-flash-tool'...
remote: Enumerating objects: 266, done.
remote: Counting objects: 100% (266/266), done.
remote: Compressing objects: 100% (181/181), done.
remote: Total 266 (delta 135), reused 208 (delta 78), pack-reused 0 (from 0)
Receiving objects: 100% (266/266), 634.51 KiB | 309.00 KiB/s, done.
Resolving deltas: 100% (135/135), done.
2024-11-15 16:02:12 root@lepotato:~# cd libretech-flash-tool
total 16K
drwxr-xr-x 1 root root   70 2024-11-15 16:02 .
drwx------ 1 root root  234 2024-11-15 16:02 ..
-rwxr-xr-x 1 root root  669 2024-11-15 16:02 diff.sh
drwxr-xr-x 1 root root  138 2024-11-15 16:02 .git
-rwxr-xr-x 1 root root 4.5K 2024-11-15 16:02 lft.sh
drwxr-xr-x 1 root root  160 2024-11-15 16:02 lib
-rw-r--r-- 1 root root 2.3K 2024-11-15 16:02 readme.md
drwxr-xr-x 1 root root   16 2024-11-15 16:02 vendor
2024-11-15 16:02:22 root@lepotato:~/libretech-flash-tool# ./lft.sh board-list
all-h3-cc-h3
all-h3-cc-h5
aml-a311d-cc-v01
aml-a311d-cc
aml-s805x-ac
aml-s905x-cc
aml-s905x-cc-v2
aml-s905d-pc
aml-s905d3-cc-v01
aml-s905d3-cc
roc-rk3328-cc
roc-rk3328-cc-v2
roc-rk3399-pc
2024-11-15 16:02:32 root@lepotato:~/libretech-flash-tool# ./lft.sh dev-list
mmcblk0boot0
mmcblk0boot1
zram0
2024-11-15 16:02:55 root@lepotato:~/libretech-flash-tool# 

Am I supposed to choose mmblk0boot0 or mmcblk0boot1 ?

By default, it does not show the boot device that / (root) is mounted to. You need to force it.

mmcblk0 force