28.07.2005 11:32

Running Linux on HP Jornada 720

HP Jornada 720 is bit older device, but exactly for that reason it is time to run Linux on it as Microsoft Windows for Handheld PC 2000 3.0 is suffering from driver and software insufficiency. Therefore Linux can bring a new life to this nice device. And Linux is even nicer than MWHPC2000.

After 7 years of excelent services I retired my J720 at 05/2012. It will take a honour place in my computer history museum. I do not have a 1:1 replacement, so far i got Sony Vaio P, this is the closest I can find.


  1. What is HP Jornada 720
  2. Linux for Jornada 720
  3. Using 2.4 kernel with Familiar Linux, without flashboard
  4. Kernel 2.6 - experimental
  5. Using Linux with flashboard
  6. Serial console to Jornada
  7. Hardware for Jornada 720
  8. Jornada Keyboard and touchscreen
  9. Jornada 680 and 720 cradle pin out
  10. Sync cable pinout
  11. Flashboard for j720
  12. References

What is HP Jornada 720

See pictures of Jornada 720 - j720 front | j720 top left | j720 right | j720 box | j720 box content | j720 ac adapter

There are several hardware limitations:
PCMCIA supports only 16bit PC Card standard - 32bit CardBus will not work.
There is USB port on docking cradle, however Jornada is able to serve only as slave, not master.
LCD display seems to be slow (compared to nowadays LCD).
Operating system in Jornada is in ROM (no flash!).
Modem is soft modem.
You can not poweroff Jornada as you can e.g. PC. It is ever running device, except you remove all power sources.

History: Production started in 2000, ended Q2 2002. It is successor to HP Jornada 6xx however it has different hardware. Also 728 is not completely same (there is probably not many of them).

Linux for Jornada 720

First, I'd like to point to that Linux could be started on Jornada only from its Windows. This is due to fact, that operating system is in ROM, which can not be changed anyhow. Well, yes there is option - so called flash board exists. However this is not a standard part of Jornada and it is very rare to have it. (There is scheme of the board, but it's not easy to make it.) To start Linux, you'll need Compact Flash card  (at least 64MB) and some kind of loader - linexec (recommended), haret or hpcboot could be used.  Loader is a binary for WinCE that stops WinCE operation and boots Linux kernel.

As Linux you can either use
(There are also other options but I did not test them.)

The most common choice is Familiar Linux. Even thought this is mainly for HP (Compaq) iPaqs, Familiar 0.8.2 has also its images available for j720. There are two kinds of images
There is one more complication - that's main part - kernel. Familiar linux includes kernel 2.6. Kernel 2.6 is not able to boot with unmodified linexec, and 2.4 kernel are not available in Familiar 0.8.2. Luckily Michael Gernoth is creating 2.4 kernel version that is suitable for Familiar and also modified linexec that it is able to boot 2.6 kernel. For now 2.6 seems to have better support for j720 some of the devices, however is under development, so no Image usable to run Familiar exist. 2.4 kernel for j720 has several hacks so battery/brightness/audio is working now.

Using 2.4 kernel with Familiar Linux, without flashboard

To use Familiar 0.8.2 with 2.4 kernel you have to make modification to rootfs. This is due to fact that 2.6 kernel, which is in Familiar, is using udev (dynamicaly created device files) and it needs different commands to handle modules (2.6. kernel changed module names etc.) Also you'll need to use initrd, but this is because you'll boot from WinCE.

1. Getting kernel

You will need
vmlinuz
initrd
modules
from http://wwwcip.informatik.uni-erlangen.de/~simigern/jornada-7xx/linux-2.4.31-j720/
On same site you can get also linexec.exe http://wwwcip.informatik.uni-erlangen.de/~simigern/jornada-7xx/linexec/
Then you need a params.txt file with this content:
\Storage Card\vmlinuz-2.4.31-j720-5
\Storage Card\initrd-2.4.31.gz
It is a config file for linexec and says where is the vmlinuz (kernel) file and initrd image (initial filesystem).

Note: On third line of params.txt there could be optional parameters for linux kernel (you usually do not need them). E.g.:
init=/linuxrc keepinitrd root=/dev/rd/0 console=ttySA0

2. Getting Familiar Linux

