小米随身WiFi,Linux下AP热点驱动(开源)

时间:2024-02-21 10:11:25

转自:http://blog.csdn.net/sumang_87/article/details/38168877

前言

这是作者修改后的Linux下的小米随身WiFi驱动,支持Ap模式,开源,同时支持360随身WiFi二代和小度WiFi

注意:
1.这个是Linux下的小米随身WiFi驱动,不是Window和MAC下
2.这个不是STA模式下的可当作无线网卡的驱动,是可当Ap热点模式的驱动
3.这个支持360随身WiFi二代。(rtusb_dev_id.c 里面同样有360的id)(也有童鞋测试了也支持小度wifi)
4.现在最新的版本同时支持ubuntu12.04 和 ubuntu14.04(谢谢housq 的pull request
(内核版本分别是 3.11 和 3.13)(14.04仍时有崩溃未解决。。如果大神知道,请相告!替Linux网友先感激!!)

原由:
小米随身WiFi很好用,有Widnow和Mac的系统的驱动,
但是可怜不少Linux下的苦逼开发者,没有驱动就是没有。。怎么办?

但是米粉的力量还是很强大的,
后来陆陆续续有了小米随身WiFi 的STA 模式驱动,即可以当无线网卡使用
Ubuntu 12.04下小米随身Wifi驱动安装方法 @81339242
但当Ap热点使用的热点驱动一直没有。。。怎么办?

最关键楼主我,家里是校园网,锐捷,更别说什么路由了,只能有线网络
在linux下开发方便,但是妹子老喊,没有WiFi,她用不了网络,怎么办?
之前一直用虚拟机xp使用小米随身WiFi,
可虚拟机内存占用大,仅仅开了使用随身WiFi 不划算,怎么办?

既然window,mac能上网,Linux下肯定也是可以,通过搜索,
小米Wifi不能直接用雷凌芯片组官方驱动的原因探讨 @Oicebot
我发现使用hostapd使用的可行性是有的。。
于是就开始花点时间搞定这个Linux下的Ap驱动。。
(重新开启关于hostapd的相关代码宏,但后来失败。。)

万万没有想到,我最后还是完成了驱动。。


完成驱动:

第一点,感谢小米随身WiFi。。
第二点,感谢雷凌开源。。
第三点,感谢terence-deng
大神 terence-deng 在Github 开源了带AP代码的,但不能使用AP功能的代码,能使用STA模式(无线网卡模式)
居然在我开始搞驱动的前3天share了出来,还居然被我搜到!!!。。。。

我在大神的mt7601u基础上,结合另外两份代码(rt5572 和 MT7610U STA )
开启AP模式的宏,填补缺漏文件,解决编译问题,编译出AP模式下的小米随身wifi驱动
再结合一些Linux命令,前后花了两天时间(第一天的更改驱动方案不成功)
成功在Linux下,不用再借助虚拟机(xp),成功让手机使用小米随身WiFi产生的网络

源于开源,不敢私藏,所以在这里分享给大家。。


正式步骤开始

步骤一 下载代码

先从 https://github.com/eywalink/mt7601u 这个路径下载代码。。没有git的同学,可以在右边 Download zip文件



步骤二 编译驱动

运行 脚本 编译驱动(Ubuntu 12.04下编过)
sudo ./miwifi_build.sh
编译驱动 如果没有看到 错误 Error 字样,就算可以了。。
我的是中文字样,一般的都直接是英文。。。



步骤三 配置DHCP服务

安装DHCP 服务器和配置
1.安装 sudo apt-get install dhcp3-server

   (如果遇到 locate dhcp3-server, 请使用  sudo apt-get update)


2.编辑 sudo vim /etc/dhcp/dhcpd.conf
加上了下面一段。。(搜索 This is ;另外注意DNS(domain-name-servers),你们自己选择合适你们的)
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 114.114.114.114;
}

3.编辑 sudo vim  /etc/default/isc-dhcp-server
    为 INTERFACES="ra0"



