Woo! I’ve been fiddling with my Nokia N770 all evening. I’ve managed to build a custom kernel (2.6.25) for it using openembedded, and get it to boot it. Of course, it being a keyboardless and ethernetless internet tablet means that it just sits there 🙂
Enter the magic of the wonderful CDC-Ether protocol! This allows a USB gadget (N770) to communicate with a USB host (my laptop) and run an ethernet/IP/TCP layer over the USB bus. So I’ve setup the N770’s kernel to mount its root device over NFS, built in the necessary CDC modules, performed the sacred dance, and it now loads its root filing system from my laptop, booting into a basic command line system running SSHD.
So, I now have an N770 development platform. Lets start the fun. First of all, there’s some essential binary cruft from Nokia floating about; this is consists of:
- BME – controls the battery charging. A bit scary to take to bits as there is quite a bit of code, and if you get it wrong, the battery explodes 🙂
- CAL – Configuration storage area on the flash. Structure is not defined.
- DSME – a sort of daemon launcher that mediates access to the CAL.
- wlan-cal – Userspace software which sets regulatory parameters for the WLAN chip.
- umac.ko – a kernel module which implements a WIFI stack.
- BME – I’m just going to isolate in a chroot for the moment.
- CAL – I’ve already determined the structure and have written a replacement library.
- DSME – no longer necessary due to CAL work.
- wlan-cal – completed my analysis, developed replacement code, but untested so far.
umac.ko is the nastiest one as it would be very complex and large. However, I found the stlc45xx project which reimplements the WIFI driver using linux’s own mac80211 WIFI stack, thus allowing the problem to be sidestepped. The only issue is that stlc45xx only supports N800+ tablets, but I aim to remedy this (hence the push for a development system).