How do I get a Ralink RT3290 wireless card working?
I just installed Ubuntu 12.10 on an ASUS X401U, and after installation there is no list of wireless connections. I didn't have that problem with an installation on HP. What I can do to enable Wifi?
07:00.0 Network controller [0280]: Ralink corp. Device [1814:3290]
Solution 1:
There are several guides that speak of the same way. Guides like this source, this source or the bug report mention some procedures to get this Wireless card working on several types of laptops.
Some cases mention downgrading to 12.04 and then installing a specific 3.6 kernel version for it, others mention upgrading to 13.04 and installing the 3.9 kernel version. And even another case where it mentions the user to download the drivers from the official site and do a step by step guide on how to install it.
I will mention several ways of doing it, all of which involve downloading the driver, compiling it and making sure it works. It has been noted that in the 3.9 kernel version, the wireless card is working correctly, so in 13.04 with backports or 13.10 this issue should be resolved.
So here are several ways you can get your Ralink RT3290 wireless card working in 12.04 and above (Not all methods will work, so try to look for the one that works best for your computer):
Since your vendor id is 1814:3290 it means you have a Ralink RT3290 wireless card. For that case we (After connecting the wired cable):
Connect a wired cable connection to the computer to have Internet connection for the moment while you do the steps below.
-
Open a terminal and execute the following line to install everything needed to compile your very own wireless drivers:
sudo apt-get update && sudo apt-get install build-essential linux-headers-generic
Now, depending on how you wish to proceed, follow one of the guides below:
NOT OFFICIAL DRIVERS FOR Kernel 4.X
If the above does not work for you on Kernels 4.X, the solution I was able to test following this source was
PLease Download the Updated Driver (Big Thanks to Jim Colaco) From Here or Here. This was tested on Ubuntu 16.04 and 16.10.
sudo tar -xvf rt3290sta-2.6.0.0.dkms.tar -C /usr/src
sudo dkms install -m rt3290sta -v 2.6.0.0 --force
sudo reboot
Now on some cases, you will need to enable the interface for the wireless driver (Because it will not bring the interface up automatically) and then restart the network service. Something like this:
sudo ifconfig WIRELESSCARD up
sudo service network-manager restart
So an example would be:
sudo ifconfig eno1 up
sudo service network-manager restart
I recommend putting this 2 lines inside /etc/rc.local
above the "exit 0" line so it brings the interface up automatically.
OFFICIAL SITE GUIDE
-
Go to Mediatek and download the Ralink RT3290 Driver for LinuxMediaTek did a fine job on moving the link to download and not having a redirect for it. Here is the new Link for all Downloadable Firmware but guess what, they removed RT3290 from it. Go Mediatek ;)Thanks to others that also had the problem and shared their sources, here is a list of all available Download links for you to use while Mediatek decides to help Linux and open up:
- http://www.mediafire.com/download/l3zoch2y1hbcali/RT3290.tar.gz
- http://dl.dropbox.com/u/11876059/DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
Rename the file to
2012_0508_RT3290_Linux_STA_v2.6.0.0.tar.bz2
because Mediatek did a great job on making sure the file works correctly.Extract the file and it should create a folder named
DPO_RT3290_LinuxSTA_V2600_20120508
Go to
DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/
and edit the file config.mk-
On line 31 you should find the variable
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
. Change it toHAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
and save the file.
-
Go to your main extracted folder (It should be the
DPO_RT3290_LinuxSTA_V2600_20120508
folder) and type:make sudo make install
-
If everything compiled correctly do the following:
modprobe rt3290sta
-
If step 7 runs without any problems, we add the module to the list of modules to loaded on every boot:
sudo -H gedit /etc/modules
and add a line at the end of the file that says
rt3290sta
. Save and exit.
DROPBOX GUIDE
(Not recommended, as you're downloading an untrusted tarball off of a Dropbox account.
-
Download the source driver:
wget http://dl.dropbox.com/u/11876059/DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
and we then decompress the file
tar -xvf DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
-
Go inside the newly created folder:
cd ~/DPO_RT3290_LinuxSTA_V2600_20120508
and we start the compiling process
make sudo make install
-
We then test to see if the driver is correctly compiled and installed
sudo modprobe rt3290sta
-
If step 3 runs without any problems we then add the module to the list of modules to loaded upon every boot:
sudo -H gedit /etc/modules
and add a line at the bottom that says
rt3290sta
. Save and exit.
EXTRA GUIDE
Some users mention additional steps. This might or not apply to you. If you feel the system is not working, maybe one of the points below can help you along the way:
When opening the
config.mk
file, do not only change theHAS_NATIVE_WPA_SUPPLICANT
to a value ofy
, but also do it withHAS_WPA_SUPPLICANT
in case it hasn
. In my case it had y but it should be checked to make sure both WPA_SUPPLICANT are set to `y.-
Blacklisting conflicting wireless drivers. Do the following:
sudo -H gedit /etc/modprobe.d/blacklist.conf
Add the following lines (Make sure they are not there in the first place):
#Wireless drivers conflicting with rt3562sta blacklist rt2800pci blacklist rt2x00pci
Update initramfs:
sudo update-initramfs -u
-
If you have trouble compiling the driver on Ubuntu 13.04 or Ubuntu 13.10 (and perhaps later versions as well), then this may be because of a change to the Linux kernel creating an incompatibility with the driver code. This can possibly be fixed by opening
gedit os/linux/pci_main_dev.c
and adding the following after the "#include " near the top
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) #define __devexit #define __devinit #define __devinitdata #endif
then change the portion of the file which says
#if LINUX_VERSION_CODE >= 0x20412 remove: __devexit_p(rt2860_remove_one), #else remove: __devexit(rt2860_remove_one), #endif
to
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) remove: rt2860_remove_one, #else #if LINUX_VERSION_CODE >= 0x20412 remove: __devexit_p(rt2860_remove_one), #else remove: __devexit(rt2860_remove_one), #endif #endif
This will hopefully solve the compiler error. Return to the DPO_RT3290_LinuxSTA_V2600_20120508 directory and follow the instructions as above.
Solution 2:
For those of you who couldn't get WiFi to work even after following the above steps (including me), this is a simple and much welcome fix.
The problem is that the kernel has problems supporting the driver, fortunately, the latest stable kernel release fixes the bug and the WiFi works with the default drivers.
To download the 32-bit kernel packages
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-headers-3.12.0-031200-generic_3.12.0-031200.201311031935_i386.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-headers-3.12.0-031200_3.12.0-031200.201311031935_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-image-3.12.0-031200-generic_3.12.0-031200.201311031935_i386.deb
To download the 64-bit kernel packages
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-headers-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-headers-3.12.0-031200_3.12.0-031200.201311031935_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-image-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb
To install the packages
sudo dpkg -i linux-headers-3.12.0-*.deb linux-image-3.12.0-*.deb
sudo update-grub
sudo reboot
And that should do it.
In case if you want to remove the kernel
sudo apt-get purge linux-image-3.12.0-* linux-headers-3.12.0-*