Tom's Agenda VR3

Last updated: $Date: 2004/12/30 08:48:06 $

On 17.9.2001, I got an Agenda VR3 PDA. This is a Linux-based PDA, which I got partly for reasons of solidarity, and partly because my Palm Pilot fscked up one too many times. I don't mind hardware going wrong, it is the way of things, but I do mind when the vendor's only response is "we can't help you, we don't support that". The Agenda people do support Linux as a desktop platform, and I can get right down inside the merry little guts of my Agenda and find out what's not working. Except, of course, that everything is working (yah, right). This is where I lay out the details of my Agenda, and the fun I have had getting it to work with my Linux desktop.

The Agenda VR3 is a PDA which runs entirely Linux, and is designed so to do.

How I got it

Most of this is now historical-only, as the company has folded. I'll post new details on the 8MB Agenda if I can find them.

The company has an office in Germany, so those of us in Europe can mail-order it from them and not pay the outrageous shipping fees charged by the US office. I have no idea if it can be ordered from source (Hong Kong).

Marietta in the German office says the best way to do this is to email them. Bernd Przybilla, at is the technical guru and can help you arrange what, exactly, you want. Then contact Marietta Joppe (email, telephone +49 30 447 121 17) to arrange payment. They take major credit cards; if you have a UK (or other European) VAT number you will not have to pay the 16% German VAT. Thanks to Marietta for her help, friendliness and excellent English.

It arrived by Securicor Omega Express (to the UK), taking four days from when I ordered it.

First impressions

When you turn it on, it actually starts booting Linux. I found this very exciting, because I have no life. I will try to get a screenshot somehow, because there's really no way to convey the odd experience of watching a Palm-sized device with 2.4 kernel boot text all over the screen.

It runs a 2.4 kernel (2.4.0-test9), apparently from the linux-vr project, and what appears to be a patched version of XFree86 4.0.

What's working, and how

This is probably the useful bit, because this is a date-ordered, function-headed list of all issues and discoveries. It is completely a work in progress; XXX blocks indicate places I need to fill in details when life permits.

Flashing the OS

