After a week of hacking, I finally convinced my Treo 650 to boot linux.

I have a page registered on where I’ll be collecting information once I get a bit further. I’ll try to have something available so more people can have a go at it.

To answer some of the questions people have had:

  • Will the GSM radio work? Answer: Yep! The GSM radio is connected to a UART on the processor. You activate/dial it using GSM AT commands. There’s a couple of pins you need to activate to bring it up, but it won’t be hard to narrow them down.

  • Can I load it without destroying my phone? Answer: Yes. The current method for loading it uses the phone’s bootloader to place it in RAM. It doesn’t write any permanent data to the phone yet, and it’ll only be using the SD card for read/write operations anyways.


  • Will the CDMA radio work? Answer: Hopefully. Shadowmite pointed out that the CDMA radio uses AT commands as well. This means that a single phone program might be able to provide both GSM and CDMA service!


Welcome Slashdot, Digg, Engadget and other readers!

I’ve got to give credit to 1&1 hosting for holding up under a simultaneous Slashdot/Digg attack.

Read full post

Get it while it’s hot! I’ve started dumping information to the wiki:

Palm Treo 650 Wiki Page

I also managed to get the LCD properly initialized last night. It turns out that the L_BIAS pin set in pxafb.c is being set, even if the attached display doesn’t require it. This causes the Sony LCD that the Treo uses to go entirely white (as if it were disabled). Commenting this line out fixes it, but I’ll need to add a proper check for display type before submitting a patch to

Once I have a keyboard driver and some way of communicating with the device (it’ll be either Bluetooth or USB Ethernet) I’ll probably push out a release for early adopters to play with.

Read full post

Using the PXA matrix keypad driver from the LifeDrive Linux port, I managed to get full keyboard support for the Treo 650. It took a lot of manual keyboard matrix decoding, but you can now type into the Busybox shell!

I need to figure out why Busybux isn’t accepting the KP_ENTER key as a proper return. I’ll bet it’s some sort of userspace keyboard mapping, but I’ve never played with that sort of thing.

Read full post

I started reading through Alex Osbourne’s patches for his port of Linux to the Palm LifeDrive and it turns out that a lot of the work for supporting the Palm Hardware has already been done!

This an example of where Open Source shines – each new platform developer writes a couple of new drivers, making it even easier for the next port that comes along!

I just wanted to thank Alex for blazing the path that I’m going to be following here. There’s a lot of work in decoding GPIOs and handling the minor platform differences, but we can certainly share a lot of code.

Read full post

Last night’s hacking progress was targeted at getting the SD/MMC driver up and running. Since the PXA27x platform has built-in SD/MMC support, it’s just a matter of setting up the SD/MMC communication GPIOs (clock, data, command channel) and locating the GPIOs for detecting SD card insertion events and read-only status.

I haven’t managed to get the SD card driver working on my phone, but I think it has something to do with my SD card. One of the testers on the IRC channel got it to mount his 512MB high-speed SD card correctly.

The problem is that the data received from the SD card seems to fail its CRC check. The errata for the PXA platform indicates that there might be trouble with some SD cards at certain speeds. Since the card works fine in PalmOS and the bootloader, I’m guessing that I might just need to add a retry or delay at some point until the SD card is ready to go.

Read full post

So more hacking on the SD/MMC and I’m still the only one without it working. Two or three other testers have everything going, even so far as mounting rootfs off the SD card!

I tried a number of different things to get it working, including fixing a couple of things that look like bugs in the pxa-mci driver. Still not sure what is going on, but I’ll keep hacking at it.

Other guys on irc have started hacking on other interesting bits, including some doing Bluetooth work. We’re also going to try a custom build of Alex Osborne’s GPE image to see if we can’t get it booted using a slightly modified version of his LifeDrive build.

The remaining stuff we need to do right away:

  1. Fix this SD card bug once and for all.
  2. Get the AC’97 audio/touchscreen stuff working.
  3. Get bluetooth up and running (network/serial connections).
  4. Figure out the right GPIOs to enable the GSM/CDMA phones.

There’s other stuff we could work on after that, but those are the number one priorities if we want the phone and basic GPE applications to be usable in Linux.

Once that’s done, we’ll start work on porting POSE (the Palm OS emulator) so that we never need to switch back!

Read full post

Thanks to a tip by Richard Purdie on the kernel-discuss mailing list, I found the problem. It turns out that the Linux MMC layer assumes that the card has a 512-byte block size.

I managed to work around it by forcing the block size on my card to be 512 bytes (even though it returns 1024 bytes). This isn’t the correct fix, but it seems to do the job for now. I’ll look into a proper fix once I have a chance to come back to it.

Read full post

I got the USB networking layer up and running last night. The secret was determining the correct GPIO for USB cable insertion/removal. Everything else was handled already!

Pinging a device over a USB cable is neat to watch, but Shadowmite is working on getting dropbear ready so that we can SSH over to the phone. This will make it easy to quickly transfer new kernel modules (saving a reboot).

Read full post