It’s been a while since I last had a look at who offers a manual transmission wagon.  I used MSN Autos since it has a fairly easy interface to perform this check with, and just ran down the list of whatever they called a wagon, and have provided ample commentary.  So here are the wagons of model year 2012 and whether they offer a manual transmission:

  • Acura TSX Sport WagonNo, and it’s a shame since this car is the acclaimed Euro Accord (we get a watered down US-only car badged as an Accord here).  The sedan was long available with both a manual and the sporty Type-S trim, and anticipation was high that Honda would bring the wagon, and give it the same features as the sedan.  Instead, Honda announced that we’d be getting another US-only “wagon,” the Crosstour.  Public outcry on Honda’s Facebook wall followed and the TSX Sport Wagon was born (Honda claims this decision was not motivated by the Facebook debacle).  Alas, only 2 pedals and no sporty bits.
  • Audi A4 AvantNo, and I can only call the lack of a proper gearbox in the Avant a travesty.  Further, the S4 Avant was dropped entirely due to low sales of the B7.  A new A4-based allroad is slated for 2013, but I highly doubt there’ll be a manual in it when it reaches our shores.
  • Audi A6 AvantNo, and the A6 is an especially frustrating case.  The last time you could get an A6 Avant with a stick was in the allroad which sold until 2005.  It came with the cackle-inducing 2.7L twin turbo motor out of the S4 but was saddled with a goofy jacked up suspension and plastic lower body.  This was during the period when automakers were trying to make wagons more appealing to SUV buyers, but it was frustrating for wagon people since it ruined all the good properties of wagons and the higher end features weren’t available on the ones with normal suspensions.  Nowadays the allroads aren’t worth much thanks to maintenance costs, and swapping the suspension for standard or lowered height is common.
  • BMW 3 Series Sports Wagon – Yes.  Ahh, we’ll always have BMW to deliver driving satisfaction, right?  Well, maybe.  In an odd turn of events, the last two generations of M5 have only been available with the automatically controlled SMG (previous generation) and dual-clutch transmission (current generation) except in the US market, where buyers demanded a proper manual.  So BMW wants to go that way, and since I rarely see any of their wagons driven by non-moms, I suspect there would not be much pushback if they ultimately dropped a pedal, unlike the pushback they got from M5 buyers. Also worth noting, the twin turbo 3.0L motor available in the coupe, convertible, and sedan 335i (I think you accidentally a 5, BMW) is not available to us wagon-loving cretins.
  • BMW 5 Series Gran TurismoNo, and this is ultimately a result of the demise (in the US market only, of course!) of the real 5 Series wagon (which had a manual) since this car is almost a 7 Series (in which an automatic is almost justifiable).  Fastback wagons seem to be the next move in automakers’ attempts to sexify the wagon, and it’s arguably better than the last move, the pretend-SUV wagon.  They’ve got regular road suspensions and yeah, some of the fastbacks look nice but it’s at the expense of rear headroom and cargo space, and at least with the allroad you can just swap on a normal suspension and have a nearly normal A6 Avant.  And while I’m here, I’ll add that the abuse of BMW’s naming scheme has been turned to 11 with the 5 GT.  The 535i is the same old misnaming of the twin turbo 3.0L with which we’ve become familiar.  The 550i is a twin turbo 4.4L V8 and thus an insult to the 5.0L V12 of 850 yore.  I wish they’d just switch to something else rather than further twist the knife.
  • Cadillac CTS Sport Wagon – Not really, except on the CTS-V.  Major kudos to GM for selling the CTS-V wagon, BTW, and I am tempted by the idea of picking one up once they’re cheap (if only they weren’t so hideous).  I suspect GM (like Audi and BMW) will eventually discover Americans won’t drop that much money on a wagon when they’re mostly buying performance cars for their egos and would prefer much flashier and manlier M3s and RS5s.  Anyone have sales numbers on the CTS-V wagon?
  • Chevy HHRYes, and on all trim levels!  Of course, this is only insofar as the HHR can be considered a wagon, and that also insofar as anyone would ever want to buy an HHR.  But again, kudos to GM for this.
  • Honda CrosstourNo, and this car is just one big abomination.  Half wagon, half car, half SUV, 200% horrible.  We should’ve had the Accord the rest of the world has, and we should’ve had the Accord Wagon the rest of the world has, and instead we get this.  Well, if Honda desperately wants to rid itself of its rabid following of young drivers who are turning family-aged and instead fight with Toyota over AARP members, that’s their choice.
  • Kia RIO5No.  Really?  Even the Kia doesn’t have a manual?  With all of 110 HP and 107 torques, this thing must be indescribably miserable without a 5 speed (and I say this as a guy who’s had lots of fun driving low powered cars).
  • Mazda MAZDA5Yes, but only on the “Sport” (base model).  Not much to discuss here since this isn’t really a wagon, but it was on the MSN Autos wagon list, so here you go.
  • Mercedes-Benz E-Class WagonNo, and for whatever reason this never bothers me, probably because I just don’t care about Mercedes (okay, maybe a little bit about AMG).
  • Mercedes-Benz R-ClassNo.  The minivan for Mercedes buyers who don’t want to admit they’re driving a minivan (and want one that’s not nearly as spacious, to boot).
  • Saab 9-3 SportCombiYes, but is it even possible to buy one right now?  Well, I imagine there’s plenty of unsold stock.  Anyway, I do hope Saab survives (and intact with its essential Saabness), but it’s not looking good.
  • Subaru OutbackSorta, on the 2.5i and 2.5i Premium trims, but not the 2.5i Limited or any 3.6R trims.  The 2.5XT is dead and the Outback has become a crossover.  The Outback has the most frustrating history of any car on this list.  Subaru started the pretend-SUV car trend back in ’95 by slapping some gray plastic and a couple inches of extra ground clearance on both the Legacy Sedan and Wagon and calling them the Outback.  By their third generation they’d grown in height and also gained an optional turbo, but all 4 models remained.  In 2005, we were given the Legacy GT in both sedan and wagon forms, as well as the Legacy Outback XT in both sedan and wagon, and all 4 were turbocharged to 250 HP and available with a stick.  The very next year, the manual option was removed from the Legacy GT wagon but remained available on the other 3!  The two non-sport trims (Outback) kept it while the sporty wagon trim didn’t, and I have no explanation for why this was done (although these guys probably have some ideas).  For the 2008 MY, Subaru dropped the Outback Sedan (which I thought was odd looking by that point due to the increasing ride height) and the Legacy Wagon, leaving only the Legacy Sedan and Outback Wagon.  SUV lust killed one of the most beloved wagons of all time, and this transition was cemented by the introduction of a much bigger and less Legacy-shaped Outback in 2009.
  • Toyota MatrixSorta, on the 2WD trims.  Let’s move on, shall we?
  • Volkswagen Jetta SportWagenSorta, on the “S” (base) trim and TDI(!).  It’s a bit of a bummer that you can’t have the manual in the higher trims, but you really want the TDI anyway, and its’ a 6-speed.  Americans refused to buy the Jetta sedan when it cost a bit more than others in its class (thanks to a greater number of standard features and significantly nicer interior quality) so for the current generation, VW cheapened it up for the American market.  However, the Sport Wagon and Golf did not get this treatment, they retain all of the interior quality for which VW is known.  If I were in the market for a new car, the JSW TDI is the one I’d have.  My only wish for this car is an AWD option.
  • Volkswagen Passat – No.  Like the Jetta, VW has given up on trying to sell Americans on quality over lowest price and cheapened up the Passat for our market only.  They also killed the wagon (albeit they’d already killed the manual wagon a few years earlier half way through the B6 run).  So despite it being dead, the Passat wagon is on here because I own one, and I just wanted to bitch about its death.  Also, they made a TDI for a few years but it was the only trim in which a manual was not available.  Wha??  If you want a sweet 6-speed sleeper wagon and don’t mind wrenching, go back and pick yourself up a Passat W8.
  • Volvo V50No, and what a shame.  A few years ago you could have a mini-V70R in the V50 T5 AWD.  It was even a 6-speed.  Now the 3rd pedal and even the extra driveshafts are history.
  • Volvo XC70No.  The V70 was a great car, and sadly it too became victim to the pretend-SUV craze.  The V70 (and its badass variant, the V70R) are dead, replaced by the plastic-and-lift-kit XC70.  Volvo signaled an exit from the world of quirky performance variants a few years back.

