Skip to content

Missing MMC/SD features in the latest n800 kernel

As promised last weekend, here are the results of my investigations into the latest kernel in the 2007.26-8 kernel. As I previously observed, the transfer speed is capped at 24MHz even though the device is capable of operating at 48MHz. This cuts the maximum transfer rate of high-speed SD and MMC cards. Apparently this was done for stability reasons, but I never encountered any problems with my patched kernels.

In addition, after some tests and a careful read of the diff, I’ve discovered that they have deliberately removed 4-bit MMC support. I know this is deliberate because they’ve included the high-speed MMC changes that went in to the mainline kernel at the same time. So, if you’ve got an MMCplus or MMCmobile card, this is doubly annoying as your card is now running at 1-bit 24MHz instead of 4-bit 48MHz. This translates to a 3MB/s transfer rate, instead of 13MB/s – that’s quite a bit. I don’t know the reasoning behind this change but I do know I did not observe any problems previously and never received any reports of problems. Perhaps someone (Daniel?) can shed some light on this.

On the bright side, they’ve taken the trouble to back-port the MMC-HC support (This is the MMC equivalent of SDHC) from the latest mainline kernel. The only catch is that these cards are impossible to find. Pierre was only able to test his MMC-HC change because Nokia provided him with a pre-production card they managed to wrangle out of some manufacturer (probably Samsung). I don’t know what the problem is, but it seems MMC is really struggling to maintain relevance and problems like this don’t help. I have somewhat mixed feelings about it because the MMC standard is, at least notionally, a public and freely implementable one – they just charge to get a copy of the spec. On the other hand, while the full SD spec is still locked up behind a crazy NDA, they have published very useful simplified specs which has made it easier to implement SD features than MMC ones. Ah well.

Finally, there have been multiple reports of the new kernel b0rking up cards and causing other kinds of problems (see my previous post‘s comments for links and details). I don’t know why this is, and I haven’t personally observed any problems, so I can’t offer any suggestions or solutions at this time.

Anyway, the punchline of all of this is that I definitely have good reasons to build a custom kernel to restore 48Mhz and 4-bit MMC support. I’ll be trying to work on that this week, but my personal life is pretty hectic right now, so I do rather doubt it will be done that soon, but I’ll certainly let you all know when it is.

{ 4 } Comments

  1. Quim | 15th July 2007 at 22:39 | Permalink

    Thanks for all this work. It would be good to have your maemo related posts organized with an own tag/categry and then aggregated to planet.maemo.org :)

  2. daniels | 16th July 2007 at 05:33 | Permalink

    Can you please give me a narrowed-down diff to check out? MMC/SD is not my forté. :)

  3. Philip Langdale | 16th July 2007 at 06:36 | Permalink

    Daniel,

    I’ll certainly put together that diff when I get a chance. Thanks for investigating.

  4. Michael | 17th July 2007 at 13:18 | Permalink

    Philip, I just want to add that this “new” problem with SD/SDHC cards also occured with your old sdhc-kernel for v3.2007.
    I was one of those that already lost a SDHC card with this old sdhc-kernel. But I didn’t realize that the software/hardware of the N800 was responsible for this, because the other card in the internal slot made no problems. My replacement card arrived after the new firmware was released and same problem occured again in external slot. I think that some people bought their SDHC card because of the official SDHC support and never tested the v3.2007 with patched kernel.
    The first 2007 release (v2.2007) already made problems (input/output errors) with some SD cards.
    But I think that this problem has gone worse with new firmware. I am not sure if this is a kernel-only problem.

    I hope that nokia will find the origin of this problem!

Post a Comment

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