Internet key Momo Design (Italiano)

From ArchWiki
Revision as of 22:19, 27 September 2011 by Maveloth (Talk | contribs) (added category)

Jump to: navigation, search

Introduzione

Il Momo design è un 3.5G HSDPA USB modem usato per la navigazione in internet. La sua installazione può risultare un po' ostica su linux visto che i produttori non rilasciano driver specifici per linux.

Hardware

Nel momento della connessione al pc dovremmo vedere con dmesg quanto segue:

cdc_acm 2-1:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

Questo significa che il nostro modem sta lavorando su ttyACM0, una porta virtuale, ed è qui che dovremo configuarlo.

Prima di tutto

Accertarsi di avere installato pppd

# pacman -Qs ppp
local/ppp 2.4.4-9 (base)
A daemon which implements the PPP protocol for dial-up networking

avviare il modulo ppp-generic inserendolo nell'apposita riga di /etc/rc.conf

MODULES=(nvidia ppp-generic !usblp option) 

modificare il file /etc/resolv.conf con i vostri server DNS oppure quelli open come nell'esempio

nameserver 208.67.222.222
nameserver 208.67.220.220

Per rendere persistente la modifica anche dopo il riavvio

chattr +i /etc/resolv.conf

Connessione con wvdial

Packages

Installiamo il pacchetto wvdial se non è già presente

# pacman -S wvdial

Scripting

Andiamo a creare o modificare se esiste già il file /etc/wvdial.conf con il nostro editor preferito

[Dialer Defaults]
Modem = /dev/ttyACM0
ISDN = off
Modem Type = Analog
Modem Baud = 460800
Init2 = ATX3
Init3 = AT+COPS?
Init4 = AT+CGDCONT=1,"ip","datacard.tre.it"
Phone = *99#
Dial Attempts = 1
Dial Command = ATM1L3DT
Ask Password = off
Password = tre
Username = tre
Auto Reconnect = off
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = on
Idle Seconds = 0
Auto DNS = off

L'esempio è per una connessione mediante provider 3 (modificare se necessario le seguenti righe)

Init4 = AT+CGDCONT=1,"ip","datacard.tre.it"
Phone = *99#
Password = tre
Username = tre

Connessione

Ora lanciando da root il comando wvdial dovremo effettuare la connessione.

# wvdial

Se non funzione provare da un altro terminale a dare il seguente comando per instradare le richieste verso internet su ppp0.

# route add default ppp0

Connessione con ppp

Configurazione

Creiamo uno script che chiameremo /etc/ppp/peers/conn3 con questi dati all'interno (scopiazzato da qui)

#!/bin/bash                                                                                                              
/dev/ttyACM0   #If using cdc-acm module                                                                                  
#demand         #Connessione a richiesta                                                                                 
debug        # Comment this off, if you don't need more info                                                             
# scripts to initialize the 3G / EDGE / GPRS modem                                                                       
connect '/usr/sbin/chat -v -f /etc/ppp/peers/connect-chat'                                                               
# AT commands used to 'hangup' the connection                                                                            
disconnect '/usr/sbin/chat -v -f /etc/ppp/peers/disconnect-chat'                                                         
460800      # Serial port line speed                                                                                     
crtscts    # hardware flow control for cable                                                                             
local        # Ignore carrier detect signal from the modem:                                                              
lcp-echo-failure 0
lcp-echo-interval 0
# IP addresses:
:0.0.0.0
# - accept peers idea of our local address and set address peer as 10.6.6.6
# (any address would do, since IPCP gives 0.0.0.0 to it)
# - if you use the 10. network at home or something and pppd rejects it,
# change the address
noipdefault        # pppd must not propose any IP address to the peer!
ipcp-accept-local    # Accept peers idea of our local address
defaultroute        # Add the ppp interface as default route to the IP routing table
#replacedefaultroute    # New route should be our default route to Internet
#usepeerdns        # User DNS returned by server
noauth            # The phone is not required to authenticate
# Most phone do not support compression, so turn it off.
noipv6
novj
nobsdcomp
novjccomp
nopcomp
noaccomp
# Username and password:
# If username and password are required by the APN, put here the username
# and put the username-password combination to the secrets file:
# /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP
# authentication. See pppd man pages for details.
user "tre"        # Change this
persist            # Persistent connection
maxfail 99999        # Retry and retry and retry if failed...

Creiamo o modifichiamo /etc/ppp/pap-secrets

# Secrets for authentication using PAP
# client        server  secret                  IP addresses
tre     *       tre

Sempre presupponendo che la connessione sia fatta al provider 3

Creiamo o modifichiamo il file /etc/ppp/peers/connect-chat

ABORT BUSY
ABORT ERROR
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid Login'
ABORT 'Login incorrect'
ABORT VOICE
ABORT 'NO ANSWER'
ABORT DELAYED
ABORT 'SIM PIN'
 ATZ
OK-AT-OK 'ATX3'
OK-AT-OK 'AT+COPS?'
OK-AT-OK 'AT+CGDCONT=1,"IP","datacard.tre.it"'
OK 'ATM1L3DT*99#'
TIMEOUT 120
CONNECT 
TIMEOUT 5
'~--' 

Creiamo o modifichiamo il file /etc/ppp/peers/disconnect-chat

#!/bin/sh
# send break exec /usr/sbin/chat -V -s -S    \
ABORT           "BUSY"          \
ABORT           "ERROR"         \
ABORT           "NO DIALTONE"   \
SAY             "\nSending break to the modem\n"        \
""              "\K"            \
""              "\K"            \
""              "\K"            \
""              "\d\d+++\d\dATH"        \
SAY             "\nPDP context detached\n"

Connessione

Ora con il comando

# pon conn3

la connessione dovrebbe avvenire (controllare con ifconfig se si attiva la rete ppp0)

Per praticità è possibile creare il seguente link simbolico

# ln -s /etc/ppp/peers/conn3 /etc/ppp/peers/provider

così sarà possibile connettersi con il semplice comando

# pon

Se non funzione provare da un altro terminale a dare il seguente comando per instradare le richieste verso internet su ppp0.

# route add default ppp0

Regolazione dei dettagli

Verifica dello stato della connessione

Per verificare lo stato della connessione suggerisco questo escamotage: Creare un file dove salvare la risposta che da pppd al comando in /etc/ppp/peers/connect-chat OK-AT-OK 'AT+COPS?'

touch /var/log/monitorconn.log

Editare i seguenti due script: /etc/ppp/ip-up.d/monitorconnessione.sh

#!/bin/bash
echo "`grep 'COPS:' /var/log/ppp.log | tail --lines=1 | cut -c48-`" > /var/log/monitorconn.log

e /etc/ppp/ip-down.d/clearmonitorconnessione.sh

#!/bin/bash
echo "." > /var/log/monitorconn.log

Ora ogni volta che ci connetteremo il file /var/log/monitorconn.log verrà aggiornato con il provider di connessione e ogni volta che ci sconnetteremo verrà pulito. L'unica cosa è assicurarsi che all'accensione del pc il file sia pulito: aggiungere al file /etc/rc.sysinit la seguente riga

/bin/echo " " > /var/log/monitorconn.log ## per verificare connessione 3

Per far apparire il contenuto di /var/log/monitorconn.log in conky aggiungere al file di configurazione nella sezione TEXT

${color lightgrey}Network ppp0: ${exec cat "/var/log/monitorconn.log" | head --lines=1}

Links