USB पोर्ट एन्यूमरेशन क्यों बदलता है?


10

मैं Gnokii और Gammu के साथ एक Huawei GMS / UMTS USB मॉडेम का उपयोग कर रहा हूं। मॉडम पाई पर निचले बंदरगाह में था। इसके साथ और dmesg | grep ttyदिखाएगा । (1 स्टिक पर 2 USB डिवाइस सामान्य है, इस मामले में)।/dev/ttyUSB0/dev/ttyUSB1

मैंने Gnokii और Gammu को तदनुसार कॉन्फ़िगर किया, हालाँकि ttyUSB0 पर मैं केवल संदेश भेज सकता था। भेजने और प्राप्त करने दोनों केवल ttyUSB1 पर काम करेंगे।

मैंने तब छड़ी को ऊपरी USB सॉकेट में स्थानांतरित कर दिया (क्योंकि अन्यथा मेरी वाईफाई-स्टिक इसके बगल में फिट नहीं होती)। सब कुछ ठीक काम करता रहा। कई रिबूट के बाद भी, ठंडा और गर्म।

फिर मुझे फ़ाइल सिस्टम का विस्तार करने की आवश्यकता थी (हाँ, मुझे पता है कि मुझे पहले ऐसा करना चाहिए था)। उसके बाद, मॉडेम ttyUSB0 और ttyUSB * 2 * पर था। बाद में काम करना / प्राप्त करना। यह पता लगाने में मुझे कुछ समय लगा।

अपडेट: 2 दिन बाद, ttyUSB2 गायब हो गया है। काम करने वाला मॉडेम अब ttyUSB0 (ttyUSB1) पर ही प्रकट होता है।

किसी भी विचार क्यों ऐसा हुआ? प्रासंगिक डेबियन या लिनक्स डॉक्स के लिए कोई लिंक, शायद? मैं बहुत मजबूर हूँ ..


/sys/class/tty/एक गाइड के रूप में नामों का उपयोग करने का प्रयास करें ।
लेकेनस्टाइन

केवल ttyUSB / sys / class / tty में ttyUSB0 और ttyUSB1 हैं। अभी। कौन जानता है कि यह कल क्या होगा।
रॉल्फबली

USB एन्यूमरेशन डिज़ाइन द्वारा बदलता है, आप एक नया डिवाइस प्लग करते हैं और एक नया नंबर प्राप्त करते हैं। या शायद एक पुराना डिवाइस जबकि पिछला पोर्ट नंबर अभी भी अधूरा ट्रांसफर के साथ व्यस्त है। कोशिश करें कि उपकरणों को जल्द वापस न करें और सुनिश्चित करें कि इन उपकरणों का उपयोग करने वाले सभी सॉफ़्टवेयर ने अपना व्यवसाय ख़ुशी से समाप्त कर दिया है।
लेनिक

जवाबों:


16

Gammu प्रलेखन का सुझाव है (लेकिन किसी भी विस्तार में नहीं जाता है) एक वैकल्पिक हल,

संपादित करें: Atmel में एक अनुप्रयोग नोट है जो अच्छी तरह से गणना प्रक्रिया का वर्णन करता है।

गणना में परिवर्तन होता है क्योंकि यह होस्ट, हब और डिवाइस के बीच बातचीत में होता है, और इनमें से प्रत्येक से प्रतिक्रिया समय भिन्न हो सकता है, भले ही सेटअप एक रिबूट से अगले तक समान हो।

अद्यतन: समाधान आसानी से लाइन पर नहीं मिलता है, और सभी जगह टुकड़ों में बिखरा हुआ है। इसलिए मैंने इसे एक दस्तावेज़ में एक साथ रखा । यह वह है जो इसे उबालता है।
1. पता लगाएं कि ttyUSB पर क्या है:

dmesg | grep ttyUSB  

2. डिवाइस की सभी विशेषताओं को सूचीबद्ध करें और एक अद्वितीय पहचानकर्ता सेट चुनें, जैसे idVendor + idProduct (और यदि आवश्यक हो तो SerialNumber यदि आपके पास एक ही idVendor और idProduct के साथ एक से अधिक उपकरण हैं)।

udevadm info --name=/dev/ttyUSB1 --attribute-walk

3. /etc/udev/rules.d/99-usb-serial.rulesइस लाइन में कुछ इस तरह से एक फ़ाइल बनाएँ :

SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", SYMLINK+="your_device_name" 

(यह मानते हुए कि आपको क्रम संख्या की आवश्यकता नहीं है, और निश्चित रूप से idVendor और idProduct के लिए संख्याओं के साथ जो आपको चरण 2 में मिला है।
4. नया नियम लोड करें:

sudo udevadm trigger

5. सत्यापित करें कि क्या हुआ:

ls -l /dev/your_device_name  

दिखाएगा कि सहानुभूति किस ttyUSB नंबर पर गई थी। यदि यह है /dev/ttyUSB1, तो सत्यापित करें कि वह किसका है और किस समूह का है:

ls -l /dev/ttyUSB1   

तो बस इसके मज़े के लिए:

udevadm test -a -p  $(udevadm info -q path -n /dev/your_device_name)

8

आपने आंशिक रूप से अपने प्रश्न का उत्तर दिया है, लेकिन इसे करने का एक और तरीका है, विशेष रूप से धारावाहिक उपकरणों के लिए: /dev/serial/*पथ। मेरे पास रास्पबेरी पाई पर एक प्रोलिफिक USB → RS232 इंटरफ़ेस है जो लगभग हमेशा की तरह दिखाई देता है /dev/ttyUSB0। लेकिन यह सिस्टम पर भी दिखाई देता है:

  • /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
  • /dev/serial/by-id/usb-067b_2303-if00-port0

by-idलिंक का उपयोग करते हुए एक ही रहना चाहिए, जब तक कि मैं एक और PL2303- आधारित कनवर्टर नहीं जोड़ता।


..और जब कोई वास्तव में एक नया PL2303- आधारित कनवर्टर जोड़ता है। (उनमें से 2) तो फिर क्या किया जा सकता है?
ओबेरम क्रोनन

तुम फंसे हो। मैं इससे बचने के लिए ब्रांड्स को मिक्स एंड मैच करना पसंद करता हूं।
scruss

यह एक सीरियल पोर्ट के लिए काफी मददगार था जो कि पायथन -थैंक में मुझ पर बदल रहा था!
घोस्टटॉस्ट १४'१
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.