【ubuntu】ubuntu中找不到串口设备问题排查

ubuntu中找不到串口问题排查

    • 1. 检查设备识别情况
    • 2. 检查并安装驱动
    • 3. 检查内核消息
    • 4. 禁用brltty服务
      • 1. 停止并禁用 brltty 服务
      • 2. 完全移除 brltty 包
      • 3. 重启系统或重新插拔设备
    • 5.输出结果

问题:虚拟机ubuntu中,已经显示串口设备连接成功,但是在/dev/tty* 设备下找不到串口设备,虚拟机设置无误,排查ubuntu内部问题。

1. 检查设备识别情况

打开Ubuntu的终端,依次输入以下命令,观察系统是否识别到了硬件:

bash

# 查看系统日志中是否有串口设备相关的信息
dmesg | grep tty
# 或者尝试更具体的筛选
dmesg | grep usb
# 列出所有已识别的串口设备
ls /dev/tty*
# 特别注意 /dev/ttyS*, /dev/ttyUSB*, /dev/ttyACM* 等设备文件
# 查看USB设备列表
lsusb

如果 lsusb 显示了当前设备下串口转换芯片(如CH340、FT232、CP2102等),但 /dev/ 下没有对应的 ttyUSB*ttyACM* 设备,问题可能出在驱动或权限上。

2. 检查并安装驱动

对于常见的CH340芯片,在较新的Linux内核(如Ubuntu 22.04使用的内核)中可能存在驱动问题。

  1. 首先检查当前内核是否识别了硬件:

    bash

    # 查看驱动信息
    lsmod | grep ch34
    # 或者更广泛地查看usbserial
    lsmod | grep usbserial
    
  2. 如果没有任何输出,或者设备识别为 ttyCH341USBx 而不是 ttyUSBx,你可能需要重新编译安装驱动。可以参考搜索结果中的方案:

    • 卸载现有驱动(如果有):

      sudo rmmod ch341
      
    • 下载并编译正确的驱动(具体步骤可能因驱动版本和内核版本而异,请参考相关驱动源码的说明)。

    • 安装新驱动后,重新插拔USB设备或重启虚拟机。

操作记录:

ant@ant-virtual-machine:~$ lsusb 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 001 Device 011: ID 1a86:7523 QinHeng Electronics CH340 serial converter 
Bus 001 Device 004: ID 0e0f:0008 VMware, Inc. Virtual Bluetooth Adapter 
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub 
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse 
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub ant@ant-virtual-machine:~$ lsmod | grep ch34 
ch341                  24576  0 
usbserial              69632  1 ch341

从输出结果来看,ubuntu系统已经正确识别到了串口,并且串口驱动也正常。

lsusb 已经识别到了 CH340 转换器(ID 1a86:7523)

lsmod 显示 ch341 驱动模块已经加载,并且关联了 usbserial 模块

3. 检查内核消息

查看内核日志中关于CH340的详细信息:

sudo dmesg | grep -i ch34

这会显示设备创建过程中出现的任何错误。

操作记录:

ant@ant-virtual-machine:~$ sudo dmesg | grep -i ch34
[ 2248.192716] usbcore: registered new interface driver ch341
[ 2248.192724] usbserial: USB Serial support registered for ch341-uart
[ 2248.192735] ch341 1-2.2:1.0: ch341-uart converter detected
[ 2248.201560] usb 1-2.2: ch341-uart converter now attached to ttyUSB0
[ 2248.729083] usb 1-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 2248.732131] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 2248.732147] ch341 1-2.2:1.0: device disconnected
[ 2357.621916] ch341 1-2.2:1.0: ch341-uart converter detected
[ 2357.639750] usb 1-2.2: ch341-uart converter now attached to ttyUSB0
[ 2358.194838] usb 1-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 2358.198221] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 2358.198235] ch341 1-2.2:1.0: device disconnected

dmesg 输出可以非常清楚地看到问题:brltty 服务正在与 ch341 驱动程序竞争对 USB 串口设备的控制权,导致设备反复连接和断开。
解决方案是停止并禁用brltty服务,然后重新连接设备。

4. 禁用brltty服务

brltty 是一个为视障用户提供盲文显示支持的服务,但它有时会错误地尝试控制串口设备,与正常的串口驱动程序发生冲突。

1. 停止并禁用 brltty 服务

