• Online: 2.083

IllegalDuke

Duke's Blog

Thu Jan 04 06:40:31 CET 2018    |    IllegalDuke    |    Kommentare (60)    |   Stichworte: A4, Audi, B8/8K, Earth, etc, Google, MMI, PI, Raspberry, Router, verbinden

0010-win32diskimager0010-win32diskimager

Hallo,

 

ich habe euch hier mal mein Vorgehen zur Installation und Einrichtung eines Raspberry PI 3 Model B [im folgenden als RPI benannt] als Router-Ersatz zusammengefasst.

 

Der Vorteil aus meiner Sicht gegenüber dem MR3020 als Router oder sonstigen Geräten ist, dass man hier wesentlich flexibler ist. Der Speicherplatz des RPI ist beliebig groß. Somit kann man z.B. direktes USB-Tethering mit einem Iphone nutzen oder andere WLAN-Sticks und Geräte einsetzen als es mit dem doch sehr begrenzten Speicherplatz des MR3020 möglich wäre.

 

Weiterer Vorteil ist, dass man auf dem RPI einen DLNA/UPNP-Server laufen lassen kann, um Medien an das MMI zu streamen. Somit kann z.B. die gesamte Musiksammlung auf dem RPI liegen oder man kann Internetradio streamen (Bei Internetradio bin ich noch am Experimentieren, da hier die Rechenleistung des RPI zu schwach zu sein scheint!).

 

Es gibt sicherlich noch 1000 weitere Gründe die hierfür sprechen... da lasse ich eurer Phantasie freien Lauf!

 

 

Die Anleitung geht von einem jungfräulichen RPI aus!

Wir benötigt ein Notebook/PC zur Hilfe!

 

Da ich die WLAN - WLAN Methode verwende, benötigen wir noch einen WLAN-Stick!

-> WLAN0 (internes RPI-WLAN) verbindet sich mit einem Handy-Hotspot oder Heimnetz-Router

-> WLAN1 (WLAN-Stick) verbindet sich mit dem MMI und stellt einen DHCP-Server

 

0010 - Micro-SD-Karte mit neuestem Image von Rasbian beschreiben -> Win32DiskImager:

 

Am Notebook/PC:

 

Download des Raspbian-Image:

 

https://www.raspberrypi.org/downloads/raspbian/

 

Nachdem wir es heruntergeladen und entpackt haben installieren wir Win32DiskImager.

 

-> Google ist dein Freund bezüglich Download-Link!

 

Die Speicherkarte des RPI in das Notebook oder einen Kartenleser stecken.

Danach im Win32DiskImager das entpackte Image von Raspbian und das Laufwerk der Speicherkarte auswählen. (Win32DiskImager muss als Admin ausgeführt werden!)

 

Mit "Schreiben" wird die Speicherkarte beschrieben!

-> Alle Daten auf der Speicherkarte gehen verloren!

 

Danach die Micro-SD-Karte in den RPI stecken.

 

0011 - RPI an einen Monitor, mit Tastatur und Maus anschließen, dann Stromversorgung herstellen

 

Es ist hier noch kein WLAN-Stick angeschlossen!

 

- Automatisch: Resizen des Filesystems auf die Speicherkartengröße

- Erfolgreich abgeschlossen nachdem man den Desktop sieht

 

0012 - Startmenü - Preferences - Raspberry Pi Configuration öffnen

 

- Hier kann die Auflösung eingestellt werden

- Hier kann das Passwort geändert werden

- Hier kann SSH und VNC aktiviert werden

 

-> Gleiches kann mit dem Terminal-Befehl umgesetzt werden:

Code:
sudo raspi-config

 

Ich wähle hier die Desktop-Methode!

 

0013 - Startmenü - Preferences - Localisation - Set Locale

 

Language: de

Country: DE

Character Set: UTF-8

 

0014 - Startmenü - Preferences - Localisation - Set Timezone

 

Area: Europe

Location: Berlin

 

0015 - Startmenü - Preferences - Localisation - Set Keyboard

 

Germany - German

 

0016 - Startmenü - Preferences - Localisation - Set Wifi-Country

 

DE - Germany

 

0017 - Startmenü - Preferences - Interfaces

 

- SSH - Enabled

