Repository 32bit  Forum
Repository 64bit  Wiki

Forzare nome ttyUSB [RISOLTO]

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Forzare nome ttyUSB [RISOLTO]

Messaggioda tgmx » ven nov 16, 2012 11:24

Ciao Ragazzi,
ho la necessita' di forzare un particolare convertitore USB/RS232 ad avere sempre lo stesso nome (ad esempio /det/ttyUSB100).

Sto cercando qualche guida su che regola impostare per udev ma non riesco a trovarne una che funzioni.

Avete qualche consiglio? Vi e' capitato di risolvere lo stesso problema?

Edit:
Il pc su cui devo impostare la regola ha una Slack un po' datata (forse 12.2) ma vorrei che funzionasse anche su Slackwere piu' recenti.
Ultima modifica di tgmx il mar nov 20, 2012 8:31, modificato 3 volte in totale.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Forzare nome ttyUSB

Messaggioda miklos » ven nov 16, 2012 12:21

hai letto questa e questa!?!?!?
per me sono i punti di riferimento per udev.

comunque dovrebbe essere semplice quanto carpire alcuni attributi specifici con
Codice: Seleziona tutto
udevadm -a -n /dev/device-che-vuoi
lanciando questo comando ottieni informazioni dal sistema udev relativamente a quella periferica.
una volta trovati i dati univoci (che ti suggerisco essere il vendor_id e il model_id)
scrivi una regola cosi' formata
Codice: Seleziona tutto
SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", NAME="/dev/ttyUSB1", GROUP="users", MODE="0666"


ciau

EDIT: ho letto ora il fatto che utilizzi versioni slackware di qualche tempo fa.
la regola d'esempio dovrebbe andare bene, ma il comando udevadm non so se te lo ritrovi, perchè prima si chiamata udevinfo. vedi un po'.
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1282
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Re: Forzare nome ttyUSB

Messaggioda tgmx » ven nov 16, 2012 12:31

Grazie miklos.
La prima guida che hai postato l'avevo gia' vista in giro ma sembrava vecchia e poi faceva riferimento al comando udevinfo che non avevo trovato.
La seconda non la conoscevo.

Il comando che hai postato funziona se metto:
udevadm info -a -n /dev/ttyUSB0

Ora provo ad aggiungere la regola e ti aggiorno.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Forzare nome ttyUSB

Messaggioda miklos » ven nov 16, 2012 12:36

tgmx ha scritto:La prima guida che hai postato l'avevo gia' vista in giro ma sembrava vecchia e poi faceva riferimento al comando udevinfo che non avevo trovato.
si infatti a prima vista sembra arcaica.. ma come funzionamento di udev e scrittura delle regole è ancora attualissima, tant'e' che è menzionata pure nel secondo link che ti ho postato ;)

contento di esserti stato utile :p

ciau
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1282
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Re: Forzare nome ttyUSB

Messaggioda tgmx » ven nov 16, 2012 14:00

Probabilmente sbaglio qualcosa perche' non funziona...

Questa e' la procedura che seguo.

1) collego il dispositivo USB
2) eseguo il comando:
udevadm info -a -n /dev/ttyUSB0

