For the past several months I have been commuting by train to Zurich and enjoy hacking on my laptop. For a while, I was using my iPhone to tether, but it was slow and unreliable, especially in the longer stretches between towns. So I got myself an MF60 Hotspot from Swisscom. It acts as a WIFI router, does several 3G/2G bands and auto-switches pretty quickly. The battery life is not great, I only get about 3-4 hours tops, but connected to the laptop via USB, it will keep going for a long time.
Managing it, however, is annoying. Sadly, the built-in web administrative interface is not a shining example of usability. It’s functional but klunky - you can do all that you would expect with an access point: manage the settings and view usage stats. That’s important since my account with Swisscom has a limit on monthly data, I needed to keep track of my usage. But it is a pain to use with the tiny links and non-sensical organization of the menu pages.
Another problem is that the network gets stuck sometimes (like after a long tunnel). This requires a reset, which means powering off/on (a 20-30 sec ordeal), or going through the previously-deemed crap admin interface.
$ sudo gem install mf60
More details are at the project Github page.