What I've learned, six months with a palm tx.

Now that my palmtx is dead it may be my last chance to share with you what I've discovered before I forget everything.

Basically everything is working, it would have been the perfect cheap linux device if the bootloader was writtable and if wifi was not dependant on a binary firmware not updatable.

You may find some info not interesting but perhaps there is something useful for you if you're begining.
If you're using opie you will see that a recent kernel speed everything up ( you will see it immediatly).

Wifi and nand patches: they are not perfects but they work.
Nand: if you're willing to read the nand without error.
Wifi: if you want the wifi enable in linux without touching it before in palmOs.
http://kaillasse91.free.fr/debian/palmtx_patch.zip

Then it's not a guide, more a review of what you will get if you're motivated.

0/
Do not try to halt or reboot instead always use the reset button in the back of the palmtx.
If not the palmtx will be lock in black screen, you need to wait till battery is drained and then it will reboot.

1/Kernel: 2.6.37

Running on a linux distribution.

git checkout -t -b devel origin/devel

In order to cross-compile the kernel you need

a/Get toolchain:
P.ex.:

http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-...

then to Unpack the toolchain:

tar -xjf arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

b/To get the kernel source:
Install git then:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git

You will need a .config file corresponding what you want to do with your palmtx.

Then
cd pxa-2.6
export PATH=/"the directory where the CC chain is"/arm-2008q3/bin:$PATH
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- zImage
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules

In order to not have to think about libertas/wifi firmware I put them in the firmware directory in the kernel source tree, but this is not recommanded.

2/Bluetooth/UART: /dev/ttyS1
You need to boot with bluetooth non activate under palmos. Then you need to activate the chip. I proposed à script:

#bash
echo 17 > /sys/class/gpio/export
echo 83 > /sys/class/gpio/export
echo "high" > /sys/class/gpio/gpio17/direction
echo "high" > /sys/class/gpio/gpio83/direction

With bluez in order to get the uart working you need to indicate all the parameters, as example:
hciattach ttyS1 -s 115200 bcm2035 115200 flow 00:09:DD:50:23:19

I don't suggest to patch the kernel cause bluetooth enable this way is always enable draining your power.

2/Wifi/PCMCIA
You need the firmware to get it working, you can extract it from your palm with cocoboot, thanks to Marex.
Scanning network is not working with this version of the firmware: Version 4, I think this is because the linux driver use the Version 5 specification. Version 5 firmware must exist but is not released for this chip by Marvell.

The PCMCIA/WIFI chip is not usable as it so you have to activate the wifi and scan under palmos before launching linux.

Another solution is to use the gpiofs to activate the PCMCIA card under linux. I proposed you a script but you need pccardctl installed:

#bash
echo "106" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio106/direction
pccardctl eject
pccardctl insert

Then you will be able to use wifi: ad-hoc and managed mode only (managed mode is realy a challenge without scanning).

If you use standard opie you need to use iwconfig and wpa_supplicant manually configured and not the graphical tools.

3/Irda : /dev/ttyS2
Working natively with the linux driver.

4/Sound/AC97
Working well, use alsamixer to set the parameters.

5/Keypad.
Working

6/Touchscreen
Working.
You can use tslib or evdev. For me, evdev was more reliable.
Don't use the "mainstone" driver, it doesn't work well with palmtx.

7/USB
USB client/slave working.
USB gadget: cdc ethernet and file gadget working.

8/SD Card
If you want to use SDHC and not simply SD you need to install driver under palmos but both work well under linux.

9/Flash
Drivers for NAND, NOR: PLEASE don't try to write on the device:
NAND use an undocumented ecc code under palmos so at reboot the nand may not be recognised. You've got model with the samsung device as says in the wiki and with stmicro as mine.
"NAND device: Manufacturer ID: 0x20, Chip ID: 0xf1 (ST Micro NAND 128MiB 3,3V 8-bit)"

NOR driver is working, mine is read only so reading works for sure.
The very early palmtx have NOR (writtable) but the vast majority have Mask ROM (not writtable) making the bootloader static.

NAND driver needs patches to properly work.

10/Clock
The time between palmOs and linux are not the same, cheating with the time zone is not an option, but you can live with it don't you? If you're connected you can always use ntp at boot to keep time happy.

11/Overclock
I was abble to overclock only editing the 'pxa27x_maxfreq' in /arch/arm/mach-pxa/cpufreq-pxa2xx.c and using the performance governor but with very minor performance improvement.

Thanks to the dev and this site to have permitted me to discover embedded linux, was a nice trip.

PS: if someone here is willing to give me wiki access, I would update the palmtx hardware info and perhaps let the tricks for bluetooth and wifi activation as notes, could be fine for beginners.

This is awesome info! Thanks

This is awesome info! Thanks a bunch. Would be great if you could post a link with a ready to use kernel/opie package like Miska does here --> (http://atrey.karlin.mff.cuni.cz/~miska/testing/kernel/)\

Thanks!!

Haven't fiddled with the

Haven't fiddled with the Palm TX in a bit and thought I might try again to get a Kernel to build, but no luck. Does anyone have a .config for say 2.6.38 that works that they'd be willing to share?

Thanks,

LMH

This one was for 2.6.36. You

This one was for 2.6.36. You certainly have to tweak it a little (not sure what is enable or not) but it should help you.

http://www.megaupload.com/?d=8WUTBCTQ

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.