Porting Linux to the HP Jornada 820

François-René Rideau


I bought a Jornada 820 in April 2002, hoping that a Linux kernel for it would be at hand. After some hacking and some progress with limited results, I found that I lacked time, proficiency and dedication to complete the port myself. Thus, in March 2003, I posted this article on my site, and announced it widely. In February 2004, a usable kernel was available at last. March 2004 status: a kernel with basic functionality is running. See the jornada820.sf.net site for all the details and up-to-date information. Quick download links for your testing convenience: bootloader and bootimage.

1 Bounty Hunting
2 Why The Hunt
3 The HP Jornada 820: A Great Machine!
4 Status of the Linux Kernel
5 Who is the task made for?
6 Who is to fund the project?
7 The Bounty Protocol
8 Project Status
9 Credits

1 Bounty Hunting

I'm looking for people to sponsor the port of Linux to the HP Jornada 820, arguably the second best PDA that ever existed.

Two types of people are involved: kernel hackers and machine owners. Kernel hacking sponsors are to invest their time in porting the kernel. Machine owning sponsors are to contribute funds, so as to purchase machines for hackers, and gather a bounty to reward them and motivate them.

If you are interested in participating in this bounty hunt, or if someone you know could be interested in it, on either side of the bounty, please contact me. Your contribution can make a difference!

And now for the details...

2 Why The Hunt

I have a HP Jornada 820, and I think it'd be a great Linux device. At this moment, the only PDAs remotely in the same league are the Zaurus SL-Cxxx and the Psion Series 7 (or Psion Netbook variant - homepage, specsheet, linux, sourceforge): only these machines have a full size VGA display or a full size keyboard. The Jornada 820 is not as fast and colorful as the C700, and less memoryful than the latest Cxxx variants; but for most uses, you won't notice these difference, whereas the 820 has a much bigger and comfier keyboard, longer battery life, and quite a few perks, too.

However, I realize I don't have the time, skill and dedication to complete a useful port of Linux to the Jornada 820, whereas the WinCE port of Emacs is rather good when it doesn't crash, but still doesn't feel enough like home. So I'm raising funds to offer a machine and a bounty to a hacker who would volunteer to complete the Linux device driver support for this machine.

Thus, if you too own a Jornada 820, or intend to purchase one (you may find one on eBay), you can send funds to the e-gold.com account 104835, and I'll use these funds for the purpose of completing the Linux port. If you're a kernel hacker, and would like to own a swell PDA for which you can proudly tell ``I completed the Linux kernel port to it´´, then contact me!

3 The HP Jornada 820: A Great Machine!

The HP Jornada 820 is a great little PDA.

If only Linux or BSD would actually run on it, it'd be a truly great machine, a dream machine even[1].

4 Status of the Linux Kernel

Come and discover our project on sourceforge: jornada820.sourceforge.net.

Currently, the Linux kernel boots; it supports the screen and keyboard as a console; the serial line works; basic PCMCIA functionality is present. People to thank include Hiroshi Ishii, who completed my initial work into a real booting kernel with builtin ramdisk, and George Almasi, who did the console and PCMCIA support. Other notable contributors include Oleg Gusev (driver hacking and userland) and David Jones (website and userland). More work is needed. Contribute to the project!

Also, a boot loader, blob, allows to hack around and help develop the kernel[2].

Framebuffer support is working thanks to George Almasi. Oleg Gusev has reportedly got some X server to work on the framebuffer.

Keyboard support was also added by George Almasi. Once in a while, the kernel may hang while in the keyboard driver; it's probably a matter of raising an interrupt or configuring a register and hanging part of the hardware till the kernel would handle said interrupt or read said register. The latest patch may or may not have fixed this issue; it's a long time since I haven't been bitten by this particular bug, anyway.

Documentation is available for all the chips involved, and there already exists drivers for most of those chips (all of them?), so adding support should be a SMOP. However, the exact hardware wiring is unknown so some guesswork will be necessary to properly setup those drivers. We've been trying to locate some of the engineers at HP who designed the thing, but we've long lost hope to ever collect any useful information from them. I recommend using Schemix for interactive exploration of the hardware.

All in all, the kernel hacker may well end up spending more time configuring things for existing drivers to work, and more generally glueing things together, than actually coding new drivers. It's a job that requires analysis skills, dedication and time, rather than an algorithmic genius.