I noticed some cars were missing from the MSN Autos wagon list, so here they are.  Some could be considered hatchbacks and I certainly did not list all 4-door hatchbacks currently on the market, but I felt there were some worth mentioning:

  • Audi A3Not really, only on the 2WD gassers.  What’s the point of Audi without quattro?  And I’m glad there’s a diesel A3, but the lack of 3rd pedal in a diesel is inexcusable.  It could maybe be acceptable if it had a DSG, but it’s just a lowly, lossy, inefficient auto.  Come on Audi, even the Jetta SportWagen TDI is stick or DSG.
  • Ford FocusSorta, but SE (base hatch trim) only.  The Focus has come a long way and I would happily be seen in one, but Ford has taken the “manuals are for economy cars” approach here to ensure I won’t buy one.  The hatch profile is too slanty to call it a wagon, but the other 4 door hatches in the compact class are on this list, so I felt it’d be unfair to exclude it.
  • Hyundai Elantra TouringYes, on both trims.  Hyundai has done some interesting things lately, but the Elantra Touring is not one of those things.  But I shall give credit where credit is due.
  • Mazda MAZDA3 – Yes.  A family member of mine has a 6-speed Grand Touring and it (like all Mazdas) is a joy to drive.  The list of features on the GT is impressive, especially considering the price they sell for.  It’s a shame about the styling, though.
  • Mitsubishi Lancer SportbackNo, and the auto is a CVT. D=
  • Subaru Impreza SportSorta, “Premium” trim only.  You like shifting your own gears?  Well, I hope you don’t like leather.  City mileage is 2 MPG worse than the auto and highway is 3 MPG worse.  The explanation is likely the CVT which… yeah, CVT. D=
  • Subaru Impreza WRXYes, and automatic is not even an option!  It’s the WRX, need I say more?  Oh, apparently you can’t get leather in the hatch STI, only in the sedan.  I think I like what that says about people who prefer the STI sedan. ;D
  • Suzuki SX4Sorta, lower trims only.  Interesting “economy” mentality since it’s a 6-speed.
  • Volkswagen GolfSorta, TDI and .:R only, not on the 4 door gassers.

