Planet maemo: category "feed:1525c52c13056272dbc37acd33e2b2eb"

The Bluetooth DUN package has been well received, but was hardly a profound programming endeavour. So, I’ve been trying to find suitable inspiration for a more substantial project. This morning, someone made a comment on the Bluetooth DUN page that there’s no way to tell if the phone has a tethered data connection or not – and he’s right: there’s no visual feedback on the phone, unlike Nokia’s Symbian devices or, I imagine, many other phones in the world. With that as a motivation, I decided to try and write a status indicator for tethering.

Just in time for the new year, I’m pleased to be able to say that the Bluetooth DUN package is now in the Maemo Extras repository. This is the primary location for community packages that have been through a community QA process that tries to ensure the packages are safe for ‘normal’ users. If you don’t have the extras repository turned on, you can do so by following the instructions here.

Over the last couple of weeks, I’ve been working on packaging up my bluetooth dun script for easy consumption. It’s been through a few iterations and is now in the ‘extras-testing’ repository and should be ready to go into the main ‘extras’ repository once it has enough testing feedback.

The extras-testing repository is not intended for un-adventurous users, but if you’re interested in getting my package, it’s the place to go to. In the latest version, it will correct start the service when you install the package, and shut it down when you remove it. The actual upstart script hasn’t needed to change since I fixed the dependency issue.

And on an unrelated note, there’s now a way to reliably trigger the portrait mode ‘hack’ – if you want to try out portrait mode browsing, etc. You can find that here.

As I mentioned in a quick update to my old post; I got a report of DUN not auto starting reliably, if at all. I did some digging and the cause is that the /var/run/sdp socket created by bluetoothd and needed by sdptool is not present when bluetooth-dun runs.

I’ve now updated the script to wait until the socket appears before continuing. (And as upstart is asynchronous, only the DUN service is delayed by the wait).

Now, the mechanism I used for the wait is a crude ‘while-not-exist’ loop with a one second sleep. The dbus script does this so I felt it was morally acceptable. It’s crude and an inotifywait approach would be better but that utility isn’t installed by default. Finally, the delay should really be in the bluetoothd script so that it doesn’t signal readiness until it really is…

I’m rather behind the times, but I’ve now released a matching kernel for Diablo 5.2008.43 with the highspeed SD/MMC support. Make sure to update to 5.2008.43 before installing my kernel or the update will overwrite it.

I finally got some time to update my development tree to the new Diablo code and built a new kernel with my high-speed SD/MMC patch. Additionally, it will speed up access to the internal 2GB flash (eMMC) in the n810. For those with long memories, the Maemo bug which slows down card access when the CPU is idle is still present although there has been a little bit of activity on the Nokia side recently (They have an internal bug open for it now)

Wow, it’s been a long time since I’ve written anything, but I figure this is a good enough reason to do so. The SD specification has been available for quite a while now, but up until now, the MMC specification has had a $5000 price tag stuck to it. This has kept it out of most people’s hands, although Nokia were kind enough to buy a copy for Pierre. However, they have now made the latest version (4.3) available without charge. I believe this change of heart stems from the standardisation of eMMC through JEDEC (They still charge for their other specs). Despite the focus on eMMC, it is the full specification (minus the section on using MMC over SPI which they have declared obsolete; this isn’t a big deal as there’s enough documentation around explaining how MMC over SPI works).

What does this mean? Not that much in terms of Linux kernel support for MMC; Pierre already used his copy of the 4.2 spec to fix any problems and 4.3 doesn’t really add anything new that affects us. eMMC (Embedded MMC) is mostly just a new form-factor and doesn’t appear differently from a regular card. The one substantive new feature is the introduction of a special ‘boot partition’ which are accessed in a simplified way – presumably this was added to make it easy for a bootloader to load an OS off an eMMC. I don’t really see much demand emerging for this, so we have no immediate plans to support it (and good luck finding a card with a boot partition!) but if the need arose, we’d be able to do it.

So, nothing’s changed in practical terms, but it’s still helpful for us that the spec is now freely available; however, it probably won’t do much to help MMC against the SD juggernaut. Anyone seen a high capacity MMC card despite them being ‘available’ for over two years now? Thought so.

Well, if I was slow with the last release, at least I can do better with this one. There was a new kernel update in this release but my patches applied fine and the resulting image checks out on n800. As before, I have no idea how well the high speed mode interacts with the eMMC inside the n810 and I’m afraid I still have no idea when I’ll be able to check that out; I’m in the US - where we’re lucky enough to have to deal with a web store which doesn’t accept the maemo discount codes and their out of stock anyway. *sigh* It would be nice if someone from Nokia could comment on this mess.

As my regular readers will be aware, Nokia released a bug fix kernel for the N800 last week that fixes a data corruption bug in the SD/MMC subsystem. They just released the source code for this new kernel build, so I’ve been able to take a look at what’s in it - and despite the official description, there’s actually a lot of new SD/MMC backports in it. The most notable inclusions are two patches that I had in my previous custom kernel - one that adds MMCplus 4bit bus support and another that adds formalised support for high speed modes. This infrastructure patch is not terribly profound when you read the code, but it has the interesting side effect of doing a few more sanity checks which have the effect of introducing delays into the card initialisation sequence that accidentally help some flaky MMC cards to work reliably.

That leaves my patch set down to just two patches - one of which just adds some debug output, so it doesn’t really count. The one remaining patch is the one that enables 48MHz highspeed support. As I’ve mentioned before, the 48MHz mode is not supported by Nokia because they’ve observed problems with it and TI aren’t confident that it really works. So, this patch will never be accepted by Nokia, and I don’t blame them. Nevertheless, it works for me and many other people, so I’ll continue to offer patched kernels here.

Nokia have just released a new update of the N800 firmware with a fix for a MMC/SD corruption bug. This was discussed quite a bit in the comments to my last N800 post, so I know a lot of people are glad to see it sorted out. As soon as the new kernel source is released, I’ll check it out to see if any of the extra patches from my kernel have been incorporated. It’s definite that the 48MHz bus speed will not be in - Nokia have observed problems with it and TI (the chip manufacturer) don’t speak highly of it either. I’ll continue to offer it as it works fine or me and for others.