Unix in your hand

This page describes experiences in running Unix on my IBM PC110 palmtop computer. This is not complete yet but as so many people seem to want to know more, I've made it available.

For Unix on smaller devices see my page on running unix on a Casio E-105 palm sized PC

Back to my home page or mail me, awb@cs.cmu.edu if you have questions.

IBM PC110

The IBM PC110 is a small full PC compatible palmtop about the size of a paperback book (157x113x33mm weighing just 715g). Unlike other PDA's and handhelds, whose hardware is non-standard, this is IBM PC compatible and is sold with DOS and Windows 3.1 though others are successfully running Linux, FreeBSD , Windows 95, OS/2 and Windows NT. I should also add all this is available at a price under 1000US$.

Its basic specifications are, 486SX33Mhz processor, 4, 8 or 20 Meg RAM, 4M compact flash drive (containing DOS), empty second compact flash slot, two TYPEII PCMCIA slots or one TYPEIII slot, a 260M PCMCIA TYPEIII drive is offered with Windows 3.1J installed. 4.7in, (96x71mm) 640x480 256-color DSTN LCD screen, 90-key keyboard, internal 2400 data/9600 fax modem, iRDA port, soundblaster compatible (8bit) audio i/o, pointing device (nipple-type ps/2 mouse) and touch-pad. A docking station provides an external floppy disk drive, connectors for external monitor, keyboard, mouse, serial line and parallel port. It is powered by a lithium-ion battery offering an hour or more of serious use, and longer when not using power hungry devices like disks, sound and brightly colored screens. In suspend mode the battery lasts for days (more that 2 but for me possibly not 3). Its full specs (from Amanda Walker's page) are here

What's the catch? I hear you ask. Well there are a few and but none are insurmountable. The first is availability. This IBM PC110 is only available in Japan, though import versions are available in the US (pointers are given below). It is a Japanese machine so comes with Japanese DOS, Japanese Windows, Japanese manuals etc. This machine has been out for over two years but IBM have already discontinued it, however it still seems to be readily available from a number of stores and web sites. The second problem is the actual hardware is not the newest and best, the processor is slow by today's standards (and there's no floating point), the modem is a little embarrassing, and the battery life is too short. But apart from, perhaps, the Toshiba Libretto, the PC110 is the only palmtop machine around that can run full Unix in your palm (or Windows 95 if you must) and offers such a wide variety of interesting peripherals.

For me, buying a Japanese machine isn't a problem, I lived in Japan for a number of years and my technical Japanese is almost reasonable, besides this would be my third machine where all the manuals are written in funny little squiggles, (hmm, some of the English machines I've bought maybe are in that category too). As I would only consider running Unix on the machine, a 486 is perfectly adequate for X, gcc, Emacs, Netscape etc. though I bought the machine with no specific purpose except to take up some of my non-existent "free time"

Buying a PC110

There are number of sites on the web that offer the PC110 at various prices with or without English manuals etc. Here is a short list that I'm aware of now (Jan 1998), but even in the short time I've been looking the number of available outlets has changed. Its worth searching the web for more. I bought mine from T-Zone using their on-line ordering service. I have no direct knowledge of the others but I haven't heard of any bad experiences about the others either.

I chose T-Zone for the following reasons, others (in the UK and USA) had successfully dealt with them, they have the best prices, I had already bought things from T-Zone in Osaka when I lived there and found the store good and their staff technically competent, and I think the service I get from a Japanese store will in general be better than from a US store. I used their on-line ordering service which allowed me to track the order, it took about two and half weeks from my order to when it arrived. I didn't have to communicate with any person to do this but I know they have English speaking staff to deal with international orders and others have exchanged mail with them with no problems.

I actually ordered, the IBM PC110 YDW model with a total of 20M RAM, the docking station and floppy drive (Y99,800) and an extra lithium battery (Y8,000). With the pound particularly high and yen low this is about 550UKP (approx $929), I also had to pay 102UKP for VAT and customs when it was delivered. The cheapest model YD1 has 8M RAM, no hard disk, only the 4M compact flash disk, and no docking station, therefore offering only the iRDA port and modem as connections (and sound i/o if you're really ingenious). Although usable it would require some skill to get it to use more than the pre-installed DOS and PDA software on it, so even though the price is tempting (approx $350) and you think you can buy the peripherals cheaper elsewhere its not going to be easy, though not impossible.

In addition I've bought an AC power supply. The delivered one is for Japan only (110VAC 50/60Hz to 10.5V 3.0A) and works in the US, I use it when I travel there, but of course not in the UK. On recommendation from other UK folk, I bought a Unicross AC adapter 6, 7.5, 9 and 12 volt, 1.2A from Maplin for about 15 pounds which included the necessary plug (used at 9V). Note you need quite a high ampage to get the batteries to recharge. This power supply is too big and heavy to carry around and not universal, I'm still looking for another power supply that I can use when I travel.

I also bought a parallel laplink cable which I've set up to run PLIP between the PC110 and my main home machine, mine is running at 187Kbytes/sec and makes it very easy to transfer files etc. I can run Emacs on the PC110 and display it on my other machine making editing and development much easier.

I also intend to buy a second CompactFlash card and install Unix on it so that I don't need the PCMCIA harddisk. This will save on batteries and weight, and also free up the two PCMCIA slots. People are successfully running Linux on 15M CompactFlash cards but larger cards are now available (and cheaper). A 32M card will cost around US$250. But as 48M cards are imminent, I'm likely to wait for one of these. In 48M I reckon I can get the core system plus X, Netscape, Emacs (cut down ?) and hopefully enough space for my Festival Speech Synthesis System if I spend a little time removing some bloat from it. When that all works adding a PCMCIA ethernet card and modem would make it a more portable machine.

Installing FreeBSD on a PC110 palmtop

The choice between installing Linux and FreeBSD (or NetBSD or OpenBSD) is somewhat arbitrary. We are in an excellent position of having four excellent, robust, full Unix operating systems with full source and support through the net from competent, interesting and intelligent people. If you lack experience in installing Unix I'd be tempted to recommend Linux as there is a larger community using Linux on the PC110 and a mailing list. I might add one of the major contributers (not Linus, as far as I know) to the Linux operating system has a PC110, so its well supported.

I chose FreeBSD as that's what I run on other machines at home and I'm most familiar with its installation process. The installation was done by floppies, but with hindsight I would have got my parallel cable set up for PLIP between my main home machine and the docking station.

I must add that installation was done with the help of Richard Tobin without whom it would have taken much longer.

Backup first

Installing any operating system has the chance of trashing your disk. Although I have no intention of running Windows on the machine I still wanted to back up the diskett directory on the hard drive so that I could potentially re-install if I had to. Also you should take care with the DOS data in the 4M compact flash as that might be the only way you can start again from scratch, especially the PS2.EXE program that allows modification of the BIOS parameters.

We booted a standard FreeBSD boot disk and used a fixit floppy to get a shell, mounted the 4M CF and 250M drives as DOS partitions. We then copied a full version of tar from another machine via floppy (actually only cpio is on the boot disk) and tarred off (tar cvMfb) the whole diskett directory onto my other machine (about 30 disks).

Installing the core system

We installed 2.2.1 as that's the latest CDROM we happen to have, later versions should be similar. The 2.2.1 boot disk fails to start the install script, (earlier versions of FreeBSD, 2.x.x went all the way through). We solved this by selecting, "configure devices" at boot time. We deleted all the devices which were irrelevant. (This was suggested by someone on the Japanese pc110-lovers mailing list, he specifically suggested the Adaptec controller device was causing the problem). This then gave us the installation menu. Though there is a long pause after finding the hard disk disk

Installation then proceeded as usual. We didn't want a DOS/Windows partition but that is a possibility. We made a single FreeBSD slice and partitioned it with 20M root, 20M swap and the rest /usr. We only installed the core distribution, plus DES (now legal from the US without ftp'ing it from South Africa). We didn't install any sources (rebuilding the kernel is done on my other machine), nor X at this stage, but could have done.

We transferred the data by floppies containing BSD filesystems and the split files in /bin on the floppy. We could have done it with MSDOS floppies too.

Once installed the system, failed to reboot because of a confusion between the name of the hard disk. The BIOS recognises it as wd0 but FreeBSD actually finds it as wd2. The solution to this is to type into the boot prompt

boot:  0:wd(2,a)/kernel
We've seen this confusion on some other machines and also when you change the disks around on machines. We're working on a more permanent solution though (more later). Note at this stage the keyboard map doesn't match the actual keys. Colon is got from upper case semi-colon, left parenthesis is upper case 9 (even though that's labelled right parenthesis) and right parenthesis is upper case 0.

