tio

Linux USB权限拒绝

ESP32是低成本,低功耗的单片机微控制器,集成Wi-Fi和双模蓝牙

3 min read
By myfreax
Linux USB权限拒绝
Linux USB权限拒绝

TTY是UNIX和Linux抽象设备。有时它指的是物理输入设备,例如串行端口USB,有时它指的是允许用户与系统交互的虚拟TTY。

TTY是Linux/Unix一个子系统,通过的TTY驱动,在内核级别的进程管理、行编辑和会话管理成为可能。

ESP32是低成本,低功耗的单片机微控制器,集成Wi-Fi和双模蓝牙。ESP32系列采用Tensilica Xtensa LX6微处理器,包括双核心和单核变体。

如果当你使用esptool.py命令清除ESP32固件时,终端给了一个错误提示A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist。

翻译过来就是一个致命的错误,不能打开/dev/ttyUSB0,端口不存在。在本教程中,我们将说明如何解决不能打开/dev/ttyUSB0,端口不存在和Linux USB权限拒绝。

esptool.py --chip esp32 -b 115200  --port /dev/ttyUSB0 erase_flash

Linux/Mac 查找串口设备名称

要解决端口不存在的问题,你必须先保证能找到正确的串口设备名称。在Linux,USB串口的设备名称通常都以ttyUSB作为前缀,然后USB串口的数字。

要找正确的端口,最简单解决方式就是,首先运行一次ls命令ls /dev/tty*列出所有TTY设备。

然后使用USB线连接你的设备,再次运行命令ls /dev/tty*列出所有TTY设备。增加的TTY设备文件就是你刚连接的串口设备名称。

这是可以在不安装任何软件找到串口设备名称方法,当然你也可以使用Arduino IDE找到ESP32开发板串口设备名称。

如果你设备连接的USB串口,你可以直接指定USB串口的TTY设备。运行命令ls /dev/ttyUSB?

ls /dev/ttyUSB?命令相对于ls /dev/tty*命令来说会很容易就能发现。

ls /dev/ttyUSB?

解决权限拒绝与端口不存在

找到正确的串口设备名称非常重要,如果你没有找到正确串口设备名称,你将永远得到是Could not open /dev/ttyUSB0, the port doesn't exist。

如果你确定找到的是正确的串口设备名称,还是遇到错误消息A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist。

这是因为当前登录的用户对串口设备文件不可读写,也就是没有权限,就会出现同样的错误。其实,这里的错误应该说权限拒绝才对。

要解决次问题有两种方式。第一种直接使用chmod命令修改串口设备文件的权限,让所有用户都可以读写串口设备文件。

第二种是使用usermod命令将当前用户加入dialout组,dialout组对串口设备文件具有读写权限。

这里之所以建议使用第二种方案是因为chmod命令修改权限只是一次性的,当你将设备断开连接,串口设备文件就会恢复原来的权限。

命令sudo usermod -aG dialout $USER将当前登录的用户加入dialout组。newgrp dialout命令使用户组的修改在当前shell会话生效。

sudo usermod -aG dialout $USER
newgrp dialout

Related Articles