[![](https://gogs.es-lab.de/attachments/f973e848-f964-4271-b42e-d1bbfdbf5e3f)](https://www.hs-anhalt.de) # BeagleBone Black - Internet over USB Service [![](https://img.shields.io/badge/Version-1.0-B40404.svg?style=flat)](https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service) [![]( https://img.shields.io/badge/License-GNU%20GPL%20v3-blue.svg?style=flat )](https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service/src/master/LICENSE) [![](https://img.shields.io/badge/Skript-Bash-688A08.svg?style=flat)](https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/) [![](https://img.shields.io/badge/Skript-systemd-blue.svg?style=flat)](https://www.freedesktop.org/wiki/Software/systemd/) [![](https://img.shields.io/badge/Adobe-PDF-red.svg?style=flat)](https://get.adobe.com/de/reader/) [![](https://img.shields.io/badge/Download-zip-yellow.svg?style=flat)](https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service/archive/master.zip) ## :scroll: Inhaltsverzeichnis 1. **[Einleitung](#Einleitung)** 2. **[Skripte](#Skripte)** * [Internet_over_USB.service](#IoUSB.s) * [install.sh](#install) 3. **[Einstellungen am Host-PC](#Einstellungen)** * [Windows](#Windows) * [Linux](#Linux) 4. **[Quellenverzeichnis](#Quellenverzeichnis)** >**Hinweis:** Wenn Sie dieses Repository downloaden möchten, können Sie es direkt als [ZIP](https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service/archive/master.zip)-Datei herunterladen, oder mit Hilfe des Git-Repository-Links auf Ihren Rechner bzw. BBB klonen. > >** :cloud: Git-Repository-Link: [https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service](https://gogs.es-lab.de/mueller_to/BBB_Internet_over_USB_Service) ---
## :page_facing_up: 1. Einleitung Bei dem Programm handelt es sich um ein Systemd-Service für das BeagleBone Black, dass bei Systemstart den USB-Host-Anschluss für eine Internetverbindung vorbereitet. Für die Installation des Services steht ein Installationssktipt zur Verfügung. Des Weiterem wird die Einrichtung der Internetverbindung über USB am Host-PC für Windows und Linux erklärt.
##

📝 2. Skripte

In den folgenden Abschnitten wird die Funktion der Skripte „Internet_over_USB.service“ und „install.sh“ erklärt.
### Internet_over_USB.service Der "Internet_over_USB"-Service wird automatisch bei jedem Neustart des BeagleBone Black ausgeführt und ermöglicht den Aufbau einer Internetverbindung über den USB-Host-Anschluss des BeagleBone Black. Das Install-Sktipt dient zur Installation des Services. Der Service wird von systemd, einem System und Servicemanager, verwaltet und gestartet. Nach der Installation darf der Speicherort der Service-Datei nicht verändert werden, da sonst der Service nicht mehr korrekt ausgeführt wird. Soll dennoch der Speicherort der Service-Datei geändert werden muss im Anschluss das Insatllationsskript erneut ausgeführt werden. Die "Internet_over_USB.service"-Datei enthält den folgenden Quellcode: ```bash # Autor: Tobias Müller # Beschreibung: Dieser Systemd-Service ermöglicht das Herstellen # einer Internetverbindung über den USB-Host-Anschluss. [Unit] # Kurze Beschreibung des Services Description=Internet über USB # Service wird nach dem "Network Target" gestartet After=network.target [Service] # Setze Service-Typ auf Simple -> Main-Process Type=simple # Starte den Service mit Root-Rechten User=root # Starte den Service bei einem Fehler nach 1s für max. 10 Versuche # innerhalb von 15s neu Restart=on-failure RestartSec=1 StartLimitBurst=10 StartLimitInterval=15 # Füge als erstes die IP-Adresse der USB-Host-Schnittstelle als # Gateway hinzu ExecStartPre=/bin/sh -c "/sbin/route add default gw 192.168.7.1" # Füge danach die Google-IP-Adresse als DNS hinzu ExecStart=/bin/sh -c "echo \"nameserver 8.8.8.8\" >> /etc/resolv.conf" # Deaktiviere Service, wenn der Prozess beendet wurde RemainAfterExit=no [Install] # Aktiviere und starte den Service für Mehrbenutzersystem, mit # oder ohne grafische Anmeldung WantedBy=multi-user.targe ```
### install.sh Die „install.sh“-Datei dient zum Installieren der „Internet_over_USB“-Service-Datei. Das Installationsskript muss mit Root-Rechten gestartet werden, da symbolische Verknüpfungen im System angelegt werden. Des Weiteren muss die Service-Datei sich im selben Ordner befinden, wie das Installationsskript. Die „install.sh“-Datei enthält den folgenden Quellcode: ```bash #!/bin/bash # # Autor: Tobias Müller # Beschreibung: Dieses Skript installiert den "Internet_over_USB" Service. # Der Service wird automatisch bei jedem Neustart des # BeagleBone Black ausgeführt und ermöglicht den Aufbau einer # Internetverbindung über den USB-Host-Anschluss des BeagleBone # Black. Das Install-Sktipt muss mit Root-Rechten gestartet # werden. # # Sollte sich der Speicherort der "Internet_over_USB.service" # Datei ändern, muss dieses Skript erneut gestartet werden. # Dabei muss sich das "install.sh" Skript im selben Ordner # befinden, wie die "Internet_over_USB.service" Datei. # Bash-Fenster leeren clear # Kontrolle ob Skript mit Root-Rechten gestartet wurde, ansonsten wird # das Skript mit einem Hinweis beendet if [ $(id -u) != 0 ]; then echo "" echo "Das Skript muss mit Root-Rechten gestartet werden!" echo "" exit -1 fi # Willkommenstext mit Abfrage, ob die Installation gestartet werden soll echo "" echo "Willkommen zur Installation des \"Internet_over_USB\"-Services." echo "Möchten Sie die Installation starten (ja/nein)?" read answer while [ "$answer" != "ja" ]; do if [ "$answer" == "nein" ]; then echo "" echo "Beende das Installations-Skript." echo "" unset answer exit 0 else echo "" echo "Ich habe Sie nicht verstanden." echo "Möchten Sie die Installation starten (ja/nein)?" read answer fi done # Servicename service_name="Internet_over_USB.service" # Aktueller Pfad service_path="`pwd`" # Kontrolle, ob Service-Datei im selben Verzeichnis wie "install.sh"-Skript if [ -e "$service_path/$service_name" ]; then echo "" echo "Die \"Internet_over_USB.service\"-Datei wurde gefunden." else echo "" echo "Die \"Internet_over_USB.service\"-Datei wurde nicht gefunden." echo "Beende das Installations-Skript." echo "" unset answer unset service_path unset service_name exit -1 fi # systemd Speicherort für Bibliotheken systemd_lib="/lib/systemd/system" # systemd Speicherort Ausführdateien systemd_run="/etc/systemd/system/multi-user.target.wants" # Erstelle/Update symbolischen Link von der Systemd-Bibliothek zur Service-Datei if [ -e "$systemd_lib/$servie_name" ]; then echo "" echo "Update der symbolischen Verknüpfung von der Service-Datei:" echo "\"$service_path/$service_name\"," echo "zur Systemd-Bibliothek:" echo "\"$systemd_lib/$service_name\"." ln -sfn "$service_path/$service_name" "$systemd_lib/$service_name" else echo "" echo "Erstelle eine symbolische Verknüpfung von der Service-Datei:" echo "\"$service_path/$service_name\"," echo "zur Systemd-Bibliothek:" echo "\"$systemd_lib/$service_name\"." ln -s "$service_path/$service_name" "$systemd_lib/$service_name" fi # Erstelle/Update symbolischen Link vom Systemd-Speicherort für Konfigurations- und # Informationsdateien zur Service-Datei if [ -e "$systemd_lib/$servie_name" ]; then echo "" echo "Update der symbolischen Verknüpfung von der Service-Datei:" echo "\"$service_path/$service_name\"," echo "zum Systemd-Speicherort für Konfigurations- und Informationsdateien:" echo "\"$systemd_run/$service_name\"." ln -sfn "$service_path/$service_name" "$systemd_run/$service_name" else echo "" echo "Erstelle eine symbolische Verknüpfung von der Service-Datei:" echo "\"$service_path/$service_name\"," echo "zum Systemd-Speicherort für Konfigurations- und Informationsdateien:" echo "\"$systemd_run/$service_name\"." ln -s "$service_path/$service_name" "$systemd_run/$service_name" fi # Systemd-Daemon-Prozess neustarten echo "" echo "Starte den Systemd-Deamon-Prozess neu." systemctl daemon-reload # Aktiviere den Autostart für den "Internet_over_USB"-Service echo "Aktiviere den Autostart für den \"Internet_over_USB\"-Service." systemctl enable Internet_over_USB # Starte den "Internet_over_USB"-Service echo "" echo "Möchten Sie den BeagleBone Black neustarten, um den Service:" echo "\"Internet_over_USB\", zu aktivieren (ja/nein)?" read answer while [ "$answer" != "nein" ]; do if [ "$answer" == "ja" ]; then # Installationsabschluss echo "" echo "Die Serviceinstallation ist abgeschlossen." echo "Beende das Installations-Skript." echo "" echo "Starte den BeagleBone Black neu." echo "" # Variablen löschen unset systemd_lib unset systemd_run unset service_name unset service_path unset answer # Warte 5s sleep 5 # Starte BeagleBone neu reboot else echo "" echo "Ich habe Sie nicht verstanden." echo "Möchten Sie die Installation starten (ja/nein)?" read answer fi done # Installationsabschluss echo "" echo "Die Serviceinstallation ist abgeschlossen." echo "Beende das Installations-Skript." echo "" # Variablen löschen unset systemd_lib unset systemd_run unset service_name unset service_path unset answer # Beende Installer exit 0 ```
## :computer: 3. Einstellungen am Host-PC In den folgenden Abschnitten wird die weiterführende Einrichtung für das Erstellen einer Internetverbindung über USB am Host-PC (Windows oder Linux) erläutert.
### Windows Öffnen Sie den Netzwerk und Freigabecenter unter: ``` Systemsteuerung\Alle Systemsteuerungselemente\Netzwerk- und Freigabecenter ``` Wie im Bild zu sehen, ist das öffentliche Netzwerk "es-lab" bzw. die Schnittstelle "Ethernet" der Internet-Zugangspunt des Host-PCs. Die Schnittstelle "Ethernet 4" ist die Ethernetverbindung zum BeagleBone Black. ![](https://gogs.es-lab.de/attachments/a3246f6d-7ba2-4a38-9824-e5e48bc874a2) Nun muss die Internetverbindung mit dem BeagleBone Black geteilt werden. Klicken Sie dazu auf die Ethernet-Schnittstelle von der Sie das Internet beziehen (1). Im Statusfenster klicken Sie nun auf "Eigenschaften" (2). Im Eigenschaftenfenster aktivieren Sie unter "Freigabe" (3) den Punkt: "Anderen Benutzern im Netzwerk gestatten, diese Verbindung des Computers als Internetverbingung zu verwenden" (4). Anschließend wählen Sie die Netzwerkverbindung des BeagleBone Black aus (5) und bestätigen Sie Ihre Einstellung (6). Schießen Sie nun das Statusfenster (7). ![](https://gogs.es-lab.de/attachments/1f5b8315-376b-4d3c-8ddc-ae32b72fb4a8) Die IP-Adresse der Netzwerk-Schnittstelle des BeagleBone Black muss nun auf "automatisch beziehen" gesetellt werden. Klicken Sie dazu auf die Ethernet-Schnittstelle des BeagleBone Black (1). Anschließend klicken Sie auf "Eigenschaften" (2) und unter "Freigabe" (3) wählen Sie das Feld "Internetprotokoll, Version 4 (TCP/IPv4)" (4) aus. Konfigurieren (5) Sie nun dieses Protokoll. Aktivieren Sie das Feld "IP-Adresse automatisch beziehen" (6) und das Feld "DNS-Serveradresse automatisch beziehen" (7). Zum Abschluss bestätigen Sie Ihre Einstellungen (8-9) und schließen auch alle übrigen Fenster. ![](https://gogs.es-lab.de/attachments/2cb675fc-8983-4caf-806d-40d4a94a51b7) Die Internetverbindung über USB für Ihr Beaglebone Black ist nun eingerichtet und kann verwendet werden.
### Linux Die Weiterleitung des Internets zum BeagleBone Black ist auf einem Linux PC wesentlich schneller eingerichtet. Welche Ethernet-Schnittstelle der BeagleBone Black hat und welche die Internetverbindung, können Sie zum Beispiel mit: ``` ifconfig -all ``` herausfinden. In dem folgenden Beispiel ist die Ethernet-Schnittstelle für das Internet "eth0" und die Ethernet-Schnittstelle des BeagleBone Black "eth1". Die folgenden Befehle müssen mit Root-Rechten eingegeben werden. ```bash ifconfig eth1 192.168.7.1 iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward ``` Die Internetverbindung über USB für Ihr Beaglebone Black ist nun eingerichtet und kann verwendet werden.
## :globe_with_meridians: 4. Quellenverzeichnis      **[1]**  FreeDesktop            *systemd System and Service Manager*            [https://www.freedesktop.org/wiki/Software/systemd/](https://www.freedesktop.org/wiki/Software/systemd/)            Abfragedatum: 31.10.2017      **[2]**  Ubuntu User Wiki            *systemd*            [https://wiki.ubuntuusers.de/wiki/tags/systemd/](https://wiki.ubuntuusers.de/wiki/tags/systemd/)            Abfragedatum: 31.10.2017      **[3]**  Debian Wiki            *systemd - system and service manager*            [https://wiki.debian.org/systemd](https://wiki.debian.org/systemd)            Abfragedatum: 31.10.2017      **[4]**  Elementz Tech Blog            *Sharing internet using Network-Over-USB in BeagleBone Black*            [https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-
           over-usb-in-beaglebone-black/](https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/)            Abfragedatum: 31.10.2017      **[5]**  Carl Lance            *Windows 7 Internet Sharing for BeagleBone Black*            [http://lanceme.blogspot.de/2013/06/windows-7-internet-sharing-for.html](http://lanceme.blogspot.de/2013/06/windows-7-internet-sharing-for.html)            Abfragedatum: 31.10.2017 --- **Hochschule Anhalt | Anhalt University of Applied Sciences | Fachbereich 6 EMW** **BeagleBone Black - Internet over USB Service** Tobias Müller, M. Eng. :e-mail: [Tobias.Mueller@HS-Anhalt.de](mailto:Tobias.Mueller@HS-Anhalt.de) :copyright: es-lab.de, 24.10.2018