# 停止 brltty 服务
sudo systemctl stop brltty# 禁用 brltty 服务,防止它开机自启动
sudo systemctl disable brltty# 确认服务已停止
systemctl status brltty

2. 完全移除 brltty 包

如果不需要盲文支持,最好完全移除 brltty:

# 卸载 brltty
sudo apt remove brltty# 或者彻底清除(包括配置文件)
sudo apt purge brltty

3. 重启系统或重新插拔设备

完成上述步骤后,请重新插拔您的 CH340 设备,或者重启系统:

# 重新插拔设备后检查
ls /dev/ttyUSB*# 查看内核消息确认没有冲突
dmesg | grep -i ch34 | tail -5

5.输出结果

最终,查看串口设备:

virtual-machine:~$ ls /dev/ttyUSB*
/dev/ttyUSB0

正确显示了串口设备,之后,就可以设置串口设备读写权限,使用串口设备。
最终,查看串口设备:

virtual-machine:~$ ls /dev/ttyUSB*
/dev/ttyUSB0

正确显示了串口设备,之后,就可以设置串口设备读写权限,使用串口设备。

ubuntu 系统重启后,再次查看串口驱动模式消息:

virtual-machine:~/Desktop$ sudo dmesg | grep -i ch34
[    3.247739] usbcore: registered new interface driver ch341
[    3.247747] usbserial: USB Serial support registered for ch341-uart
[    3.247758] ch341 1-2.2:1.0: ch341-uart converter detected
[    3.256254] usb 1-2.2: ch341-uart converter now attached to ttyUSB0

usb 串口模块已经没有冲突了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96881.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 性能优化 之 静态资源优化 (音频 | 模型 | 纹理 | 动画)

Unity 之 性能优化 -- 静态资源优化参考性能指标静态资源资源工作流程资源分类原理小结Audio 实战优化建议模型导入工作流程DCC中模型导出.DCC中Mesh生产规范模型导出检查流程模型优化建议纹理优化纹理基础概念纹理类型纹理大小纹理颜色空间纹理压缩纹理图集纹理过滤纹理Mipmap…

GitHub 热榜项目 - 日榜(2025-09-13)