Assuming your Agenda doesn't have the latest OS on it, you will wish to flash the newest version - it was the very first thing I did, because I figured if I was going to trash the unit I should do it before I put real data on it. It is a reasonably simple but fiddly process which I did like this.
  1. Replace batteries. This isn't optional. Flashing a new OS takes about 20 minutes of hard syncing, and if your batteries run out in the middle, opinions on the damage range from "Probably not a complete disaster" to "renders your agenda as useful as a pack of fags" (this latter from a non-smoker). Put the battery compartment cover back on properly (this is important).
  2. Retrieve vrflash from the accompanying CDROM (if you mount the CDROM on /mnt/cdrom, the tarball is /mnt/cdrom/utils/vrflash-0.20.tar.gz). Build and install as per included instructions. The README, btw, suggests getting the latest version of vrflash from a website, but no later version was there when I was doing this. 0.20 works fine anyway.
  3. Get new OS images. I got mine from as per the instructions in (both these links are dead as of 2004 03 18, and i can't find their equivalent on Mine were root-1.1.1S-cramfs and vmlinux-2001-05-17.binary. Put them in the current working directory.
  4. Hook up your agenda to your serial cable, which I will assume is on COM1 (aka ttyS0) (if this is not so, vrflash takes a flag specifying the serial tty). Turn the unit on.
  5. Flash the new OS by typing in the terminal window
    vrflash -l -R -r vmlinux-2001-05-17.binary kernel root-1.1.1S-cramfs romdisk
    Once you get the "waiting for input from port" prompt in the terminal window, reset the Agenda by pressing and holding for a couple of seconds the reset button on the back of the unit.
  6. Watch the insanely laborious progress of the error messages up the screen. When it finishes it will invite you to reset your Agenda again, using the reset button as above.
  7. Check it has taken by doing a cat /etc/revision . This should return something like
    Agenda Linux 1.2.3S (p2p), $DATE, Fred Bloggs
    where appropriate values are substituted for nearly everything. Check that the 1.2.3S matches the version string in the root cramfs. I don't know how to check that the kernel has taken, but I'm assuming that if one did, the other will have.
  8. That's it.


There's not much of interest on my Agenda at this point, but sync'ing the unit is good practice. I got quicksync from the CD that came with the unit (assuming you mount the CD on /mnt/cdrom, the rpm is /mnt/cdrom/utils/quicksync-0.40-1.i386.rpm; a .deb file is also included - bonus points for Agenda there!).

Run quicksync with
press the quicksync button on the cable, and quicksync will create a directory ~/.quicksync and put some files in it. I don't know much else about quicksync at this stage. I have had the Agenda-side sync app freeze up on me, trying to dsomething with the serial port, and still the Launch Pad and other utilities worked fine. This is clearly a multi-tasking OS, unlike the Palm's.

IRDA communication (and serial, too)

I can't cover getting IRDA working on your laptop/desktop here; there are links elsewhere for that. I had it working some time ago for syncing my Pilot, so the rest of this assumes you have IRDA support working and the relevant modules loaded.

Verify you can see your Agenda with IRDAdump. I get the following output:

tirith# irdadump
19:47:22.098702 xid:cmd efddcbbf > ffffffff S=6 s=0 (14) 
19:47:22.187717 xid:cmd efddcbbf > ffffffff S=6 s=1 (14) 
19:47:22.276865 xid:rsp efddcbbf < 1ccfa3c8 S=6 s=1 vr3-992018789 hint=c420 [ Computer LAN Access IrOBEX ] (30) 
19:47:22.288065 xid:cmd efddcbbf > ffffffff S=6 s=2 (14) 
19:47:22.376968 xid:cmd efddcbbf > ffffffff S=6 s=3 (14) 
19:47:22.467838 xid:cmd efddcbbf > ffffffff S=6 s=4 (14) 
19:47:22.558690 xid:cmd efddcbbf > ffffffff S=6 s=5 (14) 
19:47:22.648231 xid:cmd efddcbbf > ffffffff S=6 s=* tirith hint=0400 [ Computer ] (22) 
19:47:25.099745 xid:cmd efddcbbf > ffffffff S=6 s=0 (14) 
19:47:25.185034 xid:cmd efddcbbf > ffffffff S=6 s=1 (14) 
repeating every three seconds or so. The interesting line is the one containing "vr3-992018789", which is the Agenda being visible on the IR. You will have a different name, but the "IrOBEX" should definitely show up for you, too. tirith is my laptop, so the "tirith" line is just it seeing itself. You should be able to see both devices.

Create a ppp peer file. I called mine /etc/ppp/peers/vr3. It contains

The crucial lines are "/dev/ircomm0", which tells pppd to talk on the IR device, and "". The latter line will give your computer's ppp interface the address and your agenda's ppp interface the address

Open up the "Network" application on your Agenda, select "Direct Serial", and set "Device" to "IrComm Direct". Don't press start yet.

As root, start the ppp service on your laptop with
pppd call vr3
(the vr3 here is because of the vr3 in /etc/ppp/peers). Now press "start" on the Agenda. I get the following output on pppd's stderr:

[root@tirith peers]# pppd call vr3
Using interface ppp0
Connect: ppp0 <--> /dev/ircomm0
sent [LCP ConfReq id=0x1    ]
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfReq id=0x1    ]
sent [LCP ConfAck id=0x1    ]
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfAck id=0x1    ]
sent [IPCP ConfReq id=0x1 ]
sent [CCP ConfReq id=0x1   ]
rcvd [IPCP ConfReq id=0x1 ]
sent [IPCP ConfNak id=0x1 ]
rcvd [CCP ConfReq id=0x1   ]
sent [CCP ConfAck id=0x1   ]
rcvd [IPCP ConfAck id=0x1 ]
rcvd [CCP ConfAck id=0x1   ]
Deflate (15) compression enabled
rcvd [IPCP ConfReq id=0x2 ]
sent [IPCP ConfAck id=0x2 ]
local  IP address
remote IP address
Script /etc/ppp/ip-up started (pid 7711)
Script /etc/ppp/ip-up finished (pid 7711), status = 0x0
and on the Agenda's little status window, I get
Connecting "Direct Serial"
Logging in "Direct Serial"
Once you are connected, you should be able to telnet to your agenda with telnet, logging in as user default. There appears to be no password.

