Tollef Fog Heen's blog

tfheen Mon, 25 Jan 2010 - How free is the N900?

Lucas asks about how free the N900 is, whether he can download and recompile and reflash. I'll try to answer some of those questions.

No, you can't download all the source. Part of it is just not open. I am not privy to Nokia's decisions on why or why not to open up, but it seems like the user interface bits are only partially open. Hildon itself is open so you can poke at widgets and see how those work. The address book is not open. The telepathy component that talks to the cellular modem is not open.

As for having to accept EULAs, I honestly don't remember accepting one of those, but I'm not going to say there are none. There's at least one which is every time you install a package where you have to check a box saying "Yes, I know this package is third party and will not sue Nokia if it causes my house to burn down, my wife to divorce me or causes somebody to steal the car". It's annoying, but I'm willing to live with it.

The contents of apt's sources.list is:

deb https://downloads.maemo.nokia.com/fremantle/ssu/apps/ ./ 
deb https://downloads.maemo.nokia.com/fremantle/ssu/mr0 ./ 
deb https://downloads.maemo.nokia.com/fremantle/ovi/ ./ 
deb http://repository.maemo.org/extras/ fremantle free non-free
deb http://repository.maemo.org/extras-devel/ fremantle free non-free

(technically, it comes from /etc/apt/sources.list.d/hildon-application-manager.list, not sources.list.)

I believe the built-in applications are generally not free, so rebuilding everything that is free will for instance leave you without any address book UI, the built-in map application or camera. Sadly, the X driver is also proprietary, so you won't be able to see anything either.

I don't think you can usefully install another free distro on the N900. You might be able to, at some point, assuming somebody goes to the effort.

The last question is "- Besides the non-free telephony stack, are there any other “antifeatures” I should be aware of?". The telephony stack is implemented around Telepathy, which is LGPL-ed free software. While it's correct that telepathy-ring (which talks to the cellular modem), the call UI and most of the address book are proprietary, the rest of Telepathy is free. There are SIP and XMPP connection managers that are free, and you can install more connection managers for MSN, IRC and so on.

Also, I think it's important to emphasise that the telephony stack does not contain any antifeatures. The closest thing you would be able to find is probably the restriction to one active and one held call at the same time, but as one of the developers said: "That's to prevent the UI from going mad".

While I like to tout the N900 as a free phone, it is in no way completely free. Large parts of it are free, and almost as importantly: most of the programming interfaces are free and at least somewhat documented, so if somebody wants to replace the built-in camera application with a free one, they can replace the DBus interface that the camera app provides. Ditto for maps applications, the address book and so on.

[18:03] | tech | How free is the N900?

tfheen Sun, 17 Jan 2010 - Moving SMS-es and contacts from iphone to N900

I've been using an iphone since late 2007 as my primary phone and so I've gotten quite a few contacts and SMS conversations stored on it. Now that Collabora has given me a nice and shiny N900, I wanted to move my contacts and conversations over, but this proved to be a bit more work than expected. Please note that the following procedure worked for me, I have tried to take reasonable steps to prevent anything breaking, but if something breaks, you get to keep both pieces. I am not responsible and this comes with absolutely no warranty. Take backups.

What you need

