README.md
Linux on the Compaq Aero 8000
summary
A few years ago, I started porting Linux to the Compaq Aero 8000, a PocketPC that ships with Windows CE. Unfortunately, due to what I think are hardware limitations, the port never became usable. However, as there are still a lot of people asking me about this, I've decided to make available as much as I currently can to help anyone who wants to finish the port.
status
Fully documented (or fully figured out through reverse-engineering):
keyboard
display
serial ports
simple input events
AC power present
power button
lid open/closed
the record/alarm buttons on the front
I2C (i.e. SMBus, so we could read battery status with the right software)
Some of the LEDs (they have hardware-controlled blinking)
Unsupported, and likely to remain so without documentation:
CPU suspend mode (I think we cannot prevent the CPU from resuming into Windows CE, so we'd have to exchange the ROM)
PCMCIA
Might be easy, but no hardware to test with:
IrDA
Partially supported (should be easy, but there might be unexpected behaviour):
External PS/2
Touch Pad (note: this is completely different from the external PS/2 port)
Sound
code
This is unusually crufty code, and a lot of it really hasn't been cleaned up at all. It's basically here so I don't accidentally delete it:
GDB stub program, modified for the Aero. This is based on an old (?) version by Niibe Yutaka, with minor changes to support the EC3104 serial port.
The GDB stub as Windows CE executable. This will overwrite your Aero's RAM and potentially damage the hardware when run. That aside, this works by running a gdb stub on the serial port with the proprietary Compaq connector; we don't try to set transmission speed or parity, so only run this when Windows CE has established a PPP connection and you can run gdb on the other end.
howto
Okay, so if you have an Aero, really don't care what happens to it, the data on it, or anything that's close enough to it to catch fire, you might want to try to duplicate the process I've used to run (in a way) Linux on an Aero:
Connect the proprietary Compaq serial port on the Aero to a serial port on a PC running Linux
Boot the Aero in Windows CE
Start pppd on the Linux box. The command line should look similar to: /usr/sbin/pppd /dev/ttyS0 115200 passive debug nobsdcomp 192.168.0.2:192.168.0.3 nodeflate netmask 255.255.255.0 noauth connect '/usr/sbin/chat -vf chatfile'. The chatfile should look exactly like this:
CLIENT CLIENTSERVER
Watch what happens on the Aero. It should connect and, after a few seconds, open an error message window. As long as you do not close this window, the connection will remain functional, so just ignore it.
Transfer sh4celd.exe (see above) to the Aero. (FTP or HTTP will both work. DNS might not with the above PPP command line).
Run sh4celd.exe while the PPP connection is still up. Otherwise, nothing will happen.
Obtain a cross-architecture version of gdb, configured to run on i386 but debug sh4 binaries. Run this on the same Linux box that's running pppd. Try to connect to the Aero, using something like:
set archi sh
set end li
target remote /dev/ttyS0
on the gdb command prompt. If that works, try
x/64wx 0xb0ec0000
on the gdb command prompt and email the output to prumpf@tux.org.
Obtain or compile a kernel. binutils compile out of the box using
configure --target=sh-linux-gnu
. GCC compiles with
configure --target=sh-linux-gnu --disable-threads
You can now load a kernel image using the gdb stub. To do this, simply use
load vmlinux
on the gdb command line, then
run