Linux,无法使 USB WiFi 驱动程序工作或编译

Linux,无法使 USB WiFi 驱动程序工作或编译

我有一个通用的 Ralink 无线 USB 适配器,以及全新安装的 Linux Mint 17(Cinnamon)。我希望能够使用适配器连接到我的 wifi,这样我就可以释放一些散落在各处的 cat5 电缆。

不幸的是,默认情况下它不起作用,我无法从源代码进行编译(它有错误)。我很抱歉发了这么长的帖子,但这是我在过去几周尝试过的精简版。

为了节省时间,我将在下面粘贴相关的系统信息。首先,uname -a

Linux stutter 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

这是 lsusb 的输出;显示设备已被识别。设备 5。

Bus 001 Device 005: ID 148f:7601 Ralink Technology, Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 002 Device 002: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

iwconfig 的输出;显示它未被用作 wifi 设备。我知道此列表中应该有一个“ra0”。eth0 和 eth1 都是我主板上的有线端口 - 它有两个。

eth0      no wireless extensions.
eth1      no wireless extensions.
lo        no wireless extensions.

接下来是 lsmod,显示已加载正确的内核模块。为简洁起见,它被精简了。

rt2800usb              27034  0 
rt2x00usb              20742  1 rt2800usb
rt2800lib              89076  1 rt2800usb
rt2x00lib              55307  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              626489  3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211              484040  2 mac80211,rt2x00lib
crc_ccitt              12707  1 rt2800lib
bnep                   19624  2 
rfcomm                 69160  0 
bluetooth             395423  10 bnep,rfcomm
....

所以它应该可以立即使用,但事实并非如此。我的下一个想法是从源代码编译。我转到 2870 下载页面 (http://www.mediatek.com/en/downloads/rt2870usbrt2870rt2770/),我相信这是该芯片组所针对的确切版本 - 虽然我没有该设备的手册,所以我不太确定。无论如何,我下载了软件包,对其进行了扩充,并在 os/linux/config.mk 中修改了以下几行:

HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

接下来我确保我已获得所有正确的包裹

sudo apt-get install build-essential linux-headers-$(uname -r) linux-firmware

然后回到顶层,尝试“make”。没过多久我就遇到了第一个错误:

/home/knetic/Downloads/DPO_RT5572_LinuxSTA_2.6.1.3_20121022/os/linux/../../os/linux/rt_linux.c:1141:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
   pOSFSInfo->fsuid = current_fsuid();
                    ^
/home/knetic/Downloads/DPO_RT5572_LinuxSTA_2.6.1.3_20121022/os/linux/../../os/linux/rt_linux.c:1142:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
   pOSFSInfo->fsgid = current_fsgid();
                    ^
make[2]: *** [/home/knetic/Downloads/DPO_RT5572_LinuxSTA_2.6.1.3_20121022/os/linux/../../os/linux/rt_linux.o] Error 1
make[1]: *** [_module_/home/knetic/Downloads/DPO_RT5572_LinuxSTA_2.6.1.3_20121022/os/linux] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-24-generic'
make: *** [LINUX] Error 2

他们网站上的每个源代码版本都存在这些错误,没有一个是为我构建的。我承认我可能会尝试自己修补它们,但我宁愿购买一台带有实际工作的驱动程序的新设备,而不是试图用胶带把这个粘在一起。

所以现在我陷入了困境——我的库存驱动程序似乎不相信我的设备是为他们准备的,从源代码编译似乎需要大量的补丁,而且似乎没有其他人遇到这些问题(每次搜索似乎都会吸引一大群能够从源代码编译的人)。

我非常感谢您的帮助,我知道这是一个包含大量信息的小众问题。

答案1

供应商+产品代码148f:7601lsusb 显示的信息已经足够了。通过查找维基百科,我们可以看到您的加密狗是 TP-Link TL-WN727N v4,或深圳奥金瑞科技 GWF-7A05。无论如何,rt2800usb 不是合适的驱动程序:命令

 # modinfo rt2800usb | grep 148F | grep 7601

在已加载 rt2800usb 的驱动程序中搜索您的加密狗的供应商和产品代码,没有输出。因此您需要不同的驱动程序。这解释了为什么即使成功编译和安装了 rt2800usb,您的接口仍未出现。

同一 Wikidevi 页面建议mt7601u_sta最有可能是 Linux 模块。你可以从这里。这肯定是你要找的驱动程序:在文件中DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/common/rtusb_dev_id.c,你可以找到以下行

          {USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */

这将出现在输出中modinfo mt7601u_sta

然而,好消息还没有结束:它无法在我的 Arch 或 Debian Jessie 系统上编译。此外,谷歌搜索后发现没有人能够在最近的内核上成功编译它。我看过 3.12 到 3.15 的报告。

为了安全起见,我还检查了最新的移植版本,这里,支持此卡。他们不支持,您可以通过编译和安装 wifi defconfig 自行检查,然后在新铸造的 rt2800usb 上尝试 modinfo。没有运气。

答案2

这个问题通过 ”从类型“kgid_t”分配给类型“int”时类型不兼容",尝试安装固件-ralink构建之前(如有疑问,请务必搜索编译器错误消息):

sudo apt-get install firmware-ralink

如果失败了,那么请按照最后的想法,购买已知默认与 Mint 兼容的设备(无论如何您可能都希望这样做,这样您就不必每次获取内核更新或设置新系统时都经历这一过程)。

相关内容