The curse of Maemo — closed source components

Three months ago I wrote post about situation of my Nokia 770 tablet. Today I looked how situation looks with non-Maemo systems.

Flashed recent Poky Linux build. Device booted into nice Sato desktop which I am familiar with. As it was expected — no WiFi support in base system. Why? Licensing problem.

Nokia tablets WiFi stack in implemented by:

  • firmware loaded to the chip at runtime (when interface is brought up)
  • closed source wi-fi stack in module umac.ko
  • open source glue layer cx3110x which forwards packets between firmware and umac.ko over SPI and implements support for linux wireless extensions API.

We also use 2.6.18 kernel from OS2007 instead of 2.6.16.27 from OS2006. With some hacking on “umac.ko” module from 2.6.16.27 + patching “cx3110x” driver I got module which loads on my device. But then other problem appeared — WPA Supplicant is unable to connect to WiFi interface due to lack of wireless extensions support. And Nokia implementation is closed source πŸ™

On IRC I got information that there is a patch which adds WE18 support into cx3110x driver. Fetched, applied but situation is the same:

[ 7206.999359] umac: module license 'Proprietary' taints kernel.
[ 7210.030334] CX3110x chip variant: STLC4370
[ 7210.319458] CX3110x: firmware version: 2.13.0.0.a.13.14
[ 7210.319580] Loaded CX3110x driver, version 0.8
root@nokia770:~# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
ioctl[SIOCSIWPMKSA]: No such device

and then reboot πŸ™

So it looks like my 770 will get Maemo OS2006 again and will end it’s life as console for simple games + music player. Too bad that it hard to make it work with other systems.

BTW: I wonder why Maemo.org forbids GoogleBot… It is really hard to find Maemo related things with Google πŸ™

UPDATE: Niels Breet (X-Fade on #maemo) pointed me to maemo webdevs discussion which clarify that GoogleBot index Maemo websites. My fault — sorry guys. It is hard to find current informations in wiki but there are plans to move to MediaWiki and reorganize content.

13 thoughts on “The curse of Maemo — closed source components”

  1. Marcin, lot of your posts are too pessimistic due to lack of information on your part and/or picking harder way when easier one may exist. Better research before blogging might improve situation πŸ˜‰

    I don’t have specific patch for 770/2.6.18/wpa_supplicant but guess it is solvable. BTW any reason why you need 2.6.18 on Poky? It is better to use same kernel for dualbooting with maemo. One can even enable framebuffer console and/or automatic screen update with stock kernel.

  2. Fanoush: documentation is a problem — finding usable and current informations on Maemo can be hard.

    Why we use 2.6.18 instead of 2.6.16.27? Good question. I asked developers which did switch and got simple answer: it was done to have a common kernel for N800 and 770 tablets.

    And Poky kernel has FB console enabled — on N810 I use OS2008 with Poky kernel (more filesystems enabled).

  3. Yes, but does Poky depend on any specific kernel feature? 2.6.18 is ancient version anyway so why not to use stock 2.6.16.27? Because otherwise you can omit kernel from Poky distributon altogether (so you don’t need to make the choice) and leave just rootfs. This allows people to keep their current kernels and dual/triple boot Poky/Debian/whatever with Maemo (via bootmenu). Framebuffer console or framebuffer automatic update itself is solvable without new kernel, see http://www.internettablettalk.com/forums/showthread.php?p=167845#post167845 for recent verification.

    Sadly we currently don’t have kexec so we are limited to one kernel. Once we have kexec it is not so critical but still multiple kernels add complexity both for people to manage them properly on the device and kexec would slow down boot procedure and make it more complex too.

    I guess the question about Poky kernel can be answered by experiment πŸ™‚ Will try to flash just the jffs2 to 770 next week and see.

    Sadly making WPA possible on 2.6.16.27 is not any easier, you just don’t need to fight with umac.ko. BTW in your experiments with cx3110x I don’t see wlan-cal call, you need to call it before wlan driver is ready (chroot /mnt/initfs wlan-cal)

    As for documentation – maemo.org, http://www.internettablettalk.com forum and mailing list http://www.gossamer-threads.com/lists/maemo/ is searchable.

  4. “I guess the question about Poky kernel can be answered by experiment πŸ™‚ Will try to flash just the jffs2 to 770 next week and see.”

    Tried with default 2.6.16 and it fails somehow when x-server starts. It somehow makes sense, omapfb is updated in 2.6.18 and screen update ioctl changed, if x-server uses new ioctl with x,y window coordinates it won’t work. Will try to backport this to 2.6.16 to see if it makes difference πŸ™‚

    BTW where are sources/patches/config for http://pokylinux.org/releases/pinky-3.1/zImage-2.6.18-osso40-pinky-3.1-nokia770.bin ? tried to browse poky svn http://svn.o-hand.com/repos/poky/trunk/ but got lost quickly. At least the first Nokia 2.6.18 source for N800 was incomplete for 770 build (omap1, dsp and 770 board sources missing/old)

  5. @fanoush: Richard Purdie reminded me why we moved to 2.6.18 kernel — we had to get rid of older X-Server which was in OS2006 as it was from non-modular times.

  6. @marcin: oh, I see. In that case backporting omapfb changes could make Poky working with 2.6.16 (at least for 3.1 which is perhaps already old πŸ™‚ But I wanted to do it anyway for other reasons.

  7. Hello, can you post a detailed intruction to get wlan working on a 770 with Poky? (I dont need WPA)

    Thanks.

Comments are closed.