The address book conversion script takes the SQLite database structure and converts that into a VCF file. It should be completely safe to run multiple times (it only does SELECT from the different tables in the contacts database, and you have made backups, haven't you?).

If it dies with an "Unknown property", "Unknown label" or other error, you can poke it and see if you can work out what's wrong or drop me an email and I'll see if I can help you. Assuming it doesn't fall over, it will spit out a series of VCards, which you should store in a file, which you then to the N900 and open in the address book. Assuming you have less than 1000 contacts, they should now all be in your address book. If you have more, you need to split the file.

A couple of known limitations:

The procedure for exporting and importing SMS-es is a bit more involved. First, export the sms-es by running the perl script. It spits out a tab-separated file which you should copy to the N900 along with the smsimporter program from the smstools thread. Run ./smsimporter foo.csv and you should get all your SMS-es put into the conversation app. I ended up compiling my own smsimporter based on the 0.2.1 from the thread with the UUID patch too. Read the whole thread and it should be fairly clear.

[09:55] | tech | Moving SMS-es and contacts from iphone to N900

tfheen Tue, 15 Dec 2009 - N900 – first impressions

Collabora was kind enough to buy N900s for all its employees. Yay! I got mine on Friday and has been playing around with it quite a bit. It's very shiny and the user experience is a lot better than the N810. There are a few graphical glitches, it seems it's XDamage damaging a bit of a window and it's just not quick enough to repaint. Not a problem, and it has far fewer instances of just hanging for half a second which my iPhone has. That is, it hasn't had any of those yet.

The screen is good, but resistive. Takes a short while to get used to when you're used to capacative, but it's not a problem at all. The keyboard is good, but I need to map something as the compose key. Having US/UK key caps and using the Norwegian layout is a bit confusing. Not really the fault of the device though.

The web browser is generally quite good. The gestures take a bit of time to get used to, but they're not hard as such. Some of the default "applications" are implemented as just links to the web pages of services like Twitter, which is a bit silly as you don't even get a version that's optimised for the N900. They're not useless, but they are absolutely nowhere near a real application. Also, the "Store" (Ovi Store) application/web page says "coming soon", which is quite odd.

I'm not sure if I can change the selection of applications on the default application list, but modifying the desktop is easy. There seems to be few themes and background images available so far, at least in anything resembling official repositories. Hopefully this will improve over time.

So far, I haven't actually written any code for the N900. I have some applications I want to write, mostly widget-style apps like "when does the next bus home leave from a bus stop close to me and where is the bus stop", but also some other ones.

Battery life is not great. It almost did 48 hours today with a bit of use underway, and I did charge it before it ran completely out, but when I'm used to closer to a week, it's not that good. Camera seems good and is quite fast, I think it took less than five seconds from opening the camera shutter until I had taken a picture. Shutter delay is quite bad at about a third or half a second, but this is a mobile phone (or mobile computer, as Nokia likes to call it) and not a DSLR, so I'm quite happy with it.

As a phone, it seems fine so far. I can make calls and accept calls and there's no noticeable problems with it. It also functions as a modem/DUN over bluetooth, which is quite useful.

Build quality seems good, there's a good feeling when sliding the keyboard in and out, but only time will tell how good it actually is.

So far, I'm happy with it, it's a big step up from my previous UK phone (which is a Nokia E70; my iPhone is a 2G phone so I can't use it here with the provider I'm using). Hopefully I'll post more happy stories about it in the days to come.

[18:53] | tech | N900 – first impressions

tfheen Thu, 03 Dec 2009 - ekey happiness

In my last post about the ekey, I complained about two things: memory leak in the server and missing reconnects if the client was disconnected for any reason. I've meaning to blog about the follow up for while, but haven't had the time before now.

Quite quickly after my blog post, Simtec engineers got in touch on IRC and we worked together to find out what the memory leak problem was. They also put in the reconnect support I asked for. All this in less than a week, for a device which only cost £36.

To make things even better, they picked up some other small bug fixes/requests from me, such as making ekeyd-egd-linux just Suggest ekeyd and the latest release (1.1.1) seems to have fixed some more problems.

All in all, I'm very happy about it. To make things even better, Ian Molton (of Collabora) has been busy fixing up virtio_rng in the kernel and adding EGD support (including reconnection support) to qemu and thereby KVM. Hopefully all this hits the next stable releases and I can retire my egd-over-stunnel hack.

[13:38] | tech | ekey happiness

tfheen Thu, 05 Nov 2009 - Package workflow

As 3.0 format packages are now allowed into the archive, I am thinking about what I would like the workflow to look like and hoping one of them fits me.

For new upstream releases, I am imaginging something like:

  1. New upstream version is released.
  2. git fetch + merge into upstream branch.
  3. Import tarballs, preferably in their original format (bz2/gzip), using pristine-tar.
  4. Merge upstream to debian branch. Do necessary fixups and adjustments. At this point, the upstream..debian branch delta is what I want to apply to the upstream release. The reason I need to apply this delta is so I get all generated files into the package that's built and uploaded.
  5. The source package has two functions at this point: Be a starting point for further hacking; and be the source that buildds use to build the binary Debian packages.

    For the former, I need the git repository itself. It is increasingly my preferred form of modification and so I consider it part of the source.

    For the latter, it might be easiest just to ship the orig.tar.{gz,bz2} and the upstream..debian delta. This does require the upstream..debian delta not to change any generated files, which I think is a fair requirement.

I'm not actually sure which source format can give me this. I think maybe the 3.0 (git) format can, but I haven't played around with it enough to see. I also don't know if any tools actually support this workflow.

[08:31] | Debian | Package workflow

tfheen Mon, 02 Nov 2009 - Distributing entropy

Back at the Debian barbeque party at the end of August, I got myself an EntropyKey from the kind folks at Simtec. It has been working so well that I haven't really had a big need to blog about it. Plug it in and watch /proc/sys/kernel/random/entropy_avail never empty.

However, Collabora, where I am a sysadmin also got one. We are using a few virtual machines rather than physical machines as we want the security domains, but don't have any extreme performance needs. Like most VMs they have been starved from entropy. One problem presents itself: how do we get the entropy from the host system where the key is plugged in to the virtual machines?

Kindly enough the ekeyd package also includes ekeyd-egd-linux which speaks EGD, the TCP protocol the Entropy Gathering Daemon defined a long time ago. ekeyd itself can also output in the same protocol, so this should be easy enough, or so you would think.

Our VMs are all bridged together on the same network that is also exposed to the internet and the EGD protocol doesn't support any kind of encryption, so in order to be safe rather than sorry, I decided to encrypt the entropy. Some people think I'm mad for encrypting what is essentially random bits, but that's me for you.

So, I ended up setting up stunnel, telling ekeyd on the host to listen to localhost on a given port, and stunnel to forward connections to that port. On each VM, I set up stunnel to forward connections from a given port on localhost to the port physical machine where stunnel is listening. ekeyd-linux-egd is then told to connect to the port on localhost where stunnel is listening. After a bit of certificate fiddling and such, I can do:

# pv -rb < /dev/random > /dev/null  
17.5kB [4.39kB/s]

which is way, way better than what you will get without a hardware RNG. The hardware itself seems to be delivering about 32kbit/s of entropy.

My only gripes at this point is that the EGD implementation could use a little bit more work. It seems to leak memory in the EGD server implementation. Also, it would be very useful if the client would reconnect if it was disconnected for any reason. Even with those missing bits, I'm happy about the key so far.

[21:23] | tech | Distributing entropy

tfheen Fri, 21 Aug 2009 - The first days in Oxford

I landed at Heathrow on Monday morning after sleeping crappily the night before. Flight was uneventful, we had to go a couple of rounds in a holding pattern before we could land, but nothing else, really. Transfer to Oxford was painless, and finding the B&B was easy enough with my N810.

From there on, I set out to find a place to live for the next year and just look around. I had a couple of addresses, so I visited those and walked a fair bit more too. Finding a place to rent is quite hard when you have a dog, so I didn't manage to find anything the first day, which was somewhat disappointing. For dinner, I went to the local pub and ended up chatting a bit with some locals.

On Tuesday, my feet were sore from the walking, so I decided to rent a bicycle. Halfway to the store, I discovered I had forgotten to bring any money, so I had to go back. The good thing about this was I got to see even more of Oxford and also a nature preserve. Once I had the bike, getting around became a lot easier, and I got into downtown Oxford and picked up a UK sim for my phone. I tried to top it up online, but that didn't work because my VISA card isn't registered to a UK address. As I discovered more and more, lots of bootstrapping depends on having a UK address.

I also had two viewings, one which was out in the middle of nowhere, quite expensive and utterly run-down. The other ones was nicely located, somewhat worn (but they'll paint it over) and seemed quite good. I took some pictures and discussed it with Karianne, and we decided to go for that one. I still haven't gotten a yes or no answer on it, but that should happen soon, hopefully today. Everything ended up taking a bit more time than I intended, so I ended up going to to a small cafe which was excellent, then a beer at a pub, which was fairly crap.

Wednesday, I filled out the necessary forms to do background checks and all and had beer and food with a Debian developer and his lovely wife, before again biking home in the dark. Biking here has been surprisingly easy and I haven't been honked at once. Most cars, and particularly buses are careful to go around you rather than at you.

As I didn't have all the information needed on Wednesday, I got to make yet another trip to the agent on Thursday with more bits of information before lunch in a pub downtown then the bus to London to meet up with ilmari, mjg59, thom, daniels, robot101, pippin and robster. As expected, we had good fun and good beer. I slept over at ilmari's up in Camden and walked from there back to Marble Arch in the morning.

So far, I'm having good fun here in the UK, so I think this year will be an interesting and exciting one. I miss Karianne a fair amount, but we chat every day and phone sometimes too. It'll be good to see her again, even if it's not for another week and a half.

[12:14] | life | The first days in Oxford

tfheen Thu, 02 Jul 2009 - Airport WLAN woes

Dear whoever runs the Telefonica APs in both Rio de Janeiro and Sao Paulo airports: Your DNS servers are returning SERVFAIL and has been doing so for quite a while. This is not helpful, perhaps you should set up some monitoring of them?

[21:52] | tech | Airport WLAN woes

tfheen Thu, 02 Jul 2009 - Leaving Brazil

It doesn't feel like I have been here very long, but it's almost ten days to the hour now. It's been a fun, long week with lots of interesting people and chats about everything from culture through free software and language. My Portuguese is still crap, but I understand a bit more than I used to, so that bit is at least going in the right direction.

I'm really not looking forward to the plane trip from Sao Paulo to Frankfurt. Too long in a cramped plane. Oh well, it's going to work out, and if I am really luck, I will be upgraded.

For once, I haven't written a single post card while here. It gets a bit tiresome after a while when you travel much, so I skipped out this time. Maybe next time. And next time here in Brazil, I hope Karianne can come. I think she would be happy here.

[16:07] | diary | Leaving Brazil

tfheen Tue, 30 Jun 2009 - 2000 days

It's now been 2000 days since I wrote my first blog post. Wow. That also means Karianne and I have been together for about the same time. Time sure flies when you are having a good time.

Right now, I am in Brazil again, visiting Globo.com. On my trip here, I first went to Porto Alegre, for FISL. There, unsurprisingly, I met a bunch of people I already know, like Bdale Garbee, Elizabeth Garbee, Gustavo Noronha, Knut Yrvin, Otavio Salvador and a bunch more. I also met some people I had no idea would be there, like Dan Bernstein, who was presenting his work on DNSCurve.

DNSCurve is a quite interesting approach to DNS security. It uses elliptic curve crypto, which is faster than the more traditional RSA based public key encryption. It is a bit of a shame it probably won't ever make it through the IETF process. The reason is it abuses the name field of the name server to encode a public key.

Other interesting people I met was Jacob Applebaum (whose talk I fell asleep in, since I had been up for far too long the night before, my apologies) and a lot of the Globo.com crowd.

FISL isn't just a big free software event, it's turning into a big event in general. The Brazilian president was there, big banks (Caixa and Banco do Brasil) and media companies (Globo) are exhibiting and it looks like free software is becoming mainstream. Yay.

[02:24] | diary | 2000 days

Tollef Fog Heen <tfheen@err.no>