Skip to content

n800 MMC 4/SDHC enabled kernel

Alright then. As promised earlier, I’ve got a pre-built replacement kernel for the n800 which adds support for MMC 4 and SDHC cards. I’ve been using this kernel for the last week, but I needed to find some time to make sure I’d included a self-consistent set of changes. My main concern was all the MMC/SD changes that went in between 2.6.18 and 2.6.19, but it turns out that Nokia have already backported this set into their kernel.

So, without further ado: go here to download the kernel and/or the patches to the Nokia source.

Building your own kernel is well documented at, so if you want to combine these patches with some other kernel tweaks, it’s easy to do so.

As mentioned before, some people have been having random reboot problems when just using the sdhc patch against the original Nokia source. I believe that this is because they are missing bug fixes that are included in my roll-up patch sets. I have not observed any reboots, so I’m pretty confident that that was the source of the problem.

If you try the patches out, do let me know what your experience is – the more testing and feedback we get, the sooner Nokia will be able to roll these into their official kernel.

{ 20 } Comments

  1. Richard from France | 11th February 2007 at 03:09 | Permalink

    I was waking up when I posted my previous comment without realizing that this patch was for a Nokia kernel (of which I know nothing about anyway). You can delete it! I hope there will be a patch for regular kernels. Bye!

  2. fanoush | 11th February 2007 at 05:59 | Permalink

    Thanks for the source.

    BTW while mime types for both source patches prevent browser from showing them directly, the kernel binary is text/plain and is showed directly (Firefox 1.5). I would prefer it the other way around :-)

  3. Philip Langdale | 11th February 2007 at 10:03 | Permalink

    Richard, these patches are all backported from the mainline kernel. The first patch is in 2.6.20 and the next patch will be in 2.6.21.

    Fanoush, I’ve updated the mimetypes on the diff files but I had to rename the kernel to get the server to play along :-)

  4. Richard from France | 12th February 2007 at 05:45 | Permalink

    Philip, I managed to apply the patch from Andrew Morton’s mm branch (git-mmc.patch dated 2007-02-06) on my Debian experimental 2.6.20 kernel source before you posted your answer. But now I guess my card reader cannot read SDHC cards anyway, and I will have to go back to the store where I bought last month, since even during the bios part of the boot, the mere presence of that card in the reader prevents the bios from letting the boot proceed, which is not true with the SD card that was included with my Canon S3.
    Anyway, thank you again for your patch, and I hope I can make it with a new card reader now.

  5. Philip Langdale | 12th February 2007 at 08:49 | Permalink

    Richard, what reader did you get? I assume you’re talking about a laptop because those are usually the only places you can find readers supported by the kernel on a PC. The BIOS has its own driver in it which will have no SDHC support. You must leave the card out of the reader until linux boots and then it will work.

  6. Richard from France | 12th February 2007 at 11:53 | Permalink

    Philip, I bought a USB 2.0 card reader for my desktop computer. It is a model sold under many brands. Through lsusb I get this: ID 058f:6362 Alcor Micro Corp.
    Google tells me that the model number is AU6362.
    From this page:
    I see that many models from this brand cannot read SDHC cards, although a few can. I lost at the Alcor lottery!

  7. Bill thompson | 12th February 2007 at 18:20 | Permalink

    I’m a couple of months away from purchasing a N800 (during a trip to the States.) I’ve seen comments of buying the fastest SDHC cards one can afford. What are the makes and models of the fastest 8-gig SDHC cards. Googing has not been a help.


  8. Philip Langdale | 12th February 2007 at 20:09 | Permalink

    Richard, USB readers go through the USB subsystem and have baked in firmware – no amount of kernel patching will get them to support something they don’t support in their firmware. So, if your controller doesn’t grok SDHC (and I believe you when you say it doesn’t), then my patches will not help you.

    Bill, there aren’t too many 8gb cards out there. If you go to techbargins you can find a class 2 transcend card going for around US$70. It’s nothing too fancy but it’ll work. I don’t think there are any class 6 8gb cards out yet, but it’s fairly fast moving.

  9. Richard from France | 14th February 2007 at 00:17 | Permalink

    Success! I got my money back for the reader equipped with a chip from 2 years ago, bought a new one (with an Alcor AU6331 chip; version 2.00 it seems) and…it did not work at first! I plugged it into the USB hub at the back of my keyboard but nothing happened. dmesg told me that this USB key/card reader could not draw enough current from my keyboard, so I plugged it into the back of my computer, and it worked immediately! Anyway, I was optimistic because when I booted my computer, this new reader with an SDHC card inside did not block the boot.
    Now I hope your patch will be successful too, and make it into kernel 2.6.21. It deserves it!

  10. Luis Villa | 28th February 2007 at 05:11 | Permalink

    Dumb question: with this kernel, can I use two 8GB cards and get 16GB total? I assume yes, but would hate to blow money on the cards only to find out later that is wrong :)

  11. Philip Langdale | 28th February 2007 at 07:56 | Permalink

    That’s the theory. There’s no reason why it shouldn’t work, modulo bugs. :-)

  12. rattis | 1st March 2007 at 19:57 | Permalink

    Just flashed the .bin file. Sees both the cards, and is making the virtual memory on the internal card now. Do I still need the patches, wasn’t sure about that.

    Thank you for the work.

  13. Philip Langdale | 1st March 2007 at 21:16 | Permalink

    You only need the patches if you’re going to build your own kernel. The binary I provided was built with those patches applied.

  14. Anonymous | 4th March 2007 at 17:21 | Permalink

    What would be great is a way to create a unified filesystem across both cards, kind of like RAID-1 disk spanning, then 2x 8GB cards could be used to present a single 16GB filesystem :)

  15. Philip Langdale | 4th March 2007 at 17:47 | Permalink

    You can do it in principle with a rebuilt kernel with lvm support. In practice, it’ll be a real hassle as you’ll have to explicitly unmount the filesystem when removing cards. Don’t forget we’ll see 16GB and 32GB cards in the next year or so. :-)

  16. Anonymous | 4th March 2007 at 20:20 | Permalink

    With 2x 8GB cards in the device I wouldn’t really be unmounting cards that often. :)

  17. Scott | 6th March 2007 at 22:24 | Permalink

    I am a newbie. Can someone just post a kernel with the patches already applied?

  18. Philip Langdale | 6th March 2007 at 22:25 | Permalink

    yeah… follow the link I posted and download that kernel.

  19. matt | 22nd April 2007 at 22:28 | Permalink

    Will nokia eventually release these in a official update? If so, I would rather wait. If i flash this pathced kernel, will I lose my settings or something like that? Or is the kernel able to be replaced without changing anything else (like installed apps or settings).

  20. Philip Langdale | 23rd April 2007 at 06:59 | Permalink

    I hope they will, but I don’t know when that will happen. As for flashing this kernel – no you will not lose any of your settings; it’s pretty painless.

{ 1 } Trackback

  1. [...] my last post with my updated n800 kernel, I’ve spent some time looking at a troublesome MMC card – [...]