如何让 Ralink RT3290 无线网卡正常工作?

use*_*110 23 wireless

我刚刚在华硕 X401U 上安装了 Ubuntu 12.10,安装后没有无线连接列表。我在 HP 上安装没有这个问题。我可以做什么来启用 Wifi?

07:00.0 Network controller [0280]: Ralink corp. Device [1814:3290]
Run Code Online (Sandbox Code Playgroud)

Lui*_*ado 35

有几个指南以同样的方式讲述。像这个来源这个来源错误报告这样的指南提到了让这个无线网卡在几种类型的笔记本电脑上工作的一些程序。

有些案例提到降级到 12.04,然后为其安装特定的 3.6 内核版本,其他案例提到升级到 13.04 并安装 3.9 内核版本。甚至还有另一种情况,它提到用户从官方网站下载驱动程序并逐步指导如何安装它。

我将提到几种执行此操作的方法,所有这些方法都涉及下载驱动程序、编译它并确保其正常工作。已经注意到,在 3.9 内核版本中,无线网卡工作正常,因此在 13.04 与 backports 或 13.10 中应该解决此问题。

因此,这里有几种方法可以让您的 Ralink RT3290 无线网卡在 12.04 及更高版本中工作(并非所有方法都有效,因此请尝试寻找最适合您计算机的方法):

由于您的供应商 ID 是1814:3290,这意味着您拥有 Ralink RT3290 无线网卡。对于这种情况,我们(连接有线电缆后):

  1. 在执行以下步骤时,将有线电缆连接到计算机以暂时连接 Internet。

  2. 打开终端并执行以下行以安装编译您自己的无线驱动程序所需的一切:

    sudo apt-get update && sudo apt-get install build-essential linux-headers-generic
    
    Run Code Online (Sandbox Code Playgroud)

现在,根据您希望如何继续,请遵循以下指南之一:

不是内核 4.X 的官方驱动程序

如果以上在 Kernels 4.X 上对您不起作用,我能够按照此来源测试的解决方案是

请从这里这里下载更新的驱动程序(非常感谢 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
Run Code Online (Sandbox Code Playgroud)

现在在某些情况下,您需要为无线驱动程序启用接口(因为它不会自动打开接口),然后重新启动网络服务。像这样的东西:

sudo ifconfig WIRELESSCARD up
sudo service network-manager restart
Run Code Online (Sandbox Code Playgroud)

所以一个例子是:

sudo ifconfig eno1 up
sudo service network-manager restart
Run Code Online (Sandbox Code Playgroud)

我建议将这 2 行放在/etc/rc.local“exit 0”行上方,这样它就会自动打开界面。

官方网站指南

  1. 转到Mediatek并下载适用于 LinuxRalink RT3290 驱动程序MediaTek 在将链接移动到下载并且没有重定向方面做得很好。这是所有可下载固件的新链接,但你猜怎么着,他们从中删除了 RT3290。去联发科;)

    感谢其他也遇到问题并分享了他们的资源的人,这里列出了所有可用的下载链接,供您在 Mediatek 决定帮助 Linux 并开放时使用:

  2. 将文件重命名为 ,2012_0508_RT3290_Linux_STA_v2.6.0.0.tar.bz2因为 Mediatek 在确保文件正常工作方面做得很好。

  3. 解压缩文件,它应该创建一个名为的文件夹 DPO_RT3290_LinuxSTA_V2600_20120508

  4. 转到DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/并编辑文件config.mk

  5. 在第 31 行,您应该找到变量HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n。将其更改为 

    HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
    
    Run Code Online (Sandbox Code Playgroud)

      并保存文件。

  6. 转到您的主要解压缩文件夹(它应该是DPO_RT3290_LinuxSTA_V2600_20120508文件夹)并键入:

    make
    sudo make install
    
    Run Code Online (Sandbox Code Playgroud)
  7. 如果一切编译正确,请执行以下操作:

    modprobe rt3290sta
    
    Run Code Online (Sandbox Code Playgroud)
  8. 如果第 7 步运行没有任何问题,我们将模块添加到每次启动时加载的模块列表中:

    sudo -H gedit /etc/modules
    
    Run Code Online (Sandbox Code Playgroud)

     并在文件末尾添加一行,表示rt3290sta. 保存并退出。

投递箱指南

(不推荐,因为您要从 Dropbox 帐户下载不受信任的 tarball。

  1. 下载源驱动程序:

    wget http://dl.dropbox.com/u/11876059/DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)

    然后我们解压文件

    tar -xvf DPO_RT3290_LinuxSTA_V2600_20120508.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)
  2. 进入新创建的文件夹:

    cd ~/DPO_RT3290_LinuxSTA_V2600_20120508
    
    Run Code Online (Sandbox Code Playgroud)

    然后我们开始编译过程

    make
    sudo make install
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我们测试一下驱动是否正确编译安装

    sudo modprobe rt3290sta
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果第 3 步运行没有任何问题,我们然后将该模块添加到每次启动时加载的模块列表中:

    sudo -H gedit /etc/modules
    
    Run Code Online (Sandbox Code Playgroud)

    并在底部添加一行显示rt3290sta. 保存并退出。

额外指南

一些用户提到了额外的步骤。这可能适用于您,也可能不适用于您。如果您觉得系统不工作,也许以下几点可以帮助您:

  • 打开config.mk文件时,不仅HAS_NATIVE_WPA_SUPPLICANT要将更改为 的值y,而且HAS_WPA_SUPPLICANT如果它有n. 在我的情况下,它有y,但应该检查以确保 WPA_SUPPLICANT 都设置为 `y。

  • 将冲突的无线驱动程序列入黑名单。请执行下列操作:

    sudo -H gedit /etc/modprobe.d/blacklist.conf
    
    Run Code Online (Sandbox Code Playgroud)

    添加以下几行(首先确保它们不存在):

    #Wireless drivers conflicting with rt3562sta  
    blacklist rt2800pci  
    blacklist rt2x00pci
    
    Run Code Online (Sandbox Code Playgroud)
  • 更新 initramfs: sudo update-initramfs -u

  • 如果您在 Ubuntu 13.04 或 Ubuntu 13.10(可能还有更高版本)上编译驱动程序时遇到问题,那么这可能是因为 Linux 内核的更改导致与驱动程序代码不兼容。这可能可以通过打开来解决

    gedit os/linux/pci_main_dev.c
    
    Run Code Online (Sandbox Code Playgroud)

    并在顶部附近的“#include”之后添加以下内容

    #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
    #define __devexit
    #define __devinit
    #define __devinitdata
    #endif
    
    Run Code Online (Sandbox Code Playgroud)

    然后更改文件中说的部分

    #if LINUX_VERSION_CODE >= 0x20412 
    remove:     __devexit_p(rt2860_remove_one), 
    #else 
    remove:     __devexit(rt2860_remove_one), 
    #endif 
    
    Run Code Online (Sandbox Code Playgroud)

    #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
    
    Run Code Online (Sandbox Code Playgroud)

这有望解决编译器错误。返回 DPO_RT3290_LinuxSTA_V2600_20120508 目录,按照上述说明操作。