linux sysadmin technical

How to fix Huawei E620 USB 3G Modem in Ubuntu 9.10 Karmic Koala

I recently upgraded my laptop to Ubuntu 9.10 (Karmic Koala) and among a few other niggles (mostly related to intel video support, or lack thereof) it completely broke support for my Huawei 3G (E620) modem. Fortunately the fix is fairly straightforward: install a new kernel. I went with the latest (v2.6.32 release candidate available over here at kernel.ubuntu.org ) and the problem is solved.

If you want the gory details, check the thread over at bugs.launchpad.net. I’ll distil the useful bits below.

After the upgrade, my huawei 3G modem stopped being detected by NetworkManager. I’d see the fake ‘ZeroCD’ drive try to map itself and occasionally a gnome message box would be thrown up about a failed mount attempt, but no modem.

A look in the logs revealed /var/log/messages filling up with lines like this:

kernel: option 3-1:1.2: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
kernel: option 3-1:1.1: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
kernel: option 3-1:1.0: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2
kernel: option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
kernel: option 3-1:1.0: device disconnected
kernel: option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
kernel: option 3-1:1.1: device disconnected
kernel: option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
kernel: option 3-1:1.2: device disconnected

So the modem was being disconnected and reconnected at least a couple of times a second for some reason, and the storage device was not appearing at all.

I tried the usb_modeswitch tool which is supposed to jolt misbehaving HUAWEI (and other brand) devices out of their stupor with some undocumented SCSI/USB commands, but no success this time.

After a bit of googling, it turns out this is (was) a known bug in the way the more recent linux kernel handles the combination USB Modem/Storage device hardware (and was allowed to remain in a major release of Ubuntu which is a bit unfortunate as it seems these types of USB modems are pretty common).

There are a couple of fixes pending an official update: either install a patched version of the kernel, or temporarily disable the USB Storage kernel module which looks pretty easy and apparently worked for a few people:

# rmmod usb-storage

Untested by me: Your mileage may vary.  Be warned that even if this works, by unloading the usb-storage kernel module you will lose support for any USB based storage devices, so this is strictly a temporary workaround. I thought I’d try the more permanent and possibly dangerous (?) kernel solution first, which worked.

Steps to upgrade your kernel to a compatible version:

  1. Check your current version with the uname -a command. My post-9.10-Karmic upgrade version was: 2.6.31-14-generic #48-Ubuntu SMP  x86_64 GNU/Linux
  2. Go to http://kernel.ubuntu.com/~kernel-ppa/mainline/ and download the .deb files for the kernel headers (“all”) and the kernel for your architecture (“amd64” or “i386”). If you don’t have any kind of internet on the affected ubuntu box, grab them via another connected machine and copy them via removable media (windows or mac should be fine for just getting the files). You want the “linux-header” and “linux-image” files from within the folder with the latest (hopefully stable) version number. You can ignore the source file for now.
  3. Go to a command prompt, change to the folder where the downloaded .deb files are located, and execute the following, substituting the .deb file names for the versions you have (make sure you install the headers first).
  4. sudo dpkg -i ./linux-headers-2.6.32-020632rc8_2.6.32-020632rc8_all.deb
  5. sudo dpkg -i ./linux-image-2.6.32-020632rc8-generic_2.6.32-020632rc8_amd64.deb

After this, provided everything worked, you’re a reboot away from your modem working again. After the boot, uname -a should reveal the newly installed kernel version. Mine is: 2.6.32-020632rc8-generic #020632rc8 SMP

Once plugged in, the modem worked instantly and my mobile broadband account connected fine. Hooray!

While lsusb output looked the same as before:

Bus 006 Device 004: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

My /var/log/messages also looked a lot healthier:

kernel: USB Serial support registered for GSM modem (1-port)
kernel: option 6-2:1.0: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB0
kernel: option 6-2:1.1: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB1
kernel: option 6-2:1.2: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB2
kernel: usbcore: registered new interface driver option
kernel: option: v0.7.2:USB Driver for GSM modems
kernel: scsi 8:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
kernel: scsi 8:0:0:1: Direct-Access     HUAWEI   SD Storage       2.31 PQ: 0 ANSI: 2
kernel: sr0: scsi-1 drive
kernel: Uniform CD-ROM driver Revision: 3.20
kernel: sr 8:0:0:0: Attached scsi generic sg1 type 5
kernel: sd 8:0:0:1: Attached scsi generic sg2 type 0
kernel: sd 8:0:0:1: [sdb] Attached SCSI removable disk

Additionally, with the new kernel, both the pseudo cdrom, the 3G modem, and presumably the SD storage (though I don’t use it) are working at the same time. So, problem solved.

(Another improvement I noticed with the new version of ubuntu/kernel is I can disconnect the wireless broadband account via networkmanager without nasty gnome freeze-ups. Not sure what the culprit was for this: I worked around by disconnecting the hardware to avoid freezes, but looks like this too is now solved).

