During the conversion process from Windows to GNU/Linux, I suffered some unexpected and unpleasant configuration problems, related to the WIFI network manager, energy manager and, the most important one, the wireless network card module (driver).
Foreword: computer model and configuration.
- Device: LG P430 laptop. Wireless WIFI card Ralink RT3090
- OS: Ubuntu 11.10 Oneiric Ocelot 32 bits
Once installed the OS, the wireless network manager does not recognize the wireless interface, showing a message “no wireless interface”. Linux (3.0.15) uses the rt2800pci module, but the wireless card is unabled.
Using some general commands (through terminal) we obtain additional information about the problem, as seen below:
dmesg | grep rt2 (shows bootlog, filtering to obtain information about rt2800 module):
[ 51.443207] phy0 -> rt2800_wait_wpdma_ready: Error – WPDMA TX/RX busy, aborting.
[ 51.443220] phy0 -> rt2800pci_set_device_state: Error – Device failed to enter state 4 (-5).
[ 53.102225] phy0 -> rt2800_wait_wpdma_ready: Error – WPDMA TX/RX busy, aborting.
[ 53.102238] phy0 -> rt2800pci_set_device_state: Error – Device failed to enter state 4 (-5).
[ 54.941117] phy0 -> rt2800_wait_wpdma_ready: Error – WPDMA TX/RX busy, aborting.
[ 54.941130] phy0 -> rt2800pci_set_device_state: Error – Device failed to enter state 4 (-5).
rfkill list (shows possible wireless blockings)
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
iwconfig (wireless network configuration)
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
lshw -C network (lists hardware, filtering network devices)
description: Wireless interface
logical name: wlan0
The last command shows the main problem. as we can see, Ubuntu boots turning WIFI interface off, and this restriction is what we need to erase. That is the truly problem, because this operation is harder than expected.
Due to this problem, in addition to Ubuntu’s energy manager configuration, I have been forced to fix the trouble more than necessary to know that there is no “standard procedure” to fix it and make it work properly. However, below you can see some possible ideas to try:
- Blacklist (sudo gedit /etc/modprobe.d/blacklist.conf) default wireless card modules (each one in one row of the textfile: blacklist rt2800usb rt2800lib rt2x00usb rt2x00lib), reboot and see what happens.
- Disconnect interface (sudo ifconfig wlan0 down), reboot, connect (sudo ifconfig wlan0 up) and reboot again.
- Avoid possible blockings that can appear during standard OS boot (sudo gedit /etc/rc.local, and add next line: rfkill unblock).
- Unmount rt2800 (sudo rmmod rt2800pci) and the rest of the rt2 modules, restart y and “remount” (sudo modprobe rt2800pci).
- Install Markus Heberling‘s drivers for the RT3090 card. Download and install through Ubuntu Software Center (note: try both version 1.2.4 and 1.3.7. The first one did not work for me, on the other hand, the other one worked). After the installation, it is necessary to do the first point, so that the Linux kernel uses the new modules during reboot.
- If the rest of the points did not work, try to unblacklist the rt2800 module without removing the last installed module, and reboot.
- Don’t give up, and go on trying, thinking about other possibilities, or mixing the above points. This is the main thinking when you are using and/or configuring a GNU/Linux OS. More than once, after rebooting, the network interface just begin to work properly, once I repeated any of this known points, or even without doing any operation (or at least the things that I touched). As Iong as I know, this behavior is something that more people through the Internet has experienced with this network card and module.
It is possible that, once unblocked the wireless network interface, data flux can be slower than expected. Once again, it magically begins to improve its performance just over the time, reaching a quite good level, without reaching high levels, but enough to work.
Maybe in the future, when I discover the way to improve the performance through higher levels, I will be encourage to write again about this problem and (I hope) the complete solution. Maybe the path will be oriented through using new Markus Heberling module versions, or downloading, configuring and compilation of the official Ralink drivers.