Note 13.11.2010: As handhelds.org is often dead now, it may come handy to use at least mirror at ftp://ftp.gwdg.de/pub/linux/handhelds/
From http://familiar.handhelds.org/releases/v0.8.2/install/files/ download either GPE or OPIE image (both work) for j720 - e.g.  gpe-image-jornada720-20050407154438.rootfs.tar.bz2

Modified Familiar 0.8.2 opie image

As some users request "accurate" Jornada 720 image of F0.8.2 I prepared opie image with few modifications, that will make your start easier. You can skip step 4 with this image and most of issues from step 6 are also solved in it. You can use this image only with kernel 2.4.31-j720-5!
opie-image-jornada720-20050407154438-covex.rootfs.tar.bz2

3. Partition Compact Flash

Make two partitions on CF (use linux fdisk or anything else that is able to make linux filesystem)

  1. at least 8MB FAT
  2. rest ext2 (recommended) or ext3 - at least 50MB

Copy vmlinuz, initrd, linexec and params.txt to FAT partition.
Uncompress rootfs.tar.bz2 to ext2 partition.
(command details at ref. [1])

4. Modify rootfs for kernel 2.4

Uncompress modules to ext2 partition (you need modules for 2.4 kernel instead of 2.6 but you can leave 2.6 modules there) .
Get device files and module tools here -> (NOTE: if you used older version than _2 then you have incorrect depmod.24 and none of your modules could be inserted) and copy it to ext2 partition too (also basic fstab and initrd dir included).

You are ready now to put CF to j720 and start linexec.

5. Add more apps

Familiar is using ipkg tools. As soon as you will get up your network you can try to do ipkg update and ipkg install something.
If network is not working for you, you can download files manualy from http://ipkgfind.handhelds.org/, copy them to CF and install with ipkg install file.

As handhelds.org seems to be most of the time down, here is a mirror of familiar 0.8.2 ipkg feeds. Change the /etc/ipkg.conf to
src/gz base http://lowlevel.cz/familiar/v0.8.2/feed/base
src/gz updates http://lowlevel.cz/familiar/v0.8.2/feed/base
src/gz opie http://lowlevel.cz/familiar/v0.8.2/feed/opie

# not needed for opie
#src/gz world http://lowlevel.cz/familiar/v0.8.2/world
#src/gz x11 http://lowlevel.cz/familiar/v0.8.2/x11

6. Issues with Linux kernel 2.4 and Familiar 0.8.2

Desktops as they are in F0.8.2
GPE:
desktop seems unhandled - no icons on desktop, some apps from menu do nothing. Display is not organised well for 640x240, it assumes high and narrow display sometimes. First time boot is quite long, you'll have to wait. (This is not true for a new GPE images available nowadays.)
OPIE: beautiful environment, fast, for all people wanting PDA functions with Linux under the hood.

Tips and tricks for Familiar and Jornada at all

1. if you are getting still messages that /etc/modules.conf is more recent than /lib/modules/`uname -r`/modules.dep than it is because every time you hard reset jornada your clock is reset too. Therefore you can add touch /etc/modules.conf at the beginnig of /etc/init.d/modutils.sh (before depmod -Ae), or you can use a short script to store and load date at shutdown/startup.
2. To see/read a syslogd output from circular buffer use busybox logread command
3. When booting WinCE and starting linux you do not need to go through all the settings, simply press ctrl+esc, select with arrow keys Programs/Windows Explorer OR better pres Win+e to open Explorer directly. In Explorer go again with arrows to Storage Card, then select linexec.
4. If you, as I do, often needs to hard reset Jornada, remove backup battery permanently. It is useless for Linux. To hard reset jornada you have to remove all sources - battery, backup battery, AC. If Jornada asks if it could delete RAM data at boot say Y.
If you have original Jornada with WinCE in ROM, you do not need to worry that you can damage wince anyhow with your experiments. They can not be overwritten.

If you press "s" key during boot you start System Diagnostic. You can test there all components of Jornada, however not all tests are possible for us as they need special "tools". At least you can test ROM and RAM, sound, keyboard etc. What I was not able to accomplish is IR test, serial test (need counter part I do not have), PCMCIA and CF (need special cards).

Kernel 2.6 - experimental

The vanilla kernel 2.6.13 supports Jornada 720 and has some functions of Jornada implemented but not all - so vanilla kernel is missing lot of usefull stuff like audio support.

Therefore there are three lines of 2.6 kernel suitable for j720:

to be continue...

Using Linux with flashboard

