Aus Raspberry Pi Geek 06/2015

Der Raspberry Pi als 3G-Hotspot (Seite 2)

Beachten Sie jedoch, dass Raspbian beim Einbinden der Sticks gerne Ärger macht (siehe Kasten “UMTS-Sticks und der RasPi”). Falls der von Ihnen verwendete UMTS-Stick nicht auf Anhieb unter Linux funktioniert, lohnt sich in der Regel eine kurze Recherche im Internet. Für viele UMTS-Dongles finden sich Anleitungen, um sie unter Linux zum Laufen zu bekommen. Oft muss man dazu allerdings ein wenig tiefer ins System eingreifen. Sämtliche Kausalitäten aller am Markt verfügbaren UMTS-Sticks zu beschreiben, würde den Artikel sprengen.

UMTS-Sticks und der RasPi

Generell harmonieren viele UMTS-Sticks mit Linux, doch im Zusammenhang mit dem Raspberry Pi taucht immer wieder ein Problem auf: Steckt man den Stick nachträglich ein, funktioniert der Modeswitch ohne Probleme. Hängt der Stick jedoch schon während des Systemstarts am System, passiert nichts. Die Ursache: Der für das Umschalten verantwortliche Udev-Daemon startet zu spät. Die Hardware des Sticks ist schon initialisiert und Udev bekommt davon nichts mit. Als Workaround fügen Sie der Datei /etc/rc.local vor der letzten Zeile mit dem exit die Anweisung udevadm trigger hinzu. Dies löst noch einmal alle Kaltstart-Events aus, sodass der Moduswechsel dann doch noch funktioniert.

Einwahl

In Vor-DSL-Zeiten war für die Internetverbindung ein Wählprogramm notwendig, die eigentliche Verbindung wurde per PPP aufgebaut. Damals wie heute steht PPP für “Point-to-Point Protocol”, also Punkt-zu-Punkt-Verbindungsprotokoll. Darauf setzen auch moderne UMTS-Modems auf. Das in den Stick integrierte Modem wählt sich ein und stellt eine Verbindung zu einer Gegenstelle her. Der Pppd-Daemon hält die Leitung und stellt die Netzwerkschnittstelle bereit. Beim Aufbau des RasPi-Routers übernimmt das Wählprogramm Wvdial diese komplexe Aufgabe.

Nach der Installation und dem Anstecken des Sticks rufen Sie einmalig sudo wvdialconf auf. Steckt der Stick schon während der Installation von Wvdial, dann passiert das sogar automatisch. Das Konfigurationsprogramm ermittelt ein paar Basiswerte für die Initialisierung und die Kommunikation mit dem Modem und schreibt das Ergebnis in die Datei /etc/wvdial.conf. Diese müssen Sie anschließend nur noch um ein paar spezifische Informationen Ihres Providers ergänzen – Listing 2 zeigt das beispielhaft für Tchibo-Mobil.

Am besten googeln Sie mit dem Suchbegriff “wvdial Anbieter” nach den entsprechenden Einstellungen; weitere hilfreiche Informationen zu den APN-Einstellungen der diversen Mobilfunkanbieter liefert ein Artikel bei Explipedia [2]. Gegebenenfalls tragen Sie mehr als nur einen Provider in die Datei ein, wobei die korrespondierenden Abschnitte stets mit [Dialer Anbieter] beginnen müssen.

Listing 2

 

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Modem = /dev/ttyUSB0
Baud = 9600
[Dialer pin]
Init3 = AT+CPIN=1234
[Dialer pinstatus]
Init3 = AT+CPIN?
[Dialer umts]
Init3 = AT+CGDCONT=1,"IP","webmobil1"
Stupid Mode = 1
Phone = *99***1#
Username = egal
Password = egal
Dial Attempts = 3

Speichern Sie danach die Datei, kappen Sie alle herkömmlichen Netzwerkverbindungen und rufen Sie die Befehle aus Listing 3 auf. Geht alles gut, startet Wvdial den Pppd-Daemon. In einem zweiten Fenster überprüfen Sie mit ifconfig, ob das Netzwerkinterface ppp0 bereitsteht. Kommt keine Verbindung zustande, helfen meist die Ausgaben von Wvdial bei der Fehlersuche. Da Sie das Wählprogramm aus einem Terminalfenster heraus im Vordergrund gestartet haben, genügt für den Abbruch von Wvdial mitsamt Pppd ein [Strg]+[C]. Starten Sie die Verbindung erneut, müssen Sie die PIN nicht noch mal eingeben, hier genügt das zweite Wvdial-Kommando. Um in Zukunft die Verbindung nicht jedes Mal von Hand starten zu müssen, richten Sie nun einen automatischen Verbindungsaufbau ein – dafür reichen die Bordmittel von Linux aus.

