5G模组FM150-AE实战:给Homelab加一条蜂窝备份链路,宽带断了也不慌
这两年折腾本地服务器,我越来越觉得一件事:有…
- 主宽带接口(eth0/pppoe-wan)正常 → 5G模组待机不拨号
- 检测到主链路挂了 → 自动拨5G,切换默认路由
- 主链路恢复 → 断开5G,切回去
用个Shell脚本搞定:
#!/bin/bash
# /usr/local/bin/5g-failover.sh
PING_TARGET="8.8.8.8"
MAIN_IF="pppoe-wan"
BACKUP_APN="3gnet"
MODEM_ID=0
MAX_RETRY=3
ping_test() {
ping -c 3 -W 2 -I "$1" "$PING_TARGET" &>/dev/null
}
# 主链路是否存活
if ping_test "$MAIN_IF"; then
# 主链路正常,5G如果连着就断开
if mmcli -m $MODEM_ID 2>/dev/null | grep -q "connected"; then
mmcli -m $MODEM_ID --simple-disconnect
logger "5G-FAILOVER: 主链路恢复,断开5G备份"
fi
exit 0
fi
# 主链路挂了,尝试拨5G
for i in $(seq 1 $MAX_RETRY); do
if mmcli -m $MODEM_ID --simple-connect="apn=$BACKUP_APN,ip-type=ipv4v6" 2>/dev/null; then
sleep 5
if ping_test "wwan0"; then
# 切默认路由到5G
ip route replace default dev wwan0
logger "5G-FAILOVER: 主链路异常,已切换到5G备份 (尝试 $i 次)"
exit 0
fi
fi
sleep 3
done
logger "5G-FAILOVER: 切换失败,已达最大重试次数"
扔进crontab每分钟跑一次:
* * * * * /usr/local/bin/5g-failover.sh
实测从检测到断网到5G接管,全程不超过15秒。看视频可能卡一下,但SSH连接、监控推流几乎无感。
七、踩过的坑
- 坑1:主板M.2只走PCIe不走USB。买之前一定查主板规格书,确认M.2 Key B那路支持USB。踩这个坑我白折腾了两天。
- 坑2:SIM卡方向插反。有些转接板的丝印不够清晰,SIM卡缺口朝向标错了。插上去系统完全看不到模组——先确认卡方向,再怀疑硬件坏。
- 坑3:物联卡APN特殊。不是所有卡都能用通用APN,有些运营商的物联网卡专用APN写死在卡里了,用
AT+CGDCONT?读一下当前配置再填。 - 坑4:ModemManager老版本5G频段识别不准。Debian 11自带的1.14就各种毛病,果断升到1.20+。Ubuntu 22.04和Debian 12的都OK。
- 坑5:发热。5G模组满载下载时温度能到70°C,时间久了会降速甚至掉线。建议贴个小散热片,机箱风扇对着吹。
八、总结
FM150-AE这块模组折腾下来,硬件门槛不高、软件支持不错,性价比确实可以。200多块钱就能给家里的Homelab增加一条5G冗余链路,比拉两条宽带划算多了。
而且5G网络的延迟和带宽在信号好的时候完全不输有线宽带——我在市区测试下载能跑400Mbps+,ping百度12ms。当然,小区信号差的话别指望太多,先拿手机测测信号再说。
如果你也在折腾软路由或者Homelab,这条备份链路值得搞一个。有什么问题欢迎留言,一起交流。
—— IT大叔,2026年8月,于凌晨的机柜旁
这两年折腾本地服务器,我越来越觉得一件事:有线宽带再好,也架不住光缆被挖断、小区施工、运营商半夜割接。尤其是跑着家里的NAS、监控、智能家居中枢,断网一小时就够让人血压拉满。
于是我打起了蜂窝网络的主意。与其每年给运营商交上千块宽带费还要看他们脸色,不如搞一条5G备份链路——平时跑宽带,宽带一断自动切5G。关键时候顶上去,平时还能当个测试出口。
今天这篇就复盘我折腾Fibocom FM150-AE这块5G模组的全过程。从硬件安装、驱动识别、AT指令调试,到最终在Linux上拨号成功拿到公网IP,踩过的坑一个不漏。
一、为什么选 FM150-AE
市面上能买到的5G模组不少:移远RM500Q、广和通FM150/160系列、华为MH5000。我选FM150-AE的理由很简单:
- M.2 接口:直接插到工控机或软路由主板上,不需要USB转接,稳定性和散热都好一个档次。
- MBIM 协议支持:Linux内核从4.x起就原生支持MBIM,不用编译乱七八糟的GobiNet私有驱动。
- 国内频段覆盖全:n1/n28/n41/n78/n79全支持,移动联通电信广电通吃。
- 二手价格香:小黄鱼上200-300块就能淘到成色不错的拆机件。
唯一要注意的是必须确认你的主板有M.2 Key B接口并且支持USB 3.0信号——很多主板的M.2只走PCIe(给NVMe固态用的),那种插上去不认的。
二、硬件安装与天线
FM150-AE是M.2 3042规格(30×42mm),比常见的2280固态短一截。安装时注意:
- 插槽方向:金手指朝下,标签面朝上,斜45度插入后压平锁螺丝。
- 天线接口:模组上有4个IPEX4天线座(MIMO 4×4),但日常使用接主天线(MAIN)和分集天线(DIV)两根就够。全接上当然更好。
- SIM卡:走主板的SIM卡槽或者M.2转接板上的自弹式卡槽。务必用物联网卡或正规手机卡,别拿那种只能收短信的纯流量卡去试。
天线建议买带3M胶贴的IPEX4转SMA小尾巴,然后接棒状天线。我贴在了机箱侧板上,信号能到-85dBm左右,够用了。如果信号差,可以考虑外接平板天线挂窗外。
三、Linux驱动与模式切换
FM150-AE上电后默认是MBIM模式,插到Linux主机上lsusb应该能看到:
$ lsusb | grep -i fibocom
Bus 001 Device 005: ID 2cb7:0111 Fibocom Wireless Inc. FM150-AE
VID 2cb7 是广和通的厂商标识,PID 0111 是MBIM模式。如果看到2cb7:010b之类的其他PID,说明模组可能工作在别的模式(比如Debug模式),需要用AT指令切回来。
先装必要工具:
# Debian/Ubuntu
sudo apt install modemmanager libmbim-utils minicom
# OpenWrt / iStoreOS
opkg update
opkg install modemmanager luci-proto-modemmanager usb-modeswitch minicom
安装后检查ModemManager是否识别到模组:
$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Fibocom] FM150-AE
如果mmcli -L没输出,先检查dmesg | grep -i cdc有没有cdc-wdm设备节点。正常情况下MBIM模组会生成/dev/cdc-wdm0和wwan0网卡。
四、AT指令调试——老司机的必修课
虽然MBIM模式能直接拨号,但出问题时AT指令才是真正的救星。它能告诉你信号强度、注册状态、APN配置,甚至能强制锁频段。
用minicom连接AT串口:
# 先找到AT串口
$ ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
# 一般 ttyUSB2 是AT口,连上去 115200 波特率
$ sudo minicom -D /dev/ttyUSB2 -b 115200
进去后敲几个诊断指令试试水:
AT # 回显 OK 说明串口通了
ATI # 厂商和型号
AT+CSQ # 信号强度 (返回 +CSQ: 23,99,第一个数越大信号越好)
AT+COPS? # 当前注册的运营商
AT+C5GREG? # 5G注册状态 (0,1 表示已注册)
AT+CGDCONT? # 查看APN配置
最常见的问题:信号有,但拨号失败。十有八九是APN不对。联通的物联网卡APN通常是UNIM2M.NJM2MAPN或者直接用3gnet,移动的用CMIOT。不确定就查运营商的官方文档或者打客服问。
万一模组不听话,试试硬重置大法:
AT+CFUN=0 # 关闭射频(飞行模式)
AT+CFUN=1 # 重新开启并注册网络
五、拨号联网——三条路径
FM150-AE联网有三条路,我从易到难排个序:
方案一:ModemManager一键拨号(推荐)
最省心的方式,前提是ModemManager版本不低于1.18(老版本对5G支持不完善):
# 创建连接(只需做一次)
$ sudo mmcli -m 0 --simple-connect="apn=3gnet,ip-type=ipv4v6"
# 查看状态
$ sudo mmcli -m 0
-------------------------
Status | state: connected
| 3GPP: registered
| access tech: 5GNR
# 拿到IP后直接能用
$ ip addr show wwan0
$ ping -I wwan0 8.8.8.8
断开也很简单:sudo mmcli -m 0 --simple-disconnect。
方案二:mbim-network手动拨号
适用于不想装ModemManager、或者需要精细控制连接的场景:
# 写入APN配置
$ echo 'APN=3gnet' | sudo tee /etc/mbim-network.conf
# 启动MBIM会话
$ sudo mbim-network /dev/cdc-wdm0 start
# 拿到IP
$ sudo dhclient wwan0
方案三:OpenWrt/iStoreOS的LuCI界面配置
如果你用软路由跑iStoreOS,那就更简单了。装好luci-proto-modemmanager后,在LuCI的「网络→接口」里添加新接口,协议选ModemManager,填APN就行,跟配宽带PPPoE一样无脑。
六、自动故障切换——主链路断了自动走5G
光能拨号还不够,我要的是自动化备份链路。思路很直白:
- 主宽带接口(eth0/pppoe-wan)正常 → 5G模组待机不拨号
- 检测到主链路挂了 → 自动拨5G,切换默认路由
- 主链路恢复 → 断开5G,切回去
用个Shell脚本搞定:
#!/bin/bash
# /usr/local/bin/5g-failover.sh
PING_TARGET="8.8.8.8"
MAIN_IF="pppoe-wan"
BACKUP_APN="3gnet"
MODEM_ID=0
MAX_RETRY=3
ping_test() {
ping -c 3 -W 2 -I "$1" "$PING_TARGET" &>/dev/null
}
# 主链路是否存活
if ping_test "$MAIN_IF"; then
# 主链路正常,5G如果连着就断开
if mmcli -m $MODEM_ID 2>/dev/null | grep -q "connected"; then
mmcli -m $MODEM_ID --simple-disconnect
logger "5G-FAILOVER: 主链路恢复,断开5G备份"
fi
exit 0
fi
# 主链路挂了,尝试拨5G
for i in $(seq 1 $MAX_RETRY); do
if mmcli -m $MODEM_ID --simple-connect="apn=$BACKUP_APN,ip-type=ipv4v6" 2>/dev/null; then
sleep 5
if ping_test "wwan0"; then
# 切默认路由到5G
ip route replace default dev wwan0
logger "5G-FAILOVER: 主链路异常,已切换到5G备份 (尝试 $i 次)"
exit 0
fi
fi
sleep 3
done
logger "5G-FAILOVER: 切换失败,已达最大重试次数"
扔进crontab每分钟跑一次:
* * * * * /usr/local/bin/5g-failover.sh
实测从检测到断网到5G接管,全程不超过15秒。看视频可能卡一下,但SSH连接、监控推流几乎无感。
七、踩过的坑
- 坑1:主板M.2只走PCIe不走USB。买之前一定查主板规格书,确认M.2 Key B那路支持USB。踩这个坑我白折腾了两天。
- 坑2:SIM卡方向插反。有些转接板的丝印不够清晰,SIM卡缺口朝向标错了。插上去系统完全看不到模组——先确认卡方向,再怀疑硬件坏。
- 坑3:物联卡APN特殊。不是所有卡都能用通用APN,有些运营商的物联网卡专用APN写死在卡里了,用
AT+CGDCONT?读一下当前配置再填。 - 坑4:ModemManager老版本5G频段识别不准。Debian 11自带的1.14就各种毛病,果断升到1.20+。Ubuntu 22.04和Debian 12的都OK。
- 坑5:发热。5G模组满载下载时温度能到70°C,时间久了会降速甚至掉线。建议贴个小散热片,机箱风扇对着吹。
八、总结
FM150-AE这块模组折腾下来,硬件门槛不高、软件支持不错,性价比确实可以。200多块钱就能给家里的Homelab增加一条5G冗余链路,比拉两条宽带划算多了。
而且5G网络的延迟和带宽在信号好的时候完全不输有线宽带——我在市区测试下载能跑400Mbps+,ping百度12ms。当然,小区信号差的话别指望太多,先拿手机测测信号再说。
如果你也在折腾软路由或者Homelab,这条备份链路值得搞一个。有什么问题欢迎留言,一起交流。
—— IT大叔,2026年8月,于凌晨的机柜旁
