Another “hack post”, to capture how I got mobile broadband working on my Sony laptop. Sony makes laptops with cutting-edge features (small, solid-state disk, full HD screen) and a stylish look, but doesn’t like to help you take full advantage of it unless you’re on Windows. Undocumented tweaks to the hardware, hard-to-find technical information, and so on.
I bought a Sony VPCZ1 (to be more precise: VPCZ13C5E) with a WWAN module installed, with the idea that I could be online anywhere, without any dongles sticking out, or having to connect by tethering it to my phone over Bluetooth or USB. I’ll pay the extra fee… provided it works.
I have installed Ubuntu 10.10 (which was an effort in itself), and went on an excursion to get mobile broadband running.
First, let’s find out what the hardware is: it’s not listed on Sony’s specs page, but according to the specs of a similar model, it’s a Qualcomm Gobi 2000 (PDF link). It apparently needs to be loaded with a firmware before it will operate. I had to install the Ubuntu package gobi-loader as a starting point.
apt-get install gobi-loader
However, that package does not provide the actual firmware. It expects the firmware in /lib/firmware/gobi, but that directory doesn’t even exist.
The discussion about a Qualcomm problem on Launchpad made me look at a way to get the firmware from the Microsoft-based Qualcomm Gobi2000 (WWAN) Driver 1.1.80 that Sony provides. After unzipping that file, we have a directory with a file GobiInstaller.msi… the firmware is somewhere in there.
After installing either p7zip-full or cabextract, we can extract the contents of the .msi file, to end up with a long list of crypticly named files.
Thanks to a post by Madox, and the discussion after it, I saw what to look for:
/lib/firmware/gobi$ ls -l total 13888 -rwxr-xr-x 1 root root 11096116 2009-12-11 21:10 amss.mbn -rwxr-xr-x 1 root root 3104812 2009-12-11 21:10 apps.mbn -rwxr-xr-x 1 root root 9284 2009-12-11 21:10 UQCN.mbn
As it happens, there is just one file with length 11096116, just one with length 3104812, and 18 with length 9284 bytes. The first two are easy, the UQCN.mbn file contains the specific setup for a region or provider.
When using a hex editor (like hte in the package ht) to inspect the various variants of 9284 byte files, there is a string at the end revealing a bit what it is intended for: umts_gen, umts_orange_nogps, umts_tmo_noxtra and so on. See below for a table of strings, file names, and md5 checksums in my setup.
After copying the appropriate three files with the right name into /lib/firmware/gobi, I flipped the “wireless” switch off, waited some 10 seconds, and switched on again. And was greeted with a pop-up to enter the PIN code for my SIM card: indicating that the modem had been detected, the firmware had been loaded, and my SIM card was working.
Under the Networking menu, I could add a new mobile broadband network, and connect after a few simple steps of selecting my country and provider.
Notes: various posts for earlier versions of Ubuntu mention hacking in qcserial, or compiling your own kernel modules. I didn’t have to do any of that.
string | file name in .msi | md5sum |
umts_gen | _61F1C9E9670341009A49DFBF7ED9308B | e601a7bf3c55104badcdf21bcbb0bfa9 |
umts_gen_nogps | _82F1F7B633254DD8943C3C66695180D4 | 633bed88c29244683635c261849d0e88 |
umts_gen_noxtra | _B1755EF712704F6EA05AD29399FDAAD2 | f1911bcefc4bd5bf8d8fd401082c1a5a |
umts_orange | _D086B5600A824F88A7B5B4DA9AEC7393 | 0044ef086b828c30689b899a3570dd56 |
umts_orange_nogps | _EAA5B766B8FC42258CF0903EB29B3866 | 1dbb1ce26cb59f9d7b551e54c9f71c80 |
umts_orange_noxtra | _97CDF82428924F739C17CEC7DB7642C5 | 668d1e8903f362b4fc5ec66145ab9b36 |
umts_telital | _FF884A864DC04D3B9BE3B80CA0D6365D | 6f575f681ffad81bf3159c7b2d7122a9 |
umts_telital_nogps | _F5A8481D6D0141DDB5AC04E02C5D6B77 | bf6b02a2e4ac42c40b028519ed5db487 |
umts_telital_noxtra | _CE104EC699FA4012AF9BF053838EFEEA | 6a1b2b342a9e3548dc02f882f156ec21 |
umts_tellfon | _F85609A0A9B64C399F670AE6D78A9EDD | b0edb9f5ee92204f9d0e455ff860ca84 |
umts_tellfon_nogps | _AB685C9BC9BF406691ED3CC70C0EA2F8 | 345c4671242f94d31e3161ead89227db |
umts_tellfon_noxtra | _D9B76BE055B04137AB32632049501DF1 | f064a0c0c7806d30dacd33b4672661cc |
umts_tmo | _FC981235AEDB429BA1F601941B97E11C | 1061d15ca89d0d8f66919c99cb67cc45 |
umts_tmo_nogps | _A6C51028090341929FAC167B2938F19C | 6d7b94fed93f47ceafc9ba0c7889fc1f |
umts_tmo_noxtra | _9358B6316845471886EF8B592B400046 | 4132ebbea25e4014043d902d7e272f71 |
umts_vod | _A51C11D307D344229DD775AD527BA6DA | 4d1b58cb79817dbe111194dfc286e57a |
umts_vod_nogps | _890ED25310C543B483CA0E67C40B9C54 | d06886a62c5c42e2076e0d2a055d1675 |
umts_vod_noxtra | _A66130F57F1E4EFCAA571D5BFBF84CE4 | 39f0b2663f682b5c9d97cdaddaa72813 |