- VNC - Enabled

 

0018 - Startmenü - Preferences - Password - Change Password

 

Passwort nach Wahl eingeben!

 

0019 - Reboot nach den Einstellungsänderungen!

 

0020 - Terminal öffnen und als root einloggen

Code:
sudo su

 

Alle folgenden Befehle werden als root ausgeführt. Nach einem Neustart oder dem schließen des Terminal-Fensters muss man sich erneut als root einloggen!

 

0021 - Voraussetzungen prüfen:

 

Zuerst prüfen wir, ob der Dienst systemd-networkd vorhanden ist. Das ist die Voraussetzung für alle weiteren Schritte. Der Dienst für die Namensauflösung, systemd-resolved, sollte ebenfalls verfügbar sein.

Code:
systemctl status systemd-networkd
systemctl status systemd-resolved

 

Beidesmal sollte dort "Loaded: loaded" gemeldet werden.

 

(Hinweis: Zum Verlassen der Statusmeldung ":q" tippen!)

 

Ergänzung 23.04.2020:

Bluetooth sollte deaktiviert werden, da hierdurch der Stromverbrauch gesenkt wird:

 

Code:
nano /boot/config.txt

 

Danach folgenden Inhalt im Texteditor "nano" ganz am Ende des Dokumentes in eine neue Zeile eingeben:

Code:
dtoverlay=pi3-disable-bt

 

0022 - Netzwerkmanager deaktivieren:

 

Zunächst werden die alten Network- oder Networking-Komponenten zumindest deaktiviert. Deinstallation und Löschen empfiehlt sich nicht, weil man sonst nur schwer wieder auf den alten Zustand zurückkehren kann (wobei man den dhcpcd löschen kann, falls er nicht gebraucht wird).

 

(Hinweis: "#" ist nur ein Kommentar und wird nicht verwendet!)

 

Code:
# dhcpcd stoppen und löschen
systemctl stop dhcpcd
systemctl disable dhcpcd
apt-get -y remove dhcpcd5 openresolv
 
# SysV-Networking stoppen
systemctl disable networking.service
# bzw.  update-rc.d networking remove
# falls der Netzwork Manager laeuft:
systemctl disable NetworkManager

 

 

0023 - Netzwerkkonfiguration anlegen:

Code:
nano /etc/systemd/network/eth0.network

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
[Match]
Name=eth0
 
[Network]
Description=eth0 dhcp
DHCP=yes
IPForward=yes

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

Nun legen wir die Netzwerkkonfiguration für unser WLAN0 an -> WLAN zum Hotspot des Handys oder zu einem Heimnetzrouter.

 

Code:
nano /etc/systemd/network/wlan0.network

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
[Match]
Name=wlan0
 
[Network]
Description=RasPi wlan0 dhcp
DHCP=yes
IPForward=yes

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

0024 - Netzwerk starten:

Code:
# Systemd-Netzwerkdienst starten
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service
 
# Prüfen, ob der Dienst laeuft:
systemctl status systemd-networkd

 

Es sollte active (running) in grün angezeigt werden, wenn alles geklappt hat!

 

0025 - WLAN0 definieren, damit auch immer unser internes WLAN des RPI WLAN0 ist!

 

Ohne die genaue Definition der Netzwerke kann es vorkommen, dass WLAN0 und WLAN1 vertauscht sind... Daher definiere ich die Netzwerke anhand ihrer MAC-Adresse!

 

Herausfinden der MAC-Adresse des WLAN0:

Code:
ip a

Output ist unter anderem die MAC-Adresse des WLAN0. Diese notieren/kopieren.

Code:
nano /etc/systemd/network/10-wlan0.link

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben: (Natürlich mit der richtigen MAC-Adresse)

Code:
[Match]
MACAddress=b8:27:eb:b3:70:e3
 
[Link]
Description=Internes_Wlan
Name=wlan0

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

0026 - Anschluss ans Heimnetzwerk

 

Nun schalten wir den RPI aus.

Danach verbinden wir den RPI per LAN-Kabel mit unserem Heimnetz-Router und starten diesen danach neu.

 

0027 - Mit dem Windows-Programm REALVNC-Viewer (freeware) kann man sich nun bequem mit dem RPI verbinden, damit wir nicht mehr alles mühsam abtippen müssen!

 

