wnd's weblog

N810 and IPv6

14 Feb 2008 12:36:00 maemo, network

Nokia N810 can indeed run an IPv6 stack and the applications can (and do) take advante of it, too!

I’ve had my Nokia N810 for about a month now, and while I haven’t had too much time to play around with it, I have managed to get 5795 points in Pipepanic and complete all boards of built-in single-player Mahjongg around three minutes. Projects such as modifying GPE Calendar to use alarmd have been on hold.

IPv6 has always been something I’ve been quite enthusiastic about. I know really know why, but that’s just how things are. The bad thing is that OS2008 doesn’t come with IPv6 enabled. I wonder why. The whole deal seems rather trivial if you already have everything else set.

Getting IPv6 to work can be divided in three steps.

  1. Enabling IPv6 support in kernel.
  2. Configuring networking: setting up address and routes.
  3. Configuring applications to use IPv6.

Kernel

Making N810 an IPv6-enabled device obviously starts with having a kernel with IPv6 support. There is a guide on how to compile a kernel for Maemo 4.0 at maemo.org. I didn’t create a new Scratchbox target but used script-created sbox-CHINOOK_ARMEL instead.

After getting default configuration with make nokia_2420_defconfig I edited .config, set CONFIG_IPV6=y, and run make oldconfig. Apart from mobile IPv6 (CONFIG_IPV6_MIP6) I compiled other IPv6-related items as modules, even though I never copied the modules in place. That will have to wait. make oldconfig also asked about crypto features; I mostly used the default values. Once make was done with the configuration, I compiled the kernel and flashed the device with new kernel. As far as I can tell, everything went smoothly this far.

Configuring networking

At first I was a little worried since ifconfig didn’t list any IPv6 addresses, not even link-local. I compiled ip from Debian’s iproute package, copied it to the device just to find out the device had already received an autoconfigured address and route. So far so good. If this step would fail, ip could be used to configure the network.

If you don’t have native IPv6 connectivity, SixXS can probably help you with that. I’m sure aiccu compiles for Maemo.

Application support

Built-in browser in OS2008 is fully IPv6 capable, but DNS-lookups for AAAA-records is disabled by default. This can be changed easily by entering about:config and setting network.dns.disableIPv6 to false. That’s all.

Then what?

The next thing would be to create a new initfs with additional modules for IPv6 and crypto, and to compile busybox with IPv6. If you want/need ping6 for testing, you can use iputils sources from your local Debian mirror.

I don’t know about IPv6 support of other application that come with OS2008, but then again I don’t really use them. I’ve surely had enough with the built-in E-mail client… Personally I’m already quite happy to see dancing kame at http://www.kame.net/. :-)