19 Sep: If you replace /dev/ircomm0 with /dev/ttyS0 (or appropriate serial port with Agenda cable attached) in /etc/ppp/peers/vr3, and select "Direct Serial" in the Agenda's Network->Direct Serial->Device menu, then you can make a (faster, natch) ppp connection over the cable.

Installing software

Obviously, part of the joy of a free-OS PDA is getting software from all over and installing it. Once you have a serial connection up and running, things are pretty simple on this front. I'll assume you have pppd configured and running, and that your desktop's /etc/hosts file contains a line mapping the hostname "agenda" to whatever IP address you are assigning it in the ppp configuration (in my case, it's

Get some software. I used the flotski game, which you can find at the agenda software repository. When you unpack the tarball, you get three files:, flotski.snow and flotski.xpm. I don't know what the former is, perhaps a build for some earlier (non-snow) library roots, but flotski.snow is the binary and flotski.xpm is the image for Launch Pad (note 18.2.2002: according to William Kendrick, it's a prebuilt binary for i386, ie your desktop machine). Thanks Bill!)

To copy the files onto the Agenda, issue the desktop command
rsync flotski.snow flotski.xpm default@agenda::default

To move the files into place, either give the following commands on the Agenda in a terminal window, or telnet into the Agenda and give them.
mkdir bin
mkdir icons
mv flotski.snow bin
mv flotski.xpm icons

To add the file to the Launch Pad menus, in this case to the Games menu, do the following on the Agenda:
cd .wmx/Games
ln -s /home/default/bin/flotski.snow Flotski
this will put an entry into the Games menu called Flotski which runs your program
cd ..
echo "Games/Flotski;/home/default/icons/flotski.xpm" >> .icons

or you could add the line into .icons with vi.