With just the core distribution there's still well over 100M of free diskspace. So we could have also installed the kernel sources, manual pages and X at that point.

Configuring the kernel

With the system up and running, we next compiled a new kernel with the appropriate devices. We constructed the configuration file from the /sys/i386/conf/GENERIC. We compiled the new kernel on my PPro 200 machine as it only takes a few minutes to compile but it could be done on the PC110 too, though will take some time longer. I've made my compiled kernel also available, but remember to uncompress it before installing it.

We installed the new kernel (transfered by floppy) and reboot. We still need to type in the special command to the boot prompt but it boots without pausing after finding the disk. This kernel also includes the sound drivers and the power management support, but you need to create the sound devices as follows.

cd /dev
./MAKEDEV snd0
This will create a /dev/audio. You also need to create an apm device to allow the power management support to work.
cd /dev
./MAKEDEV apm
Also you need to enable it in /etc/sysconfig by changing NO to YES, search for apm_enable. Most importantly, the apm support allows the the Unix clock to be reset on resume after suspend mode, keeping the time in sync with the rest of the world. It also allows xbatt (available in the FreeBSD packages directory) to work which graphically shows the status of the battery. Note you also need ot install the xpm package to make this work (both are small).

The default keyboard map with FreeBSD is not right for the PC110. I took the basic Japanese keyboard map and made minor changes to make it match. I then installed this modified keymap in /usr/share/syscons/keymaps/pc110.90.kbd. Also change

