The Linux Linmodem-HOWTO Sean Walbran sean(at)walbran.org e Marvin Stodolsky stodolsk(at)erols.com v0.45, 5 Marzo 2001 Traduttore: Davide Di Lazzaro davide(at)dilazzaro.org Questo documento descrive il supporto per i Linmodem (hardware winmo­ dem) in ambiente Linux. Mentre tale supporto è molto limitato (quasi esclusivamente sotto forma di moduli binari del kernel prodotti dai costruttori, ma non supportati), il numero di chipsets che hanno qualche forma di supporto sta crescendo rapidamente. ______________________________________________________________________ Indice Generale 1. Introduzione 1.1 Copyright 1.2 Liberatoria 1.3 Crediti 1.4 Aggiornamenti e correzioni 2. Linmodems 2.1 Che cosa è un Linmodem? 2.2 Quali tipi di Linmodem hardware sono supportati? 2.3 Come posso scoprire se il mio GeeWhiz 9.8.7 Modem / Laptop ha uno di questi chipsets? 2.3.1 Informazioni dal sistema 2.3.2 Nomi dei modem e numeri di identificazione 2.3.3 Laptops dotati di modems interni 3. Setup generale e moduli del kernel 3.1 Supporto dei moduli del kernel 3.2 ISA Plug-n-Play 3.3 Modems PCI 3.4 Strumenti per i moduli 3.4.1 insmod -f 3.4.2 rmmod 3.4.3 depmod 4. Trucchi e suggerimenti per moduli precompilati utilizzati con kernel di versioni differenti 4.1 Fixscripting 4.2 Patchare tty.h 4.3 Usare ppp.o dal Kernel 2.2.14 5. Chipsets specifici ed i loro drivers 5.1 IBM Mwave (Thinkpad 600E) 5.2 Lucent LT 5.2.1 Panoramica 5.2.2 Driver v5.78(c,d,e,...) - Installazione 5.2.3 Driver del costruttore, versione 5.68 - Installazione 5.2.4 Strumenti Open Source - Installazione 5.3 ESS 5.3.1 Panoramica 5.3.2 Installazione 5.4 PCTel 5.4.1 Panoramica 5.4.2 Installazione 5.5 Conexant/Rockwell HSF 5.6 Intel (precedentemente Ambient Technology, precedentemente Cirrus Logic) 5.6.1 HaM 5.6.2 CL-MD5620DT 5.7 3Com 5.7.1 Mini-PCI 5.8 AMR 6. Risoluzione dei problemi 7. FAQ 7.1 Possiedo un winmodem. Funzionerà sotto Linux? 7.2 Ho "NO DIALTONE". 7.3 Ottengo un errore del tipo "device o risorsa occupato". 7.4 Ottengo degli unresolved symbols quando eseguo il fixscript/inserisco il modulo. 7.5 Il mio modem PCTel non funziona. 7.6 Il modem fa il numero e si connette senza problemi, ma poi lascia cadere la connessione. 7.7 Ottengo un kernel panic alla chiusura della connessione o scaricando il modulo. 7.8 Niente sembra funzionare. A chi rivolgermi per avere aiuto? 7.9 Chi ha scritto il driver per il mio winmodem, e come faccio a contattarlo? 8. Appendice 8.1 Parametri del Modulo PCTel: Country Code (Codice Nazionalità) ______________________________________________________________________ 11.. IInnttrroodduuzziioonnee Questo documento è il Linux Linmodem HOWTO. E' da considerarsi come una guida rapida per aiutarvi a scoprire se esiste un modo per far funzionare il vostro (cosiddetto) winmodem sotto Linux, e, se esiste, come fare. Deve essere chiaro fin dall'inizio che è molto probabile che _n_o_n esista tale supporto per il vostro winmodem: Esiste un supporto molto limitato per questi modems, spesso come moduli binari del kernel prodotti dai costruttori, ma senza supporto da parte loro (sebbene esista anche un piccolo numero di progetti open-source). Tanto per essere più chiari: la cosa migliore da fare sotto Linux è _s_i_c_u_r_a_m_e_n_t_e reperire un vero modem. Comunque, se siete impelagati con un winmodem, forse questo documento può darvi una mano. Per reperire le notizie più aggiornate sui drivers per Linmodems visitate Il sito di RobClark , la nostra piccola pagina di risorse , e Linmodems.org gli archivi delle mailing list di . Argomenti più generali relativi ai modem, tipo IRQ e script di connessione, vengono trattati più diffusamente nelle più estese Modem-HOWTO , Serial-HOWTO , PPP-HOWTO , e in altre HOWTO correlate, reperibili al sito Linux Documentation Project ed altrove. 11..11.. CCooppyyrriigghhtt Copyright (c) 2000,2001 by Sean Walbran, Marvin Stodolsky Please freely copy and distribute (sell or give away) this document in any format. It's requested that corrections and/or comments be fowarded to the document maintainer. You may create a derivative work and distribute it provided that you: · Send your derivative work (in the most suitable format such as sgml) to the LDP (Linux Documentation Project) or the like for posting on the Internet. If not the LDP, then let the LDP know where it is available. · License the derivative work with this same license or use GPL. Include a copyright notice and at least a pointer to the license used. · Give due credit to previous authors and major contributors. If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer. 11..22.. LLiibbeerraattoorriiaa Utilizzate le informazioni contenute in questo documento a vostro rischio. Si declina ogni potenziale responsabilità per i contenuti di questo documento. L'utilizzo dei concetti, esempi e/o altro contenuto di questo documento è completamente a vostro rischio. Tutti i copyrights sono detenuti dai loro proprietari, a meno che diversamente specificato. L'uso di un termine in questo documento non influenza la validità di un marchio registrato o di servizio. In particolare, dato che il termine "Winmodem" è un marchi registrato di US Robotics/3Com, il termine "winmodem"viene qui utilizzato come da Rob Clark: deve essere letto come "Winmodems(tm), host-based modems, HCF-modems, HSP-modems, e ogni tipo di hardware modem-simile." Linux è un marchio registrato di LinusTorvalds. La citazione di un particolare prodotto o marca non deve essere considerata come pubblicità. Si raccomanda caldamente di eseguire un backup di ogni file importante e/o rilevante prima di eseguire qualsiasi procedura di installazione. 11..33.. CCrreeddiittii Gran parte dei crediti individuali è fornita nel corpo del testo, dove appropriato. Una grossa parte delle informazioni contenute in questo documento proviene da varie ottime fonti, quali Il sito di Rob Clark , le mailing lists di Linmodems.org , e dalle pagine Mobilix di Werner Heuser. Un particolare ringraziamento va a Mark Spieth (mark(at)digivation.com.au) per le discussioni, consigli e per i molteplici e costanti contributi. Questo documento è stato creato utilizzando la guida SGML-HOWTO di Stein Gojen,come descritto nel sito HOWTO-HOWTO . 11..44.. AAggggiioorrnnaammeennttii ee ccoorrrreezziioonnii La più recente versione HTML di questo documento è disponibile presso , come singolo file HTML presso , il sorgente SGML è disponibile presso . La vecchia versione di questo documento stava diventando ingombrante e difficile da gestire, così una riscrittura si è resa necessaria. Per evitare la perdita definitiva di quelle informazioni una copia della vecchia versione è mantenuta presso . Avete un Linmodem che funziona, ma non è descritto qui? Siete interessati nello sviluppo di un driver? Pensate che qualcosa in questo documento non sia corretta o sia fuorviante? Ritenete che il vostro lavoro o quello di qualcun altro sia stato qui utilizzato, ma non riconosciuto in maniera appropriata? Non esitate a contattarmi a sean(at)walbran.org con le vostre correzioni e suggerimenti. 22.. LLiinnmmooddeemmss 22..11.. CChhee ccoossaa èè uunn LLiinnmmooddeemm?? Un Linmodem rappresenta l'implementazione per Linux di un "winmodem" (vedi la liberatoria). Questi apparecchi sono "meno di" un modem vero e proprio, dato che dipendono dal software per eseguire, in misura più o meno estesa, quelle funzioni che normalmente vengono svolte dall'hardware del modem. Il razionale alla base di tutto ciò è che, ovviamente, il software è più economico dell'hardware è può essere upgradato/espanso/migliorato senza usare cacciaviti (di solito); tuttavia, affinché il modem funzioni senza problemi è richiesto che il software giri sul proprio sistema operativo preferito. 22..22.. QQuuaallii ttiippii ddii LLiinnmmooddeemm hhaarrddwwaarree ssoonnoo ssuuppppoorrttaattii?? Un numero sempre crescente di winmodems funziona sotto Linux. Ogni chipset per il quale esiste un driver ha una propria sezione in questo documento che ne descrive l'installazione. Tutti gli altri chipset _n_o_n _h_a_n_n_o _u_n _s_u_p_p_o_r_t_o _n_o_t_o per Linux (almeno non è noto a noi). 22..33.. CCoommee ppoossssoo ssccoopprriirree ssee iill mmiioo GGeeeeWWhhiizz 99..88..77 MMooddeemm // LLaappttoopp hhaa uunnoo ddii qquueessttii cchhiippsseettss?? 22..33..11.. IInnffoorrmmaazziioonnii ddaall ssiisstteemmaa Si possono ottenere informazioni sull'hardware installato usando comandi quali: · PCI: cat /proc/pci e lspci · ISA: pnpdump e isapnp · PCMCIA interna: cardctl ident · Generali: dmesg | more e cat /proc/interrupts MarvS nota che il Device Manager di Windows potrebbe fornire informazioni simili, ma bisogna ricordarsi che un costruttore spesso mette il proprio nome su un modem interno e che questa informazione potrebbe non essere così utile come sperato (p.es., che chipset ha un modem "Compaq Interno 56K"?). Delle informazioni aggiuntive possono talvolta essere ottenute tramite un modem log, implementato sotto MS Windows sotto forma di check box situata all'interno dei menu Dial Up Networking. Il file che risulta è C:\WINDOWS\MODEM.LOG. Questo file conterrà le stringhe di inizializzazione del modem, e probabilmente anche il nome del file di configurazione, che potrebbe contenere qualche altra informazione utile. 22..33..22.. NNoommii ddeeii mmooddeemm ee nnuummeerrii ddii iiddeennttiiffiiccaazziioonnee Conoscendo il nome esatto del vostro modem, potete provare a fare una ricerca sul grosso Linux Modem Compatibility Database presso Il sito di Rob Clark Il codice lettera/colore posto sulla sinistra della tavola di compatibilità indica se il vostro modem funziona o meno sotto Linux. Il codice "LM" identifica un Linmodem, e la nota indica il tipo di driver richiesto. Una "WM" indica un winmodem, e non è noto alcun supporto per Linux. Non date per scontato che modems con nomi simili contengano lo stesso chipset, o che abbiano comunque lo stesso comportamento! Il vostro WhizBang LX56 ed il WhizBang GT56 del vostro amico potrebbero avere organi interni completamente diversi. Se non si conosce il nome esatto del modem, si può eseguire una ricerca basata sul suo numero di identificazione (su ogni modem è stampato un numero di registrazione, che può essere o l'identificativo della scheda del produttore, oppure il numero di registrazione FCC. Una fotografia esplicativa di tale numero su una scheda modem può essere vista presso presso Il sito di Rob Clark . Usate la funzione "Trova nella pagina" del vostro browser per cercare nel suo elenco di modems e FCC identificativi per ottenere le informazioni sul chipset/driver. In alternativa si può cercare direttamente sul database della FCC (US Federal Communications Commission) presso . Leggete le istruzioni con attenzione e fate attenzione a non confondere la O (lettera) con lo 0 (numero), ed altri simboli simili. 22..33..33.. LLaappttooppss ddoottaattii ddii mmooddeemmss iinntteerrnnii Potrebbe non essere possibile ottenere l'identificativo della FCC, se per esempio avete un laptop che preferite non aprire, oppure avete deciso di acquistarne uno in particolare, ma il venditore non è così gentile da fornirvi le informazioni di cui avete bisogno, né ha una macchina da esposizione da aprire e "smanettarci" un pò. In questo caso potete tentare: · Il sito di Kenneth Harker Linux on Laptops ha un grosso elenco di siti creati da coloro che usano i laptop, che descrivono le loro esperienze con Linux sui singoli modelli. · Le pagine di Werner Heuser Mobilix: Linux Modems e Mobilix: Linux Mini-PCI includono delle liste di specifiche per laptop con modem interni e NIC, così come consigli utili su come ottenere maggiori informazioni nel caso il modello fosse presente nelle liste. · Il manuale del venditore del computer, il suo sito web oppure (orrore!) il supporto tecnico. · 33.. SSeettuupp ggeenneerraallee ee mmoodduullii ddeell kkeerrnneell 33..11.. SSuuppppoorrttoo ddeeii mmoodduullii ddeell kkeerrnneell Tutti i kernel drivers qui elencati sono rilasciati come moduli del kernel, quindi dovete essere sicuri di avere un kernel che supporti i moduli. Inoltre, bisogna attivare il supporto per la "module version", al fine di adiuvare l'utilizzo di kernel e moduli che non siano della stessa versione, come verrà descritto più sotto. Se utilizzate un kernel di una distribuzione di Linux ragionevolmente recente, molto probabilmente tale supporto dei moduli è già attivato. Se compilate il kernel da voi, allora già dovreste sapere come attivarne il supporto moduli, tramite il Kernel HOWTO . Ad ogni buon conto, potete sempre controllare che le seguenti righe siano presenti nel vostro file di configurazione del kernel (che di solito è situato sotto /usr/src/linux): CONFIG_MODULES=y CONFIG_MODVERSIONS=y 33..22.. IISSAA PPlluugg--nn--PPllaayy Se possedete un modem ISA Plug-n-Play dovrete verosimilmente avere isapnptools installato per allocare le risorse per la scheda modem. Per fare ciò, oltre ad avere installato isapnptools, è necessario avere una linea per il modem nel file /etc/isapnp.conf. Leggete le pagine di manuale ed il Plug-and-Play-HOWTO , ma se non avete altri dispositivi ISA che vi interessano, fondamentalmente tutto quello da fare è: 1. Configurate, se possibile, il vostro BIOS come "Non-PNP OS." 2. Come root, eseguite pnpdump per generare un prototipo di file isapnp.conf basato sulle schede testate e sulle risorse attualmente utilizzate dal vostro sistema. 3. Cercate l'output del modem e decommentate le linee corrispondenti all'IRQ (altrimenti inutilizzato) che desiderate utilizzare per il modem. Per esempio, il file isapnp.conf di Sean per un Thinkpad i1411 equipaggiato con un modem Lucent LT comprende: (CONFIGURE ACRd119/1 (LD 0 (INT 0 (IRQ 11 (MODE +E))) (IO 1 (SIZE 8) (BASE 0x0100) (CHECK)) (NAME "ACRd119/1[0]{LT Win Modem }") # (ACT Y) )) Stranamente, almeno in questo caso, è stato necessario lasciare com­ mentata la linea #(ACT Y). Se per voi non funziona in questo modo, provate l'altro. 4. Copiate il file in /etc/isapnp.conf 5. Fate il reboot. Al boot dovrebbe apparire un messaggio tipo 'Initializing ISA PNP devices...OK'. Se ciò non succede, avete probabilmente scelto una configurazione IRQ/DMA che è già utilizzata; provate un'altra delle opzioni fornite dall'output di pnpdump. (Notate che probabilmente il reboot non è necessario se eseguite isapnp con le giuste opzioni. Comunque è più semplice per l'utente inesperto fare un reboot. 33..33.. MMooddeemmss PPCCII Se desiderate maggiori notizie sul vostro modem PCI di quelle fornite da cat /proc/pci possono essere preziose le utilità contenute nel pacchetto pciutils quali scanpci e lspci. In particolare, lspci -vv offre un notevole numero di informazioni, utili e preziose. 33..44.. SSttrruummeennttii ppeerr ii mmoodduullii I comandi seguenti sono utili quando si ha a che fare con i moduli. Molti richiedono i privilegi di root. Consultate le pagine di manuale (p.es., man insmod) per informazioni più dettagliate su questi comandi. 33..44..11.. iinnssmmoodd --ff Un modulo con una versione corrispondente al kernel dovrebbe essere inserito con il comando modprobe _n_o_m_e___m_o_d_u_l_o; modprobe tenterà di inserire ogni altro modulo dal quale detto modulo dipenda (come determinato da depmod, descritto sotto). Un singolo modulo può essere inserito (senza i moduli da cui dipende) con il comando insmod _n_o_m_e___d_e_l___m_o_d_u_l_o. Qualora il modulo fosse stato compilato con un kernel differente da quello corrente,insmod segnalerebbe la mancata corrispondenza delle versioni e rifiuterebbe di caricare il modulo. Si può, comunque, passare un'opzione per forzare il caricamento del modulo nonostante la mancata corrispondenza: insmod -f _n_o_m_e___d_e_l___m_o_d_u_l_o. Se il modulo utilizza un'interfaccia per il kernel che non cambia sostanzialmente con il cambiare della versione, il modulo verrà comunque inserito, e potrà essere più o meno funzionale. E' questo il caso, per esempio, del modulo per il modem ESS esscom.o che, nonostante sia compilato sotto la versione 2.2.12, può essere forzatamente inserito con kernel successivi, e funzionare in maniera più o meno estesa fino alla versione 2.2.14 senza ulteriori modifiche; oltre la versione 2.2.15, è invece richiesto il patch per tty.h descritto oltre. L'inserimento forzato fallisce comunque con i kernels delle serie 2.4. 33..44..22.. rrmmmmoodd Si può scaricare un modulo (rimuoverlo dal kernel) dopo l'uso dando il comando rmmod. 33..44..33.. ddeeppmmoodd Il comando depmod analizza le dipendenze dei moduli. Si può testare la compatibilità di un modulo precompilato con il kernel corrente con un comando quale: depmod -e ltmodem.o Nell'esempio specifico di ltmodem.o compilato con un kernel 2.2.12 che gira sotto 2.2.17, le informazioni fornite includono: · depmod: *** Unresolved symbols in ltmodem.o · depmod: bh_mask · depmod: schedule_timeout · depmod: request_region · depmod: pcibios_read_co · e molte altre. Utilizzare un modulo con simboli irrisolti (unresolved symbols) può essere rischioso, come descritto sotto. 44.. TTrruucccchhii ee ssuuggggeerriimmeennttii ppeerr mmoodduullii pprreeccoommppiillaattii uuttiilliizzzzaattii ccoonn kkeerr­­ nneell ddii vveerrssiioonnii ddiiffffeerreennttii Molti dei drivers per linmodems sono disponibili solamente come moduli binari del kernel precompilati. Di norma, i moduli binari funzionano in modo trasparente solo con il kernel per il quale sono stati compilati. Per questo motivo, riuscire a far funzionare un driver precompilato con il vostro kernel particolare, può rivelarsi una vera sfida. Dato che il kernel di Linux è un animale in perpetuo cambiamento, è una vera sfortuna che molti venditori di modem/chip non abbiano ancora optato per il rilascio dei sorgenti dei loro drivers, cosa che assicurerebbe la vostra e nostra possibilità di modificare appropriatamente detti drivers, man mano che i sorgenti del kernel si evolvono. Alcuni dei moduli binari sono stati forzati a funzionare sotto alcuni kernel più recenti utilizzando vari trucchi, come verrà descritto sotto; comunque, anche se un modulo fosse reso funzionale, è buona cosa usarlo il meno possibile. Citando una email da Mark Spieth, "Un driver non potrà mai lavorare in maniera appropriata, se sono presenti dei simboli irrisolti, dato che ciò significa che c'è qualcosa che non funziona. In più vuol dire che quel qualcosa che avrebbe dovuto essere chiamata chiamerà una cosa diversa nel kernel e ciò potrebbe essere qualsiasi cosa. Ciò è _m_o_l_t_o male." Quindi, siate cauti nell'utilizzare moduli binari con un kernel di versione differente; procedete a vostro rischio. Se reputate fondamentale che il vostro modem funzioni, considerate di tornare ad una versione precedente del kernel che corrisponda a quella del modulo - una prospettiva senza dubbio ridicola. Nonostante questi avvertimenti, comunque, molti hanno utilizzato kernel e moduli non corrispondenti, incontrando solo noie minori (occasionali kernel panic) usando i trucchi e strumenti come i seguenti. 44..11.. FFiixxssccrriippttiinngg Mark Spieth ha contribuito ad una serie progressivamente migliorata di "fixscripts", per editare un modulo binario in maniera tale da eliminare gli avvertimenti di discrepanza di versione. L'inserzione del modulo così "fissato" procede senza l'opzione -f, cioè semplicemente insmod _n_o_m_e___d_e_l___m_o_d_u_l_o. Le versioni più recenti rinominano anche i simboli del modulo per farle corrispondere con quelle esportate dal kernel, in maniera tale che i messaggi di errore "Unresolved symbols" non vengano ritornati dal test depmod -e. Bisogna evidenziare che questi cambiamenti sono quasi esclusivamente cosmetici - è ancora raccomandabile utilizzare il modulo il meno possibile. Per usare il fixscript su, per esempio, il modulo binario Lucent ltmodem.o (che non è attualmente il modulo da utilizzare), create una directory di lavoro, per esempio /root/modem. Reperite l'ultima versione del fixscript da . Salvate il file come fixscript. Esaminatelo con less o con il vostro editor preferito, per controllare che non siano stati aggiunti accidentalmente gli hard stops del DOS. Questi appaiono come M in grassetto oppure M sottolineate, oppure come ^M, a seconda del vostro viewer/editor. NOTA: il viewer more NON mostra gli hard stops del DOS. Rendete in file eseguibile con chmod +x fixscript. Generate un modulo "fissato" tramite, per esempio ./fixscript ltmodem.o ltmodem2217.o Nessun messaggio di errore dovrebbe apparire testando le dipendenze con depmod -e ltmodem2217.o l'inserimento dovrebbe avere successo con un semplice, non forzato, insmod ltmodem2217.o Il "codice sorgente" fornito con alcuni moduli PCTel (un piccolo file in C) esegue un simile mascheramento quando compilato e linkato con le librerie binarie in quei pacchetti; al contrario il driver parzialmente open-source Lucent _n_o_n compensa nessun cambiamento dell'interfaccia del kernel. 44..22.. PPaattcchhaarree ttttyy..hh Nella sua ricerca di far funzionare con kernel successivi al 2.2.14 il driver originale del modem Lucent LT (versione 5.68), totalmente binario, Mark Spieth ha notato che una semplice modifica nel kernel di Linux risolveva le principali incompatibilità occorse nel passaggio tra i kernels 2.2.14 e 2.2.16. Questo patch non è più necessario utilizzando il driver parzialmente binario e parzialmente sorgente (versione 5.78), ma resta utile per coloro con altri modems i cui drivers sia stati compilati con kernels pre-2.2.15. Il 2.2.17 tty.h patchato ed alcuni pacchetti kernel 2.2.17 compilati con questo patch sono disponibili presso . Se preferite editare da voi il file, la linea da spostare è nella struttura tty_struct all'interno di include/linux/tty.h; questo ha un membro aggiuntivo poll_wait nei kernel più recenti. Muovete questo membro alla fine della struttura, così che i restanti offsets saranno gli stessi delle versioni precedenti alla 2.2.15, per cui compatibili con il modulo precompilato. Dopo questa modifica al sorgente sarà necessario ricompilare kernel e moduli. 44..33.. UUssaarree pppppp..oo ddaall KKeerrnneell 22..22..1144 Esiste un trucco per l'uso di moduli binari con kernels successivi al 2.2.15, che nonne richiede la ricompilazione; comunque, dopo la scoperta del patch tty.h descritto sopra, questo trucco non è più necessario, né raccomandato. Ciò consiste nel sostituire il modulo /lib/modules/net/ppp.o con uno proveniente dal kernel 2.2.14. Christoph Hebeisen (cth(at)sfu.ca) ha riferito che l'uso di ppp.o versione 2.2.14 al posto della versione 2.2.16 con il modulo Lucent, ha fatto sì che funzionasse con kernels 2.2.16. Willie Green (willjr(at)lcc.net) ha confermato che tale trucco funziona anche con il modulo ESS. Dopo il semplice inserimento di un modulo di supporto versione-corrispondente: insmod slhc Si inserisce il ppp.o discrepante dal sorgente 2.2.14 insmod -f ppp.o Desideriamo enfatizzare il fatto che questo trucco dell'inserimento forzato è meno stabile della facile è più efficace modifica al file sorgente del kernel tty.h, come descritto sopra. 55.. CChhiippsseettss ssppeecciiffiiccii eedd ii lloorroo ddrriivveerrss 55..11.. IIBBMM MMwwaavvee ((TThhiinnkkppaadd 660000EE)) IBM ha un driver per il software modem del loro Thinkpad 600E, completamente open-source (sotto GPL) disponibile qui . 55..22.. LLuucceenntt LLTT 55..22..11.. PPaannoorraammiiccaa Questo modem gode del maggior supporto sotto Linux, dato che ne esistono tre pacchetti driver diversi: · Esiste un modulo del kernel, metà binario/metà open source, non supportato dal costruttore, pensato in origine per i kernels 2.2.14-5 della distribuzione Red Hat 6.2, ma sostanzialmente riattato da Mark Spieth ed altri per funzionare con i kernels 2.2.x e 2.4.x. Questa è la versione del driver 5.78(c,d,e...), ed è il driver che ha maggiori probabilità di successo se utilizzato. · Esiste poi, un modulo kernel solo binario, non supportato, compilato sotto i kernel 2.2.12-20 della Red Hat 6.0. Questa è la versione 5.68. · Alcuni strumenti open source da usare con i modem Lucent sono disponibili presso . Pavel Machek scrive che "Non è comunque molto utile: è un driver hardware, e senza un protocollo stack v.34, non potete collegarvi con il vostro ISP. E' comunque abbastanza per trasformare il vostro winmodem Lucent in una segreteria telefonica." Bisogna notare che il modulo solo binario (da "linux568.zip"), contiene codice dal driver Linux GPL serial.c così, essendo il sorgente del driver del modem non disponibile, trafficare con questo driver è apparentemente in violazione della GPL. Distribuire il driver parzialmente open source ("i56lvp578.zip") può o non può essere tecnicamente legale, dato che il codice GPL, sebbene non ancora linkato al codice closed source, è certamente considerato in questo modo. Vedere questo numero di Kernel Traffic e l'archivio della Linux-Kernel mailing list per la settimana che comprende il 3 dicembre 2000, per maggiori dettagli. 55..22..22.. DDrriivveerr vv55..7788((cc,,dd,,ee,,......)) -- IInnssttaallllaazziioonnee Procuratevi il pacchetto per il vostro kernel da e seguite le istruzioni aggiornate lì fornite. 55..22..33.. DDrriivveerr ddeell ccoossttrruuttttoorree,, vveerrssiioonnee 55..6688 -- IInnssttaallllaazziioonnee Questo driver è superato dalla versione 5.78 descritta sopra; comunque, può ancora essere di qualche utilità in casi particolari. 1. Procuratevi il pacchetto per il vostro kernel: a. da 2.2.12 a 2.2.15 b. 2.2.15 e superiori: stessa URL, ma è richiesto il patch "tty.h"; vedi "Trucchi e suggerimenti..." sopra. 2. estraete linux568.zip 3. su (inserite la password di root al prompt) 4. ./ltinst (un messaggio di errore 'file not found' verrà scritto, dovuto ad un difetto dello script di installazione; ignoratelo.) Il vostro modem dovrebbe ora risultare accessibile come device /dev/modem oppure /dev/ttyS14. 55..22..44.. SSttrruummeennttii OOppeenn SSoouurrccee -- IInnssttaallllaazziioonnee Vedere la documentazione allegata al sorgente per le istruzioni. 55..33.. EESSSS 55..33..11.. PPaannoorraammiiccaa Sono disponibili driver solo binari per ES56T-PI (PCI) e ES56V-I (ISA), compilati sotto kernel 2.2.12-20 della Red Hat 6.0. Il driver è stato usato mediante inserimento forzato fino al kernel 2.2.15, ed usando il patch "tty.h" descritto nella sezione "Trucchi e suggerimenti..." fino al kernel 2.2.17. 55..33..22.. IInnssttaallllaazziioonnee 1. Procuratevi i pacchetti per il vostro modem (notate che questi sembrano essere stati rimossi dal sito: proverò comunque a farne un mirror a ) · ISA: o · PCI: . 2. Per kernels 2.2.15 e successivi, applicate il patch tty.h (Vedere "Trucchi e suggerimenti..." sopra); ricompilate kernel e moduli. 3. Estraete il pacchetto con: unzip _n_o_m_e___p_a_c_c_h_e_t_t_o 4. Ottenete i privilegi di root: su (inserite la root password al prompt) 5. Create il file di device: mknod /dev/esscom c 127 1 6. Create un device accessibile: ln -s /dev/esscom /dev/modem 7. Create un device accessibile: ln -s /dev/esscom /dev/ttyS15 8. Impostate l'appartenenza del device: chgrp uucp /dev/esscom 9. Impostate i permessi del device: chmod 666 /dev/esscom 10. Mascherate la versione del modulo (Vedere "Trucchi e suggerimenti..." sopra): ./fixscript essmodem.o essmodem.fix.o 11. Installate il modulo: cp essmodem.fix.o /lib/modules/`uname -r`/misc/essmodem.o 12. Inserite il modulo nel kernel: insmod -f essmodem 13. (Opzionale) Provvedete per il caricamento automatico del modulo: aggiungete una linea "alias char-major-127 essmodem" al file /etc/modules.conf o /etc/conf.modules 55..44.. PPCCTTeell 55..44..11.. PPaannoorraammiiccaa I drivers binari possono essere reperiti presso . Un pacchetto di installazione stile-Debian per kernel 2.2.16 è stato reso disponibile da Corel presso . Un pacchetto .gzip/tar derivato dal .deb è reperibile qui . In aggiunta Thomas Wright ha fornito un driver per il kernel 2.4, anche questo reperibile qui . Sono noti altri pacchetti per i quali è sufficiente la compilazione di minima descritta sotto. 55..44..22.. IInnssttaallllaazziioonnee Esistono apparentemente due tipi di pacchetti per moduli per PCTel. 1. Un pacchetto (rpm o deb) che installa due moduli, pctel_hsp.o e pctel_pci.o, in /lib/modules/2.2.16. Con questo pacchetto, se usate un kernel più recente del 2.2.16, avrete bisogno di forzarne l'inserzione (insmod -f); qualora ciò non andasse a buon fine, potete provare il metodo "fixscript", usato in precedenza con i moduli Lucent 5.68 ed ESS sebbene, per quanto ne so, non è mai stato ancora provato. Se avete un kernel precedente al 2.2.16, dovreste prendere in considerazione l'upgrade, altrimenti tentate lo stesso il "fixscript" (anche questo non è garantito che funzioni). Se riuscite nell'intento, per cortesia fatemelo sapere. 2. Un pacchetto che, una volta estratto, fornisce una serie di librerie (hsp.a, etc...) ed un piccolo file sorgente in C (ptmodule.c), che dovrebbero essere messi in directory quali lib/ e src/module/. Se non avete queste directory, createle ed organizzatei files con: mkdir lib mkdir src mkdir src/module mv *.a lib/ mv Makefile *.c src/module Ora posizionatevi nella directory src/module e digitate make. Questo dovrebbe generare il modulo pctel.o, che apparirà nella directory lib. (Il modulo _n_o_n è il file object ptmodule.o presente in src/module!) La versione apparente del modulo generato in questo modo corrisponderà a quella del vostro kernel. Una volta ottenuti i moduli, procedete all'installazione come segue: 1. Ottenete i privilegi di root: su (inserite la root password al prompt) 2. Create il file di device: mknod /dev/pctel c 62 79 3. Create un device accessibile: ln -s /dev/pctel /dev/modem 4. Create un device accessibile: ln -s /dev/pctel /dev/ttyS15 5. Impostate l'appartenenza del device: chgrp uucp /dev/pctel 6. Impostate i permessi del device: chmod 666 /dev/pctel 7. Installate il modulo (solo per il pacchetto del secondo tipo, vedi sopra): cp pctel.o /lib/modules/`uname -r`/misc/ 8. Inserite il modulo (od i moduli) nel kernel, con insmod -f _n_o_m_e_m_o_d_u_l_o 55..55.. CCoonneexxaanntt//RRoocckkwweellll HHSSFF Esiste un driver per i kernels 2.2.14, 2.2.16 e 2.2.17 presso . La pagina è in francese, ma i comandi di installazione sono scritti in grassetto rosso. In pratica scaricate il pacchetto, estraetelo con tar -zxvf, ed eseguite lo script di installazione ins_all. Molto probabilmente, comunque, non funzionerà - pochissime persone sono riuscite nell'intento. Alcuni fatti sul driver già sono noti: · E' stato compilato per il kernel 2.2.14-5.0 della RedHat 6.2; perciò, l'uso con kernels post- 2.2.15 richiederà almeno il patch di tty.h (Vedere "Trucchi e suggerimenti..." sopra). · Sembra essere specifico per la rete telefonica francese. Mark Allen ha postato un file .inf per altri sistemi telefonici presso la linmodems mailing list qui ; altri hanno provato a modificare il file lin_hsf.inf o a copiare (totalmente o parzialmente) il file .inf dalla propria installazione di Windows. Un uso con pieno successo del modem è stato riportato dalla Francia e dall'Australia, da altre nazioni con livelli minori di successo (Spagna,...?). · Potreste aver bisogno di di dare al device il major number 253, invece del 254, utilizzato di default. · Le stringhe di inizializzazione del modem possono essere importanti: il sito francese raccomanda AT&FW2; John Torriero in Australia ha avuto successo con un cambiamento minimo al file .inf e ad alcune stringhe di inizializzazione come descritto in qui . In breve, questo driver non è stato ancora completamente esplorato; controllate gli archivi delle mailing list presso , ed in particolare questo thread , per ulteriori discussioni ed informazioni. Se qualcuno riuscisse a far funzionare con successo il modem, sarei davvero interessato a sapere come ha fatto. 55..66.. IInntteell ((pprreecceeddeenntteemmeennttee AAmmbbiieenntt TTeecchhnnoollooggyy,, pprreecceeddeenntteemmeennttee CCiirr­­ rruuss LLooggiicc)) 55..66..11.. HHaaMM Un driver per il modem HaM è disponibile presso 55..66..22.. CCLL--MMDD55662200DDTT Mikhail Moreyra ha scritto un driver GPL per il chipset CL-MD5620DT, che può raggiungere i 33.6 kbps; comunque questo software è nello stadio alfa e va trattato con cautela. Potete reperire il driver presso . Gabriel Gambetta (ggambett(at)internet.com.uy) ha presentato una versione patchata del driver, per utilizzare i comandi standard AT; potete scaricare questa versione del driver presso il sito di Rob Clark qui . 55..77.. 33CCoomm 55..77..11.. MMiinnii--PPCCII Una richiesta di commenti è stata postata da una persona autorizzata della 3Com, circa la possibile domanda per driver solo-binari per la loro combinazione miniPCI NIC/winmodem qui sulla mailing list di Linmodems.org; cortesemente rispondete all'indirizzo fornito, linmodem@new-n-used.com, e non alla mailing list. Sebbene a quanto ne so, nessun driver sia stato ancora rilasciato, Werner Heuser pagina miniPCI ha maggiori informazioni e links. 55..88.. AAMMRR Ian Stewart riporta che sta lavorando ad un "driver di medio livello" per il codec AC97. 66.. RRiissoolluuzziioonnee ddeeii pprroobblleemmii Così avete letto tutto questo documento, il Modem-HOWTO , ed il PPP Howto , siete sicurissimi che il vostro modem corrisponde ad uno dei drivers disponibili, ma ancora non funziona? Ci sono svariati punti durante il processo in cui qualcosa può andare storto. Linux in genere mantiene dei records delle connessioni che sono molto utili nell'individuazione e risoluzione dei problemi. I loro nomi variano sia da distribuzione a distribuzione, sia a seconda del software di Dial-in, ma i log files /var/log/messages, /var/log/syslog dovrebbero essere in grado di fornire un minimo di informazione. Sia per risolvere i problemi che per chiedere aiuto in una mailing list, sarà utile raccogliere le informazioni qui sotto richieste. Come root, spostatevi nella directory nella quale gli scripts di installazione del modem sono situati, e lanciate uno script di registrazione, come mostrato sotto. Una volta che lo script è terminato con "exit", copiatelo al di fuori della vostra partizione di Linux per trasmetterlo alla lista che può fornirvi aiuto. (Le righe con # sono commenti esplicativi.) # Inizia la registrazione, script ModemTest.txt # inserite quante più informazioni sul modem avete echo nome winmodem, costruttore, designazione, e chip se possibile # questo fornisce la versione corrente del kernel uname -r # questo dà informazioni sulle porte seriali setserial -agv /dev/ttyS* # questo dà informazioni sugli interrupts (irq) cat /proc/interrupts # mostra il contenuto dello script di installazione del modulo (inserite il nome dello script): cat NomeScript # Controlla se lo script è eseguibile: ls -l NomeScript # la risposta è OK se ha "x" come sotto: # -rwxrw-rw- 1 root root 654 Jan 6 2000 ltinst # altrimenti rendetelo eseguibile con: chmod o+x NomeScript # verificate con ls -l NomeScript # se NomeScript non è stato ancora eseguito con successso con questo kernel # eseguitelo con: ./NomeScript # controllate dove punta il link simbolico /dev/modem: ls -l /dev/modem # Qual'è il NomeDevice specificato nel NomeScript (/dev/ttyS14 o...?) echo NomeDevice # qual'è il nome del modem driver? Qualcosa tipo NomeDriver.o # con il suffisso ".o" che indica che è un binario compilato echo Questo è il mio NomeDriver.o # se è stato inserito nel "Modules Path" # Provate a mostrarlo nel percorso con: find /lib/modules | grep NomeDriver # NomeDriver è fra i moduli installati nel kernel? lsmod # altrimenti provate un semplice inserimento: insmod ./NomeDriver.o # se era già nel Modules Path, sarà sufficiente il seguente: insmod NomeDriver # controllatene l'inserimento: lsmod # se non inserito, provate a forzarlo: insmod -f ./NomeDriver # listate di nuovo il modulo inserito. lsmod # Se NomeDriver NON è listato, # c'è una incompatibilità fra l'hardware del modem, driver e kernel. # Sforzi ulteriori non sarebbero di alcun aiuto. # Se NomeDriver è listato, allora cerchiamo di produrre un pò più di informazioni. # Per prima cosa, rieseguite l'utilità di configurazione # utilizzata per settare la connessione telefonica della vostra installazione di Linux. # Ricordatevi poi di togliere la vostra PassWord da questo record. # L'utility vi chiederà, con ogni probabilità le seguenti informazioni # che dovrete avere a portata di mano: # La porta da usare (/dev/modem oppure /dev/ttySn), Numero telefonico, UserName, PassWord. # Eseguite il programma di configurazione. IlTuoProgConf # Per terminare la registrazione exit Se il dial-in non ha avuto successo, appendete a questo un record dal vostro file log. Come esempio, viene mostrata di seguito una sezione di un /var/log/syslog da un sistema Debian Linux. 77.. FFAAQQ 77..11.. PPoossssiieeddoo uunn wwiinnmmooddeemm.. FFuunnzziioonneerràà ssoottttoo LLiinnuuxx?? Probabilmente no. Consultate la sezione "Quali tipi di Linmodem hardware sono supportati?" sopra, e controllate il Linux Modem Compatibility database presso il sito di Rob Clark . 77..22.. HHoo ""NNOO DDIIAALLTTOONNEE"".. Provate a settare l'opzione del vostro BIOS da "PNP OS" a "non-PNP OS", da "Windows" a "Altro SO ", od equivalente. Utenti Conexant: Consultate la sezione Conexant, sopra. 77..33.. OOtttteennggoo uunn eerrrroorree ddeell ttiippoo ""ddeevviiccee oo rriissoorrssaa ooccccuuppaattoo"".. · Se avete un modem ISA, avete utilizzato isapnptools per allocare IRQ e DMA alla scheda? Per maggiori informazioni, consultate "ISA Plug-n-Play", sopra. · Controllate due volte che il device file sia stato creato correttamente, e tentate di eliminare qualsiasi conflitto di IRQ abbiate. Se tutto sembra a posto, ma ancora non funziona, controllate la Linmodems.org mailing list per vedere se qualcun'altro ha avuto (e magari risolto) lo stesso problema, oppure provate a risolverlo per conto vostro ed informate gli altri dei risultati dei vostri sforzi. 77..44.. OOtttteennggoo ddeeggllii uunnrreessoollvveedd ssyymmbboollss qquuaannddoo eesseegguuoo iill ffiixxssccrriipptt//iinnsseerriissccoo iill mmoodduulloo.. Gli unresolved symbols sono un vero pericolo di discrepanza fra versioni e, in generale, sono una brutta cosa per quanto quasi inevitabili con i moduli binari. Se il fixscript riporta unresolved symbols, o il modulo non funziona nonostante questi, potreste non avere chances con quella combinazione di kernel/modulo; comunque, alcuni rari casi coinvolgono i moduli come: · slhc_xxxx: Probabilmente dovete inserire il modulo slhc prima dei moduli del modem/ppp; usando modprobe al posto di insmod dovrebbe ovviare lo stesso al problema. · printk, jiffies: Il vostro kernel potrebbe essere compilato con il SMP abilitato. Nessuno dei moduli binari è SMP-safe, e probabilmente lavorerà solo su macchine con un singolo processore e con un kernel per singolo processore, ovvero con SMP disabilitato. Provate a ricompilare il kernel, o ottenetene una versione con SMP disabilitato. (Grazie a Tom Reinertson (treinertson(at)uswest.net)) · tty_xxxx con esscom.o: I primi fixscripts non erano in grado di trattare i simboli versione-specifici in questo modulo. Versioni più recenti, in grado di fissare anche questo modulo sono disponibili presso Se un modulo funziona in maniera instabile, e possibile che, in determinate circostanze quei simboli vengono evitati, mentre in altre andiate a sbatterci contro. Provate programmi di dialup diversi (wvdial, kppp), che chiamano differenti set di funzioni a parità di condizioni. E' anche possibile che il fixscript, ideato per il modulo lucent, non riesca a "fissare" i simboli utilizzati nel vostro modulo. Se non trovate nessuna combinazione che funzioni, considerate di scalare ad un kernel che abbia una versione più vicina a quella del modulo. 77..55.. IIll mmiioo mmooddeemm PPCCTTeell nnoonn ffuunnzziioonnaa.. · Dovete dare al modulo il parametro di codice nazione? Consultate l'appendice. · State usando il giusto driver? Esistono più drivers PCTel (consultate la sezione "Quali tipi di Linmodem hardware sono supportati?" sopra). Potete provarne un altro e vedere se ciò aiuta. 77..66.. IIll mmooddeemm ffaa iill nnuummeerroo ee ssii ccoonnnneettttee sseennzzaa pprroobblleemmii,, mmaa ppooii llaass­­ cciiaa ccaaddeerree llaa ccoonnnneessssiioonnee.. Questo problema viene riportato spesso; può avere alcune soluzioni, o nessuna: 1. E' possibile che il modem sia installato correttamente e funzioni altrettanto bene, ma che abbiate un problema con la configurazione ppp. In particolare, se trovate un errore nel log tipo "peer is not authorized," provate a cambiare "auth" con "noauth" in /etc/ppp/options, e/o decommentate "auth" e "lock" (ponendo un '#' all'inizio della linea). Corel ha una FAQ su questo problema a . 2. E' stato riportato che un programma tipo kppp può dare un simile messaggio di errore in presenza di discordanza tra kernel e moduli, mentre un altro come wvdial, a parità di moduli ed hardware non dà lo stesso errore. Provate a cambiare ppp dialer e vedete se funziona. 3. Infine, c'è la potenziale correlazione con il supporto audio. Paragonando la funzionalità di ltmodem.o con/senza supporto audio nel kernel, il dial-in è OK, ma ppp non funziona con kernels senza supporto audio. Molte distribuzioni mantengono un file di configurazione del kernel insieme a quest'ultimo. Per la Debian è il file /boot/config-version Le scelte positive possono essere rapidamente mostrate con: grep SOUND /boot/config-version |grep -v not Nel caso specifico di una versione 2.2.17: # grep SOUND /boot/config-2.2.17 |grep -v not CONFIG_SOUND=m CONFIG_SOUND_OSS=m CONFIG_SOUND_SB=m CONFIG_SOUND_MPU401=m CONFIG_SOUND_YM3812=m CONFIG_SOUND_VMIDI=m CONFIG_SOUND_YMPCI=m CONFIG_LOWLEVEL_SOUND=y Sia CONFIG_SOUND=m che CONFIG_SOUND=yes dimostrano che il kernel ha il supporto audio(come semplice output audio). Se nulla di quanto detto funziona, dovreste considerare l'utilizzo di una versione del kernel più vicina a quella del modulo. Altrimenti, tentate la mailing list presso Linmodems.org per avere aiuto. 77..77.. OOtttteennggoo uunn kkeerrnneell ppaanniicc aallllaa cchhiiuussuurraa ddeellllaa ccoonnnneessssiioonnee oo ssccaarrii­­ ccaannddoo iill mmoodduulloo.. Ci sono un paio di soluzioni per ciò, anche se nessuna delle due potrebbe funzionare: · Provate un diverso dialer ppp (wvdial, kppp). · Configurate il modulo in maniera da inglobarlo nel kernel, cioè che non venga scaricato. 77..88.. NNiieennttee sseemmbbrraa ffuunnzziioonnaarree.. AA cchhii rriivvoollggeerrmmii ppeerr aavveerree aaiiuuttoo?? · Ricontrollate che il vostro modem sia realmente supportato dal modulo in vostro possesso. Consultate la sezione "Quali tipi di Linmodem hardware sono supportati?" sopra. · Provate a determinare in quale punto del processo di installazione le cose si inceppano. Consultate le pagine di manuale sui comandi utilizzati a quel punto e vedete se potete determinare la causa del problema. Se tutto sembra perduto, consultate la sezione "Risoluzione dei problemi" sopra e prendete in considerazione l'invio delle informazioni lì descritte la mailing list presso Linmodems.org . 77..99.. CChhii hhaa ssccrriittttoo iill ddrriivveerr ppeerr iill mmiioo wwiinnmmooddeemm,, ee ccoommee ffaacccciioo aa ccoonnttaattttaarrlloo?? Se non viene fornito alcun indirizzo per i contatti, potete presumere che è stato qualcuno sotto contratto del costruttore che probabilmente non ha l'autorità di rinnovare/rilasciare/cambiare il codice sorgente, e che probabilmente non ha nemmeno il tempo di rispondere alla vostra mail in ogni caso. Vedete, per esempio, 88.. AAppppeennddiiccee 88..11.. PPaarraammeettrrii ddeell MMoodduulloo PPCCTTeell:: CCoouunnttrryy CCooddee ((CCooddiiccee NNaazziioonnaalliittàà)) Quello che segue è preso da uno dei files readme PCTel. Potete quindi scegliere il codice appropriato inserendo il modulo con un parametro tipo: insmod pctel.o country_code=7 (il "7" viene sostituito dal vostro country code, preso dalla lista sotto). Grazie a Jonathan Emery per aver puntualizzato la sintassi corretta. Settare e riportare il country code. Questo driver usa un parametro del modulo per settare il giusto country code per le varie linee telefoniche delle varie nazioni, ed è in grado anche di riportare il codice settato. Ecco due versioni per la selezione ed il riporto del country_code: VERSIONE #1: Per settare il country code: "country_sel_rep sel 7" setterà il country code a 7. Per interrogare il driver sul country code attualmente settato: "country_sel_rep rep" ritorna il country code corrente all'uscita del programma. VERSIONE #2: Per settare il country code: "country_sel 7" per settare il country code a 7. Per interrogare il driver sul country code attualmente settato: "country_rep" ritorna il country code corrente all'uscita del programma. country_code country_name 1 USA 2 FRANCIA 3 GERMANIA 4 ITALIA 5 SVEZIA 6 REGNO UNITO 7 GIAPPONE 8 AUSTRALIA 9 SPAGNA 10 TAIWAN 11 SINGAPORE 12 COREA 13 SVIZZERA 14 NORVEGIA 15 OLANDA 16 BELGIO 17 CANADA 18 IRLANDA 19 PORTOGALLO 20 POLONIA 21 UNGHERIA 22 FINLANDIA 23 DANIMARCA 24 AUSTRIA 25 S.AFRICA 26 NAZIONI CTR21 27 CINA 28 MALESIA 29 LUSSEMBURGO 30 GRECIA 31 ISLANDA 32 NUOVA ZELANDA 33 BRASILE