Linux on the Ipaq HX4700

From IKE
Jump to: navigation, search


I have found no step-by-step guide on the web for installing Familiar for people who do not wish to spend their lives studying and understanding the technology. This is especially true for my device, the iPAQ hx4700. As such, I'm writing this manual. Thanks to Azad for his patience and testing of this manual.

Please note that I first made this manual on or around 25 October 2005. As such, hopefully some of the small idiosyncrasies disappear with time, and hopefully I document the others that come up. However, the chances are that I will not maintain this very well in the future, so please use some caution and feel free to update this page at your whim.


  • iPAQ hx4700
  • USB Cradle or Serial cable
  • 64+MB CompactFlash (CF) memory card
  •  ??MB SD/MMC memory card
  • Some way to read/write CF and SD on your computer (not mandatory, but will make life much, much simpler)

Enter the HP Maintenance screen

Enter the HP Maintenance screen by holding Addressbook and iTask, then pushing the reset button at the bottom of the device. The screen you arrive to should say "v1.01" and have an "hp" logo. However, the screen is not backlit, so it may be difficult to visualize.

Sit the device in your cradle and plug the USB plug into your computer's USB port. At this point, a "USB" should appear at the top of the screen, replacing "SERIAL". You should also have a device /dev/ttyUSB0.

Access the device with any terminal program such as minicom. With minicom, I logged in as a superuser (e.g., root) and then entered setup:

# minicom -os

I then configured the serial setup so the device was set as /dev/ttyUSB0. I hit enter a couple of times at the terminal, and got the following:


Backup your shit

I then backed up my old image to the SD (note: this destroys all data on the SD card). I would recommend using a 256MB SD or less, since that makes backing up the SD card to your computer system manageable. The progres in percent of this process will be shown on your device. The screen output follow:

SD:Waiting for card insert.........
CMD3 for SD, it's OK, ready to get RCA from response.
SD:Detected one card
SD:ready for transfer OK
Total card size=3D680000e=0
Store image to SD/MMC card successful.

At this point, there are two options as to what to do:

  1. Put the SD card in a safe place and never use it again on the off-chance that you may ever want windows again. Use a second SD card for the remainder. This option is not recommended.
  2. Save the contents of the SD card onto a CD (if your SD is < 650MB) or DVD, then continue. Assuming that your SD reader is /dev/sda, backup from SD of the main computer system is as follows:
# dd if=/dev/sda of=mybackup.img

To restore the image to the SD card, one would do:

# dd if=mybackup.img of=/dev/sda

Install the bootloader

Flash linux onto the device

  1. Once the SDG Bootloader has been installed, enter the flash system by depressing the Addressbook and Email buttons, then pressing the Reset button at the bottom of the device.

1. Depress Addressbook and Email, then Reset to enter the SDG flash screen

Boot device

Configure internal network

On the iPAQ, first set the root password from the console:

root@ipaq-pxa2:/# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Re-enter new password:
Password changed.

By default, the IP of the iPAQ will be When the cradle is plugged into the computer, the module usbnet should automatically be loaded. Set the IP on your computer device (presumably usb0) to, for example.

# ifconfig usb0

SSH in

After having configured the networks on both the iPAQ device and the computer, ssh into the iPAQ:

# ssh root@
The authenticity of host ' (' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
root@'s password:

Configure external network (internet)

Now, we must also assin a gateway and select a DNS server. I will assume that the USB connection is being used to provide internet and that the computer attached knows how to serve the internet. Assuming that the computer's IP address is, we will do the following:

# route add -net default gw

Now we will enter the DNS server using vi. Use exactly the following keystrokes:

# vi /etc/resolv.conf


i -- "Insert"
nameserver -- The typed text
ESC -- exit "Insert"
:wq -- Command (:), Write file (w) then quit (q)

Add package sources

First, start editing the "feeds.conf" file, which is used by ipkg, Familiar's package management system. Unfortunately, only vi is present at the moment, so we have to use that.

# vi /etc/ipkg/feeds.conf

Use exactly the following keystrokes:

src/gz koen

Once this is done, update the feeds:

# ipkg update

Upgrade packages

Because of some problems with the packages, do the following to upgrade:

### Install packages that have to be done before the upgrade
# ipkg install diffutils                         # Installs diff-utils for later
# ipkg install busybox                           # Fixes the busybox upgrade bug

### Upgrade all packages
# ipkg upgrade                                   # Upgrades all packages

Personally, I did the following with regards to the changes to the files that it asked for:

  1. /etc/fstab - reject
  2. /etc/hostname - reject
  3. /etc/network/interfaces - reject (the IP changes to if you accept)

Add useful packages

Packages that I think have to be installed to make the system useful:

# ipkg install nano
  • PDF viewer (gpdf)
# ipkg install gpdf
  • Xstroke and minipredict