UMTS
Dieser Artikel beschreibt wie ein Freifunkrouter mit einem UMTS-Stick zu einem mobilen Hotspot wird. Einige Modelle (z.B. TP-LINK TL-WR841 V7, V10 oder MR3020) lassen sich mit einer Powerbank oder der Autobatterie autark vom 220V Netz wirklich mobil betreiben.
Getestet mit: TP-LINK TL-WR1043 v2 und v3, TP-LINK TL-MR3020 v1.9 und MEDION Surfstick S4222 mit FONIC Prepaid Karte.
Mobiler Router mit UMTS
Für einen Freifunkrouter, der über einen UMTS-Stick ans Internet angebunden werden soll, sollte das Image mit USB Unterstützung verwendet werden. Trotz der USB Unterstützung sind folgende Schritte notwendig, um den UMTS-Stick zum Laufen zu bringen. (Es werden auch die Module aufgeführt, die ohne USB-Unterstützung bei der Erstellung der FF-Firmware benötigt werden.)
Voraussetzungen
Für die Installation eines UMTS-Stick sind folgende Voraussetzungen zu erfüllen:
- Der Router benötigt einen USB-Port.
- Während der Softwareinstallation muss der Router über den WAN-Port aus Internet angeschlossen sein.
- In /etc/resolv.conf muss ein Nameserver eingetragen werden, damit die OpenWrt Pakete gefunden werden.
Als Nameserver nutze ich meinen lokalen Router.
Beispile: /etc/resolv,conf
search lan nameserver 192.168.20.1 nameserver 127.0.0.1
Schritt 1a: Installation der Software (Teil 1)
Gluon verwendet einen eigenen, modifizierten Kernel. Daher müssen Kernel-Module für diesen Kernel kompiliert werden. Dies geschieht bei der Generierung der Firmware. Die Module befinden sich im Ordner /output/modules. Für die Installation der richtigen Module sollte in der Datei /etc/opkg/customfeed.conf der Pfad zu den Modulen eingetragen werden, die mit der Firmware generiert wurden. Für meine Zwecke habe ich die Pakete auf einem Router mit USB-Stick geladen und den Ordner unter der Statusseite als /download abgelegt. Hier das Beispiel für mein Image vom 05.10.2016:
# add your custom package feeds here # # src/gz example_feed_name http://www.example.com/path/to/files src/gz gluon http://[fda0:747e:ab29:2241:16cc:20ff:fecd:15bc]/download/modules/gluon-su-rhb-s2016.2-usb-20161005/ar71xx/generic
Als erstes müssen die Paketlisten aufdatiert und die Pakete installiert werden.
opkg update opkg install \ kmod-usb-core \ kmod-usb2 \ libusb-1.0 \ usb-modeswitch \ usbreset
Anschließend soll der Router neu gestartet werden. (Der Sinn leuchtet mir nicht ganz ein.)
reboot ; exit
Nach einem Reboot muss natürlich die /etc/resolv.conf wieder angepasst werden.
Schritt 1b. Softwareinstallation (Teil 2)
Die Installation der weiteren Software kann nicht schaden und wird - nach anderen Beschreibungen - für ältere USB-Dongle benötigt.
opkg update opkg install \ chat \ comgt \ kmod-ppp \ kmod-pppoe \ kmod-usb-serial \ kmod-usb-serial-option \ kmod-usb-serial-\ wwan \ ppp \ ppp-mod-pppoe
Auf einem TP-LINK TL-MR3020 ist nicht genug Speicher für die obige Lösung.
Alternativ kann rdnis genutzt werden, was aber nach verschiedenen Berichten bei älteren 3G-Dongles ggf. nicht funktioniert.
opkg undate opkg install \ kmod-nls-base \ kmod-usb-core \ kmod-mii \ kmod-usb-net \ kmod-usb-net-cdc-ether \ kmod-usb-net-rndis \ kmod-usb-uhci
(Diese Pakete passen auch auf einen TP-LINK MR3020. Sie reichen aber nicht aus, um einen Medion Stick damit anzusteuern. Was ich noch nicht getestet habe, ist ein USB-Tethering über ein Mobiltelefon.)
Diese Lösung habe ich mit dem Medion Stick noch nicht getestet. In welchem Umfang neuere Sticks die erste Lösung nicht mehr unterstützen, weiß ich nicht.
Schritt 2: Stick prüfen
Mit den drei folgenden Befehlen wird geprüft, ob der UMTS-Dongle erkannt wird.
usbmode -l ls /dev/ttyUSB* gcom info -d /dev/ttyUSB0
Schritt 3: USB-3G-Dongle von Medion (S4222) installieren
Der USB-3G-Dongle soll eine zweite Verbindung ins Internet aufbauen, über die fastd einen Tunnel zu den Supernodes im Internet aufbauen kann. Dazu definieren wir eine neue Netzwerkschnittstelle, die ich 'umts' genannt habe. Viele Kochrezepte empfehlen die Schnittstelle wan zu benennen und die alte Schnittstelle in wan2 umzubenennen. Dies ist jedoch nicht notwendig. Der Router kann mit mehreren Schnittstellen gleichzeitig umgehen. Dies hat den Vorteil, dass der Router sowohl über den WAN-Port, als auch über einen UMTS-Stick angebunden werden kann. Auch eine gleichzeitige Verbindung mit beiden Schnittstellen ist möglich. Hier kann es jedoch passieren, dass die Verbindung über die UMTS stattfindet, was sehr teuer werden kann.
dazu wird dieses Interface mit folgendem Script auf dem Freifunkrouter als Netzwerkschnittstelle eingerichtet. Dabei ist <xxxx> durch die PIN der SIM-Karte zu ersetzen. Wenn alles richtig läuft, meldet sich die Schnittstelle als 3g-umts. Die Schnittstelle umts muss außerdem der Firewall in der Zone 1 bekannt gemacht werden. Dies geschieht am besten mittels uci Befehlen, die ich in einem Script umts zusammengefügt habe.
#!/bin/sh echo "Einrichten der Netzwerkschnittstelle für UMTS uci set network.umts=interface uci set network.umts.proto=3g uci set network.umts.peerdns=0 uci set network.umts.ifname=umts0 uci set network.umts.device=/dev/ttyUSB0 uci set network.umts.apn=internet uci set network.umts.pincode=<xxxx> uci set network.umts.delay=90 uci commit uci set firewall.@zone[1].network='wan wan6 umts' uci commit firewall
Für den DNS muss die Datei /var/gluon/wan-dnsmasq/resolv.conf geändert werden. Diese wird durch zwei Scripte erstellt
Zusätzlich müssen zwei Dateien angepasst werden: /etc/hotplug.d/iface/50-gluon-wan-dnsmasq und /lib/gluon/wan-dnsmasq/update.lua
In der Datei 50-gluon-wan-dnsmasq muss das neue Interface umts in die Liste eingefügt werden ...
if [ "$INTERFACE" = 'wan' -o "$INTERFACE" = 'wan6' -o "$INTERFACE" = 'umts' ]; then /lib/gluon/wan-dnsmasq/update.lua fi
und in der Datei update.lua wird der Aufruf pcall(s,'umts') eingefügt.
... else pcall(s,'wan6') pcall(s,'wan') pcall(s,'umts') end ...
TP-LINK TL-MR3020 mit USB-Tethering
Beim TP-LINK TL-MR3020 ist der Overlay-Speicher leider zu klein, um eine UMTS Unterstützung nachträglich zu installieren. Um Platz zu schaffen, muss auf das Paket gluon-status-page verzichtet werden. Dann kann eine Firmware für den TP-LINK TL-MR3020 gebaut werden, die den Router über USB-Tethering mit den fastd Servern verbindet. Für die Lösung mit einem USB-3G-Dongle reicht der Platz noch nicht.
USB_PACKAGES_MR3020 := \ kmod-nls-base \ kmod-usb-core \ kmod-mii \ kmod-usb-net \ kmod-usb-net-cdc-ether \ kmod-usb-net-rndis \ kmod-usb-uhci # basic support for USB stack USB_PACKAGES_BASIC := \ kmod-usb-core \ kmod-usb2 GLUON_TLMR3020_SITE_PACKAGES := $(USB_PACKAGES_BASIC) $(USB_PACKAGES_MR3020)
Mit folgenden Befehlen wird dann die Schnittstelle aktiviert.
uci set network.tether='interface' uci set network.tether.ifname='usb0' uci set network.tether.auto='1' uci set network.tether.proto='dhcp' uci set network.tether.type='bridge' uci set network.tether.peerdns='0' uci set network.tether.device='/dev/ttyUSB0' uci commit uci set firewall.@zone[1].network='tether wan wan6' uci commit firewall
Wie bereits oben beschrieben müssen auch hier die Dateien
- /etc/hotplug.d/iface/50-gluon-wan-dnsmasq und
- /lib/gluon/wan-dnsmasq/update.lua
angepasst werden.
In der Datei 50-gluon-wan-dnsmasq muss das neue Interface tether in die Liste eingefügt werden ...
if [ "$INTERFACE" = 'wan' -o "$INTERFACE" = 'wan6' -o "$INTERFACE" = 'tether' ]; then /lib/gluon/wan-dnsmasq/update.lua fi
und in der Datei update.lua wird der Aufruf pcall(s,'tether') eingefügt.
... else pcall(s,'wan6') pcall(s,'wan') pcall(s,'tether') end ...
Getestet wurde diese Konfiguration mit einem Samsung Galaxy Note 4.
Test
root@su-rhb-test-01:~# ifconfig 3g-umts 3g-umts Link encap:Point-to-Point Protocol inet addr:10.171.235.229 P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:9 errors:0 dropped:0 overruns:0 frame:0 TX packets:615 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:98 (98.0 B) TX bytes:140590 (137.2 KiB)