home of the madduck/ blog/
Symbian, IPv6, SIP: lack of testing, no QA, no surprise

Trying to put my new Nokia E71 to use, I was positively surprised to see that it has an IPv6 stack. Even though the integrated web browser does not care about it and insists on IPv4, it still made me happy to realise that Symbian (manufacturers of the OS) aren't totally missing the beat of time.

But when I tried to get the builtin SIP client to speak to my Asterisk PBX, I ran my head against a wall. It didn't take me long to find out why it wasn't working, though:

<--- SIP read from 192.168.14.62:5060 --->
INVITE sip:echo@sip.madduck.net SIP/2.0
Route: <sip:sip.madduck.net;lr>
Via: SIP/2.0/UDP [2001:41e0:ff12::xyy:zzff:feaa:bbcc]:5060;branch=[...]
From: <sip:e71@madduck.net>;tag=i4a43mn949hc7vu5633b
To: <sip:echo@sip.madduck.net>
Contact: <sip:e71@[2001:41e0:ff12::xyy:zzff:feaa:bbcc]>
[...]
User-Agent: E71-1 RM-346 110.07.127
[...]
o=Nokia-SIPUA 63396745194593125 63396745194593125 IN IP6 2001:41e0:[...]

This is Asterisk's debug dump of the SIP INVITE packet, which initiates a connection. You will note that it arrives via IPv4, since Asterisk does not speak IPv6 and thus doesn't listen on IPv6. You will also notice that the Nokia phone doesn't give a flying food, but puts its IPv6 address into the headers. That's like writing a letter to your grandmother and telling her to answer by e-mail.

You can choose between IPv4 and IPv6 for GPRS connections, but not for Wifi. There is also no way to turn off IPv6 altogether, at least none that I found.

This really makes me wonder about the development process at Symbian, which must exclude testing and QA, or else I could not explain how such braindeadness could make it into a published product. On the other hand, we are all well aware of the lack of quality in software products that come force-bundled with hardware, like phones or plain computers.

After Nokia acquired Symbian, they open-sourced the operating system (thanks, Penny, awesome girlfriend, for reminding me. Happy now? grin). After a bit of searching, I am pretty convinced that this was just marketing buzz, because I failed to find any information on how to obtain the code or how to put it onto the phone, six months later.

I am not sure how to move on. I can either return the phone (wouldn't be the first time I had to return a Nokia E series phone for lack of quality), switch from Asterisk to some IPv6-enabled VoIP software (like FreeSwitch, which has not been packaged for Debian yet, mostly because the FreeSwitch guys are acting up about the changes Debianisation would require), or find some hack around this limitation. Ah, the joys of being an early adopter…

NP: Neil Young: On the Beach

Update: Faidon Liambotis, who was also influential in my decision for the E71, found the problem: the phone's DNS cache. sip.madduck.net used to be a CNAME pointer to the machine running the asterisk server, wall.oerlikon.madduck.net, which also has an AAAA (IPv6) record. I thought about this myself and removed it, but the problem persisted. Faidon suggested to use the IP instead, which worked, and a reboot of the phone cleared the cache and allowed me to use the DNS name again, which is now a plain A record to the same host. As soon as DNS no longer advertises the IPv6 address, the phone's SIP stack no longer gets confused.