Ubuntu on a Neoware CA-5 thin client

One of the things I love about free software, and Linux-based operating systems in particular, is the opportunity to revive old hardware.

Over the past couple of weeks, I’ve been working to turn an old Neoware CA-5 (aka Capio One) thin client into an Ubuntu server.

I have succeeded, hooray. Here’s how.

Neoware thin clients

Neoware, now part of HP, produce thin client computers that generally run some form of embedded Windows or their own Red Hat-derived Neolinux.

For around £10, plus delivery, on Ebay you can pick up a fanless machine the size of a hardback book that sports an x86-compatible CPU, full colour graphics, on-board sound, two USB ports, a 10/100 Ethernet port and plenty of potential.

The Neoware CA-5 I have originally had 56 MB of RAM, 32 MB of flash disk space and a 200 MHz SiS processor.

List of bits

I could have just about stuck with the original specs and still run some form of Linux. However, I wanted to run Ubuntu because I know it well and I know I can install 10.04 LTS and have security updates for the next five years.

Here’s where the beauty of these little Neoware machines comes in: for just a few quid, I was able buy standard parts and upgrade it to a rather more useful spec.

This is what I bought:

  • 256 MB PC133 CL-3 SODIMM RAM module (i.e. older but not ancient laptop memory): £7.65 from Ebay
  • 4 GB Compact Flash card: £7.91 (I used Newsale20 discount code to get that price) from Zoombits
  • Compact Flash to 44 pin IDE adapter: £2.99 from Ebay
  • 44 pin female to female IDE cable: £4.93 from LinITX

All prices include postage.

That 44 pin IDE cable was the hardest to find. Just about everywhere I tried was either sold-out or charging nearer to a tenner.


The Neoware CA-5 that I have has 64 MB of on-board RAM, eight of which are taken as video memory. Even Ubuntu’s text-based installed needs 128 MB to run and, for reasons I’ll explain later, the Xubuntu installer I needed requires 192 MB.

Thankfully, there’s a 144 pin SODIMM slot. Mine supports PC-133 CL-3 memory and, presumably, is backwards compatible with PC-100.

As always seems to be the case with RAM, the older the format the more you’ll have to pay per MB. Ebay was the only place I could find a 256 MB module for anything like a reasonable cost.

I’ve read that the maximum RAM the CPU can handle is 1 GB but I failed to make a note of where I saw that, so I can’t post a reference.

The hard drive

The 32 MB flash disk is a disk on module unit that plugs straight into a 44 pin IDE socket on the Neoware’s motherboard.

This means that you should be able to do away with the disk on module unit and plug in a standard 2.5 inch IDE laptop hard disk instead. However, there’s not much room in the case and certainly nowhere to secure a hard drive in place, without further tinkering. Also, moving parts mean noise and heat, neither of which I want to deal with.

According to Wikipedia, Compact Flash cards can act just like an IDE drive, meaning that if you can plug a CF card into the IDE socket, it’ll be recognised as a hard drive.

Compact Flash to IDE adapters seem to be pretty common; you slot the CF card into the adapter and end up with a cheap solid state IDE drive.

The 44 pin IDE cable

I was surpised by how rare 44 pin female to female IDE cables are. However, most laptop drives I’ve seen slot straight into a female socket in the laptop, so perhaps there isn’t much call for them.

There is one thing to look out for: some IDE sockets and plugs are missing one pin, effectively making them 43 pin. This is the key pin and, when it’s missing, helps you to plug in the cable the right way round.

Neither the CA-5′s IDE plug nor the Compact Flash-IDE adapter have a missing key pin: i.e. they both have male adapters with all 44 pins. However, my IDE cable has the key pin slot blocked off.

In my case, I was able to use a sharpened metal tool to break the plastic cover and create a pin-hole in both female adapters. As the key pin is dead, I didn’t need to do anything else.

A tip for plugging in the cable: it should have a red stripe down one side. That stripe lines up with pin 1. If the pins aren’t numbered, as it wasn’t on my CF-IDE adapter, you’re in for a bit of trial and error: plug it in one way, go into the BIOS and see if the drive is recognised.


Getting all the right bits was the easy part. Installation was frustrating.

I started off by downloading the Ubuntu 10.04 LTS server CD and using it to create a USB start-up disk.

The BIOS gives you a whole load of boot options, including PXE (i.e. boot over the network). USB-HDD worked fine for me.

The server install CD doesn’t work

The installation goes pretty well up until it looks for a kernel. It seems the installer doesn’t recognise the SiS chip in the Neoware CA-5 and you end up with an error along the lines of:

No installable kernel was found in the defined APT sources

I’d seen this before when doing a fresh install on my Viglen MPC-L, which also uses a low-power x86 compatible CPU.

