Configurazione del kernel per i lettori CDROM della Creative.

Creato il 01 settembre 2010 da Linuxlandia

Poiché ho perso un po' di tempo nel configurare il mio lettore di CDROM della Creative, ho pensato di mettere a disposizione la mia (piccola e povera) esperienza a tutti coloro che hanno deciso di dotare il proprio PC di tale lettore.
Il mio hardware è così composto:

  • Processore Intel 486DX2 66 MHz.
  • Memoria 12 Mbyte.
  • Due dischi IDE da 340M e 540M.
  • Scheda audio Suond Blaster 16.
  • Lettore CDROM Creative E2550UA (è un nuovo modello Funai siglato CD200, venduto nel kit Sound Blaster CD16) interfacciato tramite la scheda audio SB16.

Per quanto riguarda il software, la versione del kernel che uso attualmente è la 1.3.20, ma ho provato anche la versione 1.2.13; il driver di gestione del lettore è quello sviluppato da Eberhard Moenkeberg ( emoenke@gwdg.de), giunto alla versione 3.8. Il file relativo a tale driver è sbpcd.c, che si trova nella sottodirectory /usr/src/linux/drivers/block/ del vostro sistema, se avete la distribuzione Slackware. Il file è reperibile presso ftp.gwdg.de/pub/linux/cdrom/drivers/sbpcd/, ma è meglio procurarsi una versione aggiornata del kernel.
Pur riferendomi al lettore e alla scheda in mio possesso, il driver sbpcd è in grado di utilizzare diverse schede (anche non audio, solo di interfaccia) e di pilotare i lettori Matsushita, Kotobuki, Panasonic, CreativeLabs, Longshine e TEAC, che utilizzano una interfaccia IDE "tradizionale". I lettori Panasonic sono conosciuti con le sigle CR-521, CR-522, CR-523, CR-562 e CR-563. Questo driver _non_ è in grado di pilotare lettori con interfaccia Enhanced IDE o ATAPI.

Configurazione.


È necessario che siano presenti i seguenti file:

  • /usr/src/linux/drivers/block/sbpcd.c
  • /usr/include/linux/sbpcd.h
  • /usr/include/linux/soundcard.h
  • /usr/include/sys/soundcard.h come link a /usr/include/linux/soundcard.h o contenente la riga #include <linux/soundcard.h>


Per prima cosa si deve modificare il file sbpcd.h. Nei pressi della riga 70 vi è il primo blocco di definizioni:

#if !(SBPCD_ISSUE-1)     /* first (or if you have only one) interface board: */
#define CDROM_PORT 0x230 /* <-----------<< port address */
#define SBPRO 1 /* <-----------<< interface type */
#define MAX_DRIVES 4 /* set to 1 if the card does not use "drive select" */
#define SOUND_BASE 0x220 /* <-----------<< sound address of this card or 0 */
#endif

Il parametro CDROM_PORT si riferisce all'indirizzo del lettore, che nel mio caso è 0x230; questo indirizzo è quello settato dalla Creative, in quanto si ottiene aggiungendo 0x10 a quello della scheda (0x220 di default). Si può modificare l'indirizzo della scheda, tramite i ponticelli presenti sulla scheda stessa, e l'indirizzo del lettore si modifica di conseguenza.


Settando il parametro CDROM_PORT con il giusto indirizzo, si evita che il sistema ricerchi un lettore al bootstrap, ed inoltre si è sicuri che il lettore venga riconosciuto (soprattutto se ha un indirizzo non standard).

Stesso discorso vale per SOUND_BASE, in cui bisogna specificare l'indirizzo della scheda audio.

Il parametro SBPRO indica il tipo di interfaccia e va settato:

  • a 0 se la scheda non è originale Sound Blaster (anche se compatibile)
  • a 1 se la scheda è originale Sound Blaster (anche OmniCD non audio)
  • a 2 se si tratta di una Spea Media FX


Può darsi che questi valori non siano validi in assoluto, per cui in caso di problemi, è possibile provare a modificare questo parametro.

