The K-Zone: Running Linux on the Shuttle Zen ST62K

Overview

This article describes my experiences getting Linux to work on the Shuttle Zen ST62K mini-pc. At present, most things are working reasonably well, but there are some outstanding irritations. It's probably fair to say that getting Linux working on this machine is not a job for a new Linux user. If you're not happy with patching and/or recompiling kernels, tweaking module settings, and hacking start-up scripts, you'd probably be better off buying something different.

About the machine

The Shuttle Zen is a mini-PC measuring about 10 x 6 x 6 inches, and weighing only a few pounds even when fully stocked with drives. The motherboard takes up the whole of the bottom of the case, and the external I/O connetors (PS/2, USB, etc) are soldered directly onto it. There is therefore hardly any wiring inside the case. Where wiring is required -- for disks drives, etc., -- the unit is supplied with cables that are exactly the right length to run from the headers on the motherboard to the connectors on the devices. This makes assembly and wiring extremely simple, provided that you're fitting exactly the devices that Shuttle anticipate. The case can accomodate one full-size 5 1/4'' drive, and two 3 1/2'' drives. Of these, one is accessible from the outside, while the other is not. It isn't entirely clear what kind of 3 1/2'' drive you'd use with the Zen that requires external access; after all, the motherboard has no floppy drive connector. You could conceivably fit a 3 1/2'' Zip drive, I guess. In my system I have two 3 1/2'' disks in a RAID configuration, and a 5 1/4'' DVD reader. Fitting these devices was an absolute doddle because, as I said, all the cables are supplied exactly the right length.

One of the most interesting features of the Zen is that it is almost silent in operation. The CPU is cooled by a heat-pipe system, which uses a liquid system to convect heat to a finned radiator on the back of the case. There is a fan in front of this radiator, but it usually runs as less than 2000 rpm, at which speed it is essentially inaudible. You can configure the fan speed to increase with temperature, up to a maximum of about 4000 rpm. At that speed it is quite loud, but as yet I have not managed to get the CPU hot enough to drive the fan this hard. My CPU is an Intel Celeron 2.0 GHz, but I understand that considerably faster CPUs can be accomodated if necessary. I find that the CPU runs at about 40 celcius most of the time, increasing to about 50 celcius under heavy load.

Of perhaps slightly more concern is the temperature of the hard drives. I am assured by the vendor that the Zen case is designed to take two hard disks, and that the lack of forced cooling should not be a problem. Nevertheless, the hard drives report their temperatures between 50 and 55 degrees celcius, which many people would regard as too hot. On the other hand, the reported temperatures don't decrease significantly even if the drive is powered down under software control, which makes me wonder whether either (1) the temperature reported is not very accurate, or (2) the heat is coming form somewhere else. In any event, there isn't much that can be done about this, unless you're prepared to run the fan harder, which kind of defeats the purpose of using a system like this. I am running a RAID configuration, and I'm reasonably confident that, even if the drives were overheating, they wouldn't both fail at the same time.

The power supply is external, and also fanless. It gets slightly warm in operation, but no warmer than, say, a laptop power supply. The power supply can deliver about 200W, so it should be more than adequate to power the motherboard, CPU, and three drives.

I was interested in the Zen because I wanted to construct a silent-running file server, which would also be able to play music and movies from time to time. The Zen is one of the few small-form-factor systems that can accomodate three drives and run almost silently. However, like all these new PC types, the Zen is fitted with some fairly exotic hardware, and getting Linux to run on it was never going to be straightforward. In fact, it was a ghastly experience, for reasons that I'll explain in due course.

Basic installation

I began by installing RedHat 9. This was perfectly straightforward -- after booting from the CDROM the graphical installer started up, and the rest of the installation was unremarkable. After installation of RedHat 9 I had a system that basically worked, but that's about all that could be said for it. A number of problems were immediately apparent. A considerable amount of work was required to fix all these problems.

Kernel

It's probably fair to say that it's hardly worth even attempting to make the Zen work with a 2.4.x kernel. There is some support for some of the hardware in the later (2.4.26 and on) 2.4 kernels, but not much. Life is much easier if you go straight to a 2.6 kernel; I am using the stock 2.6.7 -- the latest available at the time I got the machine. Using this kernel offers the following benefits: The problem I had was that, running the RedHat 9 kernel (2.4.10), the machine crashed a half-dozen times in the time it took to build the new kernel (nearly an hour -- no IDE DMA at this time!) However, it got there in the end, and booting with the 2.6 kernel gave an immediate improvement in stability. If you're working with a Linux distribution that is based on a 2.4 kernel, you'll have to obtain, compile, and install the latest module management utilities (insmode, modprobe, etc). You'll also need to hack all the system startup scripts to pass the right arguments to these new utilities. If you're using a distribution that already supports 2.6 kernels, these things should be less of a pain.

Power management: ACPI and APM

The Zen has no APM support in firmware. None. You must enable ACPI in the kernel. Not doing so is not an option -- the system just won't work reliably. Moreover, you need fairly recent ACPI support, so if you try to install a commercial Linux distribution that already has ACPI support, the installer will probably crash. You need to disable ACPI in the installer (perhaps by passing the kernel boot option acpi=off), then build a more recent kernel or get the most recent ACPI patches. If you compile in the `thermal_zone' support, you'll be able to get the CPU temperature by doing cat /prac/acpi/thermal_zone/THRM/temperature. I've found that the CPU temperature reported by ACPI does match the value reported by the BIOS `health check' screen, which is reassuring.

Because I'm building a file server, which will have to run continuously, I'm not too concerned about sleep and standby modes. So I don't know whether these work or not.

X support

The built-in video adapter is based on the ATI IGP9100 chipset. If you've never heard of this, you're in good company. Nor has anyone else. ATI have usually been quite good about providing Linux drivers for their graphics boards, but even the most recent (3.11.1) version of their proprietary driver does not support the Zen graphics adapter. However, all is not lost. It turns out that the latest (4.4) version of XFree86 supports this chip out of the box. I let the RedHat installer configure X for the generic vesa driver, then installed the binary distribution of XFree86 4.4 over the top of the RedHat 4.3 version, then simply changed the line in XFConfig that said
Driver "vesa"
to
Driver "ati"
Then it just worked. Given the amount of hassle I'd had so far, I was pleasantly surprised at how easy this was. The XVIDEO (`2D acceleration') extension works fine, so I can play DVD movies at full speed and size without putting any load on the CPU. I don't know if DRI (`3D acceleration') can be made to work, as I don't really have any use for this so I haven't tried it.

Sound

The ATI IXP sound device is supported in ALSA 1.0.3, which is part of the 2.6.7 kernel. Many hours have been wasted by Linux users moving to ALSA from OSS, because they don't realize that the ALSA drivers set all the levels to zero when they load. Audio appears to play, but no sound comes out. If you can't get any sound out, turn up the volume using alsamixer or whatever. I've so far only tried the 2-channel sound; the Zen has six-channel audio, including optical SPDIF output and input, and I'm interested in trying this at some point.

IDE DMA, etc

To get DMA working, you'll need to enable support for the ATI IXP chipset in the kernel. With this done, you can switch on DMA mode by doing
/sbin/hdparm -d1 [device]
or configure the kernel to do this by default. Even when DMA is enabled, 32-bit transfers do not seem to be enabled by default, and you may have to do:
/sbin/hdparm -c1 [device]
This setting only affects the width of data delivered to the IDE controller, not the width of the IDE data bus (which is always 16 bits). So the throughput gains from enabling 32-bit transfers are not particularly impressive.

Ethernet

The built-in ethernet port is supported by the 8139too driver, and seems to work perfectly well.

USB

Hmmmm. So far, I've had limited success with this. The USB drivers load successfully, and when I plug a USB1.1 hard disk into the USB port it is recognized and can be mounted. A USB mouse works, but only for an hour or so. Then it stops working and can only be recovered by unloading all the drivers and reloading them. I don't have any USB2 devices to try, so I can't comment on whether they work or not.

Conclusion

In the end, Linux is working fairly well on the Shuttle, after a few evenings of frustration. The machine really is a quiet at the advertising blurb makes out -- in normal circumstances you can't hear it at all. The trick with installing Linux is to make sure that you have the very latest kernel that you can find, as most of the Shuttle hardware is now supported.
©1994-2006 Kevin Boone, all rights reserved