PS:如果发现需要重启DHCP 服务,请使用 service isc-dhcp-server restart


步骤四 加载驱动

root权限 运行脚本 加载驱动 和 设置DHCP服务器 和 设置ip转发规则(我平常用eth0来上网,所以不是eth0的童鞋务必更改
sudo ./miwifi_work.sh



============如果这步骤没有问题,可以不用看分割线下面文字===========

miwifi_work.sh 脚本解析:
#!/bin/sh
#remove the driver before
#我之前使用mt7601Usta这个驱动,安装Ap驱动前得先关闭正在使用的网卡,然后sta驱动卸载
ifconfig ra0 down
rmmod mt7601Usta
#add new ap driver
#安装新的驱动,雷凌基本上都是这三个rtutil, rtnet ,和 xxxx
modprobe rtutil7601Uap
modprobe mt7601Uap
modprobe rtnet7601Uap
#set ip
#设置此ap的ip地址。
ifconfig ra0 up
ifconfig ra0 192.168.199.1
#dhcp the network
#设置这个ap的DHCP分配ip地址
dhcpd ra0
#make if forward work from eth0  
#设置从 eth0 这个网卡进行转发数据包,我平常用eth0上网,
有些童鞋用wlan0上网就把蓝色字改成wlan0
有些童鞋用ADSL 上网就把蓝色字改成ppp0
(要确定是否有ppp0,可以在拨号后,用sudo ifconfig查看)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
iptables -t filter -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


输出结果解析:

administrator@ylmfos:~/rjsupplicant$ sudo ./miwifi_work.sh
(你不是用ubuntu吗?怎么是ylmfos,因为作者我喜欢雨林木风,但是3.0不是很好用,就升级到ubuntu12.04,升级之后,还是有不少ylmf的影子在里面)
[sudo] password for administrator:
ERROR: Module mt7601Usta does not exist in /proc/modules
(怎么这里有个Error?因为之前使用的是mt7601Usta这个驱动,这个只能当无线网卡,不能当AP,但它已经存在系统里,我又不想彻底删掉,所以我得先卸载它,然后再安装Ap的驱动)
Internet Systems Consortium DHCP Server 4.1-ESV-R4
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 5 leases to leases file.
Listening on LPF/ra0/8c:be:be:06:23:69/192.168.199.0/24
Sending on   LPF/ra0/8c:be:be:06:23:69/192.168.199.0/24
Sending on   Socket/fallback/fallback-net
Can\'t create PID file /var/run/dhcpd.pid: Permission denied.
1


步骤五 配置MiWiFi

如果一切顺利,你会搜到一个
网络名 MiWiFi_SuMang
密码    52xiaomi

PS:如果修改成你们想要的SSID和密码
方法一:修改mt7601u/etc/Wireless/RT2870AP/RT2870AP.dat ,重新编译。。
方法二:直接修改/etc/Wireless/RT2870AP/RT2870AP.dat



至此,可以开开心心地使用Linux,
也可以开开心心地让手机上网了。。


如有什么纰漏,请大伙多多指教!!谢谢!! ^_^

同样:作者也在小米论坛发布了这篇文章  【福利到】小米随身WiFi,Linux下AP热点驱动

最后,如果它帮助了您,请大力支持,多多回复!!!谢谢!!!


而Csdn的博客回复已经满足不了大家互相帮助的需求(其实这个回复系统很挫)

随身WiFi_Linux_Ap)389615079  QQ群

请大家踊跃加入,我们共同进步!!

(PS 进群问问题,请把

1.运行的脚本 和log (看你脚本是否写错。运行的log,可以看出些信息)

2.ipconfig 和 iwconfig 的结果(看你上网用哪些网卡。有eth0,ppp0,wlan0这些)

3.uname -a (内核信息)

4.你PC(板子)上网的方式,是(有线?无线?还是ADSL, 甚至有vpn)

的运行结果告诉大家,方便解决问题,谢谢 O(∩_∩)O哈哈~)