我有一个通用的 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 兼容的设备(无论如何您可能都希望这样做,这样您就不必每次获取内核更新或设置新系统时都经历这一过程)。