前言:上一篇开箱分享发出去后,评论区有好几个朋友问同一个问题:"这个上网棒真的插上就能用吗?不用装驱动?“说实话,我当时也有这个疑问。开箱只是看了个外观,到底能不能"免驱即用”,得插上电脑才知道。这篇文章记录了我从插 SIM 卡到两个平台(Windows + Linux 树莓派)成功上网的全过程,包括系统怎么识别成网卡、RNDIS/ECM 拨号是怎么自动完成的、网速实测,以及中间踩的几个坑。如果你也刚拿到 FS-Dongle-F8X0M1,跟着这篇走,应该能少走点弯路。


一、硬件准备

上电之前,先把东西备齐:

器材 用途 备注
FS-Dongle-F8X0M1 今天的主角 上篇开箱那支,带注塑外壳版
Nano SIM 卡 4G 流量卡 我用的是移动卡,联通电信也行
Windows 电脑 测试 RNDIS 拨号 Windows 11,笔记本有 USB 口
树莓派 4B 测试 Linux 下 ECM 拨号 装的是 Raspberry Pi OS(64 位)
USB 延长线(可选) 方便插拔 笔记本 USB 口太挤的话用一根延长线

就这些,比 FS100P 那次接线简单多了——没有杜邦线、没有 USB 转 TTL、没有交叉接线的问题,FS-Dongle 本身就是一个 USB 设备,插上就行。

SIM 卡这一步先做了:翻到上网棒侧面,找到那个插拔式 Nano 卡座,把 Nano SIM 卡金手指朝下推进去,听到"咔"一声就到位了。卡座手感挺紧实的,不会一碰就掉。

在这里插入图片描述

注意:插卡之前先确认 SIM 卡已经激活了 4G 流量套餐。我第一次用的是一张欠费的卡,折腾了半天以为设备坏了,充了话费就好了(后面踩坑记录会细说)。


二、Windows 下:插上就是一张网卡

插入 USB

把 FS-Dongle-F8X0M1 插到笔记本的 USB 口上。上电瞬间,棒身上的两颗 LED 会亮:

LED 状态 说明
电源指示灯 常亮(红色) USB 取电成功,模块已通电
网络指示灯 慢闪(约 2 秒一次) 正在搜索网络 / 注册中

大概等了 10-15 秒,网络指示灯从慢闪变成了快闪(约 0.5 秒一次),说明已经注册上 4G 网络了。

请添加图片描述

系统识别——真的免驱!

接下来就是见证"免驱 RNDIS"的时刻了。

打开 Windows 的设备管理器(Win+X → 设备管理器),展开"网络适配器",看下图

不需要装驱动。不需要跑拨号软件。不需要配 APN。系统直接把它当一张普通网卡识别了。

在这里插入图片描述

在这里插入图片描述

再打开网络连接面板(设置 → 网络和 Internet → 状态 → 查看网络属性),可以看到这张新网卡已经自动获取到了一个 IP 地址(类似 192.168.x.x 或运营商分配的内部地址)。

到这一步,理论上就已经能上网了。来验证一下。

验证上网

打开浏览器,访问一个网页——直接就通了

打开命令行,ping 一下百度:

延迟 37ms,0 丢包——Cat.1 的表现比我预期要好。之前用手机热点共享上网 ping 百度都要 60-80ms,这个表现完全够做 IoT 数据回传了。

在这里插入图片描述

说实话,这个"插上就能用"的体验确实省心。之前用 Cat.1 模组做联网,光驱动和拨号脚本就折腾了两天。FS-Dongle 把这些全封装在固件里了,用户侧只需要面对一张网卡——跟插网线没本质区别。


三、Linux(树莓派)下:同样免驱即用

Windows 测试完,换到树莓派上试试。这也是我最终要用的场景——Linux 工控板。

插入树莓派 USB 口

把 FS-Dongle 从笔记本上拔下来,插到树莓派 4B 的 USB 口上。同样,电源灯常亮,网络灯先慢闪后快闪。

系统识别

Linux 下用的是 CDC-ECM 协议(Linux 原生的 USB 以太网驱动),系统内核自带的 cdc_ether 模块自动加载,不需要安装任何额外驱动。

# 查看内核日志,确认设备识别过程
dmesg | tail -30

# 输出示例:
#[121866.955610] audit: type=1400 audit(1764151606.932:88): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap-update-ns.firefox" pid=30603 comm="apparmor_parser
#[121868.657443] audit: type=1400 audit(1764151608.634:89): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.firefox.firefox" pid=30504 comm="apparmor_parser"

请添加图片描述

验证上网

# ping 测试
ping baidu.com

# 输出示例:
# PING baidu.com (110.242.68.66) 56(84) bytes of data.
# 64 bytes from 111.63.65.247: icmp_seq=1 ttl=51 time=87.9  ms
# 64 bytes from 111.63.65.247: icmp_seq=2 ttl=51 time=67.8 ms
# 64 bytes from 111.63.65.247: icmp_seq=3 ttl=51 time=70.8  ms
# 64 bytes from 111.63.65.247: icmp_seq=4 ttl=51 time=81.4  ms

通了。 延迟 60-80ms。
请添加图片描述

对比 Windows 和 Linux 的识别差异

对比项 Windows Linux(树莓派)
识别协议 RNDIS CDC-ECM
驱动安装 系统自带,免驱 内核自带 cdc_ether 模块,免驱
网卡名称 “USB RNDIS Adapter” usb0 / eth1
IP 获取 自动 DHCP 自动 DHCP
拨号方式 固件内部自动完成 固件内部自动完成
插上到上网 约 15 秒 约 15 秒

两个平台的体验基本一致——都是"插上等十几秒就能上网"。差别只在系统识别的协议名不同(Windows 叫 RNDIS,Linux 叫 ECM),但对用户来说是透明的,不需要关心底层细节。

这也是 FS-Dongle 最核心的设计理念:把 4G 拨号的所有复杂度封装在固件里,对外只暴露一张标准网卡接口。不管什么系统,只要认识网卡就能上网。


四、RNDIS/ECM 拨号原理——到底发生了什么

可能有人好奇:不是说要"拨号"吗?怎么感觉什么都没干就上网了?

其实拨号过程在模块内部自动完成了。我来拆解一下从"插上 USB"到"能上网"中间发生了什么:

用户侧                    FS-Dongle 内部                      运营商网络
──────                    ──────────────                      ──────────

1. 插入 USB
                    → 模组上电,USB 枚举完成
                    → 向主机上报 RNDIS/ECM 网卡设备
主机识别到一张新网卡

2. 模组自动拨号
                    → AT+CFUN=1(开启射频)
                    → 搜索 4G 基站,附着网络
                    → ATD*99***1#(发起数据拨号)
                    → 获取运营商分配的 IP 地址
                    → 通过 USB 将 IP 透传给主机

3. 网卡获得 IP
主机网卡拿到 IP ←  模块通过 RNDIS/ECM 通道回传 IP
主机可以上网了 ←  模块维持 4G 数据链路 ← →  互联网

关键点:用户不需要手动执行任何 AT 指令或拨号脚本,模块固件在开机时自动完成了"搜网 → 附着 → 拨号 → 获取 IP → 透传给主机"这一整套流程。用户感知到的只是"多了一张网卡,有 IP,能上网"。

这就是 RNDIS/ECM 拨号和传统 PPP 拨号的本质区别:

对比项 传统 PPP 拨号 RNDIS/ECM 拨号(FS-Dongle)
拨号方式 主机侧运行 pppd / 拨号软件 模块固件内部自动完成
驱动 需要安装 USB 串口驱动 系统原生 RNDIS/ECM,免驱
APN 配置 手动在拨号脚本里设置 模块固件预置,自动选择
用户操作 装驱动 → 写脚本 → 执行拨号 插上 USB → 等十几秒
失败排查 看日志,分析 AT 响应 看网卡有没有 IP,看灯状态

一句话:PPP 拨号是"你教电脑怎么上网",RNDIS 拨号是"模块帮你把网通好,你只管用"

请添加图片描述


五、网速实测

光 ping 通不算数,得看看实际吞吐量够不够用。

测试环境

项目 说明
运营商 中国移动 4G(Cat.1)
信号强度 满格(办公室靠窗位置)
测试平台 Windows 10 笔记本
测试工具 speedtest-cli(命令行版 Speedtest)
测试时间 工作日下午 3 点(非高峰期)

测试结果

跑了 5 次 speedtest,取最好和最差结果:

指标 最好成绩 最差成绩 平均
下载速率 8.7 Mbps 5.2 Mbps 6.8 Mbps
上传速率 4.1 Mbps 2.8 Mbps 3.5 Mbps
延迟 42 ms 68 ms 52 ms

对比 FS-Dongle-F8X0M1 标称的 Cat.1 速率(FDD 下行最大 10Mbps / 上行 5Mbps),实测平均下载 6.8Mbps、上传 3.5Mbps,基本跑到了标称的 70% 左右——考虑基站负载和信号衰减,这个成绩完全合理。

实际场景模拟

光看 speedtest 数字没感觉,我模拟了几个实际 IoT 场景:

场景 1:MQTT 数据回传(小数据包)

用 mosquitto_pub 每秒发一条 200 字节的 JSON 数据到云端 MQTT broker,持续 5 分钟。

  • 发送成功率:100%
  • 平均延迟:48ms
  • 5 分钟内无丢包

场景 2:文件上传(中等数据包)

用 curl 上传一个 1MB 的图片文件到服务器。

  • 上传耗时:约 3.2 秒
  • 平均上传速率:约 2.6 Mbps
  • 上传过程中网络稳定,无中断

场景 3:SSH 远程登录

通过 FS-Dongle 的 4G 网络从外网 SSH 登录到树莓派(树莓派上跑了 frp 内网穿透)。

  • SSH 连接建立:正常
  • 命令交互延迟:50-80ms
  • 操作体验:有轻微延迟感,但日常运维完全可用
  • 断线重连:中间基站切换过一次,SSH 断了约 5 秒后自动恢复

结论:Cat.1 的速率定位就是 IoT 数据回传,不是拿来看视频的。做传感器数据上报、远程运维、文件上传这些场景,6-8Mbps 的下载和 3-4Mbps 的上传完全够用。而且 Cat.1 的资费比 full 4G 便宜很多,对大规模部署来说成本优势明显。


六、踩坑记录

过程不是完全顺利的,踩了几个坑,分享一下:

坑1:SIM 卡欠费,折腾半天以为设备坏了

症状:插入 USB 后,电源灯常亮,但网络灯一直慢闪,过了两分钟还是不上网。设备管理器里网卡出现了,但拿不到 IP。

排查:首先怀疑是驱动问题——但 Windows 都识别成网卡了,驱动应该没问题。然后怀疑是信号问题,拿到窗边还是一样。最后想到会不会是卡的问题……

解决:掏出手机把 SIM 卡插进去,发现——卡欠费了。充了话费,重新插回 FS-Dongle,十几秒后网络灯变快闪,上网了。

经验:排障的时候,先排除最低级的问题。卡欠费、卡没激活、卡插反了,这三个"蠢问题"要先确认。

坑2:Windows 下网卡优先级冲突

症状:插上 FS-Dongle 后,笔记本原本连着 WiFi,结果网页打不开了。拔掉 FS-Dongle,WiFi 又正常了。

原因:Windows 同时有两张网卡(WiFi 和 RNDIS),默认路由冲突了。系统可能把默认网关指向了 FS-Dongle 的 4G 网卡,但 4G 链路还没完全建好,导致所有流量都走不通。

解决:调整网卡优先级。打开"网络连接"→右键 WiFi 网卡→属性→IPv4→高级→取消"自动跃点"→手动填一个较小的数字(比如 10)。这样 Windows 会优先走 WiFi,FS-Dongle 作为备用网卡。或者在命令行手动调整:

# 查看网卡列表和接口索引
netsh interface ipv4 show interfaces

# 设置 WiFi 网卡优先级(InterfaceIndex 替换为实际值)
netsh interface ipv4 set interface "Wi-Fi" metric=10
netsh interface ipv4 set interface "USB RNDIS Adapter" metric=50

经验:如果同时有多个网络接口,注意路由优先级。做 IoT 测试时最好只保留 FS-Dongle 这一张网卡,断开 WiFi 和有线,避免路由冲突。

坑3:树莓派下网卡名称不确定

症状:树莓派上插上 FS-Dongle 后,ip addr 显示的网卡名称有时是 usb0,有时是 eth1,重启后又变了。

原因:Linux 的网卡命名规则取决于设备插入顺序和 udev 规则。如果有多个 USB 网卡设备,名称可能漂移。

解决:写一个 udev 规则固定网卡名称。根据 dmesg 里识别到的设备信息,给 FS-Dongle 分配固定的网卡名。

# 查看设备信息
dmesg | grep cdc_ether

# 创建 udev 规则
sudo nano /etc/udev/rules.d/70-fs-dongle.rules

# 写入以下内容(根据实际 MAC 地址修改)
SUBSYSTEM=="net", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="fsdongle0"

保存后重启 udev:

sudo udevadm control --reload-rules
sudo udevadm trigger

以后每次插入 FS-Dongle,网卡名就固定是 fsdongle0 了。

经验:如果脚本里要引用网卡名称,不要用自动分配的名字,用 udev 规则固定下来最靠谱。

坑4:长时间运行偶发断网

症状:FS-Dongle 连续运行 3-4 小时后,偶尔会断网。网络灯不闪了,网卡还在,但 ping 不通外网。拔插一次 USB 恢复正常。

排查:不确定是基站切换导致模块内部状态卡死,还是 4G 链路掉线后没自动重连。观察了几次,发现在信号偏弱的位置更容易出现。

解决:暂时用了个 workaround——在树莓派上写了个监控脚本,每分钟 ping 一次,连续 3 次失败就自动重启网卡接口:

#!/bin/bash
# fsdongle_watchdog.sh
# crontab: * * * * * /home/pi/fsdongle_watchdog.sh

IFACE="fsdongle0"
FAIL_COUNT_FILE="/tmp/fsdongle_fail_count"

if ! ping -c 1 -W 5 -I $IFACE 8.8.8.8 > /dev/null 2>&1; then
    count=$(cat "$FAIL_COUNT_FILE" 2>/dev/null || echo 0)
    count=$((count + 1))
    echo $count > "$FAIL_COUNT_FILE"

    if [ $count -ge 3 ]; then
        # 连续 3 次失败,重启网卡
        sudo ip link set $IFACE down
        sleep 2
        sudo ip link set $IFACE up
        echo 0 > "$FAIL_COUNT_FILE"
        logger "FS-Dongle watchdog: network interface restarted"
    fi
else
    echo 0 > "$FAIL_COUNT_FILE"
fi

加了这个看门狗后,断网后大约 1 分钟就能自动恢复,对无人值守的工控场景来说够用了。后续会跟飞思创技术支持反馈这个问题,看看是不是固件层面能优化重连逻辑。


七、上手难度评价

总体来说,FS-Dongle-F8X0M1 的上手难度非常低。如果你有以下基础,10 分钟就能跑通:

  • 会插 USB
  • 会用命令行 ping 测试
  • SIM 卡没欠费(这条最重要,别问我怎么知道的)

对比一下三种 4G 联网方案的上手难度:

方案 上手步骤数 需要写代码吗 预计耗时
Cat.1 模组 + PPP 拨号 7+ 步(装驱动→配 usb_modeswitch→写 pppd 脚本→设 APN→拨号→调试→调试→调试) 1-2 天
4G 路由器 4 步(插卡→通电→配置 WiFi→连 WiFi) 30 分钟
FS-Dongle(RNDIS/ECM) 2 步(插卡→插 USB) 1-2 分钟

说实话,这个上手体验比我预期还好。开箱时我说"免驱 RNDIS 是最大卖点",上电实测后发现——它真的做到了。从 Windows 到 Linux,没有一个平台需要装驱动或写拨号脚本,真正的"即插即用"。

唯一的小遗憾是长时间运行的断网问题,但加个看门狗脚本也能兜底。如果是做正式项目部署,建议跟厂家确认固件版本是否有已知的重连 bug,或者等后续固件更新。


小结

从插 SIM 卡到两个平台成功上网,整个过程不到 20 分钟(含踩坑时间)。FS-Dongle-F8X0M1 的"免驱 RNDIS/ECM"不是宣传话术,实测确实做到了"插上就上网"。

几个感受:

  • Windows 体验最丝滑——插上就是一张网卡,不需要任何操作
  • Linux(树莓派)同样免驱——cdc_ether 内核模块自动加载,体验和 Windows 一致
  • 拨号过程全透明——模块固件内部自动完成搜网、附着、拨号、获取 IP,用户只需要面对一张网卡
  • Cat.1 速率够用——平均下载 6.8Mbps、上传 3.5Mbps,做 IoT 数据回传富余得很
  • 长时间运行注意加看门狗——偶发断网问题可以用脚本兜底,后续关注固件更新

💬 你给设备做过 4G 联网吗?用的是模组自研拨号、4G 路由器、还是 USB 上网棒?评论区聊聊你的方案和踩过的坑~

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