Codice: Seleziona tutto
Udevadm info starts with the device specified by the devpath and then                                                                           
walks up the chain of parent devices. It prints for every device                                                                                 
found, all possible attributes in the udev rules key format.                                                                                     
A rule to match, can be composed by the attributes of the device                                                                                 
and the attributes from one single parent device.                                                                                               

  looking at device '/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/ttyUSB0/tty/ttyUSB0':                                                     
    KERNEL=="ttyUSB0"                                                                                                                           
    SUBSYSTEM=="tty"                                                                                                                             
    DRIVER==""                                                                                                                                   

  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/ttyUSB0':                                                         
    KERNELS=="ttyUSB0"                                                                                                                           
    SUBSYSTEMS=="usb-serial"                                                                                                                     
    DRIVERS=="ftdi_sio"                                                                                                                         
    ATTRS{latency_timer}=="1"                                                                                                                   
    ATTRS{port_number}=="0"                                                                                                                     

  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0':                                                                 
    KERNELS=="4-1:1.0"                                                                                                                           
    SUBSYSTEMS=="usb"                                                                                                                           
    DRIVERS=="ftdi_sio"                                                                                                                         
    ATTRS{bInterfaceNumber}=="00"                                                                                                               
    ATTRS{bAlternateSetting}==" 0"                                                                                                               
    ATTRS{bNumEndpoints}=="02"                                                                                                                   
    ATTRS{bInterfaceClass}=="ff"                                                                                                                 
    ATTRS{bInterfaceSubClass}=="ff"                                                                                                             
    ATTRS{bInterfaceProtocol}=="ff"                                                                                                             
    ATTRS{supports_autosuspend}=="1"                                                                                                             
    ATTRS{interface}=="USB-RS232 Cable"                                                                                                         

  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb4/4-1':                                                                         
    KERNELS=="4-1"                                                                                                                               
    SUBSYSTEMS=="usb"                                                                                                                           
    DRIVERS=="usb"                                                                                                                               
    ATTRS{configuration}==""                                                                                                                     
    ATTRS{bNumInterfaces}==" 1"                                                                                                                 
    ATTRS{bConfigurationValue}=="1"                                                                                                             
    ATTRS{bmAttributes}=="80"                                                                                                                   
    ATTRS{bMaxPower}=="300mA"                                                                                                                   
    ATTRS{urbnum}=="16"                                                                                                                         
    ATTRS{idVendor}=="0403"                                                                                                                     
    ATTRS{idProduct}=="6001"                                                                                                                     
    ATTRS{bcdDevice}=="0600"                                                                                                                     
    ATTRS{bDeviceClass}=="00"                                                                                                                   
    ATTRS{bDeviceSubClass}=="00"                                                                                                                 
    ATTRS{bDeviceProtocol}=="00"                                                                                                                 
    ATTRS{bNumConfigurations}=="1"                                                                                                               
    ATTRS{bMaxPacketSize0}=="8"                                                                                                                 
    ATTRS{speed}=="12"                                                                                                                           
    ATTRS{busnum}=="4"                                                                                                                           
    ATTRS{devnum}=="8"                                                                                                                           
    ATTRS{devpath}=="1"                                                                                                                         
    ATTRS{version}==" 2.00"                                                                                                                     
    ATTRS{maxchild}=="0"                                                                                                                         
    ATTRS{quirks}=="0x0"                                                                                                                         
    ATTRS{avoid_reset_quirk}=="0"                                                                                                               
    ATTRS{authorized}=="1"                                                                                                                       
    ATTRS{manufacturer}=="FTDI"                                                                                                                 
    ATTRS{product}=="USB-RS232 Cable"                                                                                                           
    ATTRS{serial}=="FTUD2XLU"                                                                                                                   

  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb4':                                                                             
    KERNELS=="usb4"                                                                                                                             
    SUBSYSTEMS=="usb"                                                                                                                           
    DRIVERS=="usb"                                                                                                                               
    ATTRS{configuration}==""                                                                                                                     
    ATTRS{bNumInterfaces}==" 1"                                                                                                                 
    ATTRS{bConfigurationValue}=="1"                                                                                                             
    ATTRS{bmAttributes}=="e0"                                                                                                                   
    ATTRS{bMaxPower}=="  0mA"                                                                                                                   
    ATTRS{urbnum}=="189"                                                                                                                         
    ATTRS{idVendor}=="1d6b"                                                                                                                     
    ATTRS{idProduct}=="0001"                                                                                                                     
    ATTRS{bcdDevice}=="0302"                                                                                                                     
    ATTRS{bDeviceClass}=="09"                                                                                                                   
    ATTRS{bDeviceSubClass}=="00"                                                                                                                 
    ATTRS{bDeviceProtocol}=="00"                                                                                                                 
    ATTRS{bNumConfigurations}=="1"                                                                                                               
    ATTRS{bMaxPacketSize0}=="64"                                                                                                                 
    ATTRS{speed}=="12"                                                                                                                           
    ATTRS{busnum}=="4"                                                                                                                           
    ATTRS{devnum}=="1"                                                                                                                           
    ATTRS{devpath}=="0"                                                                                                                         
    ATTRS{version}==" 1.10"                                                                                                                     
    ATTRS{maxchild}=="2"                                                                                                                         
    ATTRS{quirks}=="0x0"                                                                                                                         
    ATTRS{avoid_reset_quirk}=="0"                                                                                                               
    ATTRS{authorized}=="1"                                                                                                                       
    ATTRS{manufacturer}=="Linux 3.2.29-smp uhci_hcd"                                                                                             
    ATTRS{product}=="UHCI Host Controller"                                                                                                       
    ATTRS{serial}=="0000:00:1d.2"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.2':
    KERNELS=="0000:00:1d.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x27ca"
    ATTRS{subsystem_vendor}=="0x1462"
    ATTRS{subsystem_device}=="0x7529"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="18"
    ATTRS{local_cpus}=="0000000f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


