我从来就对消费级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 |
拔掉网卡即可。
配置路由器
配置路由器固件选项(可选):
1 |
/port firmware set ignore-directip-modem=yes |
把网卡插上路由器,应该能在路由器里看到一个ppp client interface。需要设置以下项:
1 2 3 |
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设备的电源。
1 |
/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:
1 |
/system gps set channel=1 port=usb1 enabled=yes |
查看GPS状态:
1 |
/system gps monitor |
(本节内容未经验证,等我的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便携式的插卡路由高性能版本。
能带我手搓一个吗?提供材料费和合适工时费,真心不想买市场的又贵有不好用。