在 Linux 操作系统中连接 QuecPython 模块
前言
当前,由于模组厂商只提供了适用于 Windows 操作系统的相关工具,因而 QuecPython 的固件烧录、合并、量产等环节通常都只能在 Windows 操作系统中进行。但一般性的程序开发和调试工作主要通过串口完成,因而不受这一限制,可以在大部分支持 USB CDC 串口的操作系统,如 macOS 和 Linux 中完成。
本文主要介绍在 Linux 操作系统中连接 QuecPython 开发板(模块)并建立串口通信的方法。
测试平台
本文所述的相关操作流程和技术细节已在以下模块和操作系统平台上进行过验证。
模块
| 模块型号 | 固件版本 |
|---|---|
| EC600NCNLA | QPY_OCPU_V0005_EC600N_CNLA_FW |
| EC600NCNLC | QPY_OCPU_V0005_EC600N_CNLC_FW |
| EC600UCNLB | QPY_V0007_EC600U_CNLB_FW |
| EC600UCNLC | QPY_V0005_EC600U_CNLC_FW |
操作系统
| 系统名称 | 版本 | 架构 |
|---|---|---|
| Ubuntu | 20.04.3 Desktop | AMD64 |
| Ubuntu | 20.04.3 Server | AMD64 |
| Ubuntu | 22.04 Desktop | AMD64 |
| Ubuntu | 22.04 Server | ARM64 |
| Fedora | 36 Workstation | AMD64 |
| Fedora | 36 Server | AMD64 |
| CentOS | 7.9.2009 | AMD64 |
| CentOS | 8.5.2111 | AMD64 |
| Raspberry Pi OS | 10 (Buster) | ARM64 |
操作流程
本文中的大部分操作在 Fedora 35 Workstation 操作系统中完成。对于其他操作系统的用户,请根据实际情况自行调整相关指令。
首先,使用 USB 线缆连接模块和计算机,并确保模块已正常上电运行。
然后,在系统终端中执行 ls /dev/ttyUSB* 命令,列出与本机连接的所有 USB 串口。由于未检测到 USB 串口设备,通常会出现“无法访问”错误。
$ ls /dev/ttyUSB*ls: 无法访问 '/dev/ttyUSB*': 没有那个文件或目录
使用 lsusb 命令列出所有连接的 USB 设备,在返回内容中可以看到 Quectel 设备及其 USB ID。
$ lsusbBus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 003 Device 005: ID 0e0f:0002 VMware, Inc. Virtual USB HubBus 003 Device 004: ID 0e0f:0002 VMware, Inc. Virtual USB HubBus 003 Device 003: ID 2c7c:0901 Quectel Wireless Solutions Co., Ltd. AndroidBus 003 Device 002: ID 0e0f:0003 VMware, Inc. Virtual MouseBus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
若在此步骤未发现 Quectel 设备,请检查线缆连接和模块运行情况,或更换计算机再试。
通常情况下 EC600N 模块的 ID 为 2c7c 6001,EC600U 模块的 ID 为 2c7c 0901,请以实际返回值为准。
之后,使用以下命令手动添加 USB 串口设备。
$ sudo modprobe option$ sudo sh -c 'echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id'# 请根据实际的设备 ID 修改此命令
此时,再执行 ls /dev/ttyUSB* 命令可以看到新增的 USB 串口。
$ ls /dev/ttyUSB*/dev/ttyUSB0 /dev/ttyUSB2 /dev/ttyUSB4 /dev/ttyUSB6/dev/ttyUSB1 /dev/ttyUSB3 /dev/ttyUSB5# 一般而言 EC600U 会新增 6 至 7 个端口,EC600N 为 3 个
至此,就可以使用 USB 串口与 QuecPython 模块进行通信了。一般的,在没有接入其他 USB 串口设备的情况下,EC600N 模块的 USB AT 口为 ttyUSB1,Python 交互口为 ttyACM0;EC600U 模块的 USB AT 口为 ttyUSB0,Python 交互口为 ttyUSB6。请以实际情况为准。
注意事项
- 新版的 QuecPython 固件在编译时未开启 MicroPython 的
WEAK_LINKS特性,致使在引入内置模块(如import sys时),无法自动转换为带u前缀的同名模块(如usys)。因此,无法直接使用 Thonny 等常见的 MicroPython 工具与烧录有 QuecPython 固件的模组进行通信。建议改用 cutecom 等普通串口工具。 - 使用虚拟机可能会降低串口通信的稳定性或导致串口间歇性失灵,因此不建议使用虚拟机执行操作。
- 操作系统重启后,上述涉及 USB ID 的改动会失效。必要情况下可将相关命令写入开机启动脚本。
修订记录
| 版本号 | 修改内容 | 修改时间 | 修改者 |
|---|---|---|---|
| 0.0.1 | 初版 | 2021.11.06 | Exdream |
| 0.1.1 | 更新被测固件版本 | 2021.12.22 | Exdream |
| 0.1.2 | 优化部分格式和表述 | 2022.03.11 | Exdream |
| 0.1.3 | 更新被测固件版本,增加表述严谨性 | 2022.05.27 | Exdream |