Did I miss anything or get anything wrong?  Leave a comment!


No static DNS?


I just got a hand-me-down Linksys WRT54GC to replace my failing WAP. Since it has a router it also replaces my trusty Linksys BEFSR41. However, I’ve just learned that the much newer router lacks the ability to set static DNS servers for your local clients, a feature which was available on the much older one. So now there’s no way to forcibly opt all network clients out of Comcast’s shitty all-resolving DNS servers.

Time to finally implement the home server I’ve been meaning to set up for a long time, I guess. At least that way I can run a radius server and do fun things with wireless authentication. And I guess I could do it under dd-wrt or openwrt now that I have extra hardware to play with…

I recently tuned a few TCP parameters on a Solaris 10 fileserver of mine and I wanted to persist these changes across reboots.  Well, you’re not really supposed to stick this stuff in /etc/system anymore, and so the alternative is to set it on boot.  This being the age of SMF, I looked for an existing implementation and found this blog post by Hung-Sheng Tsao at Sun.  His version was pretty simple, since it’s just a basic manifest that defines running a script in which the calls to ndd and the parameters are hardcoded.  I thought it’d be nice if you could define your parameters right in SMF (that’s the point, right? ;) so the result is a new SMF method named nddtune.  My version reads the tunables directly from the SMF properties, and also stores the previous values so that disabling the service reverts to the old values.  Here’s how you use it:

  1. Copy the nddtune script to somewhere appropriate for your environment and make sure it is executable.  By default, the SMF config expects to find it in /lib/svc/method.
  2. Copy network-nddtune.xml to /var/svc/manifest/site.  Edit the XML config file if you put nddtune somewhere other than /lib/svc/method.
  3. Import the manifest:
        # svccfg import /var/svc/manifest/site/network-nddtune.xml
  4. Create property groups for the devices you wish to tune.  The property group is translated to the device passed to ndd by prepending a slash and converting underscores to slashes, so in this example dev_tcp will result in ‘ndd -set /dev/tcp …’:
        # svccfg -s nddtune addpg dev_tcp application
  5. Set some parameters:
        # svccfg -s nddtune setprop dev_tcp/tcp_xmit_hiwat = integer: 4000000
        # svccfg -s nddtune setprop dev_tcp/tcp_recv_hiwat = integer: 4000000
        # svccfg -s nddtune setprop dev_tcp/tcp_max_buf = integer: 4000000
        # svccfg -s nddtune setprop dev_tcp/tcp_cwnd_max = integer: 4000000
  6. Create an SMF snapshot that includes your new values:
        # svcadm refresh nddtune
  7. Check your current values before enabling:
        % ndd -get /dev/tcp tcp_xmit_hiwat
        % ndd -get /dev/tcp tcp_recv_hiwat
        % ndd -get /dev/tcp tcp_max_buf
        % ndd -get /dev/tcp tcp_cwnd_max
  8. Enable the service:
        # svcadm enable nddtune
  9. Check the new values to make sure it worked:
        % ndd -get /dev/tcp tcp_xmit_hiwat
        % ndd -get /dev/tcp tcp_recv_hiwat
        % ndd -get /dev/tcp tcp_max_buf
        % ndd -get /dev/tcp tcp_cwnd_max
  10. You can disable the service to reset the tunables to their previous values, since the previous values are stored whenever the service is enabled. These previous values are stored in an SMF property group named like the one(s) you created, but with ‘_defaults’ appended:
        % /usr/bin/svcprop -p dev_tcp_defaults nddtune
        dev_tcp_defaults/tcp_xmit_hiwat integer 49152
        dev_tcp_defaults/tcp_recv_hiwat integer 49152
        dev_tcp_defaults/tcp_max_buf integer 1048576
        dev_tcp_defaults/tcp_cwnd_max integer 1048576

You can get nddtune from its repository on bitbucket.

# ./ -o /tmp/
Generating /tmp/
cpio: illegal option -- quiet
	cpio -i[bcdfkmrstuv@BSV6] [-C size] [-E file] [-H hdr] [-I file [-M msg]] [-R id] [patterns]
	cpio -o[acv@ABLV] [-C size] [-H hdr] [-O file [-M msg]]
	cpio -p[adlmuv@LV] [-R id] directory
sia.img.Z: No such file or directory
tar: --group: No such file or directory
tar: 0: No such file or directory
tar: --owner: No such file or directory
tar: 0: No such file or directory
tar: --exclude: No such file or directory
tar: .svn: No such file or directory
^Ccpio: illegal option -- quiet
cpio: Invalid header "newc" specified
	cpio -i[bcdfkmrstuv@BSV6] [-C size] [-E file] [-H hdr] [-I file [-M msg]] [-R id] [patterns]
	cpio -o[acv@ABLV] [-C size] [-H hdr] [-O file [-M msg]]
	cpio -p[adlmuv@LV] [-R id] directory


My boss recently suggested that he’d like me to be more available on the road and out of town. I frequently travel to places with no net connection, and this was proving to be a problem when we had sysadmin issues at work. To that end, he agreed to buy me a netbook with a data plan. The Dell Latitude 2110n had all of the features I wanted, namely, the new Intel Atom N470 (Pineview) processor, a solid state disk, and an embedded mobile broadband card. And it came preloaded with Ubuntu Netbook Edition, meaning that I felt confident that I wouldn’t have compatibility or driver issues running Linux on the hardware.

Well, I should not have been so confident.

The first discovery upon booting up was that there were no wireless drivers present in the preinstalled Ubuntu 9.10 image. There were a few wireless card options when I configured the order, and I happened to select the Dell Wireless 1501 card, which is, in reality, a Broadcom 4313.  Interestingly, this choice is now gone and the only option available for orders today is the Wireless 1520 card.  Apparently, I chose the old option.  It was kind of impossible to tell which was better.

Thankfully, Linux drivers for this card exist, and they should’ve been available directly from Ubuntu via the bcmwl-kernel-source package, but for reasons I did not investigate very thoroughly, the wl kernel module would not detect the hardware (maybe an old version that doesn’t know the Dell hardware address?). Instead, I had to download the STA/wl driver directly from Broadcom and compile it by hand.