Infine il parametro MAX_DRIVES indica quanti lettori può gestire la scheda. Sono ammesse fino a 4 schede con fino a 4 lettori per scheda; in totale 16 lettori (da CDROM-HOWTO: "si spera siano abbastanza per la maggior parte degli utilizzatori :-)"). Nel mio caso, al bootstrap venivano trovati 4 lettori logici, anche se tutti si riferivano allo stesso lettore fisico; impostando MAX_DRIVES a 1, la ricerca viene fermata dopo aver trovato un lettore (l'unico che ho). Consiglio a chi ha un solo lettore di settare MAX_DRIVES a 1.

Proseguendo nel file sbpcd.h troviamo il parametro DISTRIBUTION, che indica se il file è stato configurato per il sistema locale (DISTRIBUTION=0); in questo caso il sistema evita di cercare un lettore al momento del bootstrap, velocizzando la partenza ed evitando conflitti con altre periferiche; inoltre viene modificato il livello dei messaggi di debug.

I due parametri seguenti controllano l'espulsione del cassetto del lettore. Impostando a 1 JUKEBOX, il cassetto viene espulso ogni volta che si tenta di accedere al CD, ma non vi è nessun disco; se EJECT è settato a 1, il cassetto viene espulso ogni volta che si utilizza il comando umount sul cdrom (il che può essere abbastanza utile) e anche ogni volta che si sceglie "stop" in un programma di gestione dei CD audio (può essere scomodo).
Personalmente ho settato entrambi i parametri a 0, così da far espellere il cassetto solo su richiesta esplicita.

Dopo aver configurato il file sbpcd.h, è possibile ricompilare il kernel, indicando, al momento della configurazione (make config), che si vuole il driver per il lettore Matsushita.
Se non esiste già, bisogna creare il file associato al lettore con il comando

<i>mknod /dev/sbpcd  b 25 0</i><br />


dove 25 si riferisce al numero della scheda di interfaccia e 0 è il numero del lettore. È comodo creare un link chiamato /dev/cdrom tramite il comando

<i>ln -s /dev/sbpcd /dev/cdrom</i><br />

Se si vogliono ascoltare i CD audio, è necessario modificare i permessi di accesso al file /dev/sbpcd in questo modo:

<i>chmod 666 /dev/sbpcd</i><br />


Note:
Alla inizializzazione del sistema compare una serie di indicazioni:

sbpcd-0 [01]:  sbpcd.c v3.8 Eberhard Moenkeberg <emoenke@gwdg.de><br />sbpcd-0 [02]:  new drive CD200 (0.01)detected.<br />sbpcd-0 [03]:  support is not fulfilled yet - audio should work.<br />sbpcd-0 [04]:  please mail the following lines to emoenke@gwdg.de:<br />sbpcd-0 [05]:  v3.8 Eberhard Moenkeberg <emoenke@gwdg.de><br />sbpcd-0 [06]:  address 230, type SoundBlaster, drive CD200F  (ID 0)<br />sbpcd-0 [07]:  infobuf = 43 44 32 30 30 46 20 30 2E 30 31 04<br />sbpcd-0 [08]:  infobuf = C  D  2  0  0  F     0  .  0  1  ^D<br />sbpcd-0 [09]:  Drive 0 (ID=0): CD200F  (0.01) at 0x230 (type 1)<br /></emoenke@gwdg.de></emoenke@gwdg.de>

È necessario fare alcune precisazioni:

  1. L'ultimo byte di infobuf (linea [07] e [08]) non è significativo, in quanto non proviene dal lettore, e può cambiare di volta in volta.
  2. Alla riga [03] si dice che i CD audio dovrebbero funzionare; in realtà è possibile utilizzare bene sia CD audio che CD di dati (tramite l'operazione di mount del device in una directory).

Un suggerimento che posso dare è quello di utilizzare il dispositivo /dev/sbpcd per l'operazione di mount, invece che il suo link /dev/cdrom, perché quest'ultimo portebbe dare dei problemi (peraltro dovuti a mount).

Un problema ancora da risolvere è il riconoscimento di un cambiamento di disco (provate ad ascoltare un CD di Venditti con l'ordine di un CD di Bob Dylan :-(); se qualche "italian hacker" fosse interessato, può provare ad aiutare Eberhard.


Documentazione.

Questi sono i file in cui è possibile trovare ulteriori informazioni, oltre ai già citati file necessari, che sono ben documentati (tra parentesi la loro locazione nella distribuzione Slackware):

  • CDROM-HOWTO (/usr/doc/faq/howto/)
  • README.sbpcd (/usr/src/linux/drivers/block/)

fonte: Pluto




Potrebbero interessarti anche :

Possono interessarti anche questi articoli :