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使用的內核)中可能存在驅動問題。
-
首先檢查當前內核是否識別了硬件:
bash
# 查看驅動信息 lsmod | grep ch34 # 或者更廣泛地查看usbserial lsmod | grep usbserial
-
如果沒有任何輸出,或者設備識別為
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 串口模塊已經沒有沖突了。