contact Me

Use the form on the right to contact me.

You are welcome, to contact me regarding the topics of this page, my open source projects, or my work. Please use the contact form and leave a valid email address for me to respond to.

Thank you.

Egidestr. 9
44892 Bochum
Germany

/brain/dump

Random thoughts, bright ideas and interesting experiments. In short the ramblings of a fulltime nerd.

 

Getting Sony Vaio X WWAN to work under Ubuntu Linux

Jakob Westhoff

Three month ago I bought a Sony Vaio X netbook. The Windows 7 which was preinstalled on the system was no option for me. I installed Ubuntu on it and got mostly all of the hardware working. Read my Ubuntu Installation experience article for more details. One piece of hardware did however refuse to work: The WWAN modem. Finally the offline times are over. The modem is now working like a charm.

The WWAN hardware

Sony integrated a WWAN modem called Gobi 2000, which is produced by Qualcomm. Even though Qualcomm claims the Gobi 2000 modem does have Linux support, it seems that these drivers are only given to hardware vendors ordering in higher quantities. No consumer drivers exist. At least no official ones. Luckily some open-source guys wrote the qcserial kernel module and the gobi_loader. The first one provides the necessary serial device interface to program and access the modem. The second one uploads the needed firmware into the modem. The qcserial module, which is distributed with the current Linux kernel does only support the Gobi 1000, which is the direct predecessor of the Gobi 2000 chip. Fortunately patched versions of the kernel module as well as the firmware loader have been created with the intent to use them with a certain HP netbook. These patches can easily adapted to work with the Sony Vaio X as well.

Step by step

The efforts to allow Ubuntu to access the modem can be divided into four simple steps:

  • Extract the needed firmware from the windows installation
  • Compile and install the patched qcserial kernel module
  • Autoload the kernel module during bootup
  • Compile and install the patched gobi_loader

Before proceeding please make sure the SIM card of your mobile data provider is inserted into the modem correctly. The SIM slot can be reached by removing the battery.

Firmware extraction

The modem needs to be initialized with a certain country specific firmware each time it is powered up. This firmware is deployed with the preinstalled windows on the Vaio X. Unfortunately it can not be downloaded anywhere. For legal reasons I can not publish it either.

However it is quite easy to extract the needed files from the windows system.

The windows driver contains a lot of different firmware files. Three for each country supported by the modem. To identify the three files you need to make the modem work access the following file on your windows installation:

C:\ProgramData\QUALCOMM\QDLService2k\Options2kSony.txt

The files listed in here are the ones needed by your modem in your country. Please copy them to the following directory on your Linux system /lib/firmware/gobi/. Most likely this directory does not exist therefore it needs to be created first.

Kernel module

To allow communication with the modem a patched version of the qcserial kernel module needs to be build.

Download the following archive and extract it to a directory of your choice:

The extraction is easily handled using tar from the commandline or your favorite gui utility:

tar xvzf qcserial_with_gobi2000_support.tar.gz

The kernel module needs to be compiled in order to be loaded into the kernel. The prerequisites that need to be installed for this are the kernel-headers of your current system kernel, as well as a current gcc version for compiling. Compiling and installing the module is easy. Simply issue the following commands inside a terminal:

cd qcserial
make
sudo make install

The module will be installed into the directory holding all of your kernels modules automatically. Manually it can be loaded using the modprobe command followed by the module name:

modprobe qcserial

This can be done for testing purposes. However it is not needed, as the next section will describe how to make Ubuntu load the module automatically during system startup.

Note

You need to recompile and reinstall this kernel module every time your system kernel has been updated. Otherwise it will stop working, as it is version specific.

Autoloading the qcserial kernel module

To make Ubuntu load the qcserial module every time the system is booted it needs to be added to the modules file, which can be found in the /etc directory. Use the following commands to add the module for autoloading:

sudo su
echo "qcserial" >>/etc/modules

Gobi loader

After the qcserial module has been loaded the Gobi 2000 needs to be initialized with the firmware which has been extracted earlier. The gobi_loader application takes care of this. As always the loader needs to be downloaded compiled and installed.

Again choose your favorite tool to extract the archive or use the tar command instead:

tar xvzf gobi_loader_with_gobi2000_support.tar.gz

After that compiling and installing is quite simple:

cd gobi_loader
make
sudo make install

The Makefile is configured to install the gobi_loader to /lib/udev as well as register it's execution with udev as soon as the gobi modem is detected. Therefore the firmware is automatically loaded every time it is necessary. The modem initialization should be done magically in the background during system startup from this point on.

Final words

A system restart is recommended to make sure everything is initialized in the right way. After the reboot the network manager can be used to setup the connection to your mobile data provider. Congratulations to your new freedom.

Acknowledgments

Most of the information presented in this article has been taken from the comments of my previous article about the Vaio X. One of the comment writers pointed out another blog article describing the wwan installation on a hp netbook, which shares the same modem. The author of the mentioned blog article published patched version of the qcserial kernel module, as well as the gobi_loader, which have been slightly modified by me and presented here for download. I want to thank the original author, as all this would not have been possible without him.