DIET-PC on the Efika Open Client
Last Update: 2 September 2007
Introduction
The Efika Open Client is Genesi's small footprint PowerPC-based system based on the Freescale MPC5200B ("Efika") SoC. It is interesting in that it is a product sold without software that promotes use of Open Source technologies. Efika is the current spearhead of Genesi's PowerPC advocacy group powerdeveloper.org, which provides free hardware to Open Source developers in an attempt to boost popularity of PowerPC in the embedded marketplace. Before Efika, PowerDeveloper.org's focus was the Pegasos II, a more powerful but larger system.
Despite the free hardware offer, I actually paid for my Ekifa Open Client. I mostly just wanted to satisfy my curiosity, and thought that the strings attached to offer would be too much of a nuisance.
What's Right with Efika Open Client
- Unlike almost any other commercial thin client I could name, Efika strives to retain video and audio power and sacrifices CPU power, rather than the other way around. Specifically, Efika relies upon a PCI slot for off-board graphics rather than providing an underpowered onboard chipset. The Efika Open Client design makes use of a riser card that converts 3.3V AGP to PCI, which allows use of certain low end AGP cards that are still available. And it even has S/PDIF audio output, which is unusual on devices this small.
- You can mount a 2.5" hard disk directly on the mainboard, plugged directly into a right-angle 44-pin connector block. No cables, no mounting brackets, no fuss.
- It has a familiar (to me, at least) OpenFirmware based boot ROM, with integral Ext2/3 and ISO9660 filesystem support, which makes it a lot more Open Source friendly than Apple's OpenFirmware implementation.
- It's cheap. Or at least, it would be, if you didn't have to pay for it with a softer currency and then transport it half way around the globe. I had to import mine into Australia from the U.S.
- It is part of a program that embraces and sponsors Open Source.
What's Wrong with Efika Open Client
- The case. It's heavy, it's ugly, and the protruding reset button close to LAN and USB connectors makes it very prone to accidental resets. With all connectors at the front, the case looks like it's trying to be a Car PC, yet it's side-ventilated and therefore useless for this purpose. Basically, the case is cheap, at the expense of ... everything.
- No 480 Mbit/s USB 2.0. USB mass storage is almost useless at only 12 Mbit/s throughput, as is 802.11g wireless gear. x86 can deliver Hi-Speed USB in this form factor, so why can't PowerPC?
- No Altivec. Without Altivec CPU extensions (comparable to MMXExt, SSE2/3 and 3DNow! on x86 platforms), the Efika is incapable of any brute force software video rendering. Even using an X11 driver with a working XVideo extension (i.e. Radeon), I couln't get smooth video playback at half-DVD resolution (352x288), let alone full DVD or SDTV/HDTV. Apparently the XGI Volari V3XE has hardware MPEG acceleration, but Linux XvMC support for XGI is probably still years away.
- Firmware bugs, limitations, and Bplan's failure to incorporate and release fixes. Specifically, the Efika's "SmartFirmware", like all other OpenFirmware implentations, does not support loading of initrds independently of the kernel, but unlike other OpenFirmware also has a bug that prevents use of the intermediary boot loader yaboot, which would otherwise be able to work around this deficiency. This double-whammy is extremely irritating for distros like DIET-PC that make "innovative" use of oversized initrds. Moreover, Efika's creator, Bplan have not yet incorporated contributed fixes for the bug, nor to my knowledge released any after-market firmware updates.
- When I bought my Open Client, there was no viable Linux support for the XGI Volari V3XT graphics card that the graphics-enabled variants of Efika Open Client ship with. The available Linux drivers still have 2D acceleration that is partly or entirely broken on PowerPC platforms, and there is no DRI support for this particular XGI chipset. Okay, so that's a specific software limitation and hence a somewhat unfair criticism, but it's more than a little disappointing that Linux barely works on a device that is being hyped as a Great Open Source Alternative. There is semi-reliable Linux support for all of the Efika mainboard features, but I'm willing to bet that any Efika Linux demo you've seen was actually done using a Radeon graphics card, because on PowerPC Linux the XGI cards aren't capable of anything more than the most rudimentary 2D at this stage.
Things You Need to Know about DIET-PC on Efika
This section is not finished.
Downloads
For your testing pleasure, I present the following DIET-PC images for Efika:
-
Standalone network-bootable DIET-PC demo
This image contains the following packages: 2.6.22.6 kernel (with SquashFS 2.2r2, UnionFS 2.1.2 and rt2x00 CVS 26-Aug-07 USB wireless drivers), audioplayer 2.0pre (just a madplay binary at this stage), persistfs 2.3pre, rdp 2.4, remotefs 2.8pre, rfb 2.2pre, shell 2.7pre, smbserver 2.1, sshserver 2.5pre, storageserver 2.3pre, wireless 2.0pre (provides iwconfig and wpa_supplicant), xcore 2.2pre, xserver_xorg 2.3pre, xserver_xorg_radeon 2.3pre (2D only), xserver_xorg_vnc 2.3pre, xserver_xorg_xgi 2.3pre (2D only).
To use this, you must have a DHCP server capable of providing your Efika with basic IP information (N.B. Efika SmartFirmware doesn't seem to work with Busybox udhcpd; works with ISC DHCPD 3.0; haven't tested any others) and a TFTP server. Boot using a command like "boot eth:192.168.1.100,dietpc_efika_demo dietpc_efika_demo", where the IP address provided is that of your TFTP server. This image should work for all Efika Open Client variants, including Open Client Node, and even if you're using a Radeon AGP card instead of the XGI cards that the official product currently ships with.
This image presents the replimenu console menu, so that you can quickly and easily configure RDP server addresses and so forth. Note that you must exit and reenter a runlevel before server address changes take effect. You can remotely access the Efika DIET-PC via SSH and VNC. The root and VNC access passwords are both set to "foobar".
-
Bare Linux 2.6.22.6 kernel for Efika
This is the kernel embedded in the above image, which is intended for use with the root filesystem image below. You can network boot this, but it won't get you anywhere unless you also provide a meaningful "boot=/dev/xxx" kernel parameter.
-
Contains all the packages in the dietpc_efika_demo image, plus mmedia_xine 2.5pre (minimal). Errata: note that you'll probably have to pump up the volume using "aumix -v 100" or similar before audio playback is audible. The MPC5200B audio driver isn't terribly reliable yet, so don't expect miracles. Also, the XVideo overlay will be completely broken if you have an XGI video card (there's nothing I can do about this).
This image isn't useful by itself. Use the assembler_installer image below to write this data to disk, along with the above kernel image (zImage).
-
Network-bootable DIET-PC assembler_installer image
Contains: 2.6.22.6 kernel (with SquashFS 2.2r2, UnionFS 2.1.2 and rt2x00 CVS 26-Aug-07 USB wireless drivers), assembler_installer 2.2pre, persistfs 2.3pre, remotefs 2.8pre, shell 2.7pre, sshserver 2.5pre.
Use this image to deploy the kernel and root filesystem images above onto disk (either compact flash, if you've bought Open Client Basic 'Flash', or 2.5" magnetic disk if you've bought Open Client Plus).
To use this image, boot using a command like "boot eth:192.168.1.100,dietpc_efika_installer dietpc_efika_installer". After boot, copy the kernel and root filesystem images below to your TFTP server's TFTP root directory, and then:
- log in as root (password is "foobar")
- fdisk /dev/sda (partition your disk as required; the disk will appear as SCSI because the kernel uses a PATA driver)
- mkfs -t ext3 /dev/sdaN (for whatever partition number N you are using)
- mount /dev/sdaN /mnt
- mkdir /mnt/boot
- (cd /mnt/boot; tftp -g -r zImage 192.168.1.100)
- (cd /tmp; tftp -g -r dietpc_efika_rootfs.tar.gz 192.168.1.100)
- tar -C /mnt -xzf /tmp/dietpc_efika_rootfs.tar.gz
- umount /mnt
- halt
- setenv boot-device hd:X (where X = N - 1)
- setenv boot-file boot/zImage root=/dev/sdaN ro
- setenv auto-boot? true
- boot
This will boot a disk-based initrdless DIET-PC system using UnionFS - a concept supported by the DIET-PC skeleton 2.3pre package, which I haven't released yet (but will soon). This type of install is completely power-safe because root is mounted read-only, and all changes made to a running system are nonpersistent (i.e. the O/S will revert to a known good state when rebooted). Unfortunately, UnionFS doesn't seem terribly reliable on PowerPC (probably because it's big-endian), and you may get the odd kernel oops here and there.
Should you want to make persistent changes to the underlying ext3 root filesystem, you can either boot the Efika diskless using dietpc_efika_installer, mount the ext3 fs and make your changes, or you can boot the disk-based O/S using a "no_root_union" boot parameter, which will cause DIET-PC scripts to mount the root fs read-write instead of using unionfs (it does fsck it first, so this is not altogether unsafe, although this mode of operation is really only intended for infrequent "firmware" updates).
Links
In no particular order:
- Useful set of nine MPC5200B kernel patches, by Sylvain Munaut
- Pointer to a (semi-)working X.Org 7.x XGI Volari V3XT driver
- Original XFree86 4.x XGI Volari V3XT driver (apparently broken on PowerPC platforms)
- Debian Efika resources (including Debian-centric Efika HowTo)
- PowerDeveloper.org, PowerPC advocacy and support forums (fora?), useful for Efika-related questions
- GenesiPPC.com, a.k.a. PegasosPPC.com, where you can buy an Efika Open Client