You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian系统下.Net5以普通用户及root身份访问ttyUSB0均被拒绝

问题解决方案

核心原因

你代码中填写的串口设备路径有误:Linux 系统下所有硬件设备文件默认存放在 /dev 目录下,FTDI 转串口设备的完整路径为 /dev/ttyUSB0,你仅填写了设备文件名未带路径前缀,.NET 的 System.IO.Ports 库无法正确定位设备文件,才会触发两类报错:普通用户运行时因在当前工作目录查找无权限访问的路径抛出未知错误203,root 用户运行时因当前工作目录不存在 ttyUSB0 文件提示找不到文件或目录。
PuTTY 能正常访问的原因是这类成熟串口工具会自动给传入的短设备名补全 /dev/ 前缀,自动从系统设备目录查找对应设备,System.IO.Ports 库无该适配逻辑,必须传入完整绝对路径。

修复操作

  1. 修改代码中的串口初始化语句,替换为完整设备路径:
System.Diagnostics.Process.Start("whoami");
// 原错误写法:var serialPort = new SerialPort("ttyUSB0", 115200);
var serialPort = new SerialPort("/dev/ttyUSB0", 115200);
serialPort.Open();
  1. 运行前可先在终端执行 ls /dev/ttyUSB0 确认设备文件存在,避免设备插拔后序号变为 ttyUSB1 等情况。
  2. 重新编译程序后即可正常运行:
  • 普通用户执行:dotnet progname.dll,你所属的 dialout 组已经有串口设备访问权限,无需额外配置
  • root 用户执行:sudo dotnet progname.dll

内容的提问来源于stack exchange,提问作者RSxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:36:05