Next, I decided I wanted to try a pared down distro, rather than the flashy and featureful but potentially battery-sapping Ubuntu. So I installed the alpha version of Crunchbang Linux (now based directly on Debian (that’s good!)). Unfortunately, I discovered that the kernel version in Crunchbang was too old to support the ethernet port driver (that’s bad!). So, I quickly dumped Crunchbang and decided to install Debian Squeeze instead. After updating to the latest kernel from Sid, ethernet worked. Hooray!

With that sorted, I turned my attention to the mobile broadband card. It’s branded as a Dell Wireless 5620, but in reality it’s a Qualcomm GOBI 2000 (this much was apparent at purchase – it’s listed by the Qualcomm model rather than the Dell model in the configurator on the Dell Store).

After the wireless fiasco, I feared that there may be no drivers available for the Gobi card, and these fears were soon confirmed, as I could find none from either Dell or Qualcomm. In fact, upon entering my Dell Service Tag into, I discovered that my only OS choices for driver downloads were Windows 7 and Windows XP. Despite mine being the ‘n-series’ model that ships exclusively with Linux. Hmm…

The Gobi 2000 is unique among mobile broadband cards, and it’s one of the reasons I went with the Dell. It supports both GSM and CDMA, and I didn’t want to be locked to one or two providers. As I learned, it does this by loading carrier-specific firmware at boot-time. And I was encouraged to find that loading such firmware had been done under Linux before using gobi_loader. I applied the gobi_loader patches to the Sid kernel’s source and recompiled, but then thought better of running it. I had never tested the device under Ubuntu and started to wonder if it had already worked when the hardware shipped.

So at this point, I decided to reinstall Ubuntu, and found the reinstaller on Dell’s recovery partition. Unfortunately, this resulted in such a broken grub install that I couldn’t even load grub modules. After screwing with that for too long, I had had enough and installed Ubuntu Nebook Edition 10.04 (Lucid) from a USB drive.

Encouraged by findings on ThinkWiki where someone posted his experience extracting the firmware from Lenovo’s Windows driver for the Gobi, I downloaded Dell’s Windows drivers and unzipped the self-extracting .exe. Contained within were:

… (same as x86)
… (same as XP)

None of the driver files were the firmware. As seen on ThinkWiki, the Lenovo driver exracts the firmware with the correct name right on the filesystem, but apparently Dell’s were all contained in the installer, which was not a self-extracting .exe. I considered running the Lenovo firmware, but was worried that the firmware might differ by vendor, which could damage or brick the hardware. Probably not since it’s all Qualcomm, but generic providers like LSI do release rebrand-specific firmware for stuff like array disks.

So, I headed on over to an XP VM and extracted the driver, and tried to run the installer. No dice, you immediately get punted from the app, with the helpful message “Incompatible platform.” I suspected the in the same folder contained the criteria of what it could be installed on, but annoyingly, it was password protected. Andy suggeseted that I run the installer from the command line with the /? flag, which was a great idea since it gave me a few options, one of which was /vEXTRACTDRIVERS. Well, I got excited for nothing, because all this option did was copy the already-extracted files from the Drivers/ directory to the current directory. Useless.

But eventually, after a lot more screwing around, I thought to run cabextract on the installer, and got a whole bunch of files with annoying generated names:


After comparing the file sizes on these against the Lenovo drivers, I discovered that they must be the wayward firmware files! Tracking down which was which required using the Lenovo drivers. Since I was getting service with Verizon, I checked against the files in Lenovo’s “1” directory. amss.mbn and apps.mbn were easy:

% ls -l GOBI/Images/Lenovo/1
-rw-r--r-- 1 nate nate 6582324 Jun  3 09:19 amss.mbn
-rw-r--r-- 1 nate nate 3022892 Jun  3 09:19 apps.mbn
-rw-r--r-- 1 nate nate   17136 Jun  3 09:19 UQCN.mbn
% ls -l Utility | grep 6582324
-rw-r--r-- 1 nate nate  6582324 Apr 13  2009 _787710DE0BD94E448E3842AA0DFE048E
% ls -l Utility | grep 3022892
-rw-r--r-- 1 nate nate  3022892 Apr 13  2009 _BEC5B34A5031495589E922B092DAEB4F

