Valutazione attuale: 1 / 5

Stella attivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Oggigiorno sul mercato informatico esistono una moltidudine di periferiche, spesso simili se non uguali tra loro , in quanto sempre piu' spesso la fabbrica e' una sola, o cumunque il microprocessore sul quale si basa la periferica e' identico, tutte queste periferiche differiscono apparentemente solo per la marca, tanto che alcune possono essere installate e funzionare perfettamente con i driver di altre marche, o con driver generici.

In questo articolo spiegheremo con alcuni esempi ed una terminologia facile il perche' di cio' , e come spesso sia utile/conveniente installare driver di altri fornitori!! 

L' articolo e' incentrato sulle periferiche USB, ma il discorso e' applicabile anche alle periferiche PCI.


Quando si collega una periferica al computer, essa viene riconosciuta dal sistema operativo in base al «Vendor_ID:Hardware_ID», una coppia di numeri univoca che identifica la periferica.

Ogni produttore possiede il suo «VendorID», ogni periferica il suo «Hardware_ID» univoco. quindi se chi marchia il prodotto si limita a marchiare solamente il prodotto, e a non cambiare il «Vendor_ID:Hardware_ID» , avremo una periferica marca xy , identica in tutto e per tutto a quella di altre marche, potremo utilizzare sia i driver a corredo, che quelli generici e/o di altra marca

Ciò ci pone davanti ad un mercato dove coesistono periferiche realizzate da una casa costruttrice (dunque identificate da un solo «Vendor_ID:Hardware_ID»), vendute da una miriade di piccoli rivenditori che di proprio mettono solo il marchio e da altre periferiche, in tutto e per tutto identiche fra di loro, ma con «Vendor_ID:Hardware_ID» differenti.

Sapendo ciò è più facile in tutti i sistemi operativi, compreso Windows, gestire le periferiche, in quanto esisterà un singolo driver per tutte le periferiche uguali tra loro, ma di marche diverse, anche se hanno dati identificativi differenti.

Quello che segue è un'esempio di una situazione ormai molto comune:

Marca

Vendor_ID:Hardware_ID

A

AFBD:0001

B

AFBD:0001

C

FFDE:1000

D

CDE0:1234

E

AFBD:0001

Tutte queste periferiche, fisicamente identiche, possono essere gestite dallo stesso driver.

Come ulteriore esempio, consideriamo la scheda WiFi USB Wi-Fi Finder della AllNet il cui ID è «157E:3204». Tale scheda è perfettamente identica alla AG-225H prodotta dalla ZYxel il cui ID è «0586:3409», entrambe basate sul chipset Zyxel Zydas 1211

Le due schede sono talmente identiche che avendo la Zyxel rilasciato un aggiornamento del firmware, è possibile con un' un trucchetto fare l'aggiornamento anche alla scheda della AllNet.


Per conoscere l'ID del proprio hardware, sono disponibili due comandi linux: lspci, utile ad identificare le periferiche PCI, e lsusb, adatto invece per le periferiche USB.

Un esempio di output del comando lsusb potrebbe essere il seguente:

Bus 002 Device 003: ID 067b:3507 Prolific Technology, Inc. PL3507 ATAPI6 Bridge
Bus 002 Device 002: ID 157e:3204
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

Nell'esempio precedente si può vedere con esattezza il tipo della periferica collegata.

 Se vogliamo essere ancora piu' curiosi, possiamo andare a vedere l' output del comando linux dmesg per avere una visuale cronologica di cio' che ha comportato l' inserimento della periferica

 L'esempio che segue mostra i risultati dei comandi lsusb e dmesg lanciati dopo il collegamento ad una porta USB di un ricevitore digitale terrestre marcato Yakumo:

lsusb

Bus 002 Device 005: ID 14aa:0222 AVerMedia (again) or C&E

 

dmesg:

[ 2677.408962] usb 2-1: configuration #1 chosen from 1 choice

[ 2677.487184] dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware
[ 2677.493679] dvb-usb: downloading firmware from file 'dvb-usb-wt220u-02.fw'
[ 2677.547314] usbcore: registered new interface driver dvb_usb_dtt200u
[ 2678.546715] usb 2-1: USB disconnect, address 4
[ 2678.546759] dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.
[ 2679.792659] usb 2-1: new high speed USB device using ehci_hcd and address 5
[ 2679.925182] usb 2-1: configuration #1 chosen from 1 choice
[ 2679.925399] dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in warm state.
[ 2679.925476] dvb-usb: will use the device's hardware PID filter (table count: 15).
[ 2679.926503] DVB: registering new adapter (WideView WT-220U PenType Receiver (Typhoon/Freecom)).
[ 2679.926592] DVB: registering frontend 1 (WideView USB DVB-T)...
[ 2679.926885] input: IR-receiver inside an USB DVB receiver as /class/input/input3
[ 2679.926908] dvb-usb: schedule remote query interval to 300 msecs.
[ 2679.926911] dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully initialized and connected.
[ 2682.224793] dvb-usb: recv bulk message failed: -110

Come potete notare, il comando lsusb, riconosce con una descrizione l' accoppiata vendor_id:hardware_id , ma poi nell' installazione della periferica vediamo con dmesg che viene trattata come una  "WideView WT-220U PenType Receiver (Typhoon/Freecom)"

 La periferica in questione, un ricevitore USB digitale terrestre , non ha un firmware su ROM/EPROM , quindi necessita che ogni volta che viene collegata sia il pc a caricargli il firmware, e quindi ha 2 stati "cold" e "warm".

cio' rende la periferica molto flessibile, chi sa' scrivere i firmware potrebbe aver voglia di implementare una nuova funzione, e quindi scriversi il proprio firmware e farlo caricare ad ogni accensione, in maniera molto semplice, lavorando solo da tastiera, senza bisogno di saldatori o programmatori di eprom 

Quella che segue è una spiegazione degli eventi mostrati nei due output precedenti (i numeri tra parentesi quadre indicano l'istante temporale dall'accensione del computer):

[ 2677.408962] viene collegata la periferica;

[ 2677.487184] la periferica viene riconosciuta come «wideView wt-220U penType receiver (Typhoon/Freecom)»

[ 2677.493679] viene caricato il firmware dal file dvb-usb-wt220u-02.fw ( per ubuntu preventivamente scaricato e copiato nella directory /lib/firmware/ );

[ 2678.546715] disconnessione e riconnessione della periferica a causa di un cambio di ID in «14aa:0221»;

[ 2679.925399] la periferica viene rilevata come riconosciuta e funzionante 

[ 2679.926885] viene abilitato il ricevitore infrarossi della penna, sulla periferica «input3».


a questo punto la nostra periferica e' perfettamente funzionante ed interrogabile dal S.O.