Ubuntu 12.04 has been released a few weeks ago. The nice thing about a fresh new operating system is that it contains a new kernel with new drivers. That’s one of the good things, the bad thing is that some hardware need additional configuration to get it to work.
The SpeedTouch 120g wifi adapter
This is about the SpeedTouch 120g, which is not a very new wifi adapter. In the Netherlands some providers delivered it with a new Internet connection. See the pictures of the card below.
The device is a 802.11b/g adapter with a prism54 chipset. It is provided with usb id 06b9:0120. You can check the id by running lsusb. This returns a list of all connected USB devices. To limit the output to list only the SpeedTouch device, add the -d option along with the usb id. It shows that it is an Alcatel device, mind the Intersil at the end. I’ll come back to Intersil later.
$ lsusb -d 06b9:0120 Bus 001 Device 021: ID 06b9:0120 Alcatel Telecom SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] $
There are two ways to handle this card. The best solution is to use the native prism drivers. Although this driver is available by default, the driver won’t work out of the box. Alternatively you can try to use the Windows drivers and use the ndiswrapper to link these drivers to the Linux system. This might work but I will focus on using the built-in prism driver. This is not a very complicated solution.
Why the adapter doesn’t work…
When you plug the SpeedTouch 120g into a Ubuntu 12.04 installation the system will try to load drivers to communicate with the card. If you want, you can debug this process and view the ‘/var/log/kern.log’. Below a snapshot of mine.
usb 2-3: new high-speed USB device number 2 using ehci_hcd cfg80211: Calling CRDA to update world regulatory domain cfg80211: World regulatory domain updated: cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) usb 2-3: (p54usb) cannot load firmware isl3886usb (-2)! p54usb: probe of 2-3:1.0 failed with error -2 usbcore: registered new interface driver p54usb
The kern.log shows that the driver p54usb is loaded which depends on the firmware file ‘isl3886usb’. isl stands for Intersil, which made the prism chipset for the adapter. The firmware file is required by the driver but cannot be loaded, that’s why the driver cannot communicate with the adapter. Talking about firmware, this is not firmware to flash your device like firmware for routers or accesspoints do, this firmware is loaded on your linux installation and does not affect the device itself. The required firmware must be installed by installing a package which contains the firmware.
Installing the firmware
To make the card work you have to install the package ‘linux-firmware-nonfree’ which contains the required firmware. The package is available in the multiverse repository, which is enabled by default. Installation can be done by a shell command.
$ sudo apt-get install linux-firmware-nonfree Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: linux-firmware-nonfree 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 3,073 kB of archives. After this operation, 7,426 kB of additional disk space will be used. Get:1 http://nl.archive.ubuntu.com/ubuntu/ precise/multiverse linux-firmware-nonfree all 1.11 [3,073 kB] Fetched 3,073 kB in 3s (805 kB/s) Selecting previously unselected package linux-firmware-nonfree. (Reading database ... 167592 files and directories currently installed.) Unpacking linux-firmware-nonfree (from .../linux-firmware-nonfree_1.11_all.deb) ... Setting up linux-firmware-nonfree (1.11) ... $
When the package is installed, the driver won’t load immediately. You can unplug and reconnect the device or restart the system. The first option works fine for me. You should find wireless networks (if available) in your network manager. Also, you can run ‘nm-tool’ to check some information about the network interface. The network interface is named wlan0 (or wlan1 if occupied).
$ nm-tool NetworkManager Tool State: connected (global) - Device: wlan0 ---------------------------------------------------------------- Type: 802.11 WiFi Driver: p54usb State: disconnected Default: no HW Address: 00:30:F1:E8:3C:96 Capabilities: Wireless Properties WEP Encryption: yes WPA Encryption: yes WPA2 Encryption: yes Wireless Access Points HomeNetwork: Infra, 3C:D9:2B:87:44:0C, Freq 2462 MHz, Rate 54 Mb/s, Strength 92 WPA WPA2 Enterprise Accesspoint: Infra, 00:24:FE:03:62:EF, Freq 2437 MHz, Rate 54 Mb/s, Strength 49 WPA2 PublicHotspot: Infra, 3C:D9:2B:87:44:09, Freq 2412 MHz, Rate 54 Mb/s, Strength 32 WPA WPA2 Enterprise
When connecting to a wireless network, the LINK/ACT led will indicate it’s all working.
We’re finished now. Is that all? Yes, installing that package is all there is, have fun!
Additional action when running the live cd
When you started from a live cd you may experience some problems. The package is located in the multiverse repository which is not enabled when running the live cd. If you need the adapter to work in this situation you have to enable the multiverse repository. The easiest way to do this is by the graphical interface. Go to the power icon in the taskbar at the upper-right, option ‘Software Up to Date’, button ‘Settings…’, tab ‘Ubuntu Software’ and enable the multiverse repository. Update the repository information by running ‘sudo apt-get update’. Now you’re ready to install the firmware package as described before.