UQCN.mbn was a problem:

%ls -l Utility | grep 17136
-rw-r--r-- 1 nate nate    17136 Nov  6  2009 _3211A3D6ECFF46B9935C71744C6F9129
-rw-r--r-- 1 nate nate    17136 Nov  6  2009 _7682FE3BC2AC49BE84D7167C0E55F4AC
-rw-r--r-- 1 nate nate    17136 Nov  6  2009 _9F7902055BCC477B942A596DB3283512

But thankfully, strings(1) provided the answer:

% strings GOBI/Images/Lenovo/1/UQCN.mbn > uqcn.strings
% strings Utility/_3211A3D6ECFF46B9935C71744C6F9129 > 3211.strings
% strings Utility/_7682FE3BC2AC49BE84D7167C0E55F4AC > 7682.strings
% strings Utility/_9F7902055BCC477B942A596DB3283512 > 9f79.strings
% diff uqcn.strings 3211.strings
… junk snipped
< 	02-c2k_vzw-00256-017
> 	02-c2k_vzw_nogps-00257-017
% diff uqcn.strings 7682.strings
… junk snipped
%diff uqcn.strings 9f79.strings
… junk snipped
< 	02-c2k_vzw-00256-017
> 	02-c2k_vzw_noxtra-00256-145

“nogps” would seem to be self-explanatory. I don’t know what “noxtra” is, but both the Lenovo UQCN.mbn and Dell _7682FE3BC2AC49BE84D7167C0E55F4AC had matching “ 02-c2k_vzw-00256-017” on that line of the `strings`, so I took that file to be UQCN.mbn. I can’t explain the other differences in strings output (the “junk”), but suppose it could be differing vendor IDs or a newer firmware version (although it’d be surprising that the file sizes matched, then).

Regardless, I put the following files in /lib/firmware/gobi:

_787710DE0BD94E448E3842AA0DFE048E → amss.mbn

_BEC5B34A5031495589E922B092DAEB4F → apps.mbn

_7682FE3BC2AC49BE84D7167C0E55F4AC → UQCN.mbn

Then, using the steps from response #33 in this bug in Launchpad, I rebuilt the qcserial and option kernel modules, and built the new usb_wwan one. Upon module installation, gobi_loader installation, and a reboot, the device finally existed, and was even recognized by NetworkManager!

Alas, my woes were far from over.

One annoying feature of CDMA networks is that since there is no SIM to register, the device itself must be registered, and this cannot be done by the provider, it must be initiated on the device itself. This is easy with a phone. You dial *228, hit option 1 and a few minutes later you’re provisioned. There’s also a quick way, by dialing *22899, and then you’ll be provisioned without prompting.

But how do I dial *228? It turns out, mobile broadband modems are just modems – initiate a serial connection and you send it AT commands just like the old 300 baud. But unfortunately, nothing I tried worked. As I eventually figured out, I think this is supposed to be the way, but my modem just returned ‘ERROR’ to the service programming command (AT+WSPC), despite getting the correct code from Verizon:

AT+WSPC=1,Your Verizon ESID (000000 if you’re lucky)
AT+WMDN=Your Verizon MDM number (usually your phone number)

AT+WIMI=31000Your Verizon MIN number (usually your phone number)

As far as I know, no one has ever activated a device on Verizon under Linux, except perhaps back when there was a Verizon Access Manager (VZAM), their official dialer, for Linux. If they have, they’ve never written how they did it. If you have done it, please comment and tell us how. Regardless, right now, my modem works. How did I do this, if I couldn’t get it to provision?

First, I tried running VZAM under a Windows VM via VirtualBox. The Dell driver would not install because “Incompatible platform.”

Next, I tried running the Dell driver installer under BartPE. “Incompatible platform.”

Finally, I just gave up and installed XP natively. Success. After doing this, I was able to reinstall Ubuntu and use the modem. Yes, I had to install Windows to run one crappy Windows app to do the activation, and then I was free to get rid of it. I’d really like to know what that Verizon app did. But whatever, it works now.

One final note: throughout all of this, I communicated with Dell and Verizon a bunch of times. My first call to Dell looking for drivers got me routed over to the (overseas…) Dell Ubuntu support group, who told me to post on and “someone will post the drivers,” despite my insistence that such drivers did not exist freely. Qualcomm does not directly release them – all vendors selling Gobi cards release their own drivers, and the above proves that Dell has the firmware.

This was not a very acceptable answer for someone I’m paying money to for support. It’s not like I expect everything should work as easily under Linux as it does under Windows, but I want a better answer than “gee, that’s too bad.” If you’re a hardware vendor selling a Linux model of a system, it should at least work, even if I have to do some work to make it work.

Surprisingly, the people at Verizon seemed to understand my issue, but couldn’t help. They punted me back to Dell’s Ubuntu group, and I hung up before it connected.

Finally, I got my case escalated and the Dell escalation engineer knew exactly what the problem was. He was very sympathetic and told me that the Gobi card being orderable with Linux is a mistake, and should be removed from the store configurator. He couldn’t help, although by that point, I didn’t need it. He did say if I needed it, he might’ve been able to round up the firmware for me, which was encouraging to hear. It’s a shame they don’t just stick it up on the drivers site in a plain archive with a README explaining which firmware maps to which provider, but perhaps this is due to some sort of legal situation with Qualcomm. I don’t know.

Apparently I need to learn to search better, since I really tried this time.

In order to notify our Buildbot of changes in our source repository at Bitbucket, we’ve been manually pulling from Bitbucket to a repo on a development system here.  The local repo had a changegroup hook that utilized the standard buildbot.changes.hgbuildbot hook.  This worked fine, but it was tedious, so I decided to work on making Bitbucket trigger Buildbot itself.  Bitbucket offers various services that can run on commit, but no direct Buildbot notification.  But, they have a generic POST service that’ll send a specially formatted payload to an HTTP address of your choosing.  I did a quick Google to see if anyone had already written a connector.  Finding nothing and figuring it’d be an easy task, I set about writing my own.

The result is bb2bb, which (in its original form) was a FastCGI daemon serving a WSGI application (since nginx and flup make that setup easy) that reused a bunch of code from hgbuildbot.  I also employed some modules I’d used before (like WebOb), and it came together after most of a day of work and testing.   Unfortunately, after I put it in production I found a problem: after 2 successful commits and subsequent buildbot change notifications, the application would stop sending notifications.

Until this point, I had been blissfully ignoring the inner workings of Twisted since it’s a bit complex and I didn’t want to take the time to learn it when it only seemed vaguely necessary for what I was trying to do.  Unfortunately, I discovered that I couldn’t start and stop a Twisted reactor from within my WSGI application like I was trying to do.

Somewhere after a few hours of trying to wrap my head around Twisted so I could fix this, I happened to take a look at the list of files in Debian’s buildbot package and discovered the following:

% dpkg --listfiles buildbot                                                                                                                                                                                                                                          /usr/lib/python2.5/site-packages/buildbot

Hmm… a github to buildbot connector?  I checked it out and (no surprise) it does for github exactly what I was trying to do with Bitbucket.  So I spent another hour integrating my existing code (in the process, removing all those things that I didn’t need (like flup and WebOb) because I learned that Twisted already has the functionality) and an hour testing it.  Once it was all working, I went to modify to reflect all these changes and I decided to change the name to to match the stuff already in contrib.  At this point it struck me to Google that name.


Someone had already done exactly what I just spent all this time doing, and it was committed in Buildbot’s contrib/ directory.  It wasn’t in my buildbot package since my version was older.  It, like mine, is even based on

So I just spent almost 2 days doing something that’d already been done because I didn’t look in the right place with the right name.  Oh well, it’ll sit there on Bitbucket as a monument to wasted effort. =P

UPUA budget drafts future projects

The White Loop extension received a proposed $23,000 allocation

This is the “drunk bus,” the extended hours for the White Loop during prime partying hours.  This was passed with the “we can’t stop students from going out and partying so we need to make sure they can do so safely!” argument.

The committee requested $6,000 to fund exploration into the use of the “MyMap” program, a potential replacement for eLion.

The UPUA shouldn’t be spending the students’ own money on this.  We already pay AIS (more than you can imagine) to research/develop/deploy/maintain this service.  If it’s not meeting the students’ needs (which it hasn’t for a very long time), it should be replaced.  By AIS.