前言

介绍

随身wifi原本的作用为开热点以供手机电脑等设备连接上网,工作原理和手机热点几乎一样,不过大多数随身wifi是通过焊接在其上的esim连入互联网,商家也是凭借esim月租套餐来挣钱。为了吸引顾客,有些随身wifi本身卖的很便宜,但性能并不差,可以关注酷安随身wifi话题,偶尔有随身wifi的车再叠加个红包,十元包邮就可以买下一个。本文记录基于OpenStick项目将随身wifi刷成Linux发行版debian,后续将其配置为网关服务器以及DNS服务器,同时作为小型服务器运行一些任务,踩了不少坑,写文以记录

准备工具

到手

到手后大概就长这个样子,小巧但不怎么精致(小小的也很可爱呢…雾)。

用螺丝刀拆掉后面几颗螺丝,查看板子丝印,可以看到UFI003,这就是高通方案,可以刷Linux,如果是中兴微的后续就不用看了,刷不了的,具体哪些版本可以刷可以参考OpenStick的WIKI:https://www.kancloud.cn/handsomehacker/openstick/2636505

刷机

安装软件

安装9008驱动

下载随身wifi准备工具.zip,解压并打开9008免签名驱动文件夹,安装驱动9008免签名驱动.exe

安装Miko_pro

下载MiKo_Pro.zip,安装miko.exe并复制loader.exe到安装目录

安装随身WiFi助手

下载随身WiFi助手1.5.2.exe,默认安装就行,会在桌面上生成快捷方式

进9008端口

打开桌面上的随身WiFi助手,选择2打开设备管理器

按着板子右上角的复位按钮插入电脑的usb口

听得电脑叮咚一声,设备管理器里也识别到了9008端口

备份

俗话说刷机不备份,变砖两行泪,第一件事就是给随身wifi做个全量备份,出了问题只要还能进9008端口,随时刷回到手状态(9008端口是高通芯片的刷机端口,跟存储系统的磁盘没关系,理论上哪怕emmc坏了,按住复位按钮仍然可以进9008)

打开Miko_pro安装路径下的loader.exe,依次选择 Read ,Partition Backup/Earese 点击左下角 Load Partition Structure 看到右边有系统信息的输出就说明连上了,可以看到这个是MSM8916的SOC,emmc为8G,还不错

点击右下角Read Full Image,然后选择保存位置,耐心的等进度条跑完吧。接下来就可以放心大胆的折腾了

开刷

首先下载刷机包debian-ufi+003.7z,这里感谢OpenStick项目作者@handsomehacker,刷机包提供者酷安@jsbsbxjxh66,酷安@苏苏小亮亮等一众为随身wifi做出贡献的大佬们。重新拔插随身wifi,这次不用按复位按钮

打开桌面上的随身WiFi助手,可看到左上角“ADB设备连接状态: 已连接”,选择k 重启到fastboot

解压debian-ufi+003.7z进入文件夹,点击一键刷入.bat,选1确定执行,然后等待刷机完成就行了

通过RNDIS进入debian

重新拔插棒子,打开设备管理器,需要找到其他设备里的RNDIS更新一下驱动(可能有的电脑直接就有了这个选项,但是我这里其实并没有其他设备以及RNDIS,这个坑卡我很久,最后先卸载之前安装的9008免签名驱动.exe,然后重新拔插棒子,再看设备管理器就有了,如果和我一样可以试试这个方法)

  1. 更新驱动程序
  2. 浏览我的电脑以查找驱动程序
  3. 让我从计算机上的可用驱动程序列表中选择;
  4. 找到 “网络适配器”;
  5. 左侧厂商找到 “Microsoft”,右侧找到 “基于远程 NDIS 的 Internet 共享设备”;
  6. 在跳出的警告对话框中选择 “是”。

打开控制面板\网络和 Internet\网络连接,可以看到已经识别到棒子的ip了。

用SSH软件连上棒子,推荐MobaXterm,连接10.42.0.1,指定用户名为root,root密码123456。

配置

连接wifi

首先用手机或其他设备连一下家里的wifi,然后看一下路由器ip,我的路由器ip为192.168.31.1

测试一下现在棒子网络

1
2
root@4G-WIFI:~# ping baidu.com
ping: baidu.com: 域名解析暂时失败

使用命令nmtui,选择编辑连接,移动到右侧<添加>(注意:其他文章里多数建议先删除Wi-Fi下的wifi,实际上不要删,留着可以用来配置自动切换wifi模式作为热点还是连接wifi)。

