‘Way back in March I read about the Always Innovating TouchBook. It’s an ARM-based tablet computer with a dockable keyboard/base, running a Linux-based OS. It seemed pretty cool, and I decided to pre-order one. Over the intervening months in between projects here at Symas I looked in from time to time to see what the delivery schedule was shaping up like. A couple weeks ago I got an email announcing that my order had been shipped. It arrived last week, and I spent that weekend tinkering with it to see what it could do.
I had quite a few gripes with it out of the box, but they were relatively trivial. (The keyboard was loose and I couldn’t keep it together, the magnets were stuck together and I couldn’t get them apart … shipping issues, sigh. After removing the screws from the base unit I was able to tighten up the keyboard, and judicious use of a hammer got the magnets apart.) The biggest problem though was that the beta OS it came with didn’t support WPA on its wifi device.
[ You've probably already seen pictures and videos of the TouchBook at other sites, but for those interested I posted a few of my own here. ]
After waiting the requisite 9 hours for the initial battery charge, I spent most of a Saturday and all of a Sunday playing with the TouchBook. The first thing I did was try to find the source code for the device driver being used for this wifi device. (It’s a Ralink RT3070 USB interface, with 802.11b/g/n support.) The latest info at www.linuxwireless.org implied that this dongle was supported by the rt2800usb driver in the mainline Linux kernel, so I set to downloading that on another machine and transferring files over to the TouchBook by way of a USB flash drive.
The TouchBook OS is built in a cross-compiler environment hosted on some other machine. But the OS image includes the gcc compiler, so rather than chase down all the files I needed to setup the cross environment, I just copied the kernel source to the TouchBook and compiled it there. Several hours later, I found that I had a kernel that didn’t boot on the machine, oh well. I also made a request for AI’s kernel build tree… (You may be asking yourself – why do you need to rebuild an entire kernel, just to deal with a wifi device driver? Well – while most kernels these days are built with only a small set of statically linked drivers and the rest dynamically loaded, the AI kernel had the relevant wifi drivers statically linked, so you couldn’t just replace them with newly built modules. And you still needed to have at least the right set of kernel header files to be able to build the modules.)
The following day the AI folks published their kernel build files on their wiki, and things got a lot easier. I set up the cross compiler, downloaded their build recipes, and built myself a working kernel in short order. I then started rebuilding the wifi drivers with the latest available code. At about the same time, AI posted a Call For Help on their wiki, including a request for help with their wifi code. Fancy that…
After many rebuilds and false starts, I got WPA working on my home network, and was finally online with the TouchBook. I posted my findings on their forums and also in their bug tracker, also becoming their first outside code contributor in the process. I then added WPA support to their GUI as well, thus completing the task. All this because I refused to walk down to the local Starbucks to use their open wifi network… (By the way, this is WPA-Enterprise, using AES and X.509 certificates. Not the namby-pamby TKIP stuff that can be cracked in under a minute.)
This story may look like just a diversion, and indeed it served as that. I haven’t really had such a fun system to work on in years; it reminded me of my days hacking on HP41 calculators, Ataris, Xybernaut wearable PCs, and other such small systems. But it also demonstrates a point that underscores all of our work here at Symas: Open Source is the best and fastest way forward. You might be stuck with a problem that’s beyond your time and resources to solve right away, but there’s probably someone else out there in the world who can help you, if you only give them the background to get started. And all it costs you is to give credit in the end… (And oh yes, we’re The LDAP Guys today, but we started out programming much smaller computers when we were just fledglings…)
By the way, this little diversion didn’t only serve as a weekend’s entertainment – while switching back and forth from my laptop to my TouchBook, I became acutely aware of the lack of roaming profile support in the current browser offerings. It’s a bit of a shame that Mozilla’s flagship browser Firefox has dumped their support for LDAP profiles, since they (or rather Netscape) were the original proponents of LDAP. Not having access to my bookmarks, browser history, contact lists, and passwords as I switched back and forth was quite inconvenient. These days, with the increasing popularity of netbooks, and the reality that they can only serve as adjuncts to, not replacements for, full function computers, it’s even more essential to have good LDAP support on the desktop. And now that this need is fresh on our minds, we will be moving forward to address this as well.

Netscape’s LDAP profiles where great, and I agree it’s a damn shame Mozilla dropped those. I’ve never understood why, as the code was there.
If you do put them back, tackle Webkit as well, will you?
Good idea, definitely. I’ve recently discovered the Midori browser, based on WebKit – it’s much faster than Mozilla and uses significantly less RAM. It could easily become my new favorite…