Connect over serial
August 4, 2026 ยท View on GitHub
Important
After many years of service, the PC Engines APU platform is now EOL.
Hardware
| Part | Description | Cost |
|---|---|---|
| apu4c4 | apu4c4 system board | $117.50 |
| case1d2bluu | Enclosure 3 LAN, blue | $9.40 |
| ac12vus2 | AC adapter 12V 2A US plug | $4.10 |
| msata16g | SSD M-Sata 16GB MLC, Phison S11 | $15.50 |
| wle200nx | Compex WLE200NX miniPCI express card | $19.00 |
| pigsma (x2) | Cable I-PEX -> reverse SMA | $2.70 |
| antsmadb (x2) | Antenna reverse SMA dual band | $4.10 |
Note
WLE600VX and WLE900VX cards will likely not work due to regulatory compliance reasons.
To connect over serial, you will need a USB to Serial (9-Pin) Converter Cable and Modem Serial RS232 Cable, also available from PC Engines.
See Issue #1 for a list of alternative parts.
Assembly
Clear a workspace and unpack the materials. Follow the apu cooling assembly instructions to install the heat conduction plate.
Install the mSATA drive and miniPCIe wireless adapter in their respective slots.
See the relevant APU series manual for detailed board information:
Caution
Wireless radio cards are ESD sensitive, especially the RF switch and the power amplifier. To avoid damage by electrostatic discharge, the following installation procedure is recommended
- Touch your hands and the bag containing the radio card to a ground point on the router board (for example one of the mounting holes). This equalizes the electrical potential between the radio card and the router board.
- Install the radio card in the miniPCI express socket.
- Install the pigtail cable in the cut-out of the enclosure. This will ground the pigtail to the enclosure.
- Touch the pigtail's I-PEX connector to a mounting hole to discharge it, then plug it into the radio card.
To avoid arcing, connect the DC jack first, then plug the power adapter into an outlet.
Press F10 during boot and select Payload [memtest] to complete at least one pass.
Connect over serial
The APU serial connection uses 115200 baud, 8N1 (8 data bits, no parity, and 1 stop bit).
On OpenBSD, use cu:
doas cu -r -s 115200 -l cuaU0
On Linux, use screen:
screen /dev/ttyUSB0 115200 8N1
Or use minicom:
sudo minicom -D /dev/ttyUSB0
Power on the APU and note the firmware version displayed briefly during boot.
Updating firmware
Check for the latest PC Engines firmware version at pcengines.github.io
Note
As of 2023, PC Engines firmware is no longer being updated. See announcement.
To update firmware, first download and extract TinyCore Linux.
Download and import the firmware signing key, then check the file signature:
$ curl -LO https://raw.githubusercontent.com/3mdeb/3mdeb-secpack/master/customer-keys/pcengines/release-keys/pcengines-open-source-firmware-release-4.19-key.asc
$ gpg --import pcengines-open-source-firmware-release-4.19-key.asc
gpg: key 0x30A53DE2F5A6D89A: 1 signature not checked due to a missing key
gpg: key 0x30A53DE2F5A6D89A: public key "PC Engines open-source firmware release 4.19 signing key" imported
gpg: Total number processed: 1
gpg: imported: 1
$ gpg apu4_v4.19.0.1.SHA256.sig
gpg: assuming signed data in 'apu4_v4.19.0.1.SHA256'
gpg: Signature made Thu 02 Feb 2023 03:22:57 AM PST
gpg: using RSA key 05CF36F166C3D676A08AB70F30A53DE2F5A6D89A
gpg: Good signature from "PC Engines open-source firmware release 4.19 signing key" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 05CF 36F1 66C3 D676 A08A B70F 30A5 3DE2 F5A6 D89A
$ shasum -a 256 apu4_v4.19.0.1.rom 2>/dev/null | grep -q $(cat apu4_v4.19.0.1.SHA256 | awk '{print \$1}') && echo ok
ok
Mount a USB disk and write the TinyCore image, copy the .rom file:
curl -O https://pcengines.ch/file/apu2-tinycore6.4.img.gz
gzip -d apu2-tinycore6.4.img.gz
sha256sum apu2-tinycore6.4.img
f5a20eeb01dfea438836e48cb15a18c5780194fed6bf21564fc7c894a1ac06d7 apu2-tinycore6.4.img
sudo dd if=apu2-tinycore6.4.img of=/dev/sdd bs=1M
sudo mkdir /mnt/usb
sudo mount /dev/sdd1 /mnt/usb
sudo cp -v apu4_*.rom /mnt/usb
sudo umount /mnt/usb
Connect the USB disk to the APU. During boot, press F10 and select the USB disk.
SeaBIOS (version rel-1.14.0.1-0-g8610266a)
Press F10 key now for boot menu
Select boot device:
1. USB MSC Drive Samsung Flash Drive DUO 1100
2. AHCI/0: SB2 ATA-11 Hard-Disk (111 GiBytes)
3. Payload [setup]
4. Payload [memtest]
Check the current version:
root@pcengines:~# dmesg | grep apu
[ 0.000000] DMI: PC Engines apu4/apu4, BIOS v4.10.0.1 09/10/2019
Save the existing version and write the new one:
root@pcengines:~# cd /media/SYSLINUX
root@pcengines:/media/SYSLINUX# flashrom -p internal -r apu4.rom.$(dmidecode -s baseboard-serial-number|tail -n1).$(date +%F)
[...]
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) mapped at physical address 0xff800000.
Reading flash... done.
root@pcengines:/media/SYSLINUX# flashrom -p internal -w apu4_v4.19.0.1.rom
[...]
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) mapped at physical address 0xff800000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Unplug the USB disk and reboot.
Optional On reboot, press F10, select Payload [setup], press w to enable BIOS write protection, then press s to save and reboot.
Verify the version by checking serial output during boot:
PC Engines apu4
coreboot build 20230131
BIOS version v4.19.0.1
From OpenBSD:
$ dmesg | grep bios
bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xcfe8b020 (13 entries)
bios0: vendor coreboot version "v4.19.0.1" date 01/31/2023
bios0: PC Engines apu4
acpi0 at bios0: ACPI 6.0
From Debian:
$ sudo dmesg | grep apu
[ 0.000000] DMI: PC Engines apu4/apu4, BIOS v4.19.0.1 01/31/2023
APU firmware can also be updated from Debian without rebooting to TinyCore Linux:
sudo apt install flashrom
wget https://3mdeb.com/open-source-firmware/pcengines/apu4/apu4_v4.19.0.1.rom
sudo flashrom -p internal -w apu4_v4.19.0.1.rom
To complete the update, shut down Debian and power off the APU fully, then reboot.