Nell'output ho due "idVendor" ma credo sia buono il primo dato che da dmesg ottengo:
Codice: Seleziona tutto
[20973.750174] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[20973.750187] ftdi_sio 4-1:1.0: device disconnected
[20975.507009] usb 4-1: new full-speed USB device number 8 using uhci_hcd
[20975.744030] usb 4-1: New USB device found, idVendor=0403, idProduct=6001
[20975.744033] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[20975.744036] usb 4-1: Product: USB-RS232 Cable
[20975.744038] usb 4-1: Manufacturer: FTDI
[20975.744040] usb 4-1: SerialNumber: FTUD2XLU
[20975.752073] ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected
[20975.752100] usb 4-1: Detected FT232RL
[20975.752102] usb 4-1: Number of endpoints 2
[20975.752104] usb 4-1: Endpoint 1 MaxPacketSize 64
[20975.752107] usb 4-1: Endpoint 2 MaxPacketSize 64
[20975.752109] usb 4-1: Setting MaxPacketSize 64
[20975.754081] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
[21146.183021] usb 1-7: reset high-speed USB device number 4 using ehci_hcd


quindi utilizzo idVendor=0403, idProduct=6001 .

3) creo il file /etc/udev/rules.d/70-persistent-usb.rules contenente:
Codice: Seleziona tutto
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", NAME="ttyUSB100", GROUP="users", MODE="0666"


4) disconnetto e riconnetto il dispositivo USB

A questo punto il device si chiama ancora /dev/ttyUSB0 ...
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Forzare nome ttyUSB

Messaggioda targzeta » ven nov 16, 2012 15:47

Prova a creare un link simbolico. La regona NAME può servire solo per fare il match o per rinominare le interfacce di rete:
Codice: Seleziona tutto
 NAME
           The name to use for a network interface. The name of a device node can not be changed by udev, only additional symlinks can be created.


Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Forzare nome ttyUSB

Messaggioda tgmx » lun nov 19, 2012 10:23

targzeta ha scritto:Prova a creare un link simbolico. La regona NAME può servire solo per fare il match o per rinominare le interfacce di rete:
Codice: Seleziona tutto
 NAME
           The name to use for a network interface. The name of a device node can not be changed by udev, only additional symlinks can be created.


Emanuele


Grande! Funziona!

Ho utilizzato la seguente regola con le correzioni che mi hai suggerito (ho anche aggiunto il seriale ma funzionava anche senza):
Codice: Seleziona tutto
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTT9CIFQ", SYMLINK+="ttyUSB100", GROUP="users", MODE="0666"


Unica correzione rispetto alla procedura descritta sopra e' che ho dovuto anche riavviare udev altrimenti non funzionava:

sh /etc/rc.d/rc.udev force-restart


Grazie della collaborazione.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Forzare nome ttyUSB [QUASI RISOLTO]

Messaggioda tgmx » lun nov 19, 2012 17:01

Mi correggo, non funziona proprio al 100% .
In pratica il link che viene creato non punta a /dev/ttyUSB0 ma a:
Codice: Seleziona tutto
s -l /dev/ttyPROVA
lrwxrwxrwx 1 root root 15 Nov 19 16:54 /dev/ttyPROVA -> bus/usb/004/028


e tra l'altro non riesco ad utilizzare il device linkato per comunicare in seriale.

Se ad esempio eseguo:
Codice: Seleziona tutto
 echo "aaaaa" >  /dev/ttyUSB0

vedo che il dispositivo riceve i caratteri inviati ma se eseguo:
Codice: Seleziona tutto
echo "aaaaa" >  /dev/ttyPROVA

ottengo:
Codice: Seleziona tutto
bash: echo: write error: Invalid argument


ed il dispositivo nojn riceve niente...
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Forzare nome ttyUSB [QUASI RISOLTO]

Messaggioda joe » lun nov 19, 2012 19:35

Hai provato con un programma di comunicazione tipo minicom?
Avatar utente
joe
Iper Master
Iper Master
 
Messaggi: 2007
Iscritto il: ven apr 27, 2007 10:21
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE-4.8.5

Re: Forzare nome ttyUSB [QUASI RISOLTO]

Messaggioda targzeta » lun nov 19, 2012 22:58

Purtroppo non ho device che si settano come tty via usb. Comunque, tieni presente che le regole di assegnamento vengono eseguito su ciò che viene matchato prima. Quindi assicurati che con le regole precedenti tu riesca a beccare esattamente il ttyUSB0. Se noti, le regole scritte in quella guida, iniziano tutte con 'KERNEL==' per fare il match esattamente con il nome del device che vede il kernel.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Forzare nome ttyUSB [QUASI RISOLTO]

Messaggioda tgmx » mar nov 20, 2012 8:30

Ok, ora ho risolto...

Era tutta colpa di una 'S', ho sostituito SUBSYSTEM con SUBSYSTEMS...

Questa e' la regola funzionante:
Codice: Seleziona tutto
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTT9CIFQ", SYMLINK+="ttyPROVA", GROUP="users", MODE="0666"


Ora il link e' verso ttyUSB0.

Grazie a tutti!
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti