Skip to content

Obligatory n800 Post

So, after some effort, I managed to get my n800 ordered last week with my developer discount code (Thanks Nokia!) and it arrived today. It’s thinner than I expected it to be, but I’ve definitely been spoilt by the 770′s hard cover and I’m going to get the n800 cover accessory as soon as I find somewhere that will sell it to a US address. I’ve been playing with it over the weekend and it’s definitely slick – there are some nice usability improvements (like the way the window menu lets you close windows now) and the fully integrated bluetooth keyboard support is much appreciated.

As I discussed previously, the current n800 kernel doesn’t include my mmc4 or sdhc patches but I fully expected them to work once applied. Mark Lee has already confirmed that the SDHC patch works, so I built a kernel with the roll-up of changes that Pierre sent upstream for 2.6.20 (including mmc4) plus the sdhc patch. The patches applied cleanly except that I had to exclude the omap part of the roll-up (already in there) plus make one small fix up. Then, the very first thing I did after unpacking the n800 was flash the new kernel – yep, I didn’t even turn it on first :-)

It came up just fine and I popped my 4GB SDHC card inside at which point it was immediately recognised. Also, in contrast to some reports, the file manager reported the size of the card correctly. I then put my 2GB MMCmobile card from my 770 into the other slot and that worked fine too. I wasn’t able to get useful speed results due to caching (even using dd on the raw card device) but it seems to be faster than if it was only doing 1 bit transfers.

When I get some time later this week, I’m going to make a custom kernel available with the MMC and SD changes in it.

In other news, 2.6.20 is officially out and Pierre has pushed out his batch of changes for 2.6.21 including the SDHC support, so it will hit mainline at that time. I don’t expect Nokia to bump the kernel version, but I hope they take in these patches so that people don’t have to use custom kernels.

{ 8 } Comments

  1. Pedro | 5th February 2007 at 04:48 | Permalink

    Hi Philip,

    I’m very interested in the SDHC support in the kernel. I’ve been reading about it in the mamemo mail list and in ITT. Some people reported random restart of the device after using the patches. Did you experiment this thing with your kernel? if not, could you please mail me your kernel?



  2. fanoush | 6th February 2007 at 08:30 | Permalink

    Still don’t have my developer device (wrong country :-) . Looks like there won’t be any need to steal your patches once I finally get it ;-) Did you test also 50MHz SD mode or wider MMC data bus width? 1 bit transfer did ~6MB/s on N770, was the 2GB MMCmobile faster than that?

    Also when you publish your kernel, diff against nokia kernel source would be very appreciated. Thanks.

  3. Philip Langdale | 6th February 2007 at 08:36 | Permalink

    Pedro, I have not noticed these random reboots and Mark Lee said he got them without the patch. I believe they were not applying the full MMC subsystem updates and just trying to use the SDHC patch, which may have been the source of the different experience.

    I’ll be posting the updated kernel when I can get some time later this week.

    Fanoush, I don’t have any 50MHz SD cards so I can’t test that, but I do have wide-bus MMC cards. As I said, the problem is that I can’t get statistics for uncached operations. The MMC card seems consistently faster than the SDHC one which indicates that it’s not running in legacy mode but I don’t know what the real speeds are. 6MB/s is impossible for 1bit MMC – that’s a cached result as well.

  4. fanoush | 6th February 2007 at 09:21 | Permalink

    Well, it is on N770 doing dd if=/dev/mmcblk0 of=/dev/null bs=8192 count=20000 after inserting the card. You don’t have much RAM for cache in N770 anyway. And when reading much data next blocks will push the early read ones away so it should be safe to assume nothing is cached even when repeated.

    Nokia770-39:~# time dd if=/dev/mmcblk0 of=/dev/null bs=8192 count=20000
    20000 0 records in
    20000 0 records out
    real 0m 29.33s
    user 0m 0.07s
    sys 0m 4.47s

    160MB in 30 seconds, oh well OK, 5.3MB/s not 6.

    I guess reading >200MB on n800 should flush the cache too. And you can remove and reinsert the card which should flush device buffer cache.

  5. Philip Langdale | 6th February 2007 at 23:05 | Permalink

    Well, I did full dd reads of my cards and got the following numbers:

    2GB MMCmobile: 8.62MB/s
    4GB SDHC: 6.81MB/s

    I’d expect the MMCmobile to be faster based on my testings with my laptop. So, that suggests that 4bit is working fine, but I don’t think the controller is running at 48MHz for the MMCmobile, even though it could. I’ll do some testing with some debugging output to find out.

  6. fanoush | 7th February 2007 at 00:26 | Permalink

    I wonder whether there is some other bottleneck. kingston 2gb mmmobile does ~18MB/s in mmcmobile usb reader (this one . Even SD cards at 24Mhz/4bit should do better in theory (as well as mmcmobile @24MHz,4bit). OMAP2 mmc driver has maximum speed set to 48MHz in kernel source so it should be used. I’m afraid this may be some other limit. Let’s hope it is in software.

  7. Rich Bloor | 19th March 2007 at 02:51 | Permalink

    Thanks muchly for your work on this, I’m using a Trancend 8gb class 2 sdhc card in my n800. I’m suffering from frequent audio drop outs when playing back mp3′s from this card however, these happen on average every 30 seconds or so. Any ideas what could cause this? Any way for me to debug it? Cheers again, its very cool to have such large storage in the n800!

  8. Philip Langdale | 19th March 2007 at 07:19 | Permalink

    Rich, I’m afraid I don’t have any idea what could be causing that. You can look in the dmesg output for errors and you might want to run top and see if something’s using up all your CPU. You could also ask at InternetTabletTalk and see if anyone has any ideas.

Post a Comment

Your email is never published nor shared. Required fields are marked *