N900 pan tethering: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (Die Seite wurde neu angelegt: „Man kann die Internetverbindung des n900 via Bluetooth und PAN-Profil mit einem anderen Rechner teilen (Tethering). == Voraussetzungen == 1. Auf dem n900 muss …“)
 
(Bluetooth-Geräte koppeln: Hinweis auf n900 bei bluetooth.conf)
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 10: Zeile 10:
 
== Scripte anlegen ==
 
== Scripte anlegen ==
  
Jetzt wird es ernst: folgende Datei in '''/etc/dbus-scripts.d/''' anlegen:
+
Jetzt wird es ernst: folgende Datei [http://domina.zerties.org/~jochen/dateien/tethering tethering] in '''/etc/dbus-scripts.d/''' anlegen:
  
 
  /usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceAdded
 
  /usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceAdded
 
  /usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceRemoved
 
  /usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceRemoved
 +
 +
Und dieses Script [http://domina.zerties.org/~jochen/dateien/tethering.sh tethering.sh] muss nach '''/usr/local/bin/''':
 +
 +
#!/bin/sh
 +
 +
# /usr/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceAdded
 +
# /usr/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceRemoved
 +
 +
EVENT="$4"
 +
UDI="$5"
 +
HALDEV="$(echo $UDI | sed 's#.*/\([0-9a-zA-Z_]*\)#\1#')"
 +
LOG="/tmp/tethering.log"
 +
#INETDEV="wlan0"
 +
RUNFILE="/var/run/tethering.$HALDEV.pid"
 +
IFACEFILE="/var/run/tethering.$HALDEV.iface"
 +
 +
if [ "$EVENT" = "DeviceAdded" ]; then
 +
        IFACE=$(hal-get-property --udi $UDI --key net.interface)
 +
        case $IFACE in
 +
                bnep0 )
 +
                        IF_ADDRESS=192.168.254.254
 +
                        IF_RANGE=192.168.254.1,192.168.254.254
 +
                ;;
 +
                usb0 )
 +
                        IF_ADDRESS=192.168.253.254
 +
                        IF_RANGE=192.168.253.1,192.168.253.254
 +
                ;;
 +
                * )
 +
                        exit 0
 +
                ;;
 +
        esac
 +
 +
        echo "$(date) Enabling tethering on interface $IFACE" >> $LOG
 +
        echo "$IFACE" > $IFACEFILE
 +
        ifconfig "$IFACE" "$IF_ADDRESS"
 +
        /sbin/modprobe ipt_MASQUERADE
 +
        /usr/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
 +
        start-stop-daemon -S -p "$RUNFILE" -m -b -x /usr/sbin/dnsmasq -- -k -I lo -i "$IFACE" -a $IF_ADDRESS -z -F $IF_RANGE,3600
 +
        echo 1 > /proc/sys/net/ipv4/ip_forward
 +
fi
 +
 +
if [ "$EVENT" = "DeviceRemoved" ]; then
 +
        if [ ! -f "$IFACEFILE" ]; then
 +
                exit 0
 +
        fi
 +
        IFACE="$(cat $IFACEFILE)"
 +
        rm "$IFACEFILE"
 +
        echo "$(date) Disabling tethering on device $IFACE" >> $LOG
 +
        start-stop-daemon -K -p "$RUNFILE" -x /usr/sbin/dnsmasq
 +
        /usr/sbin/iptables -t nat -D POSTROUTING -j MASQUERADE
 +
fi
 +
 +
exit 0
 +
 +
Anschließend mit
 +
sudo chmod a+x /usr/local/bin/tethering.sh
 +
ausführbar machen!
 +
 +
Den dbus zum Neustart zwingen mit
 +
sudo killall dbus-scripts
 +
 +
 +
== Bluetooth-Geräte koppeln ==
 +
 +
Jetzt wird es ernst: man muss nun den Computer mit dem Telefon koppeln.
 +
