Friday, March 9, 2007

Reflash OZ3.5.4.1

GPE fail to load, so I decided to reflash the whole thing.

Before reflashing, I moved the root folder to root.old.

# mv /home/root /home/root.old
Downloaded the OpenZaurus 3.5.4.1 OPIE Image from ewi546.ewi.utwente.nl mirror and followed the OpenZaurus C7x0/Install Howto.


Loop0 Image:

I have an image on the SD. To create one (512MB):
# dd if=/dev/zero of=ext2.img bs=1024 count=512000
Format the image as ext2: # mkfs.ext2 /media/card/images/loop0.imgCreate a directory to accommodate the mount:
# mkdir /media/loop0
to manually mount the image:
# mount -t ext2 -o loop /media/card/images/loop0.img /media/loop0
add it to fstab so it will be auto-mounted upon reboot, add the following line at the end of /etc/fstab:
/media/card/images/loop0.img /media/loop0 ext2 loop,rw 0
This can be verified by:
# mount /media/loop0
Exit OPIE:
# /etc/init.d/opie stop
Move /home/ and /opt/ directories to loop0:
# mkdir /media/loop0/home
# mv /home/root /media/loop0/home

# ln /media/loop0/home/root /home/root -s

# mv /opt /media/loop0/
# ln /media/loop0/opt /opt -s
Restart OPIE
# /etc/init.d/opie start

Configure USB networking:
I use this Windows XP driver for USB networking (I tried this only with OpenZaurus on Windows XP). Some times the driver crashes, I then reenable USB from the Zaurus side (see below)... sometimes I have to reboot windows...
Zaurus Side (usb0):
ip: 192.168.0.100
Subnet Mask: 255.255.255.0
Gateway: 192.168.0.1
DNS: 192.168.1.1
PC Side:
Make sure the IP 192.168.0.1 is free.
In network settings, advanced tab, enable internet sharing with the Zaurus interface.
settings:
ip: 192.168.0.1
Subnet Mask: 255.255.255.0
Gateway: 192.168.0.100
DNS: 192.168.1.1

EnableUSB:
Create the script enableUSB.sh:
#! /bin/sh
# Check if usb storage module is loaded, if it does remove it.
if ["`lsmod | grep g_file_storage`" != "" ]; then
echo g_file_storage is loaded
echo Unloading g_file_storage
rmmod g_file_storage
fi

# Check if usb networking module is loaded, if it does remove it.
if ["`lsmod | grep g_ether`" != "" ]; then
echo Stopping USB networking module...
echo Unloading g_file_storage
rmmod g_ether
fi

#Load USB networking module:
echo Starting USB networking module...
modprobe g_ether

#Enable the network interface.
echo Bringing up network interface:
ifup usb0
Enable networking
# /media/card/myScripts/enableUSB.sh
To automatically enable networking on reboot:
# ln -s /media/card/myScripts/enableUSB.sh /etc/rcS.d/S49local
For ssh to work a password must be set:
# passwd
Now ssh can connect to the Zaurus from the host computer.

Install to loop0:
In order for ipkg to be able to install packages to loop0 (using the -d loop0 switch) it must be mounted using the ipkg-link, at the end of /etc/ipkg.conf add:
dest loop0 /media/loop0/packages/


Timezone
First, update ipkg:
# ipkg update
Install timezones-asia:
# ipkg install -d loop0 timezones-asia
# ipkg-link add timezones-asia
For some reason /etc/profile does not search for ~/.profile to fix it I added before the export line:
if [ -e "$HOME/.profile" ]; then
. $HOME/.profile
fi
Set the local timezone in ~/.profile
export TZ="Asia/Jerusalem"
Update the clock:
# ntpdate nist1.datum.com

Install
mplayer
# ipkg install -d loop0 mplayer
# ipkg-link add liblzo1; ipkg-link add libmad0; ipkg-link add libmp3lame0; ipkg-link add libsdl-1.2-0; ipkg-link add mplayer; ipkg-link add mplayer-common
The mplayer from the feed is missing the font files (maybe the local fonts can be used...) to have OSD mplayer fonts should be copied to ~/.mplayer/fonts.
Key binding can be configured in input.conf. To see a list of available commands run:
# mplayer -input cmdlist
to see a list of keys:
# mplayer -input keylist
I'm using mpfsr.sh script to run mplayer:
#! /bin/sh

