USB bağlantı noktası numaralandırması neden değişir?


10

Gnokii ve Gammu ile bir Huawei GMS / UMTS USB modem kullanıyorum. Modem Pi'nin alt portundaydı. İle dmesg | grep ttybunun boy gösterecek /dev/ttyUSB0ve /dev/ttyUSB1. (Bu durumda 1 çubuktaki 2 USB cihazı normaldir).

Gnokii ve Gammu'yı buna göre yapılandırdım, ancak ttyUSB0'da sadece mesaj gönderebildim. Hem gönderme hem de alma yalnızca ttyUSB1 üzerinde çalışır.

Daha sonra çubuğu üst USB soketine taşıdım (aksi takdirde WiFi çubuğum yanına sığmaz). Her şey iyi çalışmaya devam etti. Ayrıca birkaç yeniden başlatmadan sonra, soğuk ve sıcak.

Daha sonra dosya sistemini genişletmem gerekiyordu (Evet, bunu daha önce yapmam gerektiğini biliyorum). Bundan sonra, modem ttyUSB0 ve ttyUSB * 2 * üzerindeydi. Gönderme / alma işleminde çalıştı. Bunu öğrenmem biraz zaman aldı.

Güncelleme: 2 gün sonra, ttyUSB2 ortadan kayboldu. Çalışan modem artık ttyUSB0'da kendini gösteriyor (ttyUSB1 idi).

Bunun neden olduğu hakkında bir fikrin var mı? İlgili debian veya linux belgelerine herhangi bir bağlantı olabilir mi? Çok mecbur olurdum ..


İçindeki adları /sys/class/tty/kılavuz olarak kullanmayı deneyin .
Lekensteyn

/ Sys / class / tty içindeki tek ttyUSB'ler ttyUSB0 ve ttyUSB1'dir. Şimdi. Yarın ne olacağını kim bilebilir.
RolfBly

USB numaralandırma tasarımına göre değişir, yeni bir cihaz takar ve yeni bir numara alırsınız. veya önceki bağlantı noktası numarası hala tamamlanmamış aktarımlarla meşgulken eski bir cihaz olabilir. cihazları çok erken tekrar bağlamamaya çalışın ve bu cihazları kullanan tüm yazılımların işlerini mutlu bir şekilde bitirdiğinden emin olun.
lenik

Yanıtlar:


16

Gammu belgeleri bir çözüm önermektedir (ancak herhangi bir ayrıntıya girmemektedir),

Düzenleme: Atmel, numaralandırma işlemini güzel bir şekilde açıklayan bir Uygulama Notuna sahiptir.

Ana bilgisayar, hub ve aygıt arasındaki bir görüşmede gerçekleştiği için numaralandırma değişir ve bunların her birinden yanıt zamanlaması , kurulum bir yeniden başlatmadan diğerine özdeş olsa bile değişebilir .

Güncelleme: Çözüm, hatta kolayca bulunmaz ve her yere parçalara ayrılır. Bu yüzden hepsini tek bir belgede bir araya getirdim . Bu kaynıyor.
1. ttyUSB'de neler olduğunu öğrenin:

dmesg | grep ttyUSB  

2. cihazın tüm niteliklerini listeleyin ve benzersiz bir tanımlayıcı set seçin, örneğin idVendor + idProduct (ve aynı idVendor ve idProduct ile birden fazla cihazınız varsa gerekirse SerialNumber).

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

3. /etc/udev/rules.d/99-usb-serial.rulesİçinde bu satır gibi bir dosya oluşturun :

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

(orada seri numarasına ihtiyacınız olmadığını ve elbette 2. adımda bulduğunuz idVendor ve idProduct sayılarını varsayalım.
4. Yeni kuralı yükleyin:

sudo udevadm trigger

5. Ne olduğunu doğrulayın:

ls -l /dev/your_device_name  

simgenin hangi ttyUSB numarasına gittiğini gösterecektir. Eğer öyleyse /dev/ttyUSB1, kime sahip olduğunu ve hangi gruba ait olduğunu doğrulayın:

ls -l /dev/ttyUSB1   

Sonra sadece eğlenmek için:

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

8

Kendi sorunuza kısmen cevap verdiniz, ancak bunu yapmanın başka bir yolu var, özellikle seri cihazlar için: /dev/serial/*yollar. Raspberry Pi'mde neredeyse her zaman ortaya çıkan üretken bir USB → RS232 arayüzüm var /dev/ttyUSB0. Ancak sistemde şu şekilde de görünür:

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

by-idBaşka bir PL2303 tabanlı dönüştürücü eklemediğim sürece bağlantıyı kullanmak aynı kalmalıdır.


Ve birisi gerçekten yeni bir PL2303 tabanlı dönüştürücü eklediğinde. (2 tanesi) o zaman ne olabilir?
Obmerk Kronen

Sıkıştın. Bundan kaçınmak için markaları karıştırmayı ve eşleştirmeyi tercih ediyorum.
scruss

Bu, Python'da beni değiştiren bir Seri port için son derece yardımcı oldu -Teşekkürler!
GhostToast
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.