meta-writing psychology studies

Procrastination Busting Strategies

Procrastination is a topic of particular interest to me. I suspect most people suffer from it to a certain degree, myself most certainly included, and this is seldom more clear to me than when wearing my university student hat during the final month of semester, assignment due season, or ‘hell week(s)’ as I sometimes affectionately call it.

I have plenty in my schedule and it would be easy to simply attribute the stress of last-minuteism as an inevitable consequence of a busy life: however while some stress and being busy goes hand in hand I can’t honestly lay the blame squarely there. I am instead of the opinion that most of the pain could have been avoided with more foreplanning and self-discipline: or in short, less procrastination, and that I can always fit more into my schedule, by means of the proper organisation. In the words of Lucille Ball: If you want something done, ask a busy person to do it. The more things you do, the more you can do.”

So in order to see forward motion on the plethora of items on my life to-do, procrastination, the tarball of progress, the thief of time must be dealt with, and more effective personal organisation strategies established. I have recently given this some thought.

Proper identification and subsequent recognition of the beast is a very important step to defeating it. After some examination of my own behaviour related to assignment work, I realise that for me, procrastination has two primary modes.

The first is the putting off of starting a task, I’ll call it “Getting Started Procrastination”. This phase, depending on the due date, can last for weeks, months, years. The further away or the more indistinct a deadline is, the easier this one is to perform (I have since learned this is a documented phenomena called Temporal Discounting). The void between intention and action is filled with other activities, and the odd pang of regret at the already lost time, whilst simultaneously repeating the patterns which ensure more time continues to be lost.

The second and more immediately painful mode is the unnecessary prolonging of the task once I have finally been prodded into action, more often than not by a screaming deadline. This is the more memorable state, and the one I am going to talk about here, as I think its the most difficult for me personally to deal with (Getting started is usually not a problem, staying started is). I am labelling this type “On-Task Procrastination”.

On-Task Procrastination begins after I have made the decision to begin work, and has a number of guises which can make it tricky to recognise. It can be as mundane and obviously time wasting as finding myself staring at the screen, my calendar, or a piece of paper, having allowed my mind to wander, or an obsessive tidying of my room which started with picking up a few socks. Then there are the ‘escapist’ activities. These are blatant escapes from the unpleasantness or difficulty of the immediate, important task. These usually manifest as grabbing a book, putting a movie on, or deliberate, mindless web surfing. These are actually pretty easy to recognise and once spotted, simply require an effort of will to overcome – put the book away, turn the movie off, close the distracting web browser.

Less obvious and more difficult to defeat is when on-task procrastination cloaks itself in legitimate seeming activity. I have found some of the most insidious on-task procrastination attempts to insert itself into my workflow in the form of other productive tasks – just not the ones I’m supposed to be doing at the moment. Stuff like catching up on emails, sorting long overdue bills and tax papers, tweaking my linux setup to fix some annoying quirk that’s been bugging me, even working on other assignments which are not due yet.

Harder yet to spot are time-wasters which are somehow – however tenuously, related to the more important task I am supposed to be working on (for example, I will find myself looking up ‘interesting’ wikipedia and other articles which are peripherally related to the assignment topic). These require constant evaluation to detect, as they hide like weeds amongst the crops of productivity.

The product of this categorisation is a simple litmus test I can now apply whenever something attempts to divert me from my main task: If the diversion amounts to swapping progress towards my goal for activity on anything of a lesser priority – drop it and get back on task. It sounds very simple, but often easier to conceptualise than implement.

A recent bout of on-task procrastination in the face of a looming assignment deadline just about had me beat so I went on a little search-engine journey to see what others have to say about it. Plenty, as it turns out: The Google is brimming with anti-procrastination links:  and I found a couple of gems which I’ll share.

First, this blog article on Psychology Today was enlightening. It casts procrastination as a misfiring of our basic evolutionary survival trend to instinctively avoid unpleasantness. In other words, procrastination is a mind game which is played against yourself, a conflict with your own desire to avoid having to do something difficult. It is the opposition of your long term desire to accomplish something, versus your short term need to feel good.

This resonated strongly with me: often my on-task procrastination is triggered instantly as knee-jerk avoidance when running into difficulties, getting bored with a tedious piece of work, or encountering a particularly vexing sub-task. I realised that this was exactly what I had been doing: task hard = brain hurts = swap to something more gratifying. Procrastinate.

An interesting and related tip I read somewhere is forming the habit of staying on task even when you are blocked and feel like you are unable to progress. Procrastination is positive reinforcement of a bad habit – instant feel-good, getting away from an unpleasant task to a pleasant one. By the same principle, if you make a rule not to get distracted no matter what, then stick at the unproductive-feeling yet goal-related task for long enough, eventually not-working becomes more arduous than actually doing something on the task, anything at all, and you will start. (Its largely down to removing distraction as an available option – limit your choices to those which involve progress).

