Ubuntu下Chromium使用Web Serial API无法识别兼容设备求助
针对Ubuntu 22.04系统下Snap版Chromium无法通过Web Serial API识别Arduino设备的问题,可按以下步骤排查修复:
添加用户串口权限
串口设备默认归dialout组管理,将当前用户加入该组以获取访问权限:sudo usermod -aG dialout $USER执行后需注销并重新登录使权限生效。可通过
ls -l /dev/ttyACM0(替换为你的Arduino设备实际路径)确认设备权限是否包含dialout组的读写权限。解除Snap沙箱的串口访问限制
Snap应用的沙箱会限制硬件访问,需手动给Chromium添加USB/串口权限:sudo snap connect chromium:raw-usb sudo snap connect chromium:serial-port这两个命令分别授予Chromium访问USB设备和串口的权限,解决沙箱导致的设备无法被检测到的问题。
调整Web Serial API的设备过滤规则
如果代码中使用了过滤条件,可能会遗漏设备。若之前未指定过滤,navigator.serial.requestPort({})应列出所有可用设备;若需要精准匹配,可通过lsusb命令获取Arduino的USB VID/PID(比如Arduino Uno的VID为0x2341,CH340芯片的VID为0x1A86),修改代码如下:let port = await navigator.serial.requestPort({ filters: [ { usbVendorId: 0x2341 }, { usbVendorId: 0x1A86 } ] });同时,可在Chromium设置
chrome://settings/content/serial中清除已保存的设备许可,重新发起设备请求。重启验证
完成上述操作后,完全关闭Chromium(包括后台进程),重新插拔Arduino设备,再打开浏览器测试Web Serial API。确认API启用状态
虽然Chromium 111默认支持Web Serial API,仍可通过chrome://flags/#enable-experimental-web-platform-features确认该功能处于启用状态。
内容的提问来源于stack exchange,提问作者Mehdi Coding