Now restart Launch Pad. You can do this by rebooting (no! that's a Windows solution!) or by using the status bar to close Launch Pad and the menu on the "a" button to restart it. You will find that Flotski now shows up in the games menu.

Thanks are due to Andrej Cedilnik's "Hello World" page for most of these ideas. I used to link to his academic page (, but now he appears to have moved to Kitware.

Making the shell more usable

First trick is to change the default shell to bash, which is trivial. Either when using the terminal app., or when telnetted in, do a
and specify /bin/bash as the new shell. This will immediately affect telnet shells, and will affect the terminal app shell as of the next reboot (rxvt uses the SHELL environment variable to decide which shell to encapsulate, and rebooting seems to me the fastest way to get this re-read - although stopping and restarting launch pad might work).

Now you can edit /flash/home/default/.inputrc to contain the following lines
"\e[5~" previous-history
"\e[6~" next-history
"\e[c" accept-line
"\e[d" complete

and the PgUp button will function as up-arrow for recalling commands, PgDn as down-arrow, shift-left-button for TAB filename completion and shift-right-button for a RETURN key.

Thanks to William Kendrick's pointer to (link now defunct) for that suggestion.


By sheer random chance I just found that I can beam data from my Pilot to my Agenda. Beaming individual notes and individual contact records is known to work. I have just tried beaming my entire address book, and it seems to have choked the poor contact app, but the agenda itself is still working... let's wait and see...

Yes, I now have all my contacts on the vr3. Group membership wasn't preserved, but everything else seems to be fine.

Clock setting

When you make the ppp connection from the agenda to the desktop, the agenda attempts to contact TCP port 37 on the desktop. This is the "time server" service, and if you activate it on your desktop (either by editing /etc/inetd.conf or /etc/xinetd.d/time) the agenda will set its clock to your desktop every time you make a ppp connection. If your desktop's clock is kept correct with (eg) NTP, as mine is, this provides a useful correction to the agenda clock. I don't know why they use time server rather than (eg) ntpdate on the agenda, though. Maybe the client code is lighter?

Migrating Palm schedule data

I'm not having a lot of luck here. There appear to be no tools for converting from Palm schedule format to Agenda schedule format. gnome-pilot is supposedly able to sync a palm to a gnome-cal database, and agenda's vrsync is supposed to be able to sync the gnome-cal database to the agenda, but since I cannot get gnome-pilot to work, even on a cleanly installed RH71 development system, I can't test this. syncal at least lets me extract the palm database into an ical file, but I can't find any tools to cover the step to vcal, and thence to gnome-cal. KDE desktop has a tool which claims to be able to do this, but when I used it gnome-cal and quicksync both barfed on the resulting file. Any help gratefully appreciated.

09 Oct: Well, I've done it. And as is often the case with trips up mountains, I wish I hadn't. Thanks to Mads Villadsen's idea I tried using gnome-pilot to sync my pilot to gnomecal, then vrsync to sync my gnomecal to the agenda. gnome-pilot is a pig* to get working, and now I have done it (with enormous help from John Constable) my agenda takes about 10 seconds to start the scheduler app, 15 seconds to change day, and 45 seconds to do a "list" view. Clearly, schedule is not designed to have about three years of back appointments (about 1,800 appts) loaded into it. Pity.

* Bear in mind I hack IPSec, sendmail, CISCO IOS and switches, and INN for a living. I don't mind filthy config files. I mind invisible config files. Actually, that's not true; what I mind are apps that pretend you don't need to see the underlying config files, so they hide them and don't document them, but it turns out that you do.

Interestingly, gnomecal itself was unable to open the sync'ed appointment database - I let it run for 45 minutes on a 500MHz machine, after which time it had eaten all the CPU and about 200Mb of memory, so I killed it.

I have been in contact with Jens Wulf, the author of MuPO, and will hopefully be able to write some kind of perl script for converting from ical format (see notes on syncal above) to MuPO format, once he gives me doco on the format of the MuPO datafile. Then we'll see how MuPO does with all those back-data. At least if I'm writing my own tool, I can be selective about which appointments I need to convert.

Upshot: for the time being, I'm stuck with two PDAs, one for scheduling and one for everyhing else. Ho Hum.

New cramfs and ROMdisk

Follwing advice from the agenda-users' list, I found the latest kernel and root image (root 1.2.6, kernel-1.2.6-8.00) at and installed them on 31.1.2002.

Initial reports are very good. HWR is much improved by the shift to xmerlin. One application had to be upgraded (apassman), but the author had a version designed for 1.2.6 ready and waiting on his website, so a thousand thanks, Peter Knowles. All other applications just continued along fine, so two thousand thanks to all those authors.

Not having to recalibrate the screen on every boot is a big timesaver for me. Not because I need to frequently reboot (it never happens, save at battery changes), but because I reboot it all the time to show the boot screen to friends, that they may marvel at my fully-hackable PDA.

This upgrade taught me some things about how to customise my Agenda in a manner to minimise upgrade hassle. For example, I now cluster all my window manager additions in a single category, "Custom", instead of adding to Applications, System, etc. I'd never done a restore-defaults on a dataful agenda before, so I hadn't really thought through the process of restoring all my custom edits. Now, a quick grep on .icons and rsyncing a single directory under .wmx puts back all my added software.

I never did manage to solve the problem of getting my Palm calendar data onto my agenda (because I am a crap coder, not because Jens failed to provide documentation; his doco is precise and comprehensive), so I spent two and a half hours re-entering all my future appointments into MuPO by hand. I am now officially a one-PDA person again, and very, very happy with my agenda.

Back to Main Site