if [ "$1" = "" ]; then
echo "Please supply filename"
else
#disable screen saver and autosleep:
qcop QPE/System 'setScreenSaverMode(int)' 2
qcop QPE/System 'setScreenSaverIntervals(int,int,int)' 0 0 0

#change resolution to 240x320:
fbset -n -xres 240 -yres 320 -match;

#Invert rotation, for some reason with default rotation SDL runs upside down. and then start mplayer:
SDL_QT_INVERT_ROTATION=1 mplayer $@

#change resolution back to normal:
fbset -n -xres 640 -yres 480 -match;

#enable screensaver and autosleep:
qcop QPE/System 'setScreenSaverIntervals(int,int,int)' -1 -1 -1
qcop QPE/System 'setScreenSaverMode(int)' 100

#Update the screen otherwise the screen remains black.
qcop "QPE/System" "applyStyle()";
fi

Add MyScripts and MyApps tabs:
tabs are directories under /opt/QtPalmtop/apps, so to create new tabs:
# mkdir /opt/QtPalmtop/apps/myApps
# mkdir /opt/QtPalmtop/apps/myScripts

A .directory file is also needed to be created for both directories:
[Desktop Entry]
File=/opt/opie/apps/myApps/.directory
Icon=myAppsIcon
Type=application/octet-stream
Name=MyApps
Restart OPIE for the changes to take effect:
# /etc/init.d/opie stop
# /etc/init.d/opie start
Install BASH:
# ipkg install -d loop0 bash
# ipkg-link add bash
The default shell cannot be changed in /etc/passwd, but I can add to ~/.profile:
exec /bin/bash
which will do the trick this is a very bad solution.

To disable the history file, add to .bashrc:
unset HISTFILE

Install less:
less is much better than more...
# ipkg install -d loop0 less
# ipkg-link add less

Install opie-autorotateapplet
I don't like the autorotation feature, and I think it causes problems when closing the hinge, this applet can disable/enable the autorotation "feature"
# ipkg install -d loop0 opie-autorotateapplet
# ipkg-link add opie-autorotateapplet
Install opie-reader
# ipkg install -d loop0 opie-reader
# ipkg-link add opie-reader; ipkg-link add opie-reader-codec-aportis; ipkg-link add opie-reader-codec-arrierego; ipkg-link add opie-reader-codec-chm; ipkg-link add opie-reader-codec-isilo; ipkg-link add opie-reader-codec-plucker; ipkg-link add opie-reader-codec-ppms; ipkg-link add opie-reader-codec-reb; ipkg-link add opie-reader-codec-weasel; ipkg-link add opie-reader-filter-htmlfilter
Hebrew fonts
Install unicode which includes also hebrew fonts:
# ipkg install -d loop0 qte-font-unifont-160
# ipkg-link add qte-font-unifont-160;
ipkg-link add qpf-font-common

Install ZKBApplet
# ipkg install -d loop0 opie-zkbapplet
# ipkg-link add opie-zkbapplet
ZKBApplet requires a XML file with the key definitions. this file should be placed in /opt/QtPalmtop/share/zkb/.

Install opie-clipboardapplet:
# ipkg install -d loop0 opie-clipboardapplet
# ipkg-link add opie-clipboardapplet

Disable LCD Softkeys:
Mark out the entries for the LCD Softkeys in /etc/keymap-2.6.map (lines 121-131).
reboot for the changes to affect.


Install opie-networkapplet

# ipkg install -d loop0 opie-networkapplet
# ipkg-link add opie-networkapplet
Couldn't make this to work...

Install opie-memoryapplet
# ipkg install -d loop0 opie-memoryapplet
# ipkg-link add opie-memoryapplet

Install ScummVM-qpe:

Using the version from the old (OZ3.5.4) feed, all other versions seem to have a problem with the menu key (not working):
# ipkg install -d loop0 /media/card/scummvm-qpe_0.6.1b-r0_arm.ipk
# ipkg-link add libmpeg2; ipkg-link add libogg0; ipkg-link add libvorbisidec1; ipkg-link add scummvm-qpe
At the beginning the cursor is a bit off, to fix that, choose "Fix aspect ratio" under options (in the main screen).
A newer version is installed later


Install Knights
Knights is a front end for the Phalanx chess engine.
# ipkg install -d loop0 knights
# ipkg-link add knights; ipkg-link add phalanx