我从来就对消费级 Mifi 的性能和可定制性(以及没有 5G Wi-Fi 支持华为随行 WiFi 2 Pro 已经支持)不甚满意,而 OpenWRT 的糟糕代码质量和繁复的设计又让我不是很想用。更让我难受的是,由于我校教学楼里运营商 Wi-Fi AP 布置糟糕,仅有 2.4G 无线的消费级 Mifi 在特定地点干扰严重,几乎不可用。最后我想办法自制了这台高性能、可定制、使用方便的移动 Wi-Fi。信号超强,网速超快,支持 2.4G 和 5G,续航一天以上。

选材
一个移动 Wi-Fi 的组成只有三部分:路由器,4G 网卡和电源。
路由器
我个人比较喜欢 RouterOS 在自定义功能和 UI 方面的平衡(Cisco 实在太难用),而且 RouterBOARD 对 DIY 用户友好,因此我选择了 MikroTik hAP ac lite (RB952Ui-5ac2nD)。它本来被定位为家用百兆路由器,性能刚刚够 4G 网络使用,体积小巧,并且支持 8-30V 输入(网站上标识的电压似乎是错的)。这给接下来电源的定制带来了极大的便利。一个 USB 2.0 接口也正好给 4G 网卡使用。唯一的遗憾是五个 Ethernet 接口有些浪费。如果完全不需要 2.4G,并且动手能力足够的话,也可以选择更加激进的 RouterBOARD RB911G-5HPacD 自己焊上 mini PCI-e 连接器和 SIM 卡插槽,设备体积会比现有方案小很多。
4G 网卡
在这边其实有两个选择:插一个独立工作在路由器模式下的 4G 网卡,或者让 RouterOS 自己通过 Modem 界面拨号。前者的话,华为的主流免驱 4G 网卡(我测试过华为 E3372)都可以用,缺点是多加一层 NAT 并且部分设置必须通过网卡自己的 Web 控制面板完成。我之前使用的 ZMi(紫米)的 ZMifi 4G 随身路由器其实也是个不错的选择,全网通而且速度相当快,美中不足的是它本身是一个移动电源加 Mifi,如果只是作为网卡用的话,一来 Mifi 部分完全浪费了,二来它持续给自己充电会严重影响整套硬件的续航能力,三它的发热量相当大,很容易触发过热保护。
最终我选择了让 RouterOS 自己拨号。考虑到性能和后期升级能力,我购买了 Sierra Wireless AirPrime EM7430 作为 4G 网卡,这样在国内全网通基本上没有问题;如果需要出国的话可以更换 EM7455。然后还需要一个 M.2 转 USB 并且支持 4G 网卡的转换器(转换器上需要自带 SIM 卡槽)。我本来想购买 Bplus USBM2 Series
Wireless USB M.2(NGFF) Card Adapter,无奈淘宝换了两次都不能用,于是购买了相对便宜的杂牌转换器一枚。另外还需要自配两根 4G 天线。
如果不想折腾 RouterOS 的 4G 网卡支持,推荐购买独立工作的 4G 网卡。
电源
我之前尝试过使用淘宝购得的 12V 7Ah 三串锂电池,它拥有峰值 6A 的充放电能力,参数上相当好看;当然了出门在外想找个 12V 的充电器就不是那么容易了,而且充电器体积都相当大。另外带一个这么重的电池却没法同时作为移动电源使用总觉得有点遗憾。因此我使用 Y 形线分出一路 DC 12V 插在 Orico 4-Port USB 3.0 Hub (U3BCH4) 上,这样就有了四个 USB 口可以用来当移动电源。
现在这一版我的做法就更为激进一些:使用支持 QC 3.0 高电压充电标准的 ZMI 10 号移动电源配合炬为 QC 触发器(红色主板只有触发功能没有屏幕显示的那款)直接输出 DC 9V 向路由器供电。这个移动电源支持 5V USB Type-C 充电,所以出门在外就方便了不少。但是要注意,这个移动电源在充电的同时不能输出高于 5V 的电压,所以需要出门超过一天的话,建议多准备一个 QC 充电器。(小米移动电源 10000mAh 高配版可以同时 QC 输入/输出,因此没有这个问题;但是它的容量较小,大概只能使用六个小时。)
配置
配置 4G 网卡
在此之前建议把网卡更新到最新的 Generic 固件。(你需要一台 Windows PC 来刷固件。)直接下载相应的 EXE 文件,在插上网卡的情况下双击执行即可。如果一切顺利,你会看到下图所示的程序输出:
首先我们要关掉 4G 网卡的 MBIM 功能。把网卡带转换器插到电脑上,连接到 Modem 设备对应的 COM 口(这个网卡默认情况下会显示出四五个设备,找到 Modem 那个;Windows 下可能需要先安装驱动),做以下操作:
(注:根据你使用的软件不同,输入时可能没有任何屏幕显示,但是按下回车后如果返回类似的内容表示指令正确。#开头的行是注释无需输入,AT 开头的行需要你输入,其余是示例响应。我用的是 Windows 10 + PuTTY。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# 查看网卡信息 ATI Manufacturer: Sierra Wireless, Incorporated Model: EM7430 Revision: SWI9X30C_02.14.03.00 r6134 CARMD-EV-FRMWR2 2016/03/28 14:34:14 MEID: IMEI: IMEI SV: FSN: +GCAP: +CGSM OK # 设置高级功能密码 AT!ENTERCND="A710" OK # 查询当前 USB 模式 AT!USBCOMP? Config Index: 1 Config Type: 1 (Generic) Interface bitmask: 0000100D (diag,nmea,modem,mbim) OK # 关闭 MBIM 模式 AT!USBCOMP=1,1,D OK # 查询当前 USB 模式 AT!USBCOMP? Config Index: 1 Config Type: 1 (Generic) Interface bitmask: 0000000D (diag,nmea,modem) OK |
拔掉网卡即可。
配置路由器
配置路由器固件选项(可选):
|
/port firmware set ignore-directip-modem=yes |
把网卡插上路由器,应该能在路由器里看到一个 ppp client interface。需要设置以下项:
|
port=usb1 data-channel=2 info-channel=2 |
其余默认或为空即可。不要设置 APN。如果 4G 信号正常,应该很快能拨号成功。如果无法拨号,先 disable 这个 ppp client interface 然后在该 interface 详情中使用 Info 按钮查看网卡状态。能看到 Call in progress 是正常行为。
拨号成功后,在 IP Firewall 中给该 ppp interface 加一条 Masquerade 规则(可以直接复制 ether1 的规则然后改一下 interface 名),路由器下的设备就可以正常上网了。
在 LTE 网卡出现故障时自动重置网卡(可选)
这个网卡偶尔会出现无法联网的问题,必须完全断开其电源才能恢复正常工作。但是重启路由器不会断开 USB 电源,因此我们写一个脚本,当网络无法连接时自动重置 USB 设备的电源。
|
/tool netwatch add down-script=":log warning \"PPP device down, resetting USB power...\"\r\n/system routerboard usb power-reset duration=3s" host=114.114.114.114 interval=30s |
这个脚本有一个不足之处:如果 reset 之后还是没有连接,脚本不会再次生效。
如果网卡持续出现无法工作的情况,请参见 FAQ。
制作
安装各部件
外壳的制作是简单粗暴的:找一个大小合适的快递盒子,然后把各种东西和各种形状的 USB 线塞进去。在纸板箱上打孔(使用了 FIXAR 电动螺丝刀,虽说随附的钻头大小不是很合适,然而将就用)固定了两根 LTE 天线和铜柱。

安装 4G 网卡的时候一定要注意留够你把它和 USB 线缆完全拔出所需的空间,不然出了问题真的很难修。我在这一步失败了很多次,所以盒子底面有不少孔。LTE 天线接口建议找一把小扳手拧紧。

供电模块
淘宝购得一个十几块钱的 QC 3.0 Trigger(买能保存电压值的),预先插在 QC 充电器上测好电压(9V 以上都行),然后焊出输出端的 VCC 和 GND(懒得做 USB 转 5.5*2.1DC 插头了,地方不够大),输入端插一根 USB 延长线,引出到盒子外面,用热熔胶固定住。Trigger 用胶布或者热缩管包住以防短路。

指示灯
在盒子合适的地方开个洞把路由器顶部的五个 LED 暴露出来,方便查看系统状态。因为这五个灯对应的五个 Ethernet 端口不会使用,所以我把它们重新定义为:
- NAND 访问
- LTE 拨号状态
- VPN
- 2.4G 无线
- 5G 无线
GPS
RouterOS 安装了 GPS 包以后支持 EM7430 上的 GPS 功能,可以实现精确对时和查看当前坐标功能。GPS 功能不被 WinBox 支持,所以本节内容需要在 RouterOS Shell 下操作。
启用 GPS:
|
/system gps set channel=1 port=usb1 enabled=yes |
查看 GPS 状态:
(本节内容未经验证,等我的 GPS 天线快递到货再行增补。)
FAQ
LTE 连接总是断
检查 RouterOS 的日志,如果看到大量的
modem hung 或者
could not acquire serial port ,很有可能是你 LTE 网卡的供电不足。如果使用了 USB 延长线,请尝试以下方案:
- 更换质量更好的线缆
- 直接把网卡插在路由器上
- 使用带独立供电的 USB 分线器
- 单独做一路 DC 5V 供电接在 LTE 网卡的 VCC/GND 上
RouterOS 提示端口被占用
可以使用
/port print 命令查看端口被哪个服务占用。
我需要接几根天线?
Main 一根就可以用。
注:感谢 LTY 在本文撰写过程中给予的帮助。
参考资料:
哈哈哈哈你这盒子太野蛮了, 用 3D 打印机打个盒子吧。 ( 经常出差) , 你的方案给我很多启示。 。
我也一直在想做个移动路由
谢谢
RB912UAG-5HPnD 加 MC7430, 应该也行吧, 使用 3Cell 12V 或者 12V 铅酸蓄电池供电
对, 不过我比较期待 RBM33G( 现在还买不到)
https://youtu.be/S-B0SaQ4TBQ
我也做了一个 请看
Pingback 引用通告: DIY mifi – 931G Available
Pingback 引用通告: 从零开始的省钱 DIY mifi – 931G Available
很棒, 你们真是天才, 很希望你们能做出 5G 便携式的插卡路由高性能版本。 ? 提供材料费和合适工时费, 真心不想买市场的又贵有不好用。
能带我手搓一个吗
哥, 可以发教程吗? 最好是实操的视频加解说