0

Could not open /dev/ttyUSB0

 1 year ago
source link: https://www.myfreax.com/could-not-open-dev-ttyusb0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
tio

Could not open /dev/ttyUSB0

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

Updated At 20 Nov 2022 3 min read
By myfreax
Could not open /dev/ttyUSB0

Could not open /dev/ttyUSB0

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

ESP32系列采用Tensilica Xtensa LX6微处理器,包括双核心和单核变体,内置天线开关,RF变换器,功率放大器,低噪声接收放大器,滤波器和电源管理模块。

刚入手一个块ESP32-WROVER-E想学习一下C语言,没有想到第一步上来就给一个莫名奇妙的问题。

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

翻译过来就是一个致命的错误,不能打开/dev/ttyUSB0,该端口不存在。我查找端口的方式都是按照官方查找端口的方式进行的。下面我们说一下怎么解决这个问题。

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

Linux/Mac 查找串口设备名称

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

官方文档给出一个简单解决方式就是,首先运行一次ls命令ls /dev/tty* 列出所有TTY设备。

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

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

通常我们比较建议使用官方文档找到ESP32开发板串口的设备名称,但需要改进一点就是列出TTY设备文件时,直接指定USB的TTY设备。

命令ls /dev/tty*包含太多的文件,很难找到。而命令ls /dev/ttyUSB?则会很容易就能发现。

ls /dev/ttyUSB?

解决端口不存在

找到ESP32正确的串口设备名称非常重要,如果你没有找到正确串口设备名称,你将永远得到是 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命令修改权限只是一次性的,当你将ESP32断开连接,串口设备文件就会恢复原来的权限。

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

sudo usermod -aG dialout $USER
newgrp dialout

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK