Smartlink (r) compatible modems HOWTO v 1.0


INDICE GENERALE
    
    1. Introduzione
    2. Modem supportati
    3. Download
    4. Estrazione file dall'archivio compresso
    5. requisiti minimi
    6. Installazione
    7. Caricamento manuale moduli
    8. Caricamento automatico moduli
    9. Supporto ALSA
    10. KPPP
    11. WVDIAL
    12. Appendici: bug e segnalazioni (aggiornata al 4/3/2006)
    13. Note e varie



1. INTRODUZIONE

Sicuramente avrete sentito parlare delle difficoltà nel fare funzionare i winmodem su linux.
Si tratta di modem principalmente interni (ma non solo) da 56Kbps (quindi per la normale linea analogica) che necessitano di driver particolari per funzionare (cosí come per Windows) ma il loro utilizzo, specie per chi con linux è agli inizi (come me ;-)) può essere abbastanza difficoltoso, non tanto per l'operazione di installazione in sè, molto semplice, quanto per la creazione di script che carichino automaticamente i driver all'avvio del PC.
Se state leggendo queste righe probabilmente avete come me la sfortuna di possedere uno di questi "simpatici" modem, il cui unico vantaggio è il costo inferiore rispetto a quelli "normali", il che ne giustifica la diffusione.
Se state pensando di comprare un nuovo modem compatibile con linux o di lasciare perdere il pinguino solo per questo motivo, beh vi consiglio prima di leggere questo HOWTO che, spero, vi saprà spiegare in modo semplice ma completo come cofigurare correttamente queste dannate periferiche.



2. MODEM SUPPORTATI

La prima cosa che dovete fare, ancora prima di scaricare i driver è controllare che il vostro modem sia uno di quelli supportati per evitare di perdere tempo nell'installazione di un modulo del kernel (il termine driver infatti, tipico di Windows, è improprio per linux e per questo d'ora in avanti lo racchiudermo tra virgolette) che non vi è inutile.

Dal README dei "driver":
"Supported Hardware
==================

HAMR5600 based AMR/CNR/MDC/ACR modem cards on the following Southbridge
chips:
- Intel ICH0,ICH2, ICH3, ICH4
- Via 686A, 686B, 8231, 8233
- SiS 630
- ALI 1535.
SmartPCI56/561/562/563 based PCI modem cards.
SmartUSB56 based USB modem."

Tenete però presente che i miei 2 modem (NetDragon 56K e Trust 56K V92 USB) pur non essendo citato nella lista è ugualmente supportato, dovete infatti informarvi sul chipset che monta il vostro modem, e non solamente sulla sua ditta produttrice od il suo nome!!



3. DOWNLOAD

Bene, ora è giunto il momento di scaricare il software, fornito da smartlink tramite una licenza dedicata, leggetela attentamente (seeeeeee...).
Il sito da cui scaricare i driver è recentemente cambiato: NON è più www.smartlink.com (come potete trovare scritto da alcune parti) MA

http://www.smlink.com

La pagina da cui scaricare i driver è http://www.smlink.com/content.aspx?id=142.
NOTA: la pagina potrebbe cambiare indirizzo in quanto è il risultato di uno scipt ASP, quindi se non corrispondesse ai driver che vi aspettate cercate all'interno della homepage www.smlink.com il link corretto.

Il loro nome dovrebbe essere slmodem-X.Y.Y dove X e Y indicano il numero della versione (nel momento in cui vi scrivo l'ultima è la 2.9.10).
Nel momento in cui vi scrivo l'ultima versione disponibile è la 2.9.10, ed è a quella che si fa riferimento in queste pagine.



4. ESTRAZIONE FILE DALL'ARCHIVIO COMPRESSO

Ora che avete scaricato i Vostri "driver" spostate il file slmodem-x.y.y.tar.gz in una directory (cartella) alla quale avete pieno acceso (es. $HOME) meglio se create una sottodirectory "modem" in cui decomprimere il file.

Già, ma come?

Se avete konqueror semplicemente "Tasto destro sul file/Azioni/Estrai qui" ;-)

Se invece non l'avete o volete sapere, giustamente, cosa c'è dietro, o vi piace usare la console digitate:
$ gzip -dc slmodem-X.Y.Y.tar.gz | tar xf -

NOTA: X E Y SONO DA SOSTITUIRE CON IL NUMERO DELLA VERSIONE!!

Fatto ciò dovrebbe comparire nell cartella in cui eravate una directory denominata "slmodem-2.9.10" (senza estenisione quindi, essendo una cartella..)

Il suo contenuto nel mio caso è:
./drivers/    I dirver veri e propri, ovvero i moduli del kernel, ovviamente scritti in C, con il relativo Makefile
./modem/    Le specifiche dei diversi modem
./patches/    La path per utilizzare ALSA
./scripts    Esempi di script per automatizzare il caricamento dei "driver"
./Changes    Changelog delle varie versioni
./COPYING    La licenza (non è un GPL, leggetela!)
./Makefile    IL makefile
./README    IL readme, la musa ispiratrice di questo HOWTO



5. REQUISITI MINIMI



Oltre ovviamente ad un PC che non sia eccessivamente vecchio (dal README "64MB RAM e processore >= Pentium II" :D) è necesario l'intero kernel (anche i sorgenti), che alcune distribuzioni chiamano "kernel-source" o "linux-source".

Potete controllare di avere tutti i sorgenti semplicemente provando ad installare il modem, se vi da problemi strani controllate ;-)
Ah, e dimenticavo, è necessario anche un modem supportato :D



6. INSTALLAZIONE

Aprite la shell e digitate dalla directori in cui avete decompresso i "driver";

$ make
Eventualmente se la cartella in cui vi sono i sorgenti del kernel non fosse "/lib/modules/$(shell uname -r)/build" o comunque nel caso non vi fosse un collegamento ad esse dovete anche passare la variabile KERNEL DIR (make KERNEL_DIR=/percorso/a/linux) oppure modificate il Makefile alla riga 16.

DA ROOT (su e password):
# make install

Questo installa i driver, in particolare crea:

* L'applicazione /usr/bin/slmodemd;
* I moduli del kernel slamr e slusb;
* Nel caso di kernel 2.4 modifica modules.conf per l'autocaricamento;



7. CARICAMENTO MANUALE MODULI

A questo punto se tutto è andato bene da shell, come utente privilegiato, digitate:
# modprobe slamr
se il vostro modem è interno oppure
# modprobe slusb
se esterno.

A questo punto, caricati i moduli, lanciate slmodemd con la device e l'indicazione del Paese:
# slmodemd --country=ITALY /dev/slamr0
/dev/slamr0 deve essere sostiutito con /dev/slusb0 in caso di modem esterni e se avete più modem collegati il numero 0 va cambiato con 1,2,3 etc.

Dopodichè compariranno due linee di testo che vi informano della creazione di una nuova device, /dev/ttySL0, che dovrete come device del modem nel dialer che usate.
Nel caso per la connessione vogliate utilizzare KPPP, per alcune versioni c'è un probelma nel supportare devices diverse da /dev/modem,in questo caso dovete creare un collegamento simbolico alla device denominato appunto /dev/modem
# ln /dev/ttySL0 /dev/modem -s
dove -s indica la creazione di un link simbolico.



8. CARICAMENTO AUTOMATICO MODULI

Se l'operazione precedente è andata a buon fine, ovvero i "driver" si caricano senza problemi e tutto va bene, potete automatizzare il caricamento dei moduli, le possibilità per fare ciò sono molteplici (autostart del WM, /etc/modules, /etc/init.d...).
Personalmente io ho utilizzato uno script d'esempio inserito (opportunamentte modificato) in /etc/init.d che si carica all'avvio del PC che carica sia il modulo slamr (o slusb) che slmodemd, ma potete anche creare uno script voi tipo questo:
#!/bin/bash
slmodemd /dev/slamr0 --country=ITALY | kppp
E salvarlo con estensione .sh e con attributi di eseguibilità (#chmod +x nomescript.sh

Come detto prima /dev/slamr0 va modificato.
Se non volete che parta anche kppp togliete la seconda parte ;-)
Script di questo genere hanno però il difetto di non caricare i moduli del kernel (per fare ciò servono infatti privilegi di root) quindi se utilizzate questa seconda strada dovete far caricare all'avio anche i moduli aggiungendo il loro nome (slusb p slamr) in una riga di /etc/modules.preload

Se volete che los cript venga eseguio al'avvio del gestrore di finestre dovete metterlo in una cartella apposta:

* /home/tuo_user/.kde/Autostart per KDE,
* /home/tuo_user/Desktop/Autostart per xfce,
per GNOME non so, non mi piace molo, ma comunque è sicuramente scritto nei file di documentazione del Vostro WM, e comunque c'èun bel sito (www.google.it) dove potrete trovare più inforamzioni ;-)



9. SUPPORTO ALSA

Se avete un kernel >= a 2.6.5 e i driver ALSA in versione >= 1.0.2 (se non conoscete la versione del vostro kernel digitate da console uname -r) potete utilizzare il supporto che alsa offre ai modem, personalmente non ho potuto provarlo (non avendo nemmeno uno dei due requisiti) e, personalmente, ne sconsiglio l'uso in quanto un problema ad ALSA (e recentemente me ne sono capitati ;-)) potrebbe impedirvi di connettervi ad internet, da quanto mi è parso di capire..
Comunque nel caso vogliate provare dovete:

