This applies to all H4000 series iPAQs (although there may be specific issues here and there).
The files you will need can be downloaded here: http://www.angstrom-distribution.org/releases/2007.12/images/h4000/
You will only need a SD Card for this. It must be 256MB or bigger (total file size is around 180MB).
Download the following files
We do this instead of using the “liveramdisk” image in order for wireless to work, and to be able to hard reset your device without losing any linux files/settings.
Using cfdisk or a graphical partition editor create two partitions.
A first (smaller) FAT partition in order to store the *.exe, *.bin and *.txt file(s).
The second (larger) EXT2 partition to store the filesystem. (rootfs)
Mount the ext2 partition, and do the following
tar xpzf Angstrom-x11-image-glibc-ipk-2007.12-h4000.rootfs.tar.gz -C /media/disk2
Where /media/disk2 is your mounted ext2 partition.
You need to edit a file for wireless to work.
Remove/blank this file, for some reason the acx module is blacklisted. Perhaps it causes some issues with other 4000 devices?
You should also check out
to add some wireless networks.
You should also get rid of some startup programs (if you don’t need them)
Move the following to a safe place (/root?)
This will disable bluetooth support, logging and remote SSH access.
In order for wireless to work after suspend, you need to make two files.
case $1 in
rmmod -f acx
case $1 in
Set up your /etc/network/interfaces file (or use the GUI) for ifdown/ifup to work.
You might also want to remove /etc/apm/resume.d/50-gpe-bluetooth-resume
In Windows, browse to your ‘Storage Card’ and run the exe file. Choose the second of the three options for booting linux, and if all goes well you’ll running linux in no time! You will lose all your Windows settings.
If anything goes wrong, do the following to perform a ‘hard reset’
1. Hold down the power button
2. Use the stylus to press down the reset button on the side of the PDA
3. Let go of the power button while still pressing the reset button
4. Let go of reset. Device should boot into Windows.
For some reason, my battery is not detected under Windows 2003 (can’t tell there’s a battery, nor the charge). Works with Linux, so not sure what’s up with that.
Wireless so far has performed flawlessly. I get the same latency I get from my laptop when pinging yahoo.com, and see 2-4ms latency on the same network. Very surprising, since on Windows internal network latency would be around 20-40, with outside networks having horrible (100-200) latency.
All in all, I think I’m going to have a lot of fun with this device. And for around $80 on ebay, it’s not a bad deal.
43 thoughts on “Linux on the iPAQ H4150”
I should mention that while latency is very nice, I see top speeds of around 200-400kbytes/second.
Not great, but some of this is probably due to the fact that the SD card isn’t very fast.
Tried it on an ipaq H4350 (H4000 with keyboard), but unfortunately no luck with wireless so far.
ACX100 is recognised, but it seems like the radio isn’t transmitting because of errors somewhere.
Sorry to hear that.
And you tried the above, and not the liveram exe file? Because I had a similar experience with the live version, when an actual install worked.
Thanks for the guide. I have followed you instruction, and was able to boot from windows CE. however, I got:
mmcblk0: error 1 sending read/write command
end_request: I/O error, dev mmcblk0, sector 314
mmcblk0: error 1 sending read/write command
end_request: I/O error, dev mmcblk0, sector 243
FAT: unable to read boot sector
and the a kernel panic.
My setup as follows:
SD Card (1GB) divided into (800MB ext2 with root extracted), and (200MB VFAT having the three files).
Your support is appreciated
Those I/O errors sound like a bad SD card or a bad card slot. I would suggest trying a different card (or seeing if badblocks returns anything on that card). It could be a filesystem problem as well; might want to fsck/chkdsk it.
A kernel panic isn’t surprising if your PDA was unable to read from the boot sector.
What PDA model, by the way?
Thanks for the reply, seems you are correct, I am trying a different SD and i booted in Angestrom using .img file, however the Boot manager seems freezes, I will try to use a whole root fs.
My PDA is HP IPAQ 4150.
I was able to boot into angestrom, and everything is OK except the wireless.
When i write ifconfig, i see only the lo interface. however, i made the steps you mentioned for making the wireless work. I have a wireless network with WEP encryption. Could you please advice?
Thanks in advance,
Once you load the ‘acx’ module (or make the changes to the filesystem) wireless should work.
Open a terminal and type (as root) ‘lsmod | grep acx’ and see if it’s loaded.
After that, you should be able to ‘ifconfig -a’ to see all interfaces and it should be there as wifi0 or something similar. You can use the graphical tools at that point to use wireless (WEP). I don’t think pass phrases work (mine doesn’t in Windows or Linux), so be sure to use the HEX key.
I was able to see wlan0 after I did the modprobe acx.
Configured wlan0 from GUI to have key, however, seems not connected. Should the green light be on when connected (as in windows). Also the wireless monitor shows no connection.
Thanks alot for ur responses
Hello there termina,
thanks for your tutorial, i’ve been using this system on my h4150 and is wonderful, almost everything works, And now i’m trying to create my programs and compiling it on my device, i have installed gcc and almost every packet that includes gcc on its description, but i’m still unable to compile. I get the next error:
“cc: error trying to exec ‘as’: execvp: No such file or directory”
Thanks for the help, is really appreciated.
To be honest, I never bothered with the GUI; I’ve only hear reports that it worked. I tend to manually configure my wifi connections with iwconfig; you might want to try that.
Try installing e2fslibs and/or g++ with ipkg.
Have you ever tried this with the Angstrom-opie-testing-image? I did it, but the status bar at the bootsplash stops at about 60%! Can someone help me, please?
I just keep getting
cc: error trying to exec ‘as’: execvp: No such file or directory
These are the packets installed:
[email protected]:/media/card/serial$ ipkg list_installed | grep gcc
cpp – 4.1.2-r11 – The GNU cc and gcc C compilers.
cpp-symlinks – 4.1.2-r11 – The GNU cc and gcc C compilers.
g++ – 4.1.2-r11 – The GNU cc and gcc C compilers.
g++-symlinks – 4.1.2-r11 – The GNU cc and gcc C compilers.
gcc – 4.1.2-r11 – The GNU cc and gcc C compilers.
gcc-symlinks – 4.1.2-r11 – The GNU cc and gcc C compilers.
libgcc-s-dev – 4.1.2-r13 – The GNU cc and gcc C compilers.
libgcc1 – 4.1.2-r13 – The GNU cc and gcc C compilers.
libstdc++-dev – 4.1.2-r11 – The GNU cc and gcc C compilers.
libstdc++6 – 4.1.2-r13 – The GNU cc and gcc C compilers.
And these are the installed for e2fs
[email protected]:/media/card/serial$ ipkg list_installed | grep e2fs
e2fsprogs – 1.38-r10 – EXT2 Filesystem Utilities
e2fsprogs-badblocks – 1.38-r10 – EXT2 Filesystem Utilities
e2fsprogs-blkid – 1.38-r10 – EXT2 Filesystem Utilities
e2fsprogs-dev – 1.38-r10 – EXT2 Filesystem Utilities
e2fsprogs-uuidgen – 1.38-r10 – EXT2 Filesystem Utilities
looks like i solved it.
I have installed the next packets
And that solved it.
thanks for your time.
I managed to disable the bootsplash. These are the last messages:
[ 56.370000] ether gadget: using random self ethernet address
[ 56.390000] ether gadget: using random host ethernet address
[ 56.470000] Kernel panic – not syncing: devinet: Failed to create loopback
Does anyone have an idea???
Fabian, that sounds like a problem with the image you’re trying.
The error explains it all; for whatever reason it cannot create the loopback (lo) device. You should probably wait until a stable version comes out, or use an older version.
there is something wrong with usb. I deleted the g_ether file and now it works! But without usb I cannot connect the iPaq with my PC. 😉
There is another strange message while booting:
Remounting root file system…
root: mount: mount point /proc/bus/usb does not exist
Why doesn’t it exist? And what can I do to solve this problem? (the directory /proc is empty)
I forgot to say, that the same “kernel panic problem” appears with the x11-image and the discription above!
BUT the liveramdisk works!!! And what’s very strange: A few days ago I tried to run the x11-image and it worked!! But when I tried it again later, it didn’t work and it has never worked again since that.
Could it be that there’s a problem with the file system on the SD-Card?? Maybe I don’t have the right permissions to access it??
I had the basic installation of Angstrom working but couldn’t manage to connect to my WPA router.
After trying the opie images (r12, r13, r14) and disabling the bootsplash (simply chmod -x /etc/init.d/psplash on your Angstrom SD dir), I get the same error as you.
I’ll try preventing g_ether and see if I can make progress.
It appears that moving / renaming /etc/modutils/g_ether will allow the Opie images (tested with the newest kernel image and r14 of the Opie image out of unstable) to boot properly!
Networking is obviously a no go.
But why does it all work with die stable x11-image 2007.12 (usb, wlan etc)?? I mean opie is just the desktop environment, isn’t it?? But it’s also Angstrom like the stable x11-image!
Is there a chance of changing some files with files from the x11-image to make usb-networking work?
I am not able to open the serial port, the programs block inmediately after i called open in my program, i am using /dev/ttyS0. I tried an echo “test” > /dev/ttyS0
but also blocks the console, when i press Ctrl+C, I get Interrupted system call.
Do you know something about it?
Another interesting is that when i use the GPE applet serial port assignment and i set to free the port A, looks like doesn’t frees the port. I’m thinking that the port is blocked to the console so i cannot read or write . But that’s only my guess. Is there any configuration file for the port assignment?
While not feeling brave enough to overwrite the bootloader, I decided to improvise the above (really great) instructions as follows:
Repeat everything as above, except to replace the .exe with
Angstrom boots basic GPE with USB networking but without WiFi (expected).
I was also able to boot in OPIE. Instructions here:
Does this processs remove the Windows OS completely or still allows you to just boot into Linux if you want? And is it a graphical interface or not?
Windows is not touched; you’re running this off an SD card, and can boot into Windows at any time if you dual-boot.
Otherwise, you can push the reset button and Windows will be back on there.
Also, the Linux OS is graphical.
There is a new angstrom-opie-image available (r15) under http://www.angstrom-distribution.org/unstable/autobuild/h4000/
USB is now working!!!! 🙂
How is the performance? Running linux from SDcard compare to windows? Any benchmark?? Thanks.
The only benchmark I took was wireless transfer speed, where Linux blew Windows out of the water.
I haven’t tried any newer images, but performance wasn’t very good with Linux. I had trouble playing video (perhaps there is a reason why Windows could only play wmv?)
You should try out the newest version and let us know. 🙂 I was using a *very* outdated image.
Thanks for your great tutorial. I did all exactly as specified in your tutorial, nevertheless, every time I do run the Angstrom-boot-2.6.21-hh20-r6-h4000.exe file which is on the FAT partition of the SD card, HaRET actually starts, prints a warning dialog and then the screen turns into a random pixels pattern and/or vertical lines pattern. Nothing else happens and the hp4150 gets stuck in that step, until a hard reset that is.
Question is: what could be happening. Could it be a firmware issue? (maybe my ipaq is too old..?)
Your comments are more than welcome. Thanks in Advance
there are 2 filesystems, one is the FAT16 partition (preferrably 16-32 MB) and the second is an EXT2 partition, not EXT3 as i don’t think that the angstrom boot loader supports EXT file journaling? It seems that when the boot loader tries to switch to the second file system, it’s not finding the Linux OS on the second partition because its a) not a Linux filesystem? b) not an EXT2 filesystem? c) the files were not extracted to the filesystem properly? Let me know what you’re stuck on and i’ll see if i can help
I have been experimenting with several of these images. I was able to make all but the opie images work. I was able to use the x11 images with good success. After running ipkg update, my wlan0 quit working. I went in and modified the settings for the wlan again and then did a hard reset and now the image will not boot. It hangs at about 20% on the sliding graph the same as the opie images do.
Any suggestions on how to get it to not hang?
ok – I saw above how to disable the psplash and found I am getting the same error as above, (kernel panic – cant create loopback error)
It seems that this problem only shows up with the X11 version after a “ipkg upgrade” is run, so I assume the latest version of some package has a bug. I am going to reload and not do the upgrade, then do some searching in the bug tracker.
thanks for your patience.
I have an hx4700, but those instructions fits smooth on it!
First I should thanks to Termina for this great tutorial, and for everyone about the excellent feedback!
Smith and Fabian:
I’ve got the same problem that you described (kernel panic on loopback device). It occured just after running the ipkg upgrade (but I think that it really occurs when running the package manager and installing a package (in my case, Abiword) because the package manager installs/updates Abiword’s dependencies packages).
I’ll try later to prevent g_ether.
I tried the prebuilt x11 and opie images for 4150 (file added: 24-nov-2008).
– the opie version (Angstrom-opie-image-glibc-ipk-2007.12-r18-h4000.rootfs.img.bz2 24-Nov-2008 04:0) just hangs during first boot
– the x11 version (Angstrom-x11-image-glibc-ipk-2007.12-h4000.rootfs.img.bz2 24-Nov-2008 04:06) boots fine, but unlike the live image, it doesn’t ask me to calibrate, but after boot it asks me to enter the root password. But since there was no calibration, the stylus does not work, and I cannot use the virtual keyboard.
FractalSpace is right: for people who have problems (freeze on bootsplash) do not use Angstrom-boot-2.6.21-hh20-r6-h4000.exe but the newest version of Haret with its configuration file and the right kernel. Work for me !
I’ve been able to install the last Opie and the last kernel from Angstrom by partionning my sd card directly from my pocket pc. To do so I use RamdiskRescue (you can modify the script to chose the size of the partition you will create) and follow the instruction from their site but I choose my images from Angstrom. I needed to modify the haret script in order to boot the new images. I also needed to convert the opie.tar.gz in .bz2 so that haret may detect it. Once it is intalled I used the latest haret program with the latest stable zimage (with r16 in the name) from Angstrom. I boot perfectly without any problem.
Things seems to work well. Enabling bluetooh allow me to see my laptop from windows (but can’t see my ipaq from my laptop). When I connect in Ubuntu and Windows the green light is on indicating me that I’m connnected. If I plug my iPaq on charge the red light flashes.
My main problem is my lack of knowledge to configure it. So is there someone who could help me to do the following:
– How to connect to internet using usb
– How to configure my bluetooth and my wlan to work
If my method interest someone I’ll gladly explaine it in details.
It answered multiple questions that I had. ,
linuxadministration.us, how do you do it?
And this is why I love linuxadmiinistration.us. Awesome posts.
Is this blog entry still active? Last messages from you is from 2008, any updates?
I’m afraid I no longer have the iPAQ, so no more updates on my end for this device.