All the information gathered while porting linux to the 820 is available on the website for the project: jornada820.sourceforge.net. The site publishes information on where to find documentation and software, how to install your cross-compilation toolchain, how to get a ``working´´ Linux kernel, whom to contact, etc. If you're looking for stable binaries to test on your 820, fetch files from the files section.

For coordination among hackers and alpha-testers, the rendez-vous is the Jornada820 mailing-list. You may also want to subscribe to the Jornada mailing-list at handhelds.org. Kernel hackers may profitably subscribe to the Linux-Arm-Kernel mailing-list, too.

The ultimate task would be to play well enough with WinCE so as to not have to clear all memory (which requires removing the backup batteries) after Linux dies, so that the ROM may boot up correctly. It would perhaps even a way to run WinCE programs from within Linux would be neat. However, the only WinCE support that is required (beside being able to bootup with hpcboot) so as to earn the bounty is that Linux be able to work across power off/on cycle. But currently, the more urgent tasks are to provide a satisfying userland and then to move to kernel 2.6 and complete driver support.

5 Who is the task made for?

Clearly, the 820 is not a brand new sexy machine; it is end-of-life. When HP bought Compaq, the Jornada line was discontinued in favor of the iPAQ. So there is not a lot of fame in porting Linux to what is and will remain a confidential platform. Nevertheless, if you are a junior kernel developer, it is still a good thing to add to your resume; this experience can help you get a job where you will actually work on bleeding edge hardware. Moreover, the 820 is still one of the best PDAs ever made; its keyboard is unequalled in any PDA, and the CPU, memory and screen are still quite good, if no more top-of-the-line. Nothing to be ashamed of.

At the time being, bounty is more symbolic than substantial (with current funds, around $100 in addition to the free 820 unit; I won't commit to any precise amount until I actually cash in the money from the other declared contributors). Even if I manage to raise more funds, the bounty will still be a far cry from what would be required to hire a real full-time kernel hacker to do the job. So we're looking for someone who will be mainly motivated by the thirst to learn, by the lust for cool toys that he can claim partly his own creation, by the pride of having completed a port of the linux kernel.

All in all, if you are a wannabee kernel hacker who would like to work at the device driver level or familiarize with custom kernel building, this project can be a great way to introduce you to kernel hacking, in a way that touches all the low-level layers of the system. Since the platform is confidential, you can work at your pace during your free time, without having to keep up with lots of busy geniuses, yet with a few friendly alpha-testers.

If the task doesn't fit what you want to do, but you know someone who could be interested, I'd be very pleased if you would put me in contact with him.

6 Who is to fund the project?

Current and future owners of HP Jornada 820 who would like to turn it into their dream machine, are interested in funding this project.

I have found skilled people willing to do the job for $5000. There is no guarantee behind that, and a preliminary study, to get a better estimate, would cost about $500, plus the machine. All in all, we the project would be fully funded if I gather a total of $6000 in contributions, though there is still a part of risk currently even with this amount. Still, we can reasonably expect that after hiring a hacker semi-full time for a month or two, enough of the kernel will be working so as to make the machine useful, and to attract hacker mindshare that will lead to the completion of the port.

Current owners have already sunk the cost of the machine. To us, getting a C700 would cost $600, for something that may be better in many respects, but not in all respects. We could easily contribute $150 to the fund (maybe more). There have been some twenty-odd people who publicly expressed the desire to run Linux or BSD on their 820. If I can convince all of them, or an equal number of existing owner, that the investment will work, I will be able to gather something like $3000.

More of a problem is to find another $3000 to complete the funding. There is a steady stream of HP Jornada 820 being sold on eBay (more than one per day), with a typical price between $180 and $260, and often a $350 ``Buy It Now´´ cap price. Considering that a C700 costs $600, and comes now with Linux bundled, I can imagine that no one would pay more than $400 for a 820 with Linux. That means that I can expect but $100 per person from people I'd attract into buying a 820. So I'd have to convince at least 30 people to acquire a 820. Tough.

This is a marketing problem. I have no special education, experience or taste about marketing, so suggestions are welcome.

7 The Bounty Protocol

People who want to contribute to the fund should send money to the e-gold.com account 104835. Accounting will take place in gold. The money will be used to purchase a machine for the project and send it to a hacker (then to another hacker if the first hacker doesn't complete the project), and to pay for the bounty. If the money isn't used, it will be returned.

A hacker will be selected among those who volunteer for the project. You don't have to be a well-known expert to volunteer, but you have to be committed to learning enough of what you don't know yet so as to complete the project. The project doesn't require genius, but it does take a lot of dedication.

Note how I above listed the devices in decreasing order of importance to us users who fund the project: a partially complete kernel (say, up to power management) is worth the hacker keeping the machine and getting part of the bounty. With a complete kernel (all devices save the winmodem), he'll get the full bounty. A BSD hacker would be welcome, but only if he commits to complete the kernel support up to the VGA port — I won't settle with partial completion on a kernel for which it's difficult to find another hacker.

If the hacker gives satisfaction, he can keep the machine. If he completes enough of the required drivers, he will be awarded part of the bounty. If he completes all the drivers, he will get all of the remaining fund money. If the project isn't completed, the remaining money will be returned to the funders (or each funder's credit sent to whomever the funder wants), to the prorata of their contribution (accounting in gold, minus all expenditures, e-gold fees, etc.).

So as to encourage donations, all code produced by this sponsorship programme will remain secret for one year [3]. Only fund contributors and kernel hackers will be able to access it during that time. A $150 donation makes you a full fund contributor and entitles you for immediate access. A smaller donation might be ok if you can convince me that you can't pay as much and/or that you can contribute in non-monetary ways — otherwise your access will be delayed depending on how much is lacking for a full contribution.

Why trust me with either side of this transaction? Because I have a reputation to preserve (see my homepage, my TUNES project, my academic career, etc.). Plus, you have my full real-world coordinates on my page, so you can always sue me or otherwise seek revenge if I piss you off [4].

Once again, if you want to participate on either side of this bounty-based development, or know someone who could participate, please contact me.

8 Project Status

The project has collected about $600 in donations plus one promise of donation [5]. About $300 have been spent and $300 remain in our fund. I have sent my unit to a Linux kernel hacker through the post office, and he has begun hacking with it (April 16th 2003); I'm now making some research and arrangements so as to marry another kernel hacker with another 820 unit. With two more $150 donations, I could ship a machine to yet another hacker, and double the current intensity of work on the port. Your contribution can make a difference!

February 2004 update: a kernel is running thanks to George Almasi, so donations are not so urgent anymore.

July 2005 update: The kernel has been usable for quite some time with PCMCIA storage and networking. I have debian and X happily running on a 1GB CF. We still don't have working USB (almost there), and the 2.6 port is lagging behind. If I had to fund such a project nowadays, I could use fundable. Donations are still welcome, so as to send machines and extensions (network, storage, memory) to hackers.

9 Credits

Project sponsors and participants, in order of appearance:

We also wish to thank:


[1]: Actually, a light portable Linux machine with 16MB of RAM or more, a fast ARM processor, a color VGA screen and sound, hundreds of megabytes of persistent storage, and lots of battery autonomy is exactly the machine I was dreaming of in 1992-1993.

[2]: blob notably saved the day by allowing me to discover and locate a device that was periodically writing a 1ms real-time 16-bit counter directly to memory, right within the area in which the compressed kernel image was loaded by default.

However, in the latest version of our kernel patch, blob is no longer required to load the kernel, that gets loaded directly by hpcboot.exe. I can still imagine blob (or a WinCE hack) getting loaded in video memory to dump an image of the RAM so as to analyze how to restore the machine in (auto)bootable state before Linux shuts down the machine.

[3]: All the code being free software under the GPL, the enforcement of this secret will depend on the free cooperation of all those in the know. No legal action will be taken against the scumbags who'd betray the secret; on the other hand, we will use black magic to summon legions of daemons that will fly out of their noses, give them nightmares and haunt their computers. Of course, the interest of all involved is to keep the secret, so as to encourage other people to donate.

[4]: However, if you send thugs my way to teach me how to live, please ensure beforehand that these are indeed my coordinates; otherwise, the victim could very well turn out to be an innocent guy whose identity I have stolen — muhahahaha.

[5]: As a comparison, I could find a reputable hacker willing to work at cost two months full-time for $5000, but this is way more than I can hope to raise at this time. Other hackers have volunteered on their spare time.

Faré RideauFaré on ComputingSite by Faré RideauDonate: bitcoins 1fareF6wCNYYiLPGmyQjrd3AQdHBb1CJ6 or paypal to fahree@gmail.com