On the Viglen, I fixed the problem by following instructions I’d found on various websites that help you install the kernel manually during the installation.

The first time I tried this on the Neoware, the install seemed to complete okay and I rebooted. A text version of the Ubuntu 10.04 LTS loading screen came up and stayed there. As it’s a slow machine, I went to make a cup of tea. The loading screen was still there when I came back.

Several reboots later, I gave up and went for a re-install.

That time, the first reboot after installation complained that the hard drive hadn’t been unmounted properly and the boot got stuck when loading the Plymouth graphical boot loader. A few retries and it was still getting stuck in the same place.

I need to go file a bug about the SiS chip not being recognised by the installer. I’m still not sure what caused the install to fail here, though, seeing as the same technique worked on the Viglen.

The Xubuntu live CD is the answer

Knowing that a Xubuntu live CD ran without a problem on the Viglen, despite the server installer requiring the manual kernel installation, I decided to download Xubuntu and give that a go.

A few minutes later I had a slow but working Xubuntu desktop. I clicked the install icon and waited. Each step of the installer took a minute or two to appear but, hey, it’s a 200 MHz chip designed to run thin clients.

Slow or not, it worked. After answering the various questions, it began installing Xubuntu.

Roughly six hours later it was still going but, importantly, not once did it complain or fail. I went to bed.

In the morning, Xubuntu was installed and running beautifully, if slowly.

Stripping away Xubuntu to leave Ubuntu Server

I don’t want a Xubuntu machine, though. I want a silent, low energy, Ubuntu Server to hook up to my weather station.

A trip to Psychocats gave me the apt-get line I needed to strip out all the Xubuntu gubbins:

sudo apt-get remove a2ps abiword abiword-common abiword-plugin-grammar abiword-plugin-mathview app-install-data-commercial aumix aumix-common catfish exaile exo-utils fortune-mod fortunes-min gigolo gimp gimp-data gnumeric gnumeric-common gnumeric-doc gtk2-engines-xfce libabiword-2.8 libaiksaurus-1.2-0c2a libaiksaurus-1.2-data libaiksaurusgtk-1.2-0c2a libbabl-0.0-0 libexo-0.3-0 libexo-common libgdome2-0 libgdome2-cpp-smart0c2a libgegl-0.0-0 libgimp2.0 libgoffice-0.8-8 libgoffice-0.8-8-common libgtkmathview0c2a libjpeg-progs liblink-grammar4 libmng1 libotr2 libots0 libpsiconv6 librecode0 libscim8c2a libsdl1.2debian-alsa libsexy2 libt1-5 libtagc0 libthunar-vfs-1-2 libwv-1.2-3 libxcb-keysyms1 libxfce4menu-0.1-0 libxfce4util-bin libxfce4util-common libxfce4util4 libxfcegui4-4 libxfconf-0-2 libxmlrpc-core-c3 link-grammar-dictionaries-en mousepad murrine-themes orage oss-compat pidgin pidgin-data pidgin-libnotify pidgin-otr psutils python-cddb python-mmkeys python-mutagen python-sexy ristretto scim scim-bridge-agent scim-bridge-client-gtk scim-gtk2-immodule scim-modules-socket scim-modules-table scim-tables-additional tango-icon-theme tango-icon-theme-common tcl thunar thunar-archive-plugin thunar-data thunar-media-tags-plugin thunar-thumbnailers thunar-volman thunderbird ttf-lyx usb-creator vim-runtime wdiff xchat xchat-common xfce-keyboard-shortcuts xfce4-appfinder xfce4-clipman xfce4-clipman-plugin xfce4-cpugraph-plugin xfce4-dict xfce4-fsguard-plugin xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin xfce4-netload-plugin xfce4-notes xfce4-notes-plugin xfce4-panel xfce4-places-plugin xfce4-power-manager xfce4-power-manager-data xfce4-quicklauncher-plugin xfce4-screenshooter xfce4-session xfce4-settings xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-volumed xfce4-weather-plugin xfce4-xkb-plugin xfconf xfdesktop4 xfdesktop4-data xfprint4 xfswitch-plugin xfwm4 xfwm4-themes xscreensaver xubuntu-artwork xubuntu-default-settings xubuntu-desktop xubuntu-docs xubuntu-gdm-theme xubuntu-icon-theme xubuntu-plymouth-theme xubuntu-wallpapers

Note: I didn’t keep the && sudo apt-get install ubuntu-desktop that Psychocats provide on their Pure Gnome page as, obviously, I don’t want any kind of desktop.

And that’s it

After installing openssh-server, I plugged the machine into my router and it’s now running as a silent, headless, server.

Once I’ve got my weather station set up, it’ll be running wview.