Linux On The Palmax 1100
Introduction
The Palmax 1100 is a Cyrix MediaGX
based palm/mini-notebook PC. I picked it for a new portable development
machine to replace the IBM PC110 for several reasons.
- The MediaGX is a relatively standard component, so there are less
suprises along the way.
- It supports 2.5" hard disk unlike the PC110. This makes more than 512Mb
of disk space available at sane prices.
- It has a sensible mouse interface. The PC110 mouse was bad enough that
we wrote a fake mouse driver for the little touchpad it has. The Palmax 1100
uses a touchscreen interface.
- With the high capacity battery pack you get four hours of battery life.
Reports on the net and local testing indicate that you really do get three
or four hours of life.
- It comes in black.
Installing Linux
I did a Red Hat install using the Lorax beta snapshot. Red Hat 6.0 also
works fine. The install was done via CD.
If you are using Lorax pick a text mode install. The machine is standard
IDE with an IDE hard disk and CD. The installer will do almost everything
automatically for you.
The touchpad mouse is not supported by Red Hat. Don't worry about this. The
solution will be explained later. The X server works with the PS/2 mouse
on the expansion unit and it is quite usable in this setup. Only 8bit depth
works currently. It isn't clear if this is a bug in the X server, in the
Cyrix VSA or both.
To get the touchpad working download the Xserver listed in the links
section.
Audio does not work out of the box. You need to patch and recompile a kernel
or use Linux kernel version 2.2.13pre6 or higher to fix this. This is a Cyrix
MediGX emulation bug. Another Cyrix MediaGX emulation bug prevents recording
from working. That one I've yet to find a cure for.
Compatibility
Compatibility is always an issue with Linux on mini-notebook machines.
Vendors pull a lot of tricks to get the machines small enough and low
powered enough. The Palmax 1100 fares very well.
- Floppy Drive
- The floppy drive in the base unit works with Linux. It is a little
odd as you can't use both parallel port and floppy together. However it is
fully compatible.
- CD-ROM
- The CD-ROM in the base station is IDE and appears as /dev/hdc. The
only problem here is you need to power off to add/remove the base station.
The unit is heavily oriented to suspend-to-disk which doesn't work on
Linux.
- Hard Disk
- A 2.5" drive. It can support UDMA but the BIOS does not enable UDMA
support and Linux does not know how to enable UDMA on it. Transfer rate
in PIO mode is about 2.5Mbytes/second. UDMA is now supported in 2.2.15pre
kernels.
- Audio
- The MediaGX claims to be Soundblaster 16 compatible. It isn't terribly
compatible however. I have been working on the MediaGX sound bugs and have
the playback side fixed. It turns out that.
- The MediaGX incorrectly emulates the DMA behaviour of a Soundblaster
causing a phut-phut like noise across things like MP3 playback. I have added
a work around for this.
- The MediaGX crashes if you issue a recording command before enabling the
recording DMA channel. The Soundblaster waits. I have cured this but there
are other recording side problems it seems. A provisional fix for this is
in 2.2.15.
- The MediaGX uart401 is incorrectly handled. It is possible to work
around this by setting it to disabled. Not yet added to the driver but
you can set "mpu_io=0xF00" and it will give a non fatal error and disable
the MPU401/UART401 facility for you. On 2.2.13pre6 and higher this is
fixed.
I now have quite usable audio playback.
- Video
- 8bit video works fine except for some colour problems on console
switches. 16bit mode only works with a virtual width set to 1024 pixels. I
looked into this one and it appears to die deep in Cyrix magic firmware. Use
the 3.3.3.1 SVGA X Server. I'll put up a fixed 3.3.5 server for the Palmax
shortly. In the meantime the simple workaround is to set a virtual
screen, which forces off the compressed video that breaks the X server. If
you don't want a virtual screen set the depth to 641 lines. You'll not
notice the one line extra.
The Cyrix MediaGX does not have text modes but emulates them at a very low
level. On the Palmax 1100 this works fine in Linux.
- Keyboard
- The keyboard has a very odd layout and 77 keys. The layout takes a bit
of getting used to, but the 77 key keyboard means it has something close to
real keys unlike the PC110. The layout is magically mapped by the firmware
and the normal UK keymap just works. Suprising and convenient.
- Power Management
- This works fine under Linux. It wants to use ACPI but you can enable
APM support in the BIOS for Linux. Suspend works as does the screen
blanking. The hot key for suspend works fine. Suspend to disk does not
work in Linux. I plan to try using the Linux swsuspend patches instead.
The lack of suspend to disk is the biggest downpoint I have found.
The BIOS allows to underclock the CPU but this requires a reset so is
nothing like as convenient as the speed hotkeys on the PC110. It would be
nice to know how to set the CPU speeds in Linux.
The extended battery pack claims a four hour running time. Playing games in
X11 and doing general work suggests that the claim is reasonable, although
probably not true for building kernels. I run the machine with "noatime"
set on the root file system, and a 1.5 minute spindown on the disk. Also
its worth remembering to set the screeensaver to power down the display and
not do fancy graphics.
- Pen Input
- You can download a special XInput device for the Pen device on the
Palmax 1000. With this installed on the Palmax 1100 the pen works
beautifully. Accuracy is acceptable and then pen is a lot nicer than the
mouse on many of the small laptops.
- PCMCIA
- The PCMCIA controller works with the Linux pcmcia_cs just fine. Under
Red Hat everything simply worked once I enabled PCMCIA and set it to intel
style. You get a single type II slot. Ideal for a network card.
- IRDA
- Itai Nahshon reports that the IRDA works fine with 2.2.14 plus
2.2.14-irda1 patches (thus 2.2.15pre). The Palmax uses an NSC PC97338VJG
controller for serial, floppy and parallel. This works in IRDA mode by
doing
setserial /dev/ttyS1 uart unknown
modprobe nsc_fir dongle_id=9
irmanager &
ifconfig irda0 up
- USB
-
The Linux 2.3.x USB works on the Palmax. I have some problems with the
current development code when doing a suspend and using USB.
Conclusions
The Palmax 1100 is a nice Linux palmtop. There are rough edges in the Cyrix
MediaGX support in the sound and video but they are not fatal. The hardware
works well and has no obvious nasty surprises for non-windows users.
The two big downers are the lack of suspend to disk under Linux and the
continued inability of Cyrix to provide accurate working emulation in
their firmware.
There is a Linux suspend to disk patch so I am working on getting this going
nicely on the Palmax 1100. Cyrix however appear to be incurable.
Update: Cyrix have now provided the information to let Mark Lord get UDMA
working on their 5530 chipset. They have also provided me with enough info
to hopefully work around the audio bugs. With these in place the Palmax
is basically totally supported in Linux. The only missing piece is BIOS
suspend to disk.
Links
XServer
An XFree86 3.3.3.1 server including the Palmax 1000/1100 touchscreen
support. The file reports corrupt but the Xserver itself is ok. You
will also need a suitable XFree86 configuration to
enable the pen.
Amherst Electronics
I bought my Palmax 1100 from these people. I've had no problems with
them, and their pre-sale support is very good.
Cyrix Tools
You want set6x86 in order to enable the power management modes on the
MediaGX CPU.
For startup my /etc/rc.d/rc.local contains the following lines.
mount -o remount,rw,noatime /
/sbin/hdparm -S 15 /dev/hda
/sbin/hdparm -u 1 /dev/hda
/usr/local/sbin/set6x86 -p 0xC2 -s 0x08
The "noatime" setting turns off the writing back of 'last accessed' times to
files. This means reading/opening files does not cause disk wakeups. The
hdparm -S 15 command sets the disk to spin down after 1 minute 15 seconds (you
can play with the value). The hdparm -u1 turns on IRQ unmasking when doing
disk accesses. This is needed to stop audio breakups. The set6x86 command
enables the power management on the MediaGX CPU.