A premium extraction

I suppose I was lucky to genuinely forget about having my third molars – Wisdom Teeth – removed tomorrow morning. As a result, I had a premium weekend full of fun and free from worry. I saw Everything Is Illumated on Saturday, and may be inserting the word ‘premium’ in to conversation as an in-joke. I’ve already written ‘Simples’ in a work email and affixed a Ceiling Cat to the kitchen ceiling.

With any luck, the extraction will be uneventful, and I’ll be a little sore but much happier. Maybe I’ll be able to take my newly extracted teeth with me, clean them up and take photos of them as if nobody’s even had an extraction before…

Openfire 3.6.4 on Ubuntu 10.04LTS

After installing Ubuntu Server 10.04LTS on to one of my VMs, I found I couldn’t install Openfire due to a missing dependency on sun-java6-jre. The Sun JRE has been removed from Ubuntu 10.04LTS, and its replacement, openjdk-6-jre isn’t quite up to scratch.

As reported elsewhere, here’s how to install sun-java6-jre:

  • Modify /etc/apt/sources.list and add deb http://archive.canonical.com/ lucid partner
  • Update the package database by running apt-get update
  • Install the Java runtime environment using apt-get install sun-java6-jre


Hero to Nexus One

Despite having my HTC Hero for just shy of nine months, I’ve gone and bought a Nexus One.

The primary driver behind jettisoning what is a perfectly usable phone was HTC’s apparent lethargy to release any updates in a timely manner. Secondary to this was the fact that I’ve had what is best described as a rather busy week at work, and I needed to treat myself.

Less than 72 hours after clicking ‘Order’ and telling my credit card company that, yes, this is a valid transaction and, no, there isn’t anything else they can help me with, I had a delivery from DHL sitting on my desk at work. Without ceremony (and certainly without taking a video of The Unboxing complete with a trying-to-be-unexcited voiceover), I transferred my SIM from my Hero and set to work charging the battery.

It’s two and a bit days on now, and thanks to the Interblogs, I have Android 2.2, known as Froyo to those who prefer cuddly names to cold numbers on the phone.

Am I impressed? Yes, but not to the level at which I’d stand outside and preach about it. Is the raw Android interface better than SenseUI? No, but I’d rather not wait six months and lag behind everyone else when it comes to Android. SenseUI doesn’t make Android usable (because it is already), it just adds some polish and sparkle that I’d rather jettison to keep up with the Joneses.

It’s a mini-revolution – where Nokia’s S60 is somewhere in the dark ages compared to Apple’s iPhone. I don’t like six months of speculation and re-blogging of articles, hearsay which may or may not have come from HTC, ‘hacked’ ROMs that don’t fully work, just to be part of something I perceive as important.

Anyone want an HTC Hero? One careful owner, update in the pipeline…?

ZTE MF636 update

Despite getting home at 6am this morning after a night of clubbing, I’ve had a productive day hacking around with the troublesome modem.

I’ve produced a patch against 2.6.34-rc6 which blacklists the MF636 such that option_send_setup doesn’t send a the RTS and DTR states to the first three serial ports, ttyUSB[0-2].

Examining the contents of the Windows INF files in the files on the ZeroCD device, I’ve found the following nuggets:

  • Interface 00 is a USB Diagnostic interface, which is probably why it doesn’t respond to AT commands
  • Interface 01 is an NMEA interface, and interface 02 is an extended NMEA interface – I don’t know what this means
  • Interface 03 is a Mass Storage device which appears when you first plug in the device
  • Interface 04 is the modem itself

I’ve also made a breakthrough in the initialization string – this must be AT&F&D2&C1, which:

  • &F: Revert to factory defaults
  • &D2: Set the DTR behaviour to terminate the call gracefully upon a DTR on/off tranisition
  • &C1: Sets the Received Line Signal Detect (RLSD – is this DCD/Carrier Detect?) on until all data is received from the remote modem
  • S0=0: Do not automatically answer an incoming call

Another little gem I found – the moment you dial ATD*99#, you cannot terminate the connection unless you send a PPP LCP TermReq. You can’t send the usual escape sequence +++, then ATH, nor can you cause the modem to disconnect by sending ATH via another port. It appears it must be done via PPP. This seems a bit brain-damaged.

Finally, the best bit – if you don’t set the initialization string correctly, the modem will crash and disconnect itself from the USB bus. Very handy, and painfully difficult to debug. NetworkManager doesn’t send the correct initialization string, hence the modem crashes.

I’m hating this device less the more I learn about it. I could still do with something that ‘just works’ without all this faff – but I get a lovely warm feeling knowing I’m helping out other people who have had the MF636 imposed on them.

Mass-market USB modems and the ZTE MF636

Way back when, I had a Huawei E220. This was moderately usable under Linux, more so after a firmware upgrade and usb_modeswitch. A great little device, installation of a long USB cable meant I could put the dongle where the signal was best. I still have it, although it’s likely locked to Vodafone.

For reasons unknown, the company I worked for ceased the contract on this and gave me a GlobeTrotter iCON 7.2 modem. Again, after some fiddling, success. The only problem was its shape – like a plastic ice lolly. It wiggled in whichever USB port I used it in, and I never really got on with it. However, it worked.

The iCON broke, and I now have a ZTE MF636. This is an aesthetically pleasing device, with one big flaw – it’s utter rubbishness under Linux.

I’ve spent a considerable amount of time battling these little gems:

  • ZeroCD support – great for Windows and Mac machines as your drivers are forced upon you. It can be turned off permanently with the AT+ZCDRUN=8 command (and turned on with AT+ZCDRUN=9), or ejecting the SCSI CD-ROM device.
  • option.ko support – of the four serial ports presented, ttyUSB3 (the final one) under Linux 2.6.32 is the only one accessible. I think I have a workaround.
  • modemmanager support – right now, I can’t dial out using NetworkManager. With wvdial, I can poke commands at ttyUSB3 and connect successfully, but that’s ugly in my eyes.
  • Random USB resetsreset high speed USB device using ehci_hcd and address 33 is not a welcome message, especially when I have to unplug and replug the USB device to get it to work again.

I’m not overly comfortable with delving down to the low level of these sorts of problems – but looking on the positive side, it’s a great learning experience. Yeah :)