Einfach bei google nach REALVNC suchen und den kostenlosen Viewer installieren.

Wenn man über VNC mit dem RPI verbunden ist, kann man bequemer die Befehle eintippen und auch von hier kopieren! Ist aber nicht zwingend nötig!

 

Man kann es auch per SSH machen, z.B. mit putty!

 

0028 - Den RPI über das Internet Updaten

-> Zunächst wieder als root einloggen mit "sudo su"

Code:
sudo apt-get update
sudo apt-get dist-upgrade

Es werden nun alle Pakete auf den neuesten Stand gebracht -> Kann etwas dauern!

 

0029 - Die WLAN-Konfiguration für WLAN0 anlegen

 

Es wird empfohlen dein WLAN-Passwort nicht in Klartext, sondern verschlüsselt einzugeben!

Den KEY kannst du dir wie folgt erzeugen:

 

Code:
wpa_passphrase "DeineSSID" "DeinPasswort"

 

--> Das Ergebnis ist dein Passwort in verschlüsselt... Den Kommentar #psk="DeinPasswort" natürlich löschen, es wird nur ssid= und psk= benötigt! -->

 

Code:
network={
ssid="DeineSSID"
#psk="DeinPasswort"
psk=6476caf91a8a906d53dfeff8098169c07efcbfa932777d688eb95b94475d0bdb
}

 

Code:
nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
ap_scan=1
fast_reauth=1
eapol_version=1
autoscan=periodic:30
 
network={
ssid="Handy Hotspot"
scan_ssid=1
        #das WLAN-Passwort mit Anführungszeichen in Klartext!!!
psk="Dein WLAN Passwort in Klartext"
priority=80
}
 
network={
ssid="Dein Heimnetz-WLAN"
scan_ssid=1
        #das WLAN-Passwort OHNE Anführungszeichen verschlüsselt!!!
psk=Dein Passwort verschlüsselt
priority=50
}
 

 

Hinweis: Wenn du kein zweites WLAN hast, dann einfach den zweiten Abschnitt network={} weglassen!

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

0030 - Einen Dienst zum Ausführen der WLAN0-WPASUPPLICANT erstellen

 