keymap=NO
to
keymap="/usr/share/syscons/keymaps/pc110.90.kbd"
in /etc/sysconfig

Note later versions of FreeBSD no longer use /etc/sysconfig but use /etc/rc.conf in a very similar way.

Note that out of preference I always make the caps lock key into a control key to make it more like the Sun keyboards I use. As for the other keys they are mapped to what's written on them. The yen symbol is mapped to a backslash. (Ascii 0x5C is the yen symbol in Japan and is backslash elsewhere, it is the DOS directory separator.) In addition the half/full/kanji selection key (left of numeric 1) is mapped to backslash and bar. This is because for some reason I do not undertsand yet the other backslash (yen) bar key at the right of the keyboard doesn't work under X (even with explicit mention in xmodmap, and checking with xev).

Installing XFree86

XFree86 3.2 comes with FreeBSD 2.2.1 so we installed that. I found a number of XF86Config files on the net for Linux and took one of these, as the setup is primarily the same. The graphics card is Chips & Technologies, one of the few Laptop graphic chip sets that has support under XFree86. You basically want the SVGA server. However after trying a number of different versions of XFree86, playing with the config file and reading about others experiences, the only version that works is XFree86 3.1.2 SVGA. For FreeBSD 2.2.1 this needs libc.so.2.1 which isn't on the 2.2.1 CD but I got from another machine.

The nipple mouse and two sets of two buttons are basically a PS/2 mouse. The PS/2 mouse support is disabled in the generic kernel but can be enabled at boot time. The kernel configuration above has the psm0 PS/2 mouse driver already configured and enabled.

Our XF86Config file, the 3.1.2 version of the SVGA server and the extra shared library are available from here. They are also available (except our config file) from XFree86 and FreeBSD.

Note, I had a problem with my standard .twmrc which caused the X server to appear to crash (actually twm was crashing which caused X to end).

Networking using a parallel cable

After we had the system installed I got a parallel laplink cable (only UKP 9.95 from Maplin) and connected the docking station to my home machine. PLIP (parallel link IP) protocol is supported by FreeBSD (though I believe not on some earlier printer ports,). When FreeBSD boots (on both machines) it identifies lp0 as TCP/IP capable.

A quick search using AltaVista for "+PLIP +FreeBSD" in usenet gives a message from dmlb@ragnet.demon.co.uk (Duncan Barclay) from 22nd Dec 1997, with the relevant details. First ensure the machines have IP address in each others /etc/hosts Basically on each machine type
ifconfig lp0 inet this_machine_name other_machine_name netmask 0xffffffff
I've saved his message here as it includes further information about routing.

Although he reports 70Kbytes/sec transfer I get 187Kbytes/sec and haven't noticed his problem of the faster machine crashing even though my faster machine is much faster than the PC110. This is quite adequate for running X applications between the two devices. I now run an Emacs on the PC110 and display it on my large machine making it easier to continue configuring it.

Our routing between the PC110 and the larger machine is complicated by the fact that my larger machine is also on an ethernet. Another machine on that ethernet has a modem connection to the net. We are already using IP forwarding to allow the non-primary machines on our ethernet to connect to the net and the PC110 is now on a separate net connected to our main ethernet. After a little playing we got it to work so Netscape on the PC110 could do DNS look ups and access pages on the net.

If we had to install FreeBSD again I think we'd get the parallel cable working first as it would make installation much easier (and involve less passing around of floppies).

Things still to do

I've bought a 48M CompactFlash card, which is big enough to build a reasonable stand alone system so I can dispence with the 250M disk and hopefully get a longer batter life. I've not had time to look at that yet. I bought my CompactFlash card from (http://www.shoresystems.net/l_epcproducts.html) US$239. It arrived in 4 days.

I recently bought a SONY NP-550 battery. It seems to give significantly longer life. With gcc continously running my IBM batteries run out in an hour, this SONY battery lasts 110 minutes. Considering my Dell laptop runs out in 120 minutes (on the same task) this seems fine (though the Dell laptop can compile more in that time :-).

I'm still thinking about how to connect it to my work machine. I use the docking station at home but need a way to get it to talk to the world at work. The iRDA port seems the only usable connection on the machine when its out of its docking station (well yes I could use the modem too :-). I'm therefore looking for a serial to iRDA port device for my Sun Ultra so I can run PPP across it. In the longer term (once I have a CompactFlash card) I suspect I'll just get an PCMCIA ethernet card.


More information

Mailing lists

English help

Various PC110 pages


Acknowledgements

The photographs come from Yongguang Zhang's (without permission), thanks.