Apart of some ready to use specialised distributions like pfSense, one of the most intriguing features of the Alix board is the x86 compatibility which allows to install a huge choice of operating systems and/or Linux distributions.
In my multi-site infrastructure concept, all four remote sites have Alix based routers running Debian Wheezy with the following services:
- Firewall and intrusion detection
- OpenVPN to the central router in the data center providing both IPv4 and IPv6 internal and external connectivity for all sites
- Wifi Access Point
- DHCP and DNS
- NAT UPnP server
- PXE Boot system via BootP, TFTP and NFS
- Collection of system metrics (own solution based on
muninfor infrastructure wide statistics)
- Video surveillance (modified
In addition to this, one site runs some additional services:
- IpTV multicast distribution across the site (igmpproxy)
- Site local PBX connected to the main PBX in the data center (Asterisk) providing additional landlines to the other sites
- Home automation (FHEM and additional modules)
These additional services take the Alix board to its limits. The main bottlenecks are the small memory (256 MB) and the low I/O performance (Fast Ethernet/Compact Flash Disk) of the system.
The Successor of Alix
It was great news when PC Engines announced the successor of the Alix board: the APU. The form factor of the board is the same as of the Alix 2D and 6F series (6x6 inch - 152.4x152.4 mm). The power consumption is a little bit higher (6-12 W in comparison to 5-7 W of the Alix 2D13) but you get a lot of additional power:
- AMD G series T40E APU, 1 GHz dual core (Bobcat core) with 64 bit support, 32K data + 32K instruction + 512KB L2 cache per core
- 2 or 4 GB DDR3-1066 DRAM
- Boot from SD card (connected through USB), external USB or m-SATA SSD
- 2x miniPCI express (one with SIM socket for 3G modem), LPC bus, GPIO header, I2C bus, COM2 (3.3V RXD/TXD).
- 3x Gigabit Ethernet (Realtek RTL8111E).
With these characteristics, the APU.1C and APU.1C4 are worthy successors of the Alix series and the perfect solution for my main site in order to host some additional services like:
- TV and PVR server (tvheadend)
- Database Server (hosting the central database for all XBMC instances)
Sooner as expected, the APU.1C4 (4GB) was available here in Germany and today I got one of the first available bundles. The bundle was delivered in a nice packaging containing:
- An APU.1C4 mainboard
- Aluminium enclosure (case1d2u)
- Heat conduction accessories
- 16GB SSD m-SATA module
- Power supply
Since both the CPU and the south-bridge need cooling, it is not possible to operate the APU board without any cooling arrangement. The board needs to be assembled into the enclosure using the provided heat conduction accessories in order to provide the needed passive cooling.
The bundle contains two small adhesive heat spreaders and one aluminium heat spreader that have to be carefully assembled. Before assembling the board, you have to remove the two hex nuts from the DB9 serial connector. The next step is to apply the two adhesive heat spreaders. The heat spreaders have a distinct orientation: you have to peel first the transparent backing foil and apply them to the CPU and the south bridge. Then you can remove the blue backing foil and apply the aluminium heat spreader. After this you can peel the cover foil from the aluminium heat spreader and carefully feed the board DB9 and LAN connectors through the openings of the enclosure.
After this you can fix the board with the four screws and the hex nuts on the DB9 connector.
The MSATA module can now be installed in the correct slot. Be careful! Only one of the three slots is intended for MSATA SSD modules!
Time to power up the device for the first time. But careful! Unlike the Alix board, the serial interface is initialized to 115200 Baud. Remember to reconfigure your terminal before powering up...
PC Engines APU board rev ID = 0/1 Reading data from file [bootorder] SeaBIOS (version ?-20140321_160418-frink) SeaBIOS (version ?-20140321_160418-frink) Found coreboot cbmem console @ df150400 Found mainboard PC Engines APU Relocating init from 0x000e8e71 to 0xdf1065e0 (size 39259) Found CBFS header at 0xfffffb90 found file "bootorder" in cbmem CPU Mhz=1001
SeaBIOS (version ?-20140321_160418-frink)? According to the
product page, the latest BIOS update is dated 04/05/2014 - we should
update it, since we are at the beginning of the product life cycle and we
may still expect many bugs to be fixed...
Update the BIOS
In order to update the BIOS, we have to prepare an SD card with TinyCore Linux installer. Let's go:
linux-dev-64 ~ # mkfs.vfat /dev/sdc1 mkfs.vfat 3.0.12 (29 Oct 2011) linux-dev-64 ~ # dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdc 0+1 records in 0+1 records out 440 bytes (440 B) copied, 0.329814 s, 1.3 kB/s linux-dev-64 ~ # syslinux --install /dev/sdc1 linux-dev-64 ~ # mkdir temp linux-dev-64 ~ # mount /dev/sdc1 temp linux-dev-64 ~ # wget http://www.pcengines.ch/file/apu_tinycore.tar.bz2 --2014-04-30 13:49:28-- http://www.pcengines.ch/file/apu_tinycore.tar.bz2 Resolving www.pcengines.ch (www.pcengines.ch)... 18.104.22.168 Connecting to www.pcengines.ch (www.pcengines.ch)|22.214.171.124|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 17172921 (16M) [application/x-bzip2] Saving to: `apu_tinycore.tar.bz2' 100%[============================================>] 17,172,921 925K/s in 20s 2014-04-30 13:49:49 (826 KB/s) - `apu_tinycore.tar.bz2' saved [17172921/17172921] linux-dev-64 ~ # wget http://www.pcengines.ch/file/apu140405.zip --2014-04-30 13:52:59-- http://www.pcengines.ch/file/apu140405.zip Resolving www.pcengines.ch (www.pcengines.ch)... 126.96.36.199 Connecting to www.pcengines.ch (www.pcengines.ch)|188.8.131.52|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 617415 (603K) [application/zip] Saving to: `apu140405.zip' 100%[============================================>] 617,415 1.04M/s in 0.6s 2014-04-30 13:53:00 (1.04 MB/s) - `apu140405.zip' saved [617415/617415] linux-dev-64 ~ # tar xjf apu_tinycore.tar.bz2 -C temp linux-dev-64 ~ # unzip apu140405.zip -d temp Archive: apu140405.zip linux-dev-64 ~ # rm apu_tinycore.tar.bz2 apu140405.zip linux-dev-64 ~ # umount temp linux-dev-64 ~ # rmdir temp
Slide the SD card into the slot, power on the APU and go:
PC Engines APU board rev ID = 0/1 ... Searching bootorder for: /rom@genroms/pxeboot.rom Build date: Mar 21 2014 System memory size: 4592 MB Press F12 for boot menu. Searching bootorder for: HALT drive 0x000f24e0: PCHS=0/0/0 translation=lba LCHS=992/16/63 s=1000448 drive 0x000f2510: PCHS=16383/16/63 translation=lba LCHS=1024/255/63 s=31248704 Space available for UMB: c1000-ee800, f0000-f24e0 Returned 245760 bytes of ZoneHigh e820 map has 7 items: 0: 0000000000000000 - 000000000009fc00 = 1 RAM 1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED 2: 00000000000f0000 - 0000000000100000 = 2 RESERVED 3: 0000000000100000 - 00000000df14c000 = 1 RAM 4: 00000000df14c000 - 00000000e0000000 = 2 RESERVED 5: 00000000f8000000 - 00000000f9000000 = 2 RESERVED 6: 0000000100000000 - 000000011f000000 = 1 RAM enter handle_19: NULL Booting from Hard Disk... Booting from 0000:7c00 SYSLINUX 4.05 20120131 Copyright (C) 1994-2011 H. Peter Anvin et al Loading vmlinuz..... Loading core.gz...............ready. ____ ____ _____ _ | _ \ / ___| | ____|_ __ __ _(_)_ __ ___ ___ | |_) | | | _| | '_ \ / _` | | '_ \ / _ \/ __| | __/| |___ | |___| | | | (_| | | | | | __/\__ \ |_| \____| |_____|_| |_|\__, |_|_| |_|\___||___/ |___/ TinyCore www.tinycorelinux.com searching for home directory ... Welcome to TinyCore running on APU To update the BIOS type "flashrom -w apu140405.rom" [+51.9 C][root@box:/mnt/sdb1]$
What a nice CPU temperature prompt! And before booting it makes a loud beep... Great 80's feeling! And now let's update the BIOS and pray:
[+52.6 C][root@box:/mnt/sdb1]$ flashrom -w apu140405.rom flashrom v0.9.7-r1711-APU on Linux 3.8.13-tinycore (i686) flashrom is free software, get the source code at http://www.flashrom.org Using default programmer "internal". Calibrating delay loop... OK. coreboot table found at 0xdffdf000. Found chipset "AMD SB7x0/SB8x0/SB9x0". Enabling flash write... OK. Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) at physical address 0xffe00000. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done.
Praise the Lord! Let's see if everything went well...
[+57.5 C][root@box:/mnt/sdb1]$ reboot [+54.0 C][root@box:/mnt/sdb1]$ PC Engines APU BIOS build date: Apr 5 2014 ... Searching bootorder for: /rom@genroms/pxeboot.rom Build date: Apr 5 2014 System memory size: 4592 MB ...
And that's all for our first encounter with this fabulous device. Stay tuned: in part 2 I will mount the Wifi components and make the first steps for creating a minimal PE system.