Listing 3

 

$ sudo wvdial pin
$ sudo wvdial umts

Automatik

Den automatischen Start übernimmt auch bei PPP-Wählverbindungen ein Eintrag in die Konfigurationsdatei /etc/network/interfaces (Listing 4, Zeilen 4 bis 8). Soll die Konfiguration des Netzwerkgeräts über die Interfaces-Datei erfolgen, die Verbindung aber nicht automatisch laden, deaktivieren Sie die Zeile 4 (auto ppp0) durch eine vorangestellte Raute (#). Die Zeile 7 führt vor dem Verbindungsaufbau das Skript /usr/local/sbin/setpin aus (Listing 5). Das kleine Programm wartet bis zu 30 Sekunden auf das Modem und setzt, sobald es das Modem findet, die PIN. Sobald die Verbindung steht, lädt das Kommando aus Zeile 8 noch eine Reihe von Firewall-Regeln – dazu später mehr.

Listing 4

 

auto lo
iface lo inet loopback
auto ppp0
iface ppp0 inet wvdial
provider umts
pre-up /usr/local/sbin/setpin
up iptables-restore < /etc/iptables.3ghotspot
auto br0
iface br0 inet static
address   192.168.100.250
netmask   255.255.255.0
network   192.168.100.0
broadcast 192.168.100.255
bridge-ports eth0 wlan0
bridge_maxwait 0

Listing 5

 

#!/bin/bash
# in case /dev/ttyUSB0 does not exist, wait for it at most 30 seconds
let i=1
while ! test -c /dev/ttyUSB0; do
  let i+=1
  if [ $i -gt 10 ]; then
    logger -s -t setpin "/dev/ttyUSB0 does not exist"
    exit 3
  fi
  logger -s -t setpin "waiting 3 seconds for /dev/ttyUSB0"
  sleep 3
done
# check for pin and set it if necessary
wvdial pinstatus 2>&1 | grep -q '^+CPIN: READY'
if [ $? -eq 0 ]; then
  logger -s -t setpin "SIM card is ready to use :-)"
else
  logger -s -t setpin "setting PIN"
  wvdial pin 2>/dev/null
fi
echo -en "sleeping for 3 seconds ..."
sleep 3
echo " done"
exit 0

Nach dieser Vorarbeit sollte die Verbindung gleich beim Systemaufbau hochkommen. Testen Sie die UMTS-Leitung beispielsweise mit einem ping -c 3 google.de. Mit sudo ifdown ppp0 trennen Sie die Verbindung bei Bedarf wieder. Mit sudo ifup ppp0 veranlassen Sie das UMTS-Modem, sich wieder einzuwählen – dieses Kommando benötigen Sie auch, falls Sie den automatischen Verbindungsaufbau deaktiviert haben. Meldungen zum Auf- und Abbau der Verbindung finden Sie stets in der Logdatei /var/log/messages. Details zum Verbindungsaufbau während des Systemstarts suchen Sie hier allerdings vergeblich, da Linux das Netzwerk zu einem sehr frühen Zeitpunkt hochzieht, wenn der Systemlogger noch nicht läuft.

Kontrolle

Bei mobilen Datenverbindungen gilt es, das übertragene Datenvolumen im Auge zu behalten: In der Regel drosselt der Anbieter ab einer bestimmten Datenmenge die Geschwindigkeit der Datenleitung auf Schneckentempo, manch ein Mobilfunkvertrag rechnet sogar jedes weitere Kilobyte gegen teures Geld ab. Um das Übertragungsvolumen regelmäßig zu kontrollieren, setzen Sie das Programm Vnstat [3] ein. Es protokolliert zuverlässig die über jede Netzwerkschnittstelle übertragenen Datenvolumen und fasst die akkumulierten Daten in übersichtlichen Statistiken zusammen. Ständig vorhandene Schnittstellen wie eth0 oder wlan0 müssen Sie in Vnstat nicht extra konfigurieren, das PPP-Interface der UMTS-Leitung erfordert jedoch eine einmalige manuelle Initialisierung.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben