PC Engines

From ArchWiki
Jump to navigation Jump to search

PC Engines is a swiss hardware manufacturer for embedded x86 devices.

apu2c4

This document describes how to install Arch Linux to the SSD via an SD card or USB flash drive.

Hardware

CPU: AMD Embedded G series GX-412TC, 1 GHz quad Jaguar core with 64 bit

RAM: 4GB DRAM with ECC

Note: Remove the screws from the serial port first!

Assemble the device with care and read the guide for the cooling system!

Setup preperations

Boot the system

To see the BIOS use this command

LANG=C picocom --baud 115200 --omap crcrlf /dev/ttyUSB0

If your device does not boot from the SD card or USB flash drive, press F10 during boot to bring up a boot menu. Then close picocom with "Ctl+A" "Ctl+Q"

Reconnect to the ArchIso Grub:

LANG=C picocom --baud 38400 /dev/ttyUSB0

Enter cli mode by pressing "Tab", prompt should look like this:

linux boot/x86_64/vmlinuz archisobasedir=arch archisolabel=ARCH_201710 initrd=boot/intel_ucode.img,boot/x86_64/archiso.img

add the following with a leading space

 console=ttyS0,115200

and press "Enter"

Now exit picocom and reconnect with the first command again to switch to the higher baud rate of 115200. Finally wait for about 30 seconds and you will get a colorful boot prompt.

Install the system

The most comfortable way to install Arch now is to start the sshd and use Install guide

You may need to get a new IP with dhclient and start sshd

systemctl start sshd.service

One possible layout of the SSD maybe looking like this:

 /dev/sda1           2048   264191   262144  128M 83 Linux
 /dev/sda2         264192 25430015 25165824   12G 83 Linux
 /dev/sda3       25430016 31277231  5847216  2.8G 82 Linux swap / Solaris

It is a good idea to use a MBR layout with GRUB:

grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

If using Syslinux, make sure to provide a console option in the boot menu:

/boot/syslinux/syslinux.cfg
LABEL arch
    MENU LABEL Arch Linux
    LINUX ../vmlinuz-linux
    APPEND root=UUID=1ef5a2eb-1908-4929-9b91-f6c4183695ac rw console=ttyS0,115200
    INITRD ../initramfs-linux.img

Also you should read Working with the serial console#Configure console access on the target machine

Remember to remove the SD card or USB flash drive after you finished your setup.

LED Control

As of kernel 5.1 the pcengines-apuv2 driver can be used on top of the generic gpio kernel modules: amd-fch-gpio and leds-gpio and in conjunction with the ledtrig_netdev (4.16+) module to control the APU's 3 front LEDs through the following sysfs entries:

/sys/class/leds/apu:green:1
/sys/class/leds/apu:green:2
/sys/class/leds/apu:green:3
Note: 4.14 < kernel < 5.1 users can use the leds_apu driver instead. The sysfs entries are ../leds/apu2:green:* in this case.

Module Handling

The required drivers should automatically load on boot, but you may need to manually load ledtrig_netdev. You may also want to blacklist leds_apu.

Example Configuration

A common use case is to use the APU as a wireless router. In this scenario, one wired NIC (wan0) is connected upstream to an ISP and the remaining wired & wireless NICs are bridged (br0) together as the LAN. A typical LED configuration using the netdev trigger might be:

LED1: power on / power off indicator
LED2: upstream network (wan0) traffic indicator
LED3: local network (br0) traffic indicator

To enable this setup:

echo "1" > /sys/class/leds/apu:green:1/brightness
echo "netdev" > /sys/class/leds/apu:green:2/trigger
echo "wan0" > /sys/class/leds/apu:green:2/device_name
echo "1" > /sys/class/leds/apu:green:2/tx
echo "1" > /sys/class/leds/apu:green:2/rx
echo "netdev" > /sys/class/leds/apu:green:3/trigger
echo "br0" > /sys/class/leds/apu:green:3/device_name
echo "1" > /sys/class/leds/apu:green:3/tx
echo "1" > /sys/class/leds/apu:green:3/rx
Note: Writing to the trigger sysfs entry must be done first as this is what enables the device_name, tx rx entries.
Tip: View triggers supported by the currently loaded modules: cat /sys/class/leds/apu:green:1/trigger.
Tip: Additional trigger modules are available here: /lib/modules/$(uname -r)/kernel/drivers/leds/trigger.

Persist Configuration

Systemd automatic module loading and tmpfiles.d can be used to persist this configuration across restarts.

/etc/modules-load.d/ledtrig-netdev.conf
ledtrig_netdev
/etc/tmpfiles.d/leds.conf
w /sys/class/leds/apu:green:1/brightness - - - - 1
w /sys/class/leds/apu:green:2/trigger - - - - netdev
w /sys/class/leds/apu:green:2/device_name - - - - wan0
w /sys/class/leds/apu:green:2/tx - - - - 1
w /sys/class/leds/apu:green:2/rx - - - - 1
w /sys/class/leds/apu:green:3/trigger - - - - netdev
w /sys/class/leds/apu:green:3/device_name - - - - br0
w /sys/class/leds/apu:green:3/tx - - - - 1
w /sys/class/leds/apu:green:3/rx - - - - 1