选择您要创建的连接类型,选Wi-Fi,创建

  • “配置集名称“随便起个名字,后面需要用到,我这里填client
  • “设备”填wlan0
  • “SSID”填你想要连的wifi的名字,比如我就填1618c,
  • “模式”不用改,保持为Client
  • “安全性”选择WPA & WPA2 个人
  • “密码”填wifi的密码
  • “BSSID”、“克隆的MAC地址”、“MTU”不用填
  • “IPv4配置”改为手动(尽量手动配,如果是蹭别人的网选自动很可能就找不到棒子的ip了),选右边显示,“地址”添加一个ip,把路由器ip最后一位改一下就行,比如我填192.168.31.19,“网关”填路由器ip,“DNS服务器”添加路由器ip
  • “IPv6配置”改为禁用(不禁用可能会有奇奇怪怪的问题,看自己喽)

然后一路确定返回就行了

1
2
3
4
root@4G-WIFI:~# nmcli connection down wifi  #关闭原本的名称为wifi的配置集,也即是关掉热点
成功停用连接 "wifi"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
root@4G-WIFI:~# nmcli connection up client #打开我们创建的名称为client的配置集,也即是启用wifi连接
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

此时再ping百度已经可以通了

1
2
3
4
5
6
7
8
9
10
root@4G-WIFI:~# ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=49 time=33.4 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=49 time=59.1 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=49 time=42.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=49 time=43.7 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 33.402/44.634/59.147/9.261 ms

如果我们想要换一个连接的wifi,只需要回到编辑连接,选择client,<编辑…>,然后修改里面的“SSID”、“密码”、IPv4配置里的“地址”“网关”和“DNS服务器”

自动切换wifi模式

如果你像我一样会带着这个棒子去其他地方,那么每次换连接的wifi都要带个电脑通过RNDIS的SSH去改配置吗?不不不,这也太麻烦了。我们希望棒子能够这样:先去尝试连接wifi,如果30秒内没能成功连上,则自动开启热点,我们可以用手机通过热点SSH进去修改配置。

其实也很容易,一个脚本就实现了,在电脑上新建一个文件autoap.sh,内容如下,上传到/root文件夹下

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
nmcli connection down wifi #关闭wifi配置
nmcli connection up client #打开client配置
sleep 30
ip="`ifconfig | grep wlan0 -A 1 | grep inet | awk '{print $2}'`" #获取ip
if [ ! -z "$ip" ]; then #如果有ip了说明连上wifi了
echo $ip
else #否则关闭client配置,打开wifi配置
nmcli connection down client
nmcli connection up wifi
fi

在/etc/rc.local的exit 0之前加上sh /root/autoap.sh &

1
2
3
4
5
6
7
8
9
10
11
12
root@4G-WIFI:~# cat /etc/rc.local
#!/bin/sh -e
#
# 开机自动执行(命令前面加#号关闭执行)
# 短信转发自启
/etc/dx/start.sh
# 从modem开机自动14s校准时间适用于停机卡使用
/etc/ziqi/shijian.sh

sh /root/autoap.sh &

exit 0

这样就可以了,当你拿着棒子到其他地方,它里面保存的wifi信息肯定是连不上的,就会开启热点,热点名字为4G-wifi,密码为12345678,用手机连上这个热点,SSH工具(推荐JuiceSSH或者Termius)连接棒子root@10.42.0.1,就可以nmtui改client里的配置为新wifi的信息了,然后reboot一下

更新

连上网后一定要更新一下,不然有可能ping的通但什么都下载不下来,然后花费好长时间寻找原因,甚至怀疑自己,重新刷机N次(没错,那个大冤种就是我…悲),又是一个坑…

1
apt-get update

还原

如果因为种种原因系统故障,ADB起不来了,fastboot也进不去,就需要恢复一下到手状态了,还记得开始时我们的备份吗?这时它的作用就显现出来了

按复位按钮进9008,打开Loader.exe,点击flash,点击emmc block0 flasher,然后双击选择之前备份的救砖包(.bin文件),FLASH刷入,耐心等待吧

备份大法好呀!

总结

目前简单搭起了整个系统,但是还没让它运行什么服务,接下来几篇文章将会一步步给它赋予新能力,可作为网关和DNS服务器,当成局域网的旁路由来使用,兼顾透明代理和广告拦截功能,还可以跑些小任务,比如bilibili签到。啧啧啧,一步步压榨它的性能