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.
Then it's not a guide, more a review of what you will get if you're motivated.
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.
Running on a linux distribution.
git checkout -t -b devel origin/devel
In order to cross-compile the kernel you need
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.
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.
You need to boot with bluetooth non activate under palmos. Then you need to activate the chip. I proposed à script:
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.
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:
echo "106" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio106/direction
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.
Working well, use alsamixer to set the parameters.
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.
USB client/slave working.
USB gadget: cdc ethernet and file gadget working.
If you want to use SDHC and not simply SD you need to install driver under palmos but both work well under linux.
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.
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.
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.