7.15.6. Konfiguracja klienta i serwera ppp w przypadku modemu GSM (model Siemens M20 + sieć Era)

Jeśli chodzi o fizyczne podłączenie modemu, to jego instalacja jest analogiczna do zwykłego modemu - tworzymy link /dev/modem wskazujący na port szeregowy, do którego jest podłączony modem. Komunikacja następuje z prędkością 19200 kBps (8N1), jest kontrola przepływu RTS/CTS.

Problem komplikuje się nieco, kiedy chcemy ustawić odpowiadanie modemu na połączenie przy użyciu programu mgetty. Otóż zanim można wykonywać jakiekolwiek operacje, modem musi się zalogować do sieci GSM, ale do tego potrzebny jest kod PIN. Do wprowadzenia kodu PIN służy komenda AT+CPIN="nnnn". Po wprowadzeniu prawidłowego PIN dioda na modemie przestaje migać i zapala się na stałe. Zatem program mgetty przy inicjalizacji modemu musi wprowadzać prawidłowy kod PIN. Można tego dokonać za pomocą opcji -m. Do /etc/inittab należy dopisać następującą linijkę (xxxx oznacza oczywiście kod PIN):

m:345:respawn:/sbin/mgetty -m '"" AT&F&C1&D2S7=55 OK ATS0=1 OK
AT+CPIN="xxxx"' -s 19200 /dev/modem
Po prawidłowym skonfigurowaniu mgetty komputer będzie automatycznie podawał kod PIN. Pora teraz na skonfigurowanie połączeń z siecią Internet. Sieć EraGSM ma numer dostępowy 0604010101, pod którym znajduje się protokół PPP z autoryzacją PAP. Do katalogu /etc/ppp należy skopiować następujące pliki (wersja dla Era GSM):

Plik pap-secrets:

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

eranet "*" eranet

Plik ppp-on-dialer:

#!/bin/sh
#
exec chat -v						\
	TIMEOUT		3				\
	ABORT		'\nBUSY\r'			\
	ABORT		'\nNO ANSWER\r'			\
	ABORT		'\nRINGING\r\n\r\nRINGING\r'	\
	''		\rAT				\
	'OK-+++\c-OK'	ATH0				\
	TIMEOUT		30				\
	OK		ATDT$TELEPHONE			\
	CONNECT		'\n'				

Plik ppp-on:

#!/bin/sh

TELEPHONE=604010101	# The telephone number for the connection
LOCAL_IP=0.0.0.0	# Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0	# Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0	# The proper netmask if needed
ACCOUNT=eranet

export TELEPHONE ACCOUNT

DIALER_SCRIPT=/etc/ppp/ppp-on-dialer

exec /usr/sbin/pppd lock crtscts /dev/ttyS1 19200 \
	defaultroute connect $DIALER_SCRIPT user $ACCOUNT
Plik ppp-off:
#!/bin/sh
######################################################################
#
# Determine the device to be terminated.
#
if [ "$1" = "" ]; then
	DEVICE=ppp0
else
	DEVICE=$1
fi

######################################################################
#
# If the ppp0 pid file is present then the program is running. Stop it.
if [ -r /var/run/$DEVICE.pid ]; then
        kill -INT `cat /var/run/$DEVICE.pid`
#
# If the kill did not work then there is no process running for this
# pid. It may also mean that the lock file will be left. You may wish
# to delete the lock file at the same time.
        if [ ! "$?" = "0" ]; then
                rm -f /var/run/$DEVICE.pid
                echo "ERROR: Removed stale pid file"
                exit 1
        fi
#
# Success. Let pppd clean up its own junk.
        echo "PPP link to $DEVICE terminated."
        exit 0
fi
#
# The ppp process is not running for ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1

Ważna jest opcja user programu pppd, która mówi jaki użytkownik ma się łączyć z siecią Internet. Dla sieci Era jest to eranet.