* Configurere il vostro kernel abilitando "ALSA and ICH based modem support" ( 'Device Drivers' -> 'Sound' -> 'Advanced Linux Sound Architecture' -> 'PCI devices' -> 'Intel i8x0/MX440; AMD768/8111 modems' ) (make --xconfig nei source se non sbaglio).

* Compilare e installare il kernel e i "nuovi" moduli come sempre (make , make modules_install, etc.).

* Compilare l'aplicazione 'slmodemd' con il supporto ALSA ($ make SUPPORT_ALSA=1 invece di $ make)

* Utilizzare l'opzione '--alsa' quando eseguite 'slmodemd' e utilizzare i nomi delle device ALSA ('hw:0' o 'hw:1' per esempio).

NOTA: SE SI USA IL DIRVER ALSA NON È NECESARIO CARICARE NÈ SLAMR NÈ SLUSB



10. KPPP

Se volete utilizzare kppp per la connessione, dopo aver impostato tutti i parametri relativi al vostro ISP, dovete creare, come già detto, un link simbolico con /dev/ttySL0 a /dev/modem
$ ln /dev/ttySL0 /dev/modem -s
Al contrario del lancio dei driver questa operazione va eseguita solo ua volta e, se non cancellate il collegamento manualmente, esso rimarrà ogni volta che riaccendete il PC.



11. WVDIAL

Non sono mai riuscito a farlo funzionare (probelmi nella connessione), tuttavia questo programma ha il pregio di essere a linea di comando, il che permette di inserirlo facilmente in script per connessioni automatiche.
Il README accluso ai driver smartlink dice di inserire la linea "Carrier Check = no" in /etc/wvdial.conf o comunque il file di configurazione che si usa con wvdial nel caso vogliate usare l'opzione --config.


12. APPENDICI: BUG E SEGNALAZIONI

BUG: Il modem si disconnette senza alcun appartene motivo dopo pochi minuti d connessione

Questo problema, segnalatoci da Daniele, che ringraziamo, sembra essere abbastanza comune. La prima cosa da fare nel caso si verifichi è abilitare l'opzione d debug passando al comando slmodemd l'opzione -d

Es.
/usr/sbin/slmodemd --country=ITALY -d /dev/slusb0

L'output fornito sarà molto ampio; non dovete fare altro che connettervi normalmente e "aspettare" che la il modem si disconnetta, se ciò accade verificate se nella finestra del terminale compare una riga simile a questa;

<152.792030> VPcmV34Main: Masking CAS detection after 4840 in train...

<155.447162> vpcm: New status 9
<155.447185> vpcm: Link Error

Se è così sembrerebbe che il problema si risolva semplicemente aggiungendo questo argomento:

AT+MS=34,0,9600,33600

Dopo l'inizializzazione del modem, sebbene alcuni ritengano che ciò vada leggermente a scapito della velocità della connessione...

In pratica dovete aggiungere a vdial.conf (se usate wvdial) nella sezione [Dialer Defaults] la riga
InitN = AT+MS=34,0,9600,33600

Dove N va sostituito con il numero seguente all'ultimo INIT che avete (in pratica se avete già un "Init1 = ATMIL3" e un "Init2= ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" dovrete aggiungere "Init3 = AT+MS=34,0,9600,33600").


E' stato inoltre segnalato un bug con i kernel più recenti (kernel = 2.6.14). Personalmente non ho potuto verificarlo, tuttavia sembrerebbe che compilare i driver con il supporto ALSA risolva il problema oppure più semplicemente è stata creata una path, che potete trovare qui : http://www.ok--computer.com/linux/asus/slmodem-2.9.10-abby.diff

Se avete dei problemi oltre a quelli sengalati non esistate a contattarmi a <dariocambie@gmail.com>.


13. NOTE E VARIE

"Smartlink" e gli altri marchi registrati sono di possesso dei rispetivi proprietari.
L'autore si scusa per ogni eventuale errore e si offre di correggerli; seganlatemeli tramite e-mail o (A)MSN a dariocambie@gmail.com
Questo HOWTO è distribuito sotto i termini della licenza GPL.
Spero di esservi stato utile, se avete avuto problemi, sengalatemeli (dariocambie@libero.it), sono qui apposta (cioè, non proprio, ma se posso dare una mano ad un pinguino newbe come me...)
Questo HOWTO è stato scaricato da http://www.pierotofy.it la comunità dei giovani programmatori informatici.
I titolari del copriright su di esso per tanto sono membri della comunity.
Finito di scrivere il 14/05/2005.