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