Code:
nano /etc/systemd/system/wpasupplicant@.service

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
[Unit]
Description=WPA supplicant daemon (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
 
[Service]
Type=oneshot
RemainAfterExit=yes
 
ExecStart=/sbin/ip link set dev %i up
ExecStart=/sbin/iw %i set power_save off
ExecStart=/sbin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant-%i.conf
 
ExecStop=/sbin/ip link set dev %i down
 
[Install]
WantedBy=multi-user.target
 

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

Danach den Dienst aktivieren und starten

Code:
systemctl enable wpasupplicant@wlan0.service
systemctl start wpasupplicant@wlan0.service

 

0031 - Den DNS-Dienst aktivieren und starten

 

Code:
# DNS-Dienst systemd-resolved aktivieren und starten:
systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service
 
# Prüfen, ob der Dienst laeuft:
systemctl status systemd-resolved

 

Einmal gestartet, erstellt der Systemd seine eigene Datei resolv.conf unterhalb von /run/systemd. Es ist jedoch üblich, DNS-Resolver-Informationen in der Datei /etc/resolv.conf zu speichern, und viele Anwendungen verlassen sich immer noch auf diese Datei. Für die Kompatibilität erstellen wir einen symbolischen Link zu /etc/resolv.conf:

 

mv /etc/resolv.conf /etc/resolv.conf.ORIG

ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

 

Nun starten wir den Dienst neu.

Code:
systemctl restart systemd-resolved.service

 

0032 - Prüfen ob IP-Forward gegeben ist

 

Code:
nano /etc/sysctl.conf

 

prüfen, dass folgender Abschnitt nicht auskommentiert ist:

net.ipv4.ip_forward=1

Ansonsten das "#" entfernen und die Datei speichern.

 

Und prüfen:

Code:
nano /proc/sys/net/ipv4/ip_forward   

 

Der Inhalt muss "1" sein.

 

0033 - Nun kümmern wir uns um die Firewall / NAT

 

Natürlich auch wieder als root ausführen!

 

Code:
apt-get install iptables-persistent

 

Für das File rules.v4 [JA] Klicken! Für IPV6 könnt ihr das auch tun, müsst es aber nicht!

 

Nun fügen wir eine Regel hinzu:

 

Code:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4

 

Wichtig ist hier zu sagen, dass die Firewall nur soweit konfiguriert wurde damit es funktioniert!

Wenn ihr euren RPI schützen wollt, dann müsst ihr die Firewall weiter konfigurieren!

Dazu einfach nach euren Wünschen bearbeiten!

 

0034 - Installation des zweiten WLANs (WLAN-Stick)

 

RPI Ausschalten.

 

Erst jetzt stecke ich den zweiten WLAN-Stick in den RPI!

 

Ich habe einen TP-Link WN823N WLAN-Stick mit dem Chipsatz 8192eu. Zuvor hatte ich einen Edimax 7811UN. Der Edimax hatte nach nur 4 Wochen so einige Probleme mit Verbindungsverlust etc, daher bin ich auf den TP-Link umgestiegen.

 

Der Edimax funktioniert Problemlos "Out of the Box", dieser Extra-Schritt ist nur für den TP-Link WN823N nötig!

 

Hierfür verwende ich ein Tool von MrEngman, dass automatisch die richtigen Treiber für den WN823N sucht und installiert -> Danke an MrEngman!:

 

Den Code auch als root ausführen!

Code:
wget http://fars-robotics.net/install-wifi -O /usr/bin/install-wifi
chmod +x /usr/bin/install-wifi
install-wifi

 

0035 - Konfiguration des Netzwerks WLAN1 - Zum MMI

 

Code:
nano /etc/systemd/network/wlan1.network

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
[Match]
Name=wlan1
 
[Network]
Description=Audi wlan1 dhcp
DHCPServer=yes
IPForward=yes
 
[Address]
Address=192.168.1.254/24
Broadcast =192.168.1.255
 
[DHCPServer]
PoolOffset=10
PoolSize=40
EmitDNS=yes
DNS=8.8.8.8
DNS=8.8.4.4
DefaultLeaseTimeSec=600
MaxLeaseTimeSec=7200

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

0036 - WLAN1 definieren, damit auch immer unser WLAN-Stick WLAN1 ist!

 

Herausfinden der MAC-Adresse des WLAN1: -> Hierzu ist vielleicht ein Reboot nötig!

Code:
ip a

Output ist unter anderem die MAC-Adresse des WLAN1. Diese notieren/kopieren.

Code:
nano /etc/systemd/network/11-wlan1.link

Danach folgenden Inhalt in den Texteditor "nano" eingeben: (Natürlich mit der richtigen MAC-Adresse)

Code:
[Match]
MACAddress=b8:27:eb:b3:70:e3
 
[Link]
Description=WLAN-Stick
Name=wlan1

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

0037 - Die WLAN-Konfiguration für WLAN1 anlegen

 

Code:
nano /etc/wpa_supplicant/wpa_supplicant-wlan1.conf

 

Danach folgenden Inhalt in den Texteditor "nano" eingeben:

Code:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
ap_scan=1
 
network={
ssid="AudiMMI-SSID"
scan_ssid=1
psk=Dein verschlüsseltes WLAN-Passwort
}

 

Das verschlüsselte Passwort analog wie oben vom WLAN0 erzeugen!

 

Mit STRG + O speichern. -> Enter drücken!

Mit STRG + X wird der Editor verlassen.

 

Nun aktivieren wir noch den Dienst zum Starten der WPAsupplicant vom WLAN1

 

Code:
systemctl enable wpasupplicant@wlan1.service
systemctl start wpasupplicant@wlan1.service

 

Anschließend ist euer RPI fertig für das Auto! Ihr könnt nun den RPI ins Auto bringen und es testen.

Der Umstieg vom MR3020 auf den RPI funktionierte bei mir problemlos!

 

-> Wenn zuvor der MR3020 funktioniert hat, wird auch der RPI funktionieren

 

Grüße

Daniel

Hat Dir der Artikel gefallen? 6 von 6 fanden den Artikel lesenswert.

Blogautor(en)

IllegalDuke IllegalDuke