GitHub 热榜项目 - 日榜(2025-09-13) 生成于:2025-09-13 统计摘要 共发现热门项目:18 个 榜单类型:日榜 本期热点趋势总结 本期GitHub热榜项目呈现三大技术热点:AI开发工具化(如GenKit、ROMA多智能体框架&#xff…

Pytest 常见问题及其解决方案

常见问题及解决方案 1. 测试通过了,但覆盖率不达标 现象: 虽然所有测试都通过了,但覆盖率报告显示某些代码没有被覆盖。 解决方案: 检查覆盖率配置:确保 .coveragerc 或 pytest.ini 中正确设置了要分析的源代码路径。 使用标记(markers)排除测试文件本身:避免测试代…

直击3D内容创作痛点-火山引擎多媒体实验室首次主持SIGGRAPH Workshop,用前沿技术降低沉浸式内容生成门槛

当3D、VR技术在游戏、教育、医疗、文化领域遍地开花,“内容短缺”却成了制约行业爆发的关键瓶颈——传统3D/4D创作不仅耗时耗力、依赖专业技能,还难以适配消费级设备,让许多创作者望而却步。近日,由火山引擎多媒体实验室联合领域顶…

华为基本命令

我们使用的是华为官方的模拟器eNSP 一、华为设备的模式 华为的设备有两种模式: 用户视图和系统视图 用户视图只能读取,或者进行一些基础查询 系统视图能对设备和接口进行一些配置管理,和一些高级操作 在“用户视图”下使用system-view系统可…

2025.9.14英语红宝书【必背16-20】

单词组合 中文速记句子 英文句子 confine, misery, necessitate, negotiate, preach, precaution, precision, stretch 病人被 confine(限制) 在床上,感受 misery(痛苦),情况 necessitate(需要) 医生 negotiate(商讨),牧师 preach(布道) 并提醒 precaution(预防)…

HUST-STAR电控组视觉任务

视觉任务 注意:视觉部分建议采用 python 完成,下面教程也大多针对 python。其原因在于 python 配置相应环境更为轻松,且内置库较为丰富,属于初学者友好类型。没接触过 python 也不必担心,它的大体逻辑与 C 相近&#…

压缩和归档 文件传输

压缩和归档压缩:4G----1.5Gbzip2-bunzip2 gzip-gunzip xz-unxzgzip 要压缩的文件原来的文件就会被删除 (压缩和解压缩)会生成一个 aaa.gz 的文件归档: 4G----4G 打包tarc 创建归档文件 v 看到创建的详细过程 f 文件类型 t 不展开归档文件&…

深入探索 C++ 元组:从基础到高级应用

在现代 C 编程中,元组(std::tuple)是一个强大且灵活的容器,能够存储和操作多个不同类型的数据。它在标准库中扮演着重要角色,并在实际开发中提供了诸多便利。本文将全面探讨 C 元组的各个方面,从基础用法到…

Excel批量处理一列数据---分列功能

0 Preface/Foreword当有多行数据需要处理时,为了减少手动操作,可以EXCEL数据分列功能可以提高效率。1 数据分列1.1 数据分类步骤如下:选中需要处理的一列数据;选择菜单栏中的“数据”;选择分列按照需求设置即可1.2 查找…

HTTPS + 域名 + 双向证书认证(下)

文章目录1. .p12文件1.1 主要特点1.2 常见用途1.3 常见操作1.4 与其他格式的区别1.5 与公钥的区别和联系1.6 安全性注意事项2. Nginx 配置2.1 location指令2.2 alias 与 root 指令的区别3 双向认证配置3.1 创建根证书3.1.1 生成根CA的私钥3.1.2 生成请求证书3.1.3 生成自签署CA…

嵌入式 - ARM3

一、arm启动C语言1. 配置异常向量表2. 实现了软件中断的部分注:ldmfd sp!, {r0-r12, lr} ldmfd sp!, {r0-r12, pc}^ bx lr 左半部分:繁琐易理解的返回方式:先弹出所有通用寄存器和lr &…

如何通过标签和分类提升知识复用效率

通过标签和分类提升知识复用效率,其核心在于构建一个结构化与灵活性兼备的知识组织体系。这需要将分类的“确定性”与标签的“多维性”进行有效结合,为知识的存储与检索建立清晰的“骨架”和丰富的“神经网络”。具体实践中,要求我们进行顶层…

ZYNQ PS读写PL BRAM

一、实验室任务 本章的实验任务是 PS 将数据写入BRAM,然后从 BRAM 中读出数据,并通过串口打印出来;与此同时,PL 从通过自定义ip核从BRAM中同样读出数据,并通过ILA 来观察读出的数据与串口打印的数据是否一致。这里是通…

LinuxC++项目开发日志——高并发内存池(5-page cache框架开发)

PageCachepage cache 设计逻辑一、PageCache 的核心定位:理解它与 CentralCache 的本质区别二、PageCache 的内存分配流程:从 “精确匹配” 到 “拆分适配”三、PageCache 的内存释放流程:合并小 Span,解决内存碎片问题page cache…

Matplotlib:绘制你的第一张折线图与散点图

Matplotlib入门:绘制你的第一张折线图与散点图导语 欢迎来到 Matplotlib 的世界!对于任何使用 Python 进行数据分析或机器学习的人来说,数据可视化都是一项至关重要的技能。Matplotlib 是 Python 中最流行、最基础的可视化库,它功…

MySQL保姆级安装教程

MySQL 安装详细文档,适用于 Windows、macOS 和 Linux 系统,包含了从下载到验证安装的完整步骤: 一、Windows 系统安装 MySQL 1. 下载 MySQL 安装包 访问 MySQL 官方下载页:https://dev.mysql.com/downloads/installer/选择 “MySQ…

重塑你的大脑:从理解突触到掌控人生

重塑你的大脑:从理解突触到掌控人生你是否曾对自己的某些行为感到无力?明知应该早睡,却总忍不住刷手机;下定决心要锻炼,却常常半途而废。这些困扰我们的习惯,并非简单的意志力问题,其根源深深植…

《C++进阶之STL》【哈希表】

【哈希表】目录前言------------概念介绍------------1. 什么是哈希?------------核心术语------------一、哈希函数1. 哈希函数的核心特点是什么?2. 哈希函数的设计目标是什么?3. 常见的哈希函数有哪些?直接定址法除法散列法乘法…

机器学习-模型验证

验证泛化误差 在一个数据集上估计误差,数据集只能使用一次验证数据集:可以被使用多次 基本是训练数据集中的一部分 当使用“test”时,大多数时候指的是验证数据集 生成验证数据集方法 1、数据随机分入训练集或验证集 总是随机选n%的数据作为验…