小米随身WiFi/360随身WiFi二代/小度wifi openSUSE 无线网卡/无线AP模式配置

小米随身 WiFi / 360 随身 WiFi 二代 / 小度 wifi 用的都是 ralink 的 MT7601U,所以可以一并解决

A. 无线网卡
官方有开源的 STA 驱动 STA 无线网卡驱动 ,下载解压 (解压后路径不要包含中文):

  1. 在 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913\DPO_MT7601U_LinuxSTA_3.0.0.4_20130913\common\rtusb_dev_id.c 中,
    “ {USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */” 行下添加设备 id:

    #ifdef MT7601U
    {USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 /
    {USB_DEVICE(0x148f,0x7601)}, /
    MT 6370 /
    {USB_DEVICE(0x2955,0x0001)}, /
    XiaoDu Wifi /
    {USB_DEVICE(0x2955,0x1001)}, /
    XiaoDu Wifi /
    {USB_DEVICE(0x148f,0x760b)}, /
    360 Wifi 2*/
    {USB_DEVICE(0x2717,0x4106)}, /* XiaoMi wifi /
    #endif /
    MT7601U */

如果不确定自己的设备 id 可以用 lsusb 命令查看,一般都已经在上面代码中列出来了

  1. DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/rt_linux.c 1121 行~1122 行,改为:

         pOSFSInfo->fsuid = current_fsuid().val;                                                                                                                                                                    
         pOSFSInfo->fsgid = current_fsgid().val;
    

这里改动是为了匹配较新的内核。

  1. 驱动编译需要解决依赖 kernel-devel, 使用 yast 或 zypper 时注意选择和自己当前内核匹配的版本。

  2. 到 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913 目录下 make,
    然后 sudo make install
    最后 sudo modprobe mt7601Usta

  3. 用 NetworkManager 管理无线网络即可。

B. 无线 AP
这部分参考了 blog.csdn.net/sumang_87/article/details/38168877 ,感谢原作者发布带 AP 功能的驱动源码,并且极大简化了编译配置流程,但是在 openSUSE 上需要修改一些配置。
原作者发布 github.com/eywalink/mt7601u
楼主 fork 以后针对 openSUSE 做了一点点优化 github.com/wiliamwalace/mt7601u
** update: ** 以上驱动仅适用于 kernel 3.1x, 对于 kernel 4.12, 可以使用楼主链接的 move_to_42.1 分支。

  1. 编译源码,上面官方源码能编译通过的话,这里一般也不会有问题,直接运行 build 脚本即可

    sudo ./miwifi_build.sh

  2. 配置 DHCP 服务
    2.1 安装 dhcp-server

    sudo zypper install dhcp-server

2.2 编辑 /etc/dhcpd.conf, 在“# This is a very basic subnet declaration”行后添加如下语句:

subnet 192.168.199.0 netmask 255.255.255.0 {
  range 192.168.199.10 192.168.199.20;
  option routers 192.168.199.1;
  option domain-name-servers YOUR-DNS-SERVER;
}

YOUR-DNS-SERVER 部分请用自己合适的 DNS 服务器 IP 代替

2.3 编辑 /etc/sysconfig/dhcpd, 把

DHCPD_INTERFACE=""

改为

DHCPD_INTERFACE="ra0"

2.4 建立租约文件 sudo touch /var/lib/dhcp/db/dhcpd.leases

  1. 加载驱动
    楼主优化版直接 sudo ./miwifi_work.sh
    原作者版请删除 miwifi_work.sh 中全部 iptables 语句后再执行。
    这一步完成以后一个无线子网就已经搭建起来了,手机什么的移动设备都可以愉快连接,但还上不了互联网,还差最后一步。
    ** update: ** AP 驱动似乎和 NetworkManager 有冲突,会导致 NetworkManager 服务退出且无法启动,所以桌面的网络图标如果消失了,莫方。

  2. 设置 ip 转发
    openSUSE 使用 SuSE firewall 管理 iptables,所以直接调用 iptables 修改设置是无效的,不过折腾了半天发现 SuSE firewall 的设置其实更简单:
    yast2 打开防火墙设置,在界面 (interfaces) 栏添加自定义 (custom) 一项:在内部区域 (internal zone) 那里填入 any,其余 2 个选项留空。
    在 Masquerading 栏,把 Masquerade Network 勾上,保存退出。DONE!
    ** update: **

  3. leap 42.1 的 SuSE firewall 已经不支持内部区域填 any 字串,应填 ra0;

  4. 网络的外部出口需要为以太网连接,不能为无线,否则上不了外网.

  5. 设置 WiFi(终于!)
    如果一切顺利,你会搜到一个
    网络名 MiWiFi_SuMang
    密码 52xiaomi

如要修改为自定义 SSID 和密码
方法一:修改 mt7601u/etc/Wireless/RT2870AP/RT2870AP.dat ,重新编译。。
方法二:直接修改 /etc/Wireless/RT2870AP/RT2870AP.dat

到此就基本实现了随身 WiFi 的全部功能, Enjoy~

PS: 测试系统 openSUSE 13.2; kernel 3.16.7-21-desktop, openSUSE Leap 42.1; kernel 4.12.31-default
以上配置开机后默认是 STA 模式,sudo 运行 miwifi_work.sh 即可切换为 AP 模式,另外楼主链接中的 miwifi_ap2sta.sh 可用于 AP 模式向 STA 模式转换,unload.sh 可用于卸载所有 mt7601u 相关模块。

1赞

实用的教程贴 QAQ

!](http://c.hiphotos.baidu.com/image/pic/item/d788d43f8794a4c2673d7d8406f41bd5ad6e3906.jpg)

可以看到我的路由的 SSID,连接的时候就报图上的这个错误!无线网卡在我这里是鸡肋… :sweat:

我测试用的是 GNOME,STA 模式下 NetworktManager 没有经过任何配置就连上了外界路由。

knetworkmanager 好像问题是要比 gnome 的多一些 —— 如果是这样的话,可能你不论用什么无线网卡都会这样……