You need the following hardware:
- USB to RS232 (serial) cable with DB9 connector or adapter
- USB drive
- apu4d4 or other apu2 system
And this software:
- the latest mainline firmware release for your apu2 system
- the PC Engines TinyCore Linux distribution
- balenaEtcher or some other software to flash the TinyCore image onto the USB drive
Connect the USB drive to your computer. Use balenaEtcher to copy the TinyCore image onto the drive. The
SYSLINUX partition should be mountable on all major operating systems. Put the
.rom firmware file onto it. Unmount the USB drive, disconnect it from your computer and connect it to the apu2.
Connect your serial cable setup to your computer and the apu2. Power the apu2 up.
On Linux connecting to the serial console works like this:
user@host ~$ screen /dev/ttyS0 115200
On macOS it works like this:
user@host ~$ ls /dev/cu.usbserial* /dev/cu.usbserial /dev/cu.usbserial-1234 user@host ~$ screen /dev/cu.usbserial-1234 115200
PuTTY should work on Microsoft Windows.
F10 to display a boot menu prompt:
Select your USB drive. TinyCore will boot:
TinyCore might try to mount some partition forever. Press
Ctrl+C to cancel.
After TinyCore has booted, the firmware image should be in
flashrom to flash it.
If your firmware version is older than
v4.6.7 mainline or
4.0.15 legacy or you get a
motherboard mismatch warning when trying to flash, run this command:
user@host ~$ flashrom -w /media/SYSLINUX/apuX_vX.X.X.X.rom -p internal:boardmismatch=force
Otherwise run this one:
user@host ~$ flashrom -w /media/SYSLINUX/apuX_vX.X.X.X.rom -p internal
The firmware will be replaced:
Shut down TinyCore:
user@host ~$ reboot
Powercycle the apu2 by pulling and reinserting the power plug.
The version number of your new firmware should be displayed during BIOS startup.
PS: The apu2 can be unbricked with the flash recovery module spi1a.
PPS: Apparently OpenBSD fails to boot with legacy firmware versions and mainline version
184.108.40.206 still works and version
220.127.116.11 should work again.