WSL 2环境下如何实现Windows与Linux进程无硬件串口环回通信
WSL2 与 Windows 端串口环回配置方案
配置失效原因
你之前尝试的COM1直接映射/dev/ttyS1不生效主要有两个核心原因:
- WSL2 默认不会自动挂载Windows侧的串口设备,需要手动配置权限才可以访问
- 如果本机没有接入真实物理串口,COM1本身是空设备,无法实现双向数据转发
可行方案1:Windows虚拟串口对+WSL2挂载(最贴合原生串口使用需求)
全程软件配置无需修改硬件,完全匹配原生串口调用逻辑:
- Windows侧创建虚拟串口对
安装免费虚拟串口工具(例如com0com),创建一组绑定的虚拟串口对,比如设置为COM3<->COM4,两个串口默认已做环回绑定,一端发送的数据会自动转发到另一端 - Windows进程绑定串口
让Windows端的测试进程直接绑定COM3,按需求配置波特率、校验位、停止位等串口参数即可 - WSL2侧配置串口权限
打开WSL2终端,执行以下命令开放对应串口的访问权限(Windows侧COMx对应WSL侧/dev/ttySx,串口号数字保持一致):
如果需要WSL重启后自动保留权限,可以把以上命令加入sudo chmod 666 /dev/ttyS4/etc/wsl.conf的boot执行配置项中,避免每次手动修改 - WSL侧进程绑定串口
让WSL内的Linux测试进程绑定/dev/ttyS4,配置和Windows侧完全相同的串口参数,即可实现两端进程通过串口双向收发数据
可行方案2:socat伪串口映射(无需安装额外Windows软件)
如果不想安装第三方虚拟串口工具,可以通过网络转发实现伪串口通信,适合对串口硬件参数校验要求不高的测试场景:
- Windows侧配置串口TCP转发
用PowerShell自带的TCP代理功能,把Windows侧进程的串口数据转发到本地TCP端口,例如5555端口 - WSL2侧安装socat工具
执行以下命令安装socat:sudo apt update && sudo apt install socat -y - 绑定TCP端口到WSL伪串口
执行以下命令把Windows侧的转发端口映射为WSL内的伪串口设备:socat pty,link=/dev/ttyVIRT0,raw,echo=0 tcp:host.docker.internal:5555 - 两端进程分别绑定对应的串口/转发端口,即可实现双向数据通信
内容的提问来源于stack exchange,提问作者Claudio La Rosa
相关产品推荐
相关产品推荐

