2012-11-19 251 views
7

我剛剛從Ubuntu 10.04上升級了一個項目,該項目通過115,200波特率的USB串行端口連接嵌入式設備。升級後,它不起作用,但我重新啓動並能夠連接。由於關閉並重新啓動我的系統,我無法連接。串口線看起來是在錯誤的波特率連接(字符快速字串喜歡看這樣的:。無法爲Ubuntu的USB串行端口設置波特率12.04

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"... 

USB設備被識別並設置爲/dev/ttyUSB0當我嘗試設置與stty波特率我得到:

$ sudo stty -F /dev/ttyUSB0 115200 
stty: /dev/ttyUSB0: unable to perform all requested operations 

如果我嘗試設置爲9600似乎工作:

$ sudo stty -F /dev/ttyUSB0 9600 

但別的發ILS:

$ sudo stty -F /dev/ttyUSB0 4800 
stty: /dev/ttyUSB0: unable to perform all requested operations 

這裏是stty的看到的是:

$ stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost -onlcr 
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke 

我可以使用的stty(回聲,ECHOE等)改變其他值,但不能波特率。

我看到一個評論在網上,有人可以設置波特率,Minicom,而不是在命令行,所以我得到了小型機和嘗試過,但我得到了相同的結果(這似乎是錯誤的波特率)。

我也試過setserial的,但也拒絕接受/dev/ttyUSB設備:

$ sudo setserial /dev/ttyUSB0 -a 
Cannot get serial info: Invalid argument 
$ sudo setserial /dev/ttyS0 -a 
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 
    Baud_base: 115200, close_delay: 50, divisor: 0 
    closing_wait: 3000 
    Flags: spd_normal skip_test 

最後,這裏的設備,並從dmesg的他們設置:

$ ls -l /dev/ttyUSB* 
crw-rw-rw- 1 root dialout 188, 0 Nov 19 15:53 /dev/ttyUSB0 
crw-rw-rw- 1 root dialout 188, 1 Nov 19 16:00 /dev/ttyUSB1 
$ dmesg | grep ttyUSB 
[ 32.444445] usb 4-1: generic converter now attached to ttyUSB0 
[ 32.444549] usb 8-2: generic converter now attached to ttyUSB1 

我一直在努力這款設備在Ubuntu 10.04下運行了幾個月,並且能夠在上週使用它們,但是由於關閉和重新啓動,我一直無法使用它。我在網上看了一下,發現有幾個人有類似的問題,但沒有解決方案。我該如何解決這個問題?

+0

您是否嘗試過使用setserial? – exussum

+0

是的,setserial調用/ dev/ttyUSB0一個「無效參數」(見問題的結尾) – user1835090

回答

3

我仍然不知道發生了什麼,但它現在正在工作。對於遇到同樣問題的任何人,我嘗試了「modprobe -r usbserial」(我的想法是查看是否可以使用modprobe -f加載舊驅動程序;它不能),然後重新加載模塊「modprobe usbserial」 。這一次串行工作正常 - 我不知道爲什麼。

現在,當我的stty它報告:

~$ stty -F /dev/ttyUSB0 
speed 115200 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost 
-isig -icanon -iexten -echo 

,我可以改變波特率(我改成了9600,然後返回到115200)。

所以沒有令人滿意的答案,但顯然使用它可以使它工作 - 就像它重新啓動後第一次開始工作。

+0

舊的線程,但如果你只是重複命令('stty -F/dev/ttyUSB0'),它將起作用。我不知道爲什麼它需要兩次嘗試,但這應該工作。 – corpico

0

需要對設備文件寫入權限才能更改設置。您可以用簡單的列表控制它 。例如。

$ ls -l 
crw-rw-r-T 1 root dialout 188, 0 jan 9 16:16 /dev/ttyUSB0 

在上述每個人的情況下讀權限(r)超級用戶rootdialout組具有寫權限太(rw)。

如果您是dialout組的成員可以通過上述stty -F /dev/ttyUSB0 115200 命令改變速度 沒有任何多餘的東西,否則你需要使用sudo

您可以使用id命令控制您的會員狀態。