# [RISOLTO][HW] udev /dev/ttyUSB* non creato con FTDI

## fdrcmoro

Salve a tutti,

sto lavorando con una Gumstix, ovvero una single-board computer. Con questa scheda è possibile comunicare attraverso una usb console via ssh.

In un sistema precedente con installato Ubuntu una volta effettuato il plug-in del cavo usb il device veniva riconosciuto e visualizzato in /dev/ttyUSB0 e tramite kermit era possibile far partire una console seriale.

Da pochi giorni ho eseguito una formattazione del mio pc ed ho deciso di installare Gentoo senza pormi minimamente il problema che qualcosa potesse andar storto. O meglio, il problema me lo sono posto ma il riconoscimento di un device usb era l'ultimo dei miei pensieri.

Comunque manco a dirlo non riesco più ad ottenere il collegamento con la Gumstix. 

Il mio sistema monta un kernel 2.6.34-gentoo-r12 e ovviamente udev è stato "mergiato".

Ma procediamo per gradi. Prima di tutto ho ricompilato il kernel inserendo il supporto USB seriale e FTDI, che corrisponderebbero ai moduli usbserial e ftdi_sio, io li ho compilati come built-in.

Al plug del device il risultato di tail -f /var/log/messages è il seguente:

```

Nov 18 02:15:29 Leviathan kernel: [ 5476.771900] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0004

Nov 18 02:15:29 Leviathan kernel: [ 5476.771909] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 001803 POWER sig=j CSC CONNECT

Nov 18 02:15:29 Leviathan kernel: [ 5476.771916] hub 2-0:1.0: port 2, status 0501, change 0001, 480 Mb/s

Nov 18 02:15:29 Leviathan kernel: [ 5476.875013] hub 2-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x501

Nov 18 02:15:29 Leviathan kernel: [ 5476.926242] ehci_hcd 0000:00:1d.7: port 2 full speed --> companion

Nov 18 02:15:29 Leviathan kernel: [ 5476.926248] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 003801 POWER OWNER sig=j CONNECT

Nov 18 02:15:29 Leviathan kernel: [ 5476.926264] usb usb6: wakeup_rh (auto-start)

Nov 18 02:15:29 Leviathan kernel: [ 5476.926274] hub 2-0:1.0: port 2 not reset yet, waiting 50ms

Nov 18 02:15:29 Leviathan kernel: [ 5476.977019] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 003002 POWER OWNER sig=se0 CSC

Nov 18 02:15:29 Leviathan kernel: [ 5476.977042] hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0004

Nov 18 02:15:29 Leviathan kernel: [ 5476.977050] uhci_hcd 0000:00:1d.0: port 2 portsc 0093,00

Nov 18 02:15:29 Leviathan kernel: [ 5476.977056] hub 6-0:1.0: port 2, status 0101, change 0001, 12 Mb/s

Nov 18 02:15:29 Leviathan kernel: [ 5477.081017] hub 6-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101

Nov 18 02:15:29 Leviathan kernel: [ 5477.183016] usb 6-2: new full speed USB device using uhci_hcd and address 12

Nov 18 02:15:29 Leviathan kernel: [ 5477.303009] usb 6-2: ep0 maxpacket = 8

Nov 18 02:15:29 Leviathan kernel: [ 5477.340285] usb 6-2: default language 0x0409

Nov 18 02:15:29 Leviathan kernel: [ 5477.369289] usb 6-2: udev 12, busnum 6, minor = 651

Nov 18 02:15:29 Leviathan kernel: [ 5477.369292] usb 6-2: New USB device found, idVendor=0403, idProduct=6001

Nov 18 02:15:29 Leviathan kernel: [ 5477.369295] usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

Nov 18 02:15:29 Leviathan kernel: [ 5477.369298] usb 6-2: Product: FT232R USB UART

Nov 18 02:15:29 Leviathan kernel: [ 5477.369299] usb 6-2: Manufacturer: FTDI

Nov 18 02:15:29 Leviathan kernel: [ 5477.369301] usb 6-2: SerialNumber: A5003vq1

Nov 18 02:15:29 Leviathan kernel: [ 5477.369378] usb 6-2: usb_probe_device

Nov 18 02:15:29 Leviathan kernel: [ 5477.369382] usb 6-2: configuration #1 chosen from 1 choice

Nov 18 02:15:29 Leviathan kernel: [ 5477.372288] usb 6-2: adding 6-2:1.0 (config #1, interface 0)

Nov 18 02:15:29 Leviathan kernel: [ 5477.377326] drivers/usb/core/inode.c: creating file '012'

Nov 18 02:15:29 Leviathan kernel: [ 5477.377346] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0004

```

con un live-cd di ubuntu invece tutto funziona correttamente e questo è il risultato di tail -f /var/log/messages:

```

Nov 17 00:24:05 ubuntu kernel: [  764.760290] usb 5-2: new full speed USB device using uhci_hcd and address 4

Nov 17 00:24:05 ubuntu kernel: [  764.980813] usb 5-2: configuration #1 chosen from 1 choice

Nov 17 00:24:05 ubuntu kernel: [  764.985447] ftdi_sio 5-2:1.0: FTDI USB Serial Device converter detected

Nov 17 00:24:05 ubuntu kernel: [  764.987437] ftdi_sio: Detected FT232RL

Nov 17 00:24:05 ubuntu kernel: [  764.988800] usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0

```

Questi sono invece i risultati su i due sistemi (gentoo e ubuntu live-cd) del comando udevadm monitor

Gentoo:

```

KERNEL[1290043207.629323] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2 (usb)

KERNEL[1290043207.637198] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0 (usb)

UDEV  [1290043207.638520] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2 (usb)

UDEV  [1290043207.641153] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0 (usb)

```

Ubuntu live-cd:

```

UEVENT[1289953054.789078] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2 (usb)

UEVENT[1289953054.791688] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0 (usb)

UDEV  [1289953054.792747] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2 (usb)

UEVENT[1289953054.796976] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.2_ep81 (usb_endpoint)

UEVENT[1289953054.797018] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.2_ep02 (usb_endpoint)

UEVENT[1289953054.797043] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/usb_endpoint/usbdev5.2_ep00 (usb_endpoint)

UDEV  [1289953054.813212] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/usb_endpoint/usbdev5.2_ep00 (usb_endpoint)

UEVENT[1289953055.143694] add      /module/usbserial (module)

UEVENT[1289953055.144355] add      /bus/usb-serial (bus)

UEVENT[1289953055.144955] add      /bus/usb/drivers/usbserial (drivers)

UDEV  [1289953055.145631] add      /module/usbserial (module)

UDEV  [1289953055.145960] add      /bus/usb/drivers/usbserial (drivers)

UEVENT[1289953055.146104] add      /bus/usb-serial/drivers/generic (drivers)

UEVENT[1289953055.146302] add      /bus/usb/drivers/usbserial_generic (drivers)

UDEV  [1289953055.146369] add      /bus/usb-serial (bus)

UDEV  [1289953055.147515] add      /bus/usb-serial/drivers/generic (drivers)

UDEV  [1289953055.148119] add      /bus/usb/drivers/usbserial_generic (drivers)

UEVENT[1289953055.223765] add      /module/ftdi_sio (module)

UEVENT[1289953055.224014] add      /bus/usb-serial/drivers/ftdi_sio (drivers)

UDEV  [1289953055.224304] add      /module/ftdi_sio (module)

UEVENT[1289953055.224660] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/ttyUSB0 (usb-serial)

UDEV  [1289953055.225224] add      /bus/usb-serial/drivers/ftdi_sio (drivers)

UEVENT[1289953055.225249] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/ttyUSB0/tty/ttyUSB0 (tty)

UEVENT[1289953055.226199] add      /bus/usb/drivers/ftdi_sio (drivers)

UDEV  [1289953055.226734] add      /bus/usb/drivers/ftdi_sio (drivers)

UDEV  [1289953055.227856] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0 (usb)

UDEV  [1289953055.230478] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.2_ep81 (usb_endpoint)

UDEV  [1289953055.232888] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.2_ep02 (usb_endpoint)

UDEV  [1289953055.234447] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/ttyUSB0 (usb-serial)

UDEV  [1289953055.246308] add      /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/ttyUSB0/tty/ttyUSB0 (tty)

```

KERNEL nel primo output e UEVENT nel secondo output dovrebbero essere la stessa cosa: ovvero kernel uevent.

Sono riuscito tramite la seguente "rules":

```

SSUBSYSTEMS=="usb", ATTRS{product}=="FT232R USB UART", ATTRS{serial}=="A5003vq1", SYMLINK+="gumstix"

```

ad ottenere il link /dev/gumstix ma quando provo a collegarmi con kermit questo è il risultato:

```

> kermit -l /dev/gumstix 

/dev/bus/usb/006/013 is not a terminal device

can't open device

> ls -l /dev/gumstix 

lrwxrwxrwx 1 root root 15 18 nov 02.20 /dev/gumstix -> bus/usb/006/013

```

Quello che mi viene da pensare è che /dev/gumstix non sia altro che un collegamento ad uno dei due endpoint della periferica usb e non il collegamento intero. Da quello che ho capito dovrebbero esserci due endpoint, uno IN e uno OUT, che dovrebbero venire uniti per creare il device /dev/ttyUSB*, che in teoria è quello che succede nel log di sistema di Ubuntu.

Ma passiamo alla configurazione del kernel perché credo sia qui il problema (almeno spero).

```

Device Drivers  --->

  [*] USB support  --->

    <M>   USB Serial Converter support  --->   

      [*]   USB Generic Serial Driver 

      <M>   USB FTDI Single Port Serial Driver

      <M>   USB Fundamental Software Dongle Driver

```

Queste sono le voci che ho selezionato. Del Dongle Driver non sono molto sicuro ma comunque ho provato anche senza. Nei test sopra era tutto built-in; adesso ho provato a compilarli come moduli. Tutti tranne il Generic Serial Driver che è disponibile solo come built-in.

Mentre il risultato di udevadm monitor è sempre lo stesso, questo è invece il risultato del log di sistema:

```

Nov 18 02:56:05 Leviathan kernel: [  788.233077] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0004

Nov 18 02:56:05 Leviathan kernel: [  788.233086] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 001803 POWER sig=j CSC CONNECT

Nov 18 02:56:05 Leviathan kernel: [  788.233093] hub 2-0:1.0: port 2, status 0501, change 0001, 480 Mb/s

Nov 18 02:56:05 Leviathan kernel: [  788.337011] hub 2-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x501

Nov 18 02:56:05 Leviathan kernel: [  788.388289] ehci_hcd 0000:00:1d.7: port 2 full speed --> companion

Nov 18 02:56:05 Leviathan kernel: [  788.388294] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 003801 POWER OWNER sig=j CONNECT

Nov 18 02:56:05 Leviathan kernel: [  788.388304] hub 2-0:1.0: port 2 not reset yet, waiting 50ms

Nov 18 02:56:05 Leviathan kernel: [  788.388314] usb usb6: wakeup_rh (auto-start)

Nov 18 02:56:05 Leviathan kernel: [  788.439020] ehci_hcd 0000:00:1d.7: GetStatus port 2 status 003002 POWER OWNER sig=se0 CSC

Nov 18 02:56:05 Leviathan kernel: [  788.439044] hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0004

Nov 18 02:56:05 Leviathan kernel: [  788.439052] uhci_hcd 0000:00:1d.0: port 2 portsc 0093,00

Nov 18 02:56:05 Leviathan kernel: [  788.439058] hub 6-0:1.0: port 2, status 0101, change 0001, 12 Mb/s

Nov 18 02:56:05 Leviathan kernel: [  788.543013] hub 6-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101

Nov 18 02:56:06 Leviathan kernel: [  788.645013] usb 6-2: new full speed USB device using uhci_hcd and address 7

Nov 18 02:56:06 Leviathan kernel: [  788.765007] usb 6-2: ep0 maxpacket = 8

Nov 18 02:56:06 Leviathan kernel: [  788.802274] usb 6-2: default language 0x0409

Nov 18 02:56:06 Leviathan kernel: [  788.831276] usb 6-2: udev 7, busnum 6, minor = 646

Nov 18 02:56:06 Leviathan kernel: [  788.831279] usb 6-2: New USB device found, idVendor=0403, idProduct=6001

Nov 18 02:56:06 Leviathan kernel: [  788.831281] usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

Nov 18 02:56:06 Leviathan kernel: [  788.831284] usb 6-2: Product: FT232R USB UART

Nov 18 02:56:06 Leviathan kernel: [  788.831286] usb 6-2: Manufacturer: FTDI

Nov 18 02:56:06 Leviathan kernel: [  788.831287] usb 6-2: SerialNumber: A5003vq1

Nov 18 02:56:06 Leviathan kernel: [  788.831363] usb 6-2: usb_probe_device

Nov 18 02:56:06 Leviathan kernel: [  788.831367] usb 6-2: configuration #1 chosen from 1 choice

Nov 18 02:56:06 Leviathan kernel: [  788.834272] usb 6-2: adding 6-2:1.0 (config #1, interface 0)

Nov 18 02:56:06 Leviathan kernel: [  788.839307] drivers/usb/core/inode.c: creating file '007'

Nov 18 02:56:06 Leviathan kernel: [  788.839325] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0004

Nov 18 02:56:06 Leviathan kernel: [  788.845161] usbserial: Unknown symbol usb_autopm_put_interface

Nov 18 02:56:06 Leviathan kernel: [  788.847218] usbserial: Unknown symbol usb_autopm_get_interface

Nov 18 02:56:06 Leviathan kernel: [  788.848566] ftdi_sio: Unknown symbol usb_serial_port_softint

Nov 18 02:56:06 Leviathan kernel: [  788.848778] ftdi_sio: Unknown symbol usb_serial_handle_sysrq_char

Nov 18 02:56:06 Leviathan kernel: [  788.848926] ftdi_sio: Unknown symbol usb_serial_disconnect

Nov 18 02:56:06 Leviathan kernel: [  788.849424] ftdi_sio: Unknown symbol usb_serial_handle_break

Nov 18 02:56:06 Leviathan kernel: [  788.849718] ftdi_sio: Unknown symbol usb_serial_probe

Nov 18 02:56:06 Leviathan kernel: [  788.849797] ftdi_sio: Unknown symbol usb_serial_register

Nov 18 02:56:06 Leviathan kernel: [  788.849880] ftdi_sio: Unknown symbol usb_serial_deregister

```

A quanto pare c'è un problema con i moduli usbserial e ftdi_sio.

Le funzioni:

usb_serial_port_softint

usb_serial_disconnect

usb_serial_probe

usb_serial_register

usb_serial_deregister

chiamate da ftdi_sio sono definte in drivers/usb/serial/usb-serial.c e include/linux/usb/serial.h, entrambi presenti nei sorgenti del kernel. Suppongo che queste chiamate dovrebbero essere a carico del modulo usbserial.

Le funzioni:

usb_serial_handle_break

usb_serial_handle_sysrq_char

sempre chiamate da ftdi_sio sono definite in drivers/usb/serial/generic.c e  include/linux/usb/serial.h. Stavolta mi verrebbe da pensare che si tratti del driver usbserial_generic che è anche chiamato in causa in Ubuntu (vedi udevadm monitor eseguito sulla live-cd mostrato sopra).

Ed infine le funzioni:

usb_autopm_put_interface

usb_autopm_get_interface

chiamate da usbserial sono definite in drivers/usb/core/driver.c e include/linux/usb.h. E qui credo si tratti del modulo usbcore.

Io ho anche provato a compilare tutti i supporti usb come moduli ma niente da fare. E comunque dovrebbe fare differenza in termini di funzionamento il compilare qualcosa come modulo o built-in?

Ecco, questo è in "sintesi" il mio problema. Sono diversi giorni che cerco su google ma niente da fare, non riesco a venirne fuori. Per concludere aggiungo che il sistema attuale (Gentoo) ha questo problema e la stessa cosa con una live-cd di Gentoo. Mentre con Ubuntu che avevo installato prima e la live-cd di Ubuntu menzionata nel post tutto funziona correttamente. Io ho provato ad osservare le differenze di moduli caricati e rules di udev ma temo la cosa sia troppo complicata.

Sempre cercando su google, sono finito su un forum in cui un utente parlava di un problema che aveva con la gumstix e da quello che scriveva ho visto che anche lui usava Gentoo e la console usb gli funzionava correttamente, quindi ho provato a scrivergli una mail sperando abbia buon cuore di rispondermi.

Ho deciso di mettere un post qui prima di tentare di chiedere su qualche forum in inglese, magari lo stesso appena accennato.

Qualche idea?  :Smile: Last edited by fdrcmoro on Fri Nov 19, 2010 12:16 am; edited 1 time in total

----------

## fdrcmoro

Risolto ricompilando il kernel usando la stessa configurazione ma lanciando Genkernel. Adesso funziona correttamente.

----------

## bi-andrea

quindi hai risolto ricompilando mirando proprio ad usb serial...giusto?

----------

## fdrcmoro

No, che mi ricordi io, non ho fatto alcuna modifica al file di configurazione.

Genkernel in automatico fa qualche settaggio o inizializzazione particolare che io non facevo quando compilavo manualmente.

----------

