[PLUTO-help] Gestione dei moduli nei kernel recenti

t1m3 ttt1m333 a ml1.net
Lun 21 Lug 2008 11:48:27 CEST


OK -- ho capito qualcosa di più riguardo al modo in cui attualmente
viene gestito il caricamento dei moduli in associazione a determinati
device.
In breve: il sistema di hotplug è stato integrato in udev abbastanza di
recente e l'associazione fra moduli e device è gestita dai "modalias".

RIFERIMENTI UTILI:

1) http://lists.ethernal.org/oldarchives/cantlug-0702/msg00129.html

2) http://lists.ethernal.org/oldarchives/cantlug-0702/msg00130.html

3) http://wiki.mandriva.com/en/Development/Docs/Udev#Firmware_loading

4) http://www.debianhelp.org/node/4580

Ci sono però due cose che mi sfuggono/vorrei capire.

La prima è questa.

- in numerose guide on-line si dice che per far sì che un determinato
driver (modulo) venga associato a un modem può essere necessario
modificare il sorgente e patcharlo:
------
[...]
Occorre pertanto modificare il modulo in questione per consentire il
riconoscimento del modem HSDPA in nostro possesso. Nel mio caso, il
modem (ONDA M1HS) ha idVendor e idProduct pari a 0x05c6 e 0x6613
rispettivamente e ho modificato il modulo aggiungendo una riga
USB_DEVICE con i parametri del modem:
static struct usb_device_id id_table [] = {
{ USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */
{ USB_DEVICE(0x05c6, 0x6613) }, /* ONDA M1HS */
{ USB_DEVICE(0x12d1, 0x1003) }, /* Huawei E220 */
{ },
};

(da: http://www.openlinux.eu/index.php?option=content&task=view&id=147 )
------

Ora, a me sembra che col sistema dei modalias, questa operazione di
modifica del sorgente del modulo affinché quest'ultimo dia associato a
un device e di ricompilazione del modulo possa essere evitata: dovrebbe
bastare identificare il modalias del device e scrivere nel file che
contiene i modalias [*] l'istruzione opportuna:

[*] il file contenente i modalias si trova in /lib/modules/`uname
-r`/modules.alias

------
The modprobe aliases are there to be easily changed to the device driver
you want to use for some bit of kit - so I understand. You can insert
your own alias->driver translations with files in /etc/modprobe.d/

(da: http://lists.ethernal.org/oldarchives/cantlug-0702/msg00130.html )
------

*** HO RAGIONE ? ***

Il secondo interrogatvo che non sono ancora riuscito a risolvere è
questo.

Vorrei capire come funziona il meccanismo di associazione del modulo
cdc_acm al mio cellulare Nokia 6120.

Ho fatto:

lsusb

Da dove vedo:

Bus 001 Device 013: ID 0421:002f Nokia Mobile Phones

E allora...

udevinfo --attribute-walk --path=/sys/class/usb_device/usbdev1.13 | grep
modalias
    ATTRS{modalias}=="pci:v00008086d000024C2sv00001043sd00001748bc0Csc03i00"

In realtà, però, questo modalias appartiene all'interfaccia PCI
superiore:

udevinfo --attribute-walk --path=/sys/class/usb_device/usbdev1.13

mi restitusce:

------

Udevinfo 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 '/class/usb_device/usbdev1.13':
    KERNEL=="usbdev1.13"
    SUBSYSTEM=="usb_device"
    DRIVER==""
    ATTR{dev}=="189:12"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}=="Bulk transfer method configuration"
    ATTRS{product}=="Nokia 6120 classic"
    ATTRS{manufacturer}=="Nokia"
    ATTRS{maxchild}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{devnum}=="13"
    ATTRS{speed}=="12"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceClass}=="02"
    ATTRS{bcdDevice}=="0100"
    ATTRS{idProduct}=="002f"
    ATTRS{idVendor}=="0421"
    ATTRS{bMaxPower}==" 20mA"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumInterfaces}=="14"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{manufacturer}=="Linux 2.6.18.8-0.10-default uhci_hcd"
    ATTRS{maxchild}=="2"
    ATTRS{version}==" 1.10"
    ATTRS{devnum}=="1"
    ATTRS{speed}=="12"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bcdDevice}=="0206"
    ATTRS{idProduct}=="0000"
    ATTRS{idVendor}=="0000"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumInterfaces}==" 1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{broken_parity_status}=="0"
    ATTRS{enable}=="1"
    ATTRS{modalias}=="pci:v00008086d000024C2sv00001043sd00001748bc0Csc03i00"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{irq}=="11"
    ATTRS{class}=="0x0c0300"
    ATTRS{subsystem_device}=="0x1748"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{device}=="0x24c2"
    ATTRS{vendor}=="0x8086"

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

------

Infine con:

modprobe -c | grep cdc_acm

ottengo:

-------

alias usb:v0870p0001d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v0482p0203d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v0ACEp1608d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v0ACEp1611d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip01* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip02* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip03* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip04* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip05* cdc_acm
alias usb:v*p*d*dc*dsc*dp*ic02isc02ip06* cdc_acm

------

*** IN CONCLUSIONE: NON MI E' ANCORA BEN CHIARO COME FACCIA A ESSERE
ASSOCIATO CDC_ACM AL MIO NOKIA 6120 ***

Qualcuno sa darmi una dritta sui due interrogativi specifici individuati
fra tre asterischi ?

Ah, un'ultima info, che forse può tornare utile:

all'inserimento del telefonino nella porta USB, in /var/log/messages
appare:

------
Jul 21 09:51:12 linux kernel: usb 1-1: new full speed USB device using
uhci_hcd and address 13
Jul 21 09:51:12 linux kernel: usb 1-1: new device found, idVendor=0421,
idProduct=002f
Jul 21 09:51:12 linux kernel: usb 1-1: new device strings: Mfr=1,
Product=2, SerialNumber=0
Jul 21 09:51:12 linux kernel: usb 1-1: Product: Nokia 6120 classic
Jul 21 09:51:12 linux kernel: usb 1-1: Manufacturer: Nokia
Jul 21 09:51:12 linux kernel: usb 1-1: configuration #1 chosen from 1
choice
Jul 21 09:51:12 linux kernel: cdc_acm 1-1:1.8: ttyACM0: USB ACM device
------

Forse quel "configuration #1 chosen from 1 choice" potrebbe essere
d'aiuto: configurazione numero 1 tratta da una possibilità di scelta...
dove va a leggere questi dati?

Grazie.

-- 
  t1m3
  ttt1m333 a ml1.net

-- 
http://www.fastmail.fm - I mean, what is it about a decent email service?




More information about the pluto-help mailing list