This Time Self-Hosted
dark mode light mode Search

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!

Comments 4
  1. Hey Diego, did you try this one?http://code.google.com/p/an…It says “Wifi” but it has an option to use bluetooth too and, indeed, I used it primarily via bluetooth.It requires a rooted phone, but guess what? It’s open source 🙂

  2. Did you have a look at the Modaco forum to see if there are alternative roms for your phone (or if this is a solved problem?).I run one of those Roms on for my phone (ZTE Blade) and in works better than the CyanogenMod. The Motorola Milestone sub-forum is here: http://android.modaco.com/c

  3. Unlike the normal laptop or netbook, smartphones have what are known as dumb batteries. The battery charging circuit is almost completely controlled by the kernel with the exception of some basic voltage based self protection circuitry.To reset the incorrect charge data you have to:* Delete the file the data is stored at* Run the phone till it dies or does not have enough battery power to boot completely anyway* Charge the battery completely/overnight while the phone is turned off* Reboot while plugged in.A quick Google search will tell you which file to remove and give more detailed instructions for your model of phone. This will have to be done every time you change kernels on the phone unless you charge the phone overnight while turned off before you install the new kernel, and may still have to be done even then if the new kernel reuses the older charge information instead of replacing it.I have had to do this about every time a new version of Cyanogen has come out for my Nexus One.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.