2012-11-19 17 views
7

के लिए यूएसबी सीरियल पोर्ट पर बॉड रेट सेट नहीं कर सकता है, मैंने अभी एक परियोजना पर उबंटू 10.04 से अपग्रेड किया है जो एक एम्बेडेड डिवाइस को USB सीरियल पोर्ट के माध्यम से 115,200 बॉड पर जोड़ता है। इसे अपग्रेड करने के बाद, यह काम नहीं किया, लेकिन मैंने रीबूट किया और कनेक्ट करने में सक्षम था। चूंकि मेरे सिस्टम को बंद करना और पुनरारंभ करना मैं कनेक्ट करने में सक्षम नहीं हूं। सीरियल लाइन है जैसे कि यह (की तरह लग रही है जैसे गलत बॉड दर पर जुड़ा हुआ है वर्णों की तेजी स्ट्रिंग दिखता है:।उबंटू 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 

लेकिन कुछ और पिता आईएलएस:

$ 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 

मैं काम कर रहा था कुछ महीनों के लिए उबंटू 10.04 के तहत इस डिवाइस के साथ और पिछले हफ्ते उनका उपयोग करने में सक्षम था, लेकिन बंद होने और रीबूट करने के बाद से मैं सक्षम नहीं हुआ। मैंने ऑनलाइन देखा है और एक ही समस्या के साथ कुछ लोगों को मिला है, लेकिन समाधान के साथ कोई नहीं। मैं इस समस्या को कैसे ठीक करुं?

+0

क्या आपने सेटरियल का उपयोग करने की कोशिश की है? – exussum

+0

हां, सेटरियल कॉल/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) पढ़ा है सुपर उपयोगकर्ता root और dialout समूह लिखने की अनुमति भी (rw) है।

आप dialout समूह के सदस्य हैं, तो आप ऊपर बताए गए stty -F /dev/ttyUSB0 115200 आदेश से किसी भी अतिरिक्त बात बिना गति बदल सकते हैं अन्यथा आप sudo का उपयोग की जरूरत है।

आप id कमांड के साथ अपनी सदस्यता स्थिति को नियंत्रित कर सकते हैं।