Files
virtual_serial_guide/docs/troubleshooting.md
T
crosstyanandClaude Opus 4.8 74905def9a Add Chinese RFC 2217 serial-over-frp deployment guide
Split the manual into a README index plus docs/ sections covering
hardware selection, Linux and Windows serial servers, shared frpc
configuration via env templating, client testing, security, and
troubleshooting. Store real frpc credentials in an ignored .env and
track images with Git LFS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 15:04:52 +08:00

4.2 KiB
Raw Blame History

返回首页

故障排查

按链路顺序排查:先确认本机串口后端和 RFC 2217 监听器正常,再检查 FRP 注册与公网端口,最后检查远程客户端。不要以 TCP 端口可达代替 RFC 2217 功能测试。

一、串口后端

ser2net 报告 permission denied

检查服务账户、TTY 所有权和 dialout 组成员关系:

systemctl show ser2net -p User -p Group
ls -lL /dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE
id ser2net

重启后设备路径消失

不要依赖会动态变化的 /dev/ttyUSB*/dev/ttyACM*/dev/ttyCH*。优先在配置中使用稳定的 /dev/serial/by-id/*/dev/serial/by-path/* 路径。

如果转换器没有唯一序列号,使用 by-path,或安装匹配条件经过谨慎限定的 udev 规则。

WCH 转换器没有可用 TTY

检查 lsusbdmesg,并检查所有可能的设备名:

/dev/ttyACM*
/dev/ttyUSB*
/dev/ttyCH*

CH342/CH344 板卡可能暴露 CDC ACM 接口,也可能因具体产品和固件而需要 WCH 多端口驱动。安装更新的通用 ch341 驱动并不是通用解决方案。应使用发行版支持或硬件厂商提供、且与具体设备匹配的驱动;如果不希望维护定制驱动,可选择 FTDI 方案。

客户端能连接但不能修改波特率

确认 accepter 明确启用了 RFC 2217

accepter: telnet(rfc2217),tcp,127.0.0.1,2217

普通 tcp 或普通 telnet accepter 不等价。客户端也必须支持 RFC 2217,而不是仅打开裸 TCP socket。

有连接但没有串口数据

先从 Linux 服务器本机测试 ser2net 的回环监听器:

  • 本机 RFC 2217 正常而公网端点异常:转到 FRP 排查。
  • 本机 RFC 2217 也异常:检查设备权限、RS-485 A/B 极性、终端电阻、偏置、初始波特率、校验位,以及转换器是否正确处理 RS-485 发送方向。

二、FRP

FRP 公网端口拒绝连接

先在运行 frpc 的 Linux 主机检查服务状态和日志:

sudo systemctl status frpc --no-pager
sudo journalctl -u frpc -n 100 --no-pager

然后在 frps 主机确认:

  • 所选 remotePort 已被 FRP 允许;
  • 没有其他代理占用同一端口;
  • 主机防火墙允许预期客户端连接该端口。

FRP 已注册,但客户端连接失败

确认本地串口服务器确实监听 frpc 配置所指向的 127.0.0.1:localPort。Windows PowerShell 可使用:

Get-NetTCPConnection -State Listen |
  Where-Object LocalPort -In 2217,7001 |
  Format-Table LocalAddress, LocalPort, OwningProcess

随后检查 WinSW 日志、sc.exe query 输出、frpc 日志、frps 端口限制及服务端防火墙。

TCP 可达但 RFC 2217 仍不可用

Windows 上:

Test-NetConnection FRPS_HOST -Port 2217

该命令成功只表示 TCP 可达,不验证 RFC 2217 协商、双向串口数据或远程串口参数控制。应改用 pySerial/miniterm 和波特率修改脚本进行端到端测试。

三、Windows 特定问题

COM 端口忙或拒绝访问

Windows 通常以独占方式打开串口句柄。先关闭终端软件、厂商工具、监控程序以及先前启动的串口服务器进程,再判断是否为服务账户权限问题。

转换器重新出现后 COM 编号改变

不要只依赖旧 COM 编号。应结合 VID、PID、序列号、实例 ID 和物理位置识别设备。必要时在设备管理器中分配首选 COM 编号,然后更新服务器配置并重启服务。

服务启动时 USB 转换器尚不存在

使用延迟自动启动和失败后重启。测试以下场景:

  • 冷启动;
  • 系统重启;
  • 拔出并重新插入;
  • USB 集线器断开;
  • 挂起与恢复。

设备意外移除后,已有串口句柄不会自动恢复有效;服务器可能需要重新打开设备或重启。

hub4com 本地工作正常,但意外监听 LAN

确认命令包含:

--interface 127.0.0.1

缺少该选项时,其上游实现会绑定所有 IPv4 接口。

原生 ser2net 无法加载 DLL

先安装匹配的官方 gensio 软件包,再安装 ser2net;确认两个安装程序的 bin 目录均已加入系统 PATH,并避免混用不同代的预编译发行包。