With flashboard I was not able to get Familiar 0.8.2 working (this is most probably caused by bootldr which is too old (2.19.7) and needs to be updated to boot 2.6 kernel). Kernel always ends up with unable to mount root.
There are two jffs images that at least run Linux:
As flashboard flash content needs to be changed, that task is not easy for begginers.

Flash on board is devided to two part - bootldr and root. When bootldr part is damaged then your board is dead. There is only one place in world where it could be brink back to life, and maybe it does not exist anymore. So beware! If you have any troubles to update bootldr DO NOT SWITCH OFF Jornada - join IRC and discuss further.

Root partition you can use to store the system. It has 32MB only.

You need to have serial console working, then you have to get into bootldr (pressing "space" while checking flash)
  1. boot> set ymodem 1 - for faster upload use ymodem instead xmodem
  2. boot> load root - start ymodem transfer of flash image to root (minicom: Ctrl+a z, s, ymodem, choose file)
Thats it - in short. You have to take in mind, that you have only 32MB of flash - it's limited. You can mount CF, but you can not easily make it rootfs.

Serial console to Jornada

Howto setup serial console to Jornada

PC (DB9M) (DB9F)<----->(Jornada720_10pinF)(Jornada720_10pinM) Jornada

To make a serial console on Familiar working with Jornada first you have to make at least this device for it.
mknod ttySA0 c 204 5
This is a serial connector at the back of Jornada. Then you need to have proper line in /etc/inittab
S:12345:respawn:/sbin/getty 115200 ttySA0
This starts serial port console in Linux and you can login and work with Linux. The other parts - bootldr and kernel, have their own serial console handling but for all of them you need to have proper terminal configuration.
To see also the ouput of the kernel it is desired to add a kernel boot parameters like
console=ttySA0,115200 console=tty0
into params.txt file.

Configure minicom on your PC - correct settings are 115200 8N1 serial configuration, no flow control, no hardware handshaking
minicom -s
Serial port setup
A - set your COM port jornada is connected to
E I - set speed of com port to 115200
Enter Enter Exit
You can change also Modem and dialing settings - this depends on your minicom settings.

Hardware for Jornada 720

Network

I tried these network cards:

SafeWay

SafeWay is 32bit cardbus - as this it is not working in PC Card only PCMCIA slot that is in Jornada.

3com

It seems to work but does not in real. Card identifies OK, loads module 3c574_cs but  produces strange messages and its MAC address is like this:
eth0: Megahertz 574B at io 0xc2800300, irq 114, hw_addr 02:02:02:02:02:02.
  ASIC rev 2, 8K FIFO split 5:3 Rx:Tx, MII interface.
eth0: command 0x5800 did not complete!
eth0: command 0x0010 did not complete!
eth0: command 0x5800 did not complete!
NETDEV WATCHDOG: eth1: transmit timed out
eth0: Transmit timed out!
  irq status 0808, rx status b6b6, tx status b6, tx free b6b6
  diagnostics: fifo 0808 net 0808 ethernet 0808 media 0808

Card is not transmiting, autonegotiation is not inicialized (none of the leds lights).

SMC

Works well even though it sometimes also says that tramsition timed out. Identifies as NE2000 compatible card. Loads modules 8390 and pcnet_cs.
SMC card is mentioned to be low power.

Wireless

The only card I can recommand is

Zcom XI-325 PCMCIA Wireless LAN PC Card

This is 2.4GHz LANEscape 11Mbps IEEE 802.11b card. It is working in Familiar out of the box with orinoco_cs module or with hostap_cs after some tweaking.

GPS

Reduction

I am using both working flawlessly.

Jornada Keyboard and touchscreen


This is a picture of keyboard on Jornada 720 country code ABB (CC you can find on label at bottom of jornada). For this Jornada you can load keymap at the start of the system to have correct keys mapping in console.
For Familiar 0.8.2 with kernel 2.4 you need to:
  1. Install console-tools - ipkg install -force-overwrite console-tools (you have to use -force-overwrite because some of the tools are already provided by busybox)
  2. download this keymap (Thanx to Marek Coufal), ungzip it and put it e.g. to /etc/keymap/ directory and create rc script with command loadkeys /etc/keymap/bootime.kmap
To fix keyboard in Xwindow you can use xmodmap. Opie is using same map as console.

For kernel 2.6 you have to apply patch, if it is not already included.