A particular wake up call for me was the authors comment that to indulge this behaviour is to carry on like a three year old with no self discipline beyond what feels good at a particular moment. Children might not want to pick up their toys simply because its not the most fun thing they could be doing: mature, goal oriented adults behave differently, and I would prefer to count myself amongst the latter.

Next, I discovered an extremely insightful, helpful piece of writing on procrastination which has since helped me no end.

The article, written by someone sharing what they learned while writing a doctoral thesis, espouses several very simple, very important ideas, and manages to encapsulate an entire procrastination-busting formula within three crisp statements. These words made it onto a yellow sticky notes which are now stuck to my monitors wherever I work:

1) Don’t get distracted
2) You must keep starting
3) That’s all

Extremely simple, and if you keep reminding yourself whenever distraction looms, very effective.

“Don’t get distracted”. This simple command set me up as a watchdog on my own activities, categorising them according to a simple formula: goal related, and not goal related. Every time I noticed myself diverging from the goal-related workflow, I look at the note, and halt the distraction. (In a short period of time the note is no longer required: a habit is formed, and the idea becomes internalised).

Next: “You must keep starting”. This is also very very helpful, as one of the tricks of on-task procrastination is to lever the interruption of a distraction to break your flow. Once you’re stopped, its easier to stay stopped. This next command simply gets you back on track. If interrupted, or distracted, you simply start again. Whether that means re-reading the task spec, or re-reading the document you are writing from the beginning to re-attain your flow, this is what you must do. “You must keep starting”.

Also written on my sticky note, from the same article and of particular help when I am working on something difficult and / or confusing (when most prone to diversion): “You are particularly vulnerable to distractions when you can’t decide quickly how to proceed… Make a decision”.

This last directive follows “keep starting“. I actually wrote myself an easy-reference formula on another piece of paper about how to re-start the particular project I was working on at the time if I found myself stalled, eg: Re-read the assignment spec, read my notes, read the document from the beginning and start when I reach a part that needs working on. (If nothing needs working on either I am either finished or I need to add more content!)

I’ll be doing more investigation into effective procrastination busting strategies, but for now these simple ideas have been very helpful.

References:

Jung, W.E (2003). Eddies Anti-Procrastination Site: Don’t get distracted. Keep starting. That’s all. Retrieved October 25th, 2009 from http://www.geocities.com/writethethesis/index2.html


Update: Above site disappeared, linking to Internet Archive: http://web.archive.org/web/20091022222819/http://geocities.com/writethethesis/index2.html

Pychyl, T.A (2008) Giving in to feel good: Why self-regulation fails. Retrieved October 25th, 2009 from http://www.psychologytoday.com/blog/dont-delay/200804/giving-in-feel-good-why-self-regulation-fails

technical website

WordPress, the OpenID plugin and “Fatal error: Call to a member function needsSigning() … in Server.php on line 1495”

For many moons I’ve been attempting to get the server functionlity of the OpenID plugin working with my wordpress install and been stumped on the following two errors:

First, any hit on the OpenID /openid/server url (I am using non-default permalinks) generated the following :

Fatal error: Call to undefined function add_options_page() in
/path/to/wp-content/plugins/wp-contact-form/wp-contactform.php on line 200

This was pretty obviously a conflict with WP-Contactform. Disabling this plugin made the above error go away, so I’ll be looking for a replacement for it soon.

Once the contactform error was worked around by disabling the plugin, the following appeared:

Fatal error: Call to a member function needsSigning() on a non-object in
/path/to/wp-content/plugins/openid/Auth/OpenID/Server.php
on line 1495

This would happen when I tried to specify my URL (whether main blog or wordpress author url) as an openid – it would seem to be working, go through the logon process then generate the error and the authentication process would abort.

After much googling (not much out there but this was helpful, sort of) and a good period of waiting and trying new versions of the OpenID plugin as they were released, the solution / workaround turned out to be extremely simple. It was a plugin conflict (doh) and a process of elimination identified the culprit and main show stopper: the cryptographp plugin.

No idea why but once it was disabled things worked fine. I was using this plugin to generate protective captchas for my comment forms. I replaced it with Simple CAPTCHA. (Its worth noting that in the 15 minutes or so I had no CAPTCHA active, I had already received a bot comment spam – and my site isn’t heavily trafficked by any means). I might choose another solution at some point from the plethora available, but for the time being, Simple Captcha gets the job done fine.

So thats about it. In a nutshell, some seemingly unrelated plugins were conflicting, disabling them and replacing with alternatives fixed it.

Now I can use glenscott.net as an OpenID, and my visitors have a nice simple OpenID login option on comments pages =)