问题描述
我刚刚在ASUS X401U上安装了Ubuntu 12.10,安装后没有无线连接列表。我在HP上的安装没有问题。我可以做些什么来启用Wifi?
07:00.0 Network controller [0280]: Ralink corp. Device [1814:3290]
最佳办法
有几本指南是用同样的方式讲的。诸如this source,this source或bug report之类的指南提到了使此无线卡在几种笔记本电脑上都能使用的一些步骤。
有些案例提到降级到12.04,然后为其安装特定的3.6内核版本,另一些案例提到升级到13.04,并安装3.9内核版本。甚至还有提到用户从官方站点下载驱动程序并就如何安装进行逐步指导的情况。
我将提到几种实现方法,所有这些方法都涉及下载驱动程序,对其进行编译并确保其正常工作。已经注意到,在3.9内核版本中,无线网卡可以正常工作,因此在具有反向端口或13.10的13.04中应解决此问题。
因此,有以下几种方法可以使Ralink RT3290无线卡在12.04及更高版本中工作(并非所有方法都可以,因此请尝试寻找最适合您的计算机的方法):
由于您的供应商ID为1814:3290,这意味着您拥有Ralink RT3290无线网卡。对于这种情况,我们(在连接有线电缆之后):
-
执行以下步骤时,暂时将有线电缆连接到计算机以建立Internet连接。
-
打开终端并执行以下行,以安装编译自己的无线驱动程序所需的一切:
sudo apt-get update && sudo apt-get install build-essential linux-headers-generic
现在,根据您的操作方式,遵循以下指南之一:
内核4.X的非官方驱动程序
如果以上方法不适用于您在Kernels 4.X上使用的功能,那么我能够按照以下来源测试的解决方案是
请从Here或Here下载更新的驱动程序(Big Thanks to Jim Colaco)。这已在Ubuntu 16.04和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
现在在某些情况下,您将需要为无线驱动程序启用接口(因为它不会自动启动接口),然后重新启动网络服务。像这样:
sudo ifconfig WIRELESSCARD up
sudo service network-manager restart
因此,一个例子是:
sudo ifconfig eno1 up
sudo service network-manager restart
我建议将这2行放在“退出0”行上方的/etc/rc.local
内,以便它自动启动接口。
官方网站指南
-
转到Mediatek并下载Ralink RT3290 Driver for Linux MediaTek在移动链接下载并没有重定向的方面做得很好。这是所有Downloadable Firmware的新链接,但您猜怎么着,他们从中删除了RT3290。转到Mediatek;)感谢其他也遇到问题并共享其资源的人,以下列出了所有可用的下载链接,供您在Mediatek决定帮助Linux并开放时使用:
-
将文件重命名为
2012_0508_RT3290_Linux_STA_v2.6.0.0.tar.bz2
,因为Mediatek在确保文件正常工作方面做得很好。 -
解压缩文件,它将创建一个名为
DPO_RT3290_LinuxSTA_V2600_20120508
的文件夹 -
转到
DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/
并编辑文件config.mk -
在第31行,您应该找到变量
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
。更改为HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
并保存文件。
-
转到提取的主文件夹(应该是
DPO_RT3290_LinuxSTA_V2600_20120508
文件夹),然后键入:make sudo make install
-
如果一切编译正确,请执行以下操作:
modprobe rt3290sta
-
如果步骤7顺利运行,我们将模块添加到每次引导时要加载的模块列表中:
sudo -H gedit /etc/modules
并在文件末尾添加一行
rt3290sta
。保存并退出。
DROPBOX指南
(不建议使用,因为您是从Dropbox帐户下载不受信任的tarball。
-
下载源驱动程序:
wget http://dl.dropbox.com/u/11876059/DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
然后解压缩文件
tar -xvf DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
-
进入新创建的文件夹:
cd ~/DPO_RT3290_LinuxSTA_V2600_20120508
然后我们开始编译过程
make sudo make install
-
然后,我们测试以查看驱动程序是否已正确编译和安装
sudo modprobe rt3290sta
-
如果第3步运行没有问题,则将模块添加到每次引导时要加载的模块列表中:
sudo -H gedit /etc/modules
并在底部添加一行
rt3290sta
。保存并退出。
额外指南
一些用户提到其他步骤。这可能适用于您,也可能不适用。如果您认为系统无法正常工作,则以下几点可能会帮助您:
-
打开
config.mk
文件时,不仅要将HAS_NATIVE_WPA_SUPPLICANT
更改为y
的值,而且在具有n
的情况下也要对HAS_WPA_SUPPLICANT
进行更改。在我的情况下,它具有y,但应进行检查以确保将WPA_SUPPLICANT都设置为y。 -
将冲突的无线驱动程序列入黑名单。请执行下列操作:
sudo -H gedit /etc/modprobe.d/blacklist.conf
添加以下行(请确保它们首先不在其中):
#Wireless drivers conflicting with rt3562sta blacklist rt2800pci blacklist rt2x00pci
-
更新initramfs:
sudo update-initramfs -u
-
如果您在Ubuntu 13.04或Ubuntu 13.10(以及更高版本)上编译驱动程序时遇到问题,则可能是由于Linux内核的更改导致与驱动程序代码不兼容。这可以通过打开来解决
gedit os/linux/pci_main_dev.c
并在顶部附近的“ #include”之后添加以下内容
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) #define __devexit #define __devinit #define __devinitdata #endif
然后更改文件的内容
#if LINUX_VERSION_CODE >= 0x20412 remove: __devexit_p(rt2860_remove_one), #else remove: __devexit(rt2860_remove_one), #endif
至
#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
这有望解决编译器错误。返回到DPO_RT3290_LinuxSTA_V2600_20120508目录,并按照上述说明进行操作。
次佳办法
对于即使执行上述步骤后仍无法使WiFi工作的人(包括我),这是一个简单且值得欢迎的解决方案。
问题是内核在支持驱动程序方面存在问题,所幸的是,最新的稳定内核发行版已修复了该错误,并且WiFi可与默认驱动程序一起使用。
下载32位内核软件包
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
下载64位内核软件包
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
安装软件包
sudo dpkg -i linux-headers-3.12.0-*.deb linux-image-3.12.0-*.deb
sudo update-grub
sudo reboot
那应该做到的。
如果您要删除内核
sudo apt-get purge linux-image-3.12.0-* linux-headers-3.12.0-*