Picture of another 720 keyboar layout
Picture of keyboard of j680 (from http://jornada680.wdfiles.com/local--files/start/jornada680.jpg)
NetBSD keyboard layouts source

Howto calibare touchscreen - xtscal

For touchscreen calibration under gpe xtscal program is used. But it is not easy to invoke gpe-xcalibrate.sh when your touchscreen is completely misscalibrated.
You can use serial console or network to start calibration. After login:
DISPLAY=:0 gpe-xcalibrate.sh
however in Familiar 0.7.2 the calibration was not ok, so you can use xtscalibrate directly to set the touchscreen parameters, here is what I aproximated.
DISPLAY=:0 xtscal-bin -cal -180 700 75 -33 0

Expected values to xtscal: XSCALE XTRANS YSCALE YTRANS SWTCHXY.

Jornada 680 and 720 cradle pin out

Cradle pinout is different for 680 and 720!

Cradle pinout is almost same for 680 and 720 - I measured it myself. Cradles could be swaped.

680 CRADLE PINOUT - NOT CONFIRMED
source: http://www.jlime.com/phpBB2/viewtopic.php?t=127&highlight=pin
CRADLE
======
JH 1 2 3 4 5 6 7 8 9 10
COM CD RD TD DTR SG DSR RTS CTS 9pin 10pin
0 0 -5V -5V 0 -5 0 0 0 +12V
COMp 5 3 8 1/6 / 4 2 7 / /
COM GND TD CTS CD/DSR / DTR RD RTS / /


VIEW to bottom side of jornada 680/720.

-----------------------------------------------------
| 6 7 8 9 10 JH |
| ----------------- |
| | o o o o o | |
| | o o o o o | |
| ----------------- |
| 5 4 3 2 1 |
| |
|-----------------------------------------------------|
| BATTERY |
|-----------------------------------------------------|
-----------------------------------------------------

720 CRADLE PINOUT

Looking into USB connector from the back of cradle, COM is as described under sync cable:
      ___
USB / \
|1 2|
|3 4|
-----

JH 1 2 3 4 5 6 7 8 9 10
COMp / 3 8 1/6 5 4 2 7 / /
COM / TD CTS CD/DSR GND DTR RD RTS / /
USB 1 / / / 4 2 / / 3 /
+12V





Standard DB-9 pin out is as follows.

Serial Port (DB9)
Pin Signal Description
--- ------ -----------
1 CD Carrier Detect
2 RD Receive Data
3 TD Transmit Data
4 DTR Data Terminal Ready
5 GND Ground
6 DSR Data Set Ready
7 RTS Request to Send
8 CTS Clear to Send
9 RI Ring Indicator

Sync cable pinout

Sync cable pinout is same for 680/690 and 720/728.

It is (DB9F)<->(Jornada720_10pinF).
Refering to the left hand side of the connector as pin 1 looking into the jornadas port - Male connector. ( sync cable connector if F and the number are from right to left - see picture):

DB9F Jornada720_10pin
1 4
2 3
3 2
4 1
5 5
6 4
7 8
8 7
9 N/C
Shield to Shield
If you have cradle you should be able to make DB9 serial connector out of this PCB - the numbers are pins for Jornada720_10pinF connector (not tested!).



Flashboard for j720

Bottom side


Top side with ICs



http://www.handhelds.org/handhelds-faq/bootldr.html
Howo install bootldr via serial port xmodem/ymodem/zmodem
Original flashboard content


See also: HP Jornada 720 and SynCE on Linux

References:

Jornada:
[1] http://radiolivre.org/darksnow/jornada/ - this page does not exist anymore. I did not found any replacement.
http://handhelds.org/moin/moin.cgi/HpJornada720 kernel install
TuxMobil - Linux on laptops, notebooks, PDAs, mobile phones / HP Handhelds/HP/Compaq PDA disassembly
Jornada architecture description - ports, IO, memory maps
Jornada mailing list archive
SA1100 serial port
http://acid.ch.pw.edu.pl/~sq5bpf/mylinux/j720/
Jornada 680 disassembly (German) soon Jornada 720 disassembly (German)
Howto replace display backlight with white leds for 680

ARM:
Arm assembler instructions
ARMware - StrongARM iPAQ emulator - proprietary - binaries only?!
softgun howto - ARM9 emulation
Tuxmobil ARM page
Jornada with NetBSD

HP
FAQ
720 vs. 728

Nec MobilePro 900 - another similar device
Jornada (czech) blog
Jornada 728

Email comment