好吧,我知道这不会很简单,但我真的很想让它发挥作用。
大约 18-24 个月前,我的华硕 EEE 901 上网本工作正常 - 运行 Ubuntu - 我按照更新管理器的建议让它“升级”。无线网络随后失败了——并且在忙于其他事情的同时,摆弄并“软管”了操作系统的安装。上网本一直放在柜子里,直到这个周末......当我使用 /dev/zero 覆盖驱动器时 - 然后安装了 Linux Mint 12 的全新副本。
在全新安装时,我仍然遇到 Wi-Fi 问题,但其他一切都很好。
在默认的 Linux Mint 安装中,问题的第一个迹象来自 /var/log/syslog 中的此条目
... [5.048933] rt2800pci 0000:01:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
... [5.048980] rt2800pci 0000:01:00.0: setting latency timer to 64
... [5.062119] phy0 -> rt2800_init_eeprom: Error - Invalid RF chipset detected.
... [5.062134] phy0 -> rt2x00lib_probe_dev: Error failed to allocate device
... [... ] rt2800pci 0000:01:00.0: PCI INT A disabled
根据网上找到的一些建议,我通过在 /etc/modprobe.d/rt2800.conf 中输入以下内容将 rt2800pci 列入黑名单
blacklist rt2800pci
blacklist rt2800lib
这让我可以正常安装 - 但没有 Wi-Fi 支持。然后我开始寻找正确的驱动程序。 lshw 的相关输出是:
*-network UNCLAIMED
description: Network controller
product: RT2800 802.11n PCI
vendor: Ralink corp
physical id: 0
bus info: pci@0000:01:00.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list
configuration: latency=0
resources: memory:fbef0000-febfffff
如果我然后使用 lspci 进一步调查“lspci -vs 01:00.0”
01:00.0 Network controller: Ralink corp. RT2800 802.11n PCI
Subsystem: Ralink corp. Device 2860
Physical Slot: eeepc-wifi
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at febef0000 (32-bit, non-prefetchable) [size=64K]
Kernel modules: rt2800pci
在线搜索表明,我需要使用 rt2860sta 驱动程序,而不是对 2860 设备使用 rt2800pci 驱动程序。我没有与通用内核一起安装其中之一。
我参观过http://www.ralinktech.com/en/04_support/support.php?sn=501- 并下载“RT2860PCI/mPCI/CB/PCIe(RT2760/RT2790/RT2860/RT2890)” - 并按照 README_STA 中的说明进行操作。
当我使用 insmod 安装新驱动程序时,我报告了 ra0 设备...并且网络管理器识别出上网本具有无线功能。不幸的是,这就是事情崩溃的地方。网络管理器没有找到任何本地基础设施模式接入点...当我尝试通过明确给出其名称来连接到一个接入点时...无法建立连接 - 并且 ifconfig 给出了一些令人担忧的输出。 .. Mac 地址看起来是假的 00:00:ff:ff:ff:ff - 以及数千个“溢出”。
那么...问题:Linux 是否仍然支持我的 Asus EEE 901 中的 Ralink 驱动程序?如果是这样,哪个是正确的驱动程序 - 以及如何配置该驱动程序?
要求
“lspci -n”的输出(我不知道这有什么用......)
00:00.0 0600: 8086:27ac (rev 03)
00:02.0 0300: 8086:27ae (rev 03)
00:02.1 0380: 8086:27a6 (rev 03)
00:1b.0 0403: 8086:27d8 (rev 02)
00:1c.0 0604: 8086:27d0 (rev 02)
00:1c.1 0604: 8086:27d2 (rev 02)
00:1c.2 0604: 8086:27d4 (rev 02)
00:1c.3 0604: 8086:27d6 (rev 02)
00:1d.0 0c03: 8086:27c8 (rev 02)
00:1d.1 0c03: 8086:27c9 (rev 02)
00:1d.2 0c03: 8086:27ca (rev 02)
00:1d.3 0c03: 8086:27cb (rev 02)
00:1d.7 0c03: 8086:27cc (rev 02)
00:1e.0 0604: 8086:2448 (rev e2)
00:1f.0 0601: 8086:27b9 (rev 02)
00:1f.2 0101: 8086:27c4 (rev 02)
00:1f.3 0c05: 8086:27da (rev 02)
01:00.0 0280: 1814:0601
04:00.0 0200: 1969:1026 (rev b0)
如果我返回到默认配置 - 没有任何内容被列入黑名单,并运行“lsmod | grep rt”,我会得到以下结果:
parport_pc 32114 0
rt2800pci 18340 0
rt2800lib 48717 1 rt2800pci
crc_ccitt 12595 1 rt2800lib
rt2x00pci 14202 1 rt2800pci
rt2x00lib 48114 3 rt2800pci,rt2800lib,rt2x00pci
mac80211 272785 3 rt2800lib,rt2x00pci,rt2x00lib
cfg80211 172392 2 rt2x00lib,mac80211
eeprom_93cx6 12653 1 rt2800pci
parport 40930 3 parport_pc,ppdev,lp
从这里我没有看到任何明显的冲突 - 关于还有什么值得欢迎的建议。
更多信息...
我选择用螺丝刀拆开我的 901,并取下 Wi-Fi 卡。在它的背面,有一个标签表明它根本不是 2800 系列,而是 RT2700E。也许,如果 Linux 错误地将其检测为 2800 系列,这就是我的麻烦的根源?
答案1
从内核3.0开始临时驱动程序 rt2860sta 被主线驱动程序 rt2800pci 取代,并且临时驱动程序被删除。
我的 901 很高兴使用该rt2800pci
驱动程序。确保没有启用其他驱动程序并与其冲突。
答案2
我将转录我找到的解决方案,看看是否有帮助(http://www.linuxformat.com/forums/viewtopic.php?p=87981)
下载 RT2860PCI/mPCI/CB/PCIe(RT2760/RT2790/RT2860/RT2890) 驱动程序http://www.ralinktech.com/en/04_support/support.php?sn=501到您的主文件夹:
2010_07_16_RT2860_Linux_STA_v2.4.0.0.tar.bz2
启动终端并安装build-essential
和linux-headers
包(如果您还没有安装):
sudo apt-get install build-essential linux-headers-generic
现在,在您的主文件夹中解压 Ralink 软件包:
tar -xvjf 2010_07_16_RT2860_Linux_STA_v2.4.0.0.tar.bz2
2010_07_16_RT2860_Linux_STA_v2.4.0.0
现在,您的主目录中应该有一个名为的文件夹。
编辑2010_07_16_RT2860_Linux_STA_v2.4.0.0/os/linux/config.mk
文件以允许网络管理员管理该卡:
gedit ~/2010_07_16_RT2860_Linux_STA_v2.4.0.0/os/linux/config.mk
找到这些行:
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
并将两行中的“n”更改为“y”,这样它们现在显示为:
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
并保存文件。
现在进入该2010_07_16_RT2860_Linux_STA_v2.4.0.0
目录,以root身份编译并安装驱动程序:
cd ~/2010_07_16_RT2860_Linux_STA_v2.4.0.0
sudo su
make && make install
这里重要的是不要单独使用“sudo”,而是使用“sudo su”,因为由于某种原因使用 sudo 安装脚本无法创建必要的文件和文件夹。
现在,仍然是 root modprobe 驱动程序模块:
modprobe rt2800sta
花点时间创建 ra0 设备节点,网络管理器现在应该能够显示您所在区域内所有可见的无线网络,同时您可以停止 root。
exit
确保 ra0 已启动并按预期运行:
iwconfig
希望您的无线卡现在可以工作...使用网络管理器设置您的 WEP/WPA(2) 密钥,并连接到您的网络。
为了确保模块在重新启动后加载,请将其添加到 /etc/modules 文件中:
sudo echo rt2800sta >> /etc/modules