Wichtig ist hierbei, dass das Telefon schon bei der Auswahl der Geräte als '''Computer''' erkannt wird und nicht nur als Telefon! (:twisted:)
 +
 +
Ist letzteres der Fall muss man '''auf dem n900''' die Datei '''/etc/bluetooth/main.conf''' bearbeiten:
 +
 +
[General]
 +
 +
# List of plugins that should not be loaded on bluetoothd startup
 +
#DisablePlugins = network,hal
 +
 +
Der Kommentar vor DisablePlugins muss drin sein, sonst funktioniert PAN nicht! Offenbar ist das die Default-Einstellung... (:rolleyes:)
 +
 +
Man koppelt also nun den Rechner mit dem "Computer" n900.
 +
Beim gnome-network-manager erscheint die Frage, ob man das PAN- oder DUN-Profil benutzen will- hier '''PAN''' auswählen
 +
 +
Nach dem Fertigstellen der Koppelung erscheint im Menü des Networkmanager-Applets in der Systemleiste ein neue Verbindung, mit Namen des Telefons und "Netzwerk" dahinter.
 +
Wählt man diese an, so wird die Verbindung über Bluetooth hergestellt und man kann (vorausgesetzt, das n900 ist eingewählt, das muss man selber anstoßen!) die Internetverbindung nutzen.
 +
 +
Getestet habe ich das auf Ubuntu 11.04 mit Unity.
 +
 +
== Verbindung trennen ==
 +
 +
Auf meinem System (Ubuntu 11.10) erzeugte das Trennen der Verbindung per Network-Manager auf dem Notebook einen Fehler, der das Kernel-Modul mitsamt dem Bluetoothd in den Abgrund riss und -noch schlimmer- ein suspend2disk verhinderte. Nur ein Reboot half da noch (:sad:)<br>
 +
'''Abhilfe''': Einfach die Bluetooth-Verbindung am n900 beenden und nicht am Notebook- der Networkmanager meldet dann von selbst, dass die Verbindung beendet sei und der bluetoothd mit Kernelmodul bleibt am Leben (:razz:)- Danke Jochen!
 +
 +
== Danksagung ==
 +
 +
Vielen Dank und ein dickes Lob an '''Jochen''', der das alles zusammentragen und bereitgestellt hat!
 +
 +
'''TODO:''' Burned benutzt kde und deren Networkmanager kann kein PAN- bitte hier wenn erfolgreich eingerichtet die Anleitung für KDE einfügen!
 +
 +
[[Category: Howtos]]

Aktuelle Version vom 22. April 2012, 15:08 Uhr

Man kann die Internetverbindung des n900 via Bluetooth und PAN-Profil mit einem anderen Rechner teilen (Tethering).


Voraussetzungen

1. Auf dem n900 muss der sog. Power-Kernel installiert sein, da IPv4-Forwarding benötigt wird 2. Paket dbus-scripts aus extras-devel 3. iptables

Scripte anlegen

Jetzt wird es ernst: folgende Datei tethering in /etc/dbus-scripts.d/ anlegen:

/usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceAdded
/usr/local/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceRemoved

Und dieses Script tethering.sh muss nach /usr/local/bin/:

#!/bin/sh

# /usr/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceAdded
# /usr/bin/tethering.sh * * org.freedesktop.Hal.Manager DeviceRemoved

EVENT="$4"
UDI="$5"
HALDEV="$(echo $UDI | sed 's#.*/\([0-9a-zA-Z_]*\)#\1#')"
LOG="/tmp/tethering.log"
#INETDEV="wlan0"
RUNFILE="/var/run/tethering.$HALDEV.pid"
IFACEFILE="/var/run/tethering.$HALDEV.iface"

if [ "$EVENT" = "DeviceAdded" ]; then
       IFACE=$(hal-get-property --udi $UDI --key net.interface)
       case $IFACE in
               bnep0 )
                       IF_ADDRESS=192.168.254.254
                       IF_RANGE=192.168.254.1,192.168.254.254
               ;;
               usb0 )
                       IF_ADDRESS=192.168.253.254
                       IF_RANGE=192.168.253.1,192.168.253.254
               ;;
               * )
                       exit 0
               ;;
       esac

       echo "$(date) Enabling tethering on interface $IFACE" >> $LOG
       echo "$IFACE" > $IFACEFILE
       ifconfig "$IFACE" "$IF_ADDRESS"
       /sbin/modprobe ipt_MASQUERADE
       /usr/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
       start-stop-daemon -S -p "$RUNFILE" -m -b -x /usr/sbin/dnsmasq -- -k -I lo -i "$IFACE" -a $IF_ADDRESS -z -F $IF_RANGE,3600
       echo 1 > /proc/sys/net/ipv4/ip_forward
fi

if [ "$EVENT" = "DeviceRemoved" ]; then
       if [ ! -f "$IFACEFILE" ]; then
               exit 0
       fi
       IFACE="$(cat $IFACEFILE)"
       rm "$IFACEFILE"
       echo "$(date) Disabling tethering on device $IFACE" >> $LOG
       start-stop-daemon -K -p "$RUNFILE" -x /usr/sbin/dnsmasq
       /usr/sbin/iptables -t nat -D POSTROUTING -j MASQUERADE
fi

exit 0

Anschließend mit

sudo chmod a+x /usr/local/bin/tethering.sh 

ausführbar machen!

Den dbus zum Neustart zwingen mit

sudo killall dbus-scripts


Bluetooth-Geräte koppeln

Jetzt wird es ernst: man muss nun den Computer mit dem Telefon koppeln. Wichtig ist hierbei, dass das Telefon schon bei der Auswahl der Geräte als Computer erkannt wird und nicht nur als Telefon! (:twisted:)

Ist letzteres der Fall muss man auf dem n900 die Datei /etc/bluetooth/main.conf bearbeiten:

[General]

# List of plugins that should not be loaded on bluetoothd startup
#DisablePlugins = network,hal

Der Kommentar vor DisablePlugins muss drin sein, sonst funktioniert PAN nicht! Offenbar ist das die Default-Einstellung... (:rolleyes:)

Man koppelt also nun den Rechner mit dem "Computer" n900. Beim gnome-network-manager erscheint die Frage, ob man das PAN- oder DUN-Profil benutzen will- hier PAN auswählen

Nach dem Fertigstellen der Koppelung erscheint im Menü des Networkmanager-Applets in der Systemleiste ein neue Verbindung, mit Namen des Telefons und "Netzwerk" dahinter. Wählt man diese an, so wird die Verbindung über Bluetooth hergestellt und man kann (vorausgesetzt, das n900 ist eingewählt, das muss man selber anstoßen!) die Internetverbindung nutzen.

Getestet habe ich das auf Ubuntu 11.04 mit Unity.

Verbindung trennen

Auf meinem System (Ubuntu 11.10) erzeugte das Trennen der Verbindung per Network-Manager auf dem Notebook einen Fehler, der das Kernel-Modul mitsamt dem Bluetoothd in den Abgrund riss und -noch schlimmer- ein suspend2disk verhinderte. Nur ein Reboot half da noch (:sad:)
Abhilfe: Einfach die Bluetooth-Verbindung am n900 beenden und nicht am Notebook- der Networkmanager meldet dann von selbst, dass die Verbindung beendet sei und der bluetoothd mit Kernelmodul bleibt am Leben (:razz:)- Danke Jochen!

Danksagung

Vielen Dank und ein dickes Lob an Jochen, der das alles zusammentragen und bereitgestellt hat!

TODO: Burned benutzt kde und deren Networkmanager kann kein PAN- bitte hier wenn erfolgreich eingerichtet die Anleitung für KDE einfügen!