Monday, August 6, 2007

Marex and TX

As I promised several times, Marex is going to have my TX for development. I'm sending it tomorrow. Once he get it, we can expect some results very soon ;-) I hope at least in working PCMCIA driver. With some luck, we can hope in WiFi too. So good luck, Marex ;-)

TX LCD border

I was searching how to disable LCD white border. It can be really annoying sometimes. I tried Marexs driver for LD, but I couldn't find proper GPIOs. But I've tried something else too. I've tried to change dimensions of the display. And it worked. So now I have Opie running in 324x484 resolution. With no white border. White border was the main reason to try it, but if we've got 324x484 display, why don't we use these additional pixels instead of just blanking them? ;-)



You can count them ;-) If you want to try it by yourself, you can try extremely testing release ;-)

Extremly testing releases

If you are interested in my really experimental releases, you can get them on testing part of my pages. I'm uploading there something before I test it. If it works, then I move it on my official pages where you can get it in usual way. This can be interesting for T5 users. I don't have T5, so releases on my pages are based on snua's testing. Because of this, experimental builds can be much newer then normal ones. But off course, there is high probability that nobody ever tested them.

Monday, July 30, 2007

New TX release

Palm TX linux rootfs was quite old and it didn't support new features. So I tried Marex's Technology Preview. With Marex's cooperation, I modified it to work on TX too and updated it with new Opie features (mostly did by Marex). So what's new in this rootfs?


  • Opie 1.2.3 + some features that will be in 1.2.4

  • Bluez 3.12 to support bcm2035 natively

  • Whole image is compiled with iWMMXt optimization which means using full power of PXA27x

  • Fully functional Bluetooth and Irda applets.

  • Konqueror Embeded web browser.

  • CPUFreq applet to control speed of your CPU (you can overclock your Palm from GUI, isn't it cool?)

  • Other nice Opie improvements.

You can get it as usual on my web site

Saturday, July 14, 2007

TX News - Cpufreq

So Marex didn't come :-( Maybe next week. So we have to wait for WiFi little bit longer. But Marex repaired cpufreq, so we can try it instead ;-) I've tested it already and it works. You can find it in updated kernel from my pages (hosting is down at the moment, but I hope it will be up soon). You can set speed by

echo freq > /sys/devices/system/cpu/spi0/cpufreq/scaling_setspeed

and you can get your current frequency by

cat /sys/devices/system/cpu/spi0/cpufreq/scaling_cur_freq.

PS: If you used my previous package, you don't need to update everything, but you can just download kernel package and unpack it on your card (overwriting all existing files).

Saturday, July 7, 2007

Palm TX PCMCIA status

We've done some tests with Marex lately (he told me what to do and I tried it on real device) and maybe we've got some results. What it is looks like at the moment? It seems, that PalmTX WiFi is connected to PCMCIA at address 0x28000000. There is also another used PCMCIA - 0x20000000. Marex thinks that it can be NAND memory. So it sounds very promising. Unfortunately we don't have proper PCMCIA driver for TX yet :-( Maybe we are still missing some GPIOs (we tried some promising ones but with no results). Great news at last, Marex is coming to Prague (Thursday this week) to see my TX, so PCMCIA driver can be ready soon ;-) These are just some notes, but as you can see work is in progress ;-)


dump of 0x20000000

00005a00
00000000
c0000000
c0000000
30318f57
00000000
000c000c
00040004
00000005
ffff0000
c0011e90
c0005f6c
ffff0014

Thursday, July 5, 2007

Image selector, part 2 ;-)

I did it. When no one believed in my developing skills... Ok, that was for fun, now let's talk about something more serious. As I mentioned before (in my previous post), I was thinking about writing interactive image selector purely in shell. So job done ;-) Many thanks to kEdAR who prepared busybox for me (I needed some usual shell utilities which wasn't included in my old ramdisk). So how does my image selector work? After loading ramdisk and configuration file from SD/MMC Card, it shows you what configurations you can choose from. Also it marks one of them as selected one (first configuration from your list). If you press enter, it will choose next one. When any configuration became marked as selected, you've got several seconds to change your mind. If you don't press enter during that period, selected image will be loaded.You can specify different SQUASROOT and ROOT for each of your choices. I hope it will be enough.

I nearly forgotten to mention where you can get it. As usual, you can get it from my pages (it's in squashfs-lzma now) and you can also get there documented example of configuration file. And last thing to add, screenshot ;-) It's taken on PC, but it looks same on Palm ;-)


Sunday, July 1, 2007

Image selector

Basic idea

I was thinking, with squashfs-lzma, I can have several rootfs on my card and with my ramdisk, I can eassily switch between them by simply editing configuration file. But it can be even more simple. What about bootup menu which let you decide, what rootfs image you want to boot? Well, it can be implemented in PalmOS so it just modify your configuration file, but why? I like to have as simple bootloader as it can be. I prefer solving this issue in Linux. So we can write C program, compile it and use it. But it's not cool ;-) Everybody can do that and you have to take care about libraries and such. So why don't write it in shell? :-D Yes, this sounds cool. Couse Palm doesn't have keyboard. We've got only few keys - some of them are FX and then we've got Dpad. So I've decided to write rootfs selector, which can be controlled by single key :-D I'll use just enter. Main idea is to wait X seconds (where X is user definable) and then run current image. By using enter key, you can switch between several rootfs.

Implementation

How to implement something like this in shell? We need several processes and we need them to communicate with each other somehow. We need one process to wait for enter key and another process to wait and count seconds. So I divided it into 3 different files. First of them is main. It looks simple:


#!/bin/sh

mkdir /tmp/chooser.$$
sh ./dialog 5 /tmp/chooser.$$ 2> /dev/null
. /tmp/chooser.$$/action
rm -r /tmp/chooser

echo $NUM

It's just a simple example. It just runs dialog with 5 seconds of timeout and after that it read's up, what it should do and do it ;-) Now let's take a look at dialog script.


#!/bin/sh

[ "$1" ] && TIME=$1
[ "$2" ] && WDIR=$2
[ "$NUM" ] || NUM=1

echo NUM=$NUM > $WDIR/action
sh ./timedkill $TIME $WDIR $$ &
read tmp
echo switched
NUM=`expr $NUM + 1`
kill `cat $WDIR/killing`
. ./dialog

Here comes my main idea. We call somebody and tell him, what is our PID. That somebody waits X seconds and then kill us. But if user press enter, we will be faster and kill him first. All the time, we are storing current selection, so when we died, our parent would know, how far we get and can run selected operation. Last script is easy, timedkill just wait and then kill ;-)


#!/bin/sh

echo $$ > $2/killing
sleep $1
kill $3
echo action

Conclusion

You can say, I'm mad. You can say that I totaly lost my mind. But I think that in cases like this, the power of shell shows itself. Isn't it really pretty? We can do nearly everything in shell. That's why I like UNIX. Shell RULEZ!

PS: I'll add some graphics and configuration files to it and I'll include it in my future initramdisk ;-) Currently tested only on real computer, but I'll try it on Palm too ;-)

Saturday, June 30, 2007

T5, TX release and my ramdisk

Releases

Because of lack of up to date releases, I decided some time ago to put together something, so even normal users can test latest kernel and rootfs images. I made modular ramdisk (I'll tell you more about it in next section) and I was thinking about how to put release together. I've decided to try squashfs-lzma. I think that it could be useful once somebody figures out how to store rootfs in NAND memory. Because UnionFS was somehow broken in kernel at that moment, I patched kernel with aufs patch and repaired some trivial errors in it. So my releases are using squashfs-lzma and aufs. I didn't compile it all by myself, but I used z72kas root filesystem and just converted it into squasfs-lzma. I prepared TX kernel and modules and in cooperation with snua12, we put together kernel and modules for T5. If you are interested, you can get it on on my web. Main advantage is that in never releases, you can update just kernel or just rootfilesystem and you don§t need to overwrite everything you had ;-)

Initramdisk

What is new in my initramdisk? Why did I need something special? As I already said before, I wanted to try squashfs-lzma. So I needed support for mounting aufs. Also I wanted /home to be in separate file so I wouldn't lost all my data when I use different rootfs. So I needed ramdisk with possibility to mount several different files and I wanted ramdisk, which can be easily configurable by using external text file stored on SD/MMC card. So I wrote it up. I also prepared some user-definable functions which are called during boot process, so you can use them, if you are missing something ;-) I've got good experience with them. I've downloaded some image some time ago and I couldn't boot it. But I was able to find out why and even repair it by using just text editor in PalmOS and user-definable functions in my ramdisk. So it's very useful ;-) If you are interested, you can get it on on my web. You can also find there well documented example of configuration.

Friday, June 29, 2007

Hello World

So here comes another blog devoted to Hacking & Developement. It's project to port Linux on Palm PDAs. As I mentioned in description of this blog, I've got Palm TX. So let's start with current status of Palm TX. Don't get me wrong, I'm mostly just a observer so thanks goes to the smart developers from Hacking & Development

What currently works on TX?

  • Linux boots.
  • USB works (usb network can be established).
  • Power Management works (TX can be suspended and waked up).
  • Infraport works.
  • Bluetooth works.

What currently doesn't work on TX?

  • WiFi (work in progress).
  • Access to NVFS memory (some ideas already in Marexs mind).

I'll keep you posted about any news ;-)