Tethering the Milestone

Last year, just before leaving for FOSDEM, I replaced the Nokia E75 I broke with a Motorola Milestone running Android 2. I was pretty much sastisfied with it but for one problem: tethering didn’t work. Sure there has been a few methods to make it share the connection via WiFi as an hotspot (but I have sincere doubts about the sanity of such a choice), and at least one program that was designed to share the connection as a Bluetooth Dial-Up Network service without requiring root access, but even that one only worked with OS X and Windows.

To qualify the statement, the application in question is PDAnet which seems to be now entirely free outside of North America. The first problem with this application is that the USB tethering requires special software available only for Windows and OS X (and that doesn’t work for me, you’ll soon understand why). On the other hand, it does support providing a standard Bluetooth DUN service, even without a rooted phone, but when GNOME-Bluetooth/NetworkManager enquire the phone to see what it can do, it gets stuck until everything goes into timeout, probably some AT command is not properly implemented.

With all this considered, I was pretty much disappointed: my Dell laptop is now working quite well, but when I’m somewhere where I lack an accessible connection, I’m stuck. How do I solve that? I mused my disappointed on Identica and Twitter, and even though Alex (wired) and Nirbheek prodded me in the right direction, what appeared like the complete solution was given me by Mike (FireBurn): move to Froyo, that is supposed to allow tethering natively.

Now, Motorola seem to not care about providing 2.2 firmware for the Milestone, at least for the Italian market, which means I cannot simply upgrade to Froyo. The other option is the usual aftermarket one: CyanogenMod. Unfortunately CyanogenMod developers don’t support the Milestone, just its half-brother Droid (they are less similar than one would expect internally, as it seems). Thankfully FireBurn pointed me at an ongoing CyanogenMod 6 port on the Milestone that should solve the problem for me, giving both a rooted phone and an updated one.

Installing the port has been less straightforward than I’d have liked, and I was really worried at some point I bricked the baseband altogether (I didn’t, you just have to apply the baseband update linked on the same page), as I had to reflash the whole phone with a pre-2.1 system just to be able to run unsigned updates. But I have to say I’m pretty happy with the new system, even though there is at least one problem with the battery charge display (it says “charged” way too soon).

Unfortunately, tethering still doesn’t work with this firmware: the bluetooth option does not appear anyway at all, and the USB one… well, it simply doesn’t work; it seems to be a limitation of the Motorola base firmware, which makes it impossible to provide new options over the USB interface. And this cannot be worked around because the Milestone comes with a pretty sturdy closed bootloader. The CyanogenMod port shows that there is an application that can solve the issue, but it does so by providing network access with the same interface used by Motorola’s drivers — drivers that are, as you guess, available for Windows, but not included in the Linux kernel.

Now to be honest there are drivers’ package for Ubuntu, and they could probably be made to work with Gentoo, but I really don’t want to go that route at this point.

Luckily, an alternative approach is available in the Android Market: tetherBlu an application that only works on rooted phones, and provides Bluetooth PAN (Personal Area Network) access. It is a closed, proprietary and commercial application, but it has an acceptable price range (about €5), and works quite fine here. For whatever reason, though, I’m unable to start up the connection through NetworkManager, so following Alex’s suggestion I’m using BlueMan to connect it; works quite well.

For those wondering why I’m not using the WiFi hotspot that is so common nowadays, and easy to setup, I simply have bad feelings about WiFi in general. Not the kind of feelings of people wanting to ban them, but rathert he fact that they simply are too much of an interference to me and others. I guess most people reading me here have seen the trouble they caused at Apple’s keynote last year… I don’t blame Apple on that débâcle, but rather the need to project such wide networks just to connect from a your lap to your pocket. It says a lot if we have the technology (Bluetooth) but it was made so stupidly broken that we can’t rely on it.

And most importantly, Bluetooth uses much less battery than WiFi!