Recently, one of our finance staff acquired a HP ProBook 4540s laptop with a Ralink 3290 wireless module. There were some issues with installing and using it with GNU/Linux due to the lack of included drivers; the two options are to:

  • Make it work with GNU/Linux
  • Replace the module

Making it work with GNU/Linux

If a piece of hardware doesn't work with Linux, it's often a driver issue. Drivers in the Linux kernel are in the form of kernel modules, so finding a driver for an unsupported device is equivalent to finding/building a kernel module.

Kernel modules

One thing that I had noticed was that the module loaded for the module was ra2860 (from lsmod | grep ra). Quick googling lead me to the conclusion that the correct module for this device (identified by lspci -v was in fact ra3290sta which was not present in the kernel modinfo ra3290sta. From this point there were two options:

Finding a PPA

Only applies to apt-based distros, primarily *buntu and Debian.

Often, someone else will have already done all the legwork, so it's wise to search for "module PPA". If a PPA exists, just add the lines into /etc/apt/sources.list, and do an

apt-get update && apt-get install module.

Alternatively, you could use add-apt-repository to add the PPA to the sources.

Compiling from source

If a PPA doesn't exist, you may have to compile from source. The general procedure for this goes as follows:

wget http://www.example.com/example-module-0.1.
tar.gztar xvf example-module-0.1.tar.gz
cd example-module-0.1
./configure
make && sudo make install

If this doesn't work, make sure you have build dependancies installed:

apt-get install build-essential linux-kernel-headers

To load the module do this:

depmod -a
modprobe example-module

Ndiswrapper

If there isn't an available GNU/Linux driver/module, or the GNU/Linux version is faulty, it may be required to use the Windows XP version via Ndiswrapper.

  1. First, install Ndiswrapper. In Debian-based distros: apt-get install ndiswrapper-dkms ndiswrapper-common
  2. Now the ndiswrapper module needs to be loaded at boot: echo ndiswrapper >> /etc/modules
  3. Install the .inf driver with: ndiswrapper -i driver.inf and verify with ndiswrapper -l
  4. Rebooting or modprobing ndiswrapper should now apply the driver, which can be verified with iwconfig

Replacing the module

Sometimes, Linux drivers and workarounds are flaky or otherwise dysfunctional. In these cases, it's often simplest to replace the hardware.

Warning: Only proceed if you are qualified and able to accept responsibility for potential damage

Otherwise please contact technical support.

NB: This procedure may void warranty, please check before proceeding.

Desktops

This is usually just as simple as inserting/replacing a PCI(e) card. Sometimes that card may need to be half height: if your workstation stands horizontally this may be the case.

Laptops

Laptops can vary: some manufacturers consider the wireless module to be a non-consumer replacable part, making getting to the module a challenge.

Either way, searching "laptop model wifi replace" or "laptop model teardown" will yield better results, as the process is different for each machine.

Modern laptops tend to have either PCI(e) or PCI(e) half-height modules, so make sure to purchase a replacement of the appropriate size.

Manufacturers who tend to make modules which are well supported by Linux distributions:

  • Intel
  • Atheros

A module should cost ~£15, and usually there is no harm in buying second hand. Again, it's wise to check for Linux compatibility beforehand to avoid buyer's remorse.

Posted by Nick Hu on 22/07/2013