abonneren

Draadloos inloggen op Raspberry Pi met smartphone

inloggen op Raspberry Pi met smartphone
In een vorig artikel zetten we een seriële verbinding op met de Raspberry Pi. Maar wat als je geen kabel wilt aansluiten en ook zonder wifi-netwerk op je Pi wilt kunnen inloggen? Dan starten we een seriële verbinding via bluetooth.

Een seriële verbinding via een usb-naar-ttl-kabel is handig om met je Pi te verbinden als er geen netwerk is, maar je moet een kabel aansluiten en vlakbij je Pi blijven met je computer. Gelukkig is bij de nieuwste Pi’s ook een seriële verbinding via bluetooth mogelijk. De Raspberry Pi 3 en Raspberry Pi Zero W hebben immers bluetooth ingebouwd. Op deze manier log je ook eenvoudig vanaf je smartphone of tablet draadloos op je Raspberry Pi in, zelfs zonder wifi.

Bootpartitie en rootpartitie

Bluetooth op voorhand configureren (zonder dat we daarbij tijdelijk een scherm of toetsenbord nodig hebben of zonder dat we gebruikmaken van een andere headless manier) vereist wat meer voorbereidingswerk dan in de vorige workshops. We moeten namelijk bestanden in de rootpartitie van de micro-sd-kaart gaan aanpassen.

Dat vereist wat uitleg. Het image van Raspbian bevat twee partities. Enerzijds de bootpartitie, waarmee we in de vorige workshops al kennismaakten. Die bevat onder andere de bootconfiguratie en de Linux-kernel van het besturingssysteem. De bootpartitie gebruikt als bestandssysteem fat32, waardoor Windows ze herkent en je de bestanden eenvoudig in Windows kunt aanpassen.

Het image bevat ook een rootpartitie. Dit bevat de rest van de bestanden van Raspbian, waaronder de programma’s, opstartbestanden en configuratiebestanden. De rootpartitie heeft als bestandssysteem ext4, wat Windows niet herkent. Omdat we bestanden op de rootpartitie dienen aan te passen, werkt de aanpak uit de vorige workshops niet.

Om de ext4-partitie te kunnen lezen, installeren we het Linux File Systems for Windows van Paragon Software. Dit programma heeft een gratis trial. Na de proefperiode neemt de snelheid af, maar blijft de ext4-partitie benaderbaar.

Na de installatie van de software steek je de micro-sd-kaart van Raspbian in je computer, waarna Windows beide partities herkent en ze aankoppelt. De rootpartitie vind je onder Deze pc / rootfs.

inloggen op Raspberry Pi met smartphone

Script voor seriële communicatie

Navigeer nu naar de directory home in de rootpartitie, klik met rechts op een lege plaats in de directory en maak een nieuw tekstdocument aan met de naam btserial.sh. Verwijder de extensie .txt en wanneer je de vraag krijgt of je dat echt wilt, bevestig je je keuze. Open dit bestand nu in WordPad (niet in Kladblok). Plak in dit bestand de inhoud van het script setup.sh van het project RPi-bluetooth-Console op GitHub. Maar verwijder de code

-a pi

uit de regel die begint met

ExecStart=/usr/bin/rfcomm

Sla het bestand op. Met dit script schakelen we bluetooth in, maar nu willen we nog dat Raspbian dit script bij het opstarten aanroept. Open daarvoor met WordPad (niet Kladblok) het bestand etc.local in de rootpartitie. Plaats daarin vlak voor de regel

exit 0

de volgende regel:

sudo bash /home/pi/btserial.sh

Let op: Linux gebruikt de ‘forward slash’ (/) in bestandspaden in plaats van de ‘backward slash’ (\) van Windows, dus voer dit hier correct in. Sla het bestand op, ontkoppel het rootbestandssysteem in de software van Paragon, werp de bootpartitie uit in Verkenner en steek de micro-sd-kaart in je Pi.

Inloggen op Raspberry Pi via smartphone en pc

Start je Pi op en wacht een halve minuut. Het script om de bluetooth-verbinding op te zetten, wordt normaal uitgevoerd. Nu kun je vanaf je smartphone een seriële bluetooth-verbinding met je Pi openen. Onder Android gaat dat bijvoorbeeld met de app Serial Bluetooth Terminal van Kai Morich, die expliciet de Raspberry Pi 3 ondersteunt.

Je koppelt (‘pairt’) eerst je smartphone met de Pi. Daarna verbind je met je Pi in de app. Nadat je je gebruikersnaam en wachtwoord hebt ingevuld, kun je opdrachten uitvoeren. Raak je niet verbonden, reboot dan je Pi door de stekker even uit te trekken en terug in te steken, en probeer opnieuw te verbinden met Serial Bluetooth Terminal.

In Windows log je via PuTTY in op de seriële bluetooth-verbinding. In macOS en Linux hoef je geen extra software zoals PuTTY te installeren om via een seriële verbinding op je Pi in te loggen. Je werkt dan met het programma screen, dat in macOS en de meeste Linux-distributies standaard is geïnstalleerd. Vraag eerst de lijst van beschikbare seriële verbindingen op met

ls /dev/cu.*

Kies daaruit de seriële verbinding naar je Pi en start de verbinding met de opdrach

screen /dev/cu.raspberrypi-SerialPort 115200

waarbij je uiteraard de juiste seriële verbinding invult. Dit werkt zowel voor de seriële verbinding via bluetooth als via een usb-naar-ttl-kabel.

Verbinding verder beveiligen

De bluetooth-verbinding is standaard niet zo veilig: iedereen in de buurt kan je Pi via bluetooth vinden en erop proberen in te loggen. Dat is zeker een risico als je het standaardwachtwoord van de gebruiker pi nog niet hebt aangepast. Zodra je bent ingelogd, schroef je daarom beter de beveiliging op.

Voer het configuratieprogramma van Raspbian uit met

sudo raspi-config

Ga daar naar Change User Password, voer een nieuw wachtwoord in en bevestig het. Ga daarna met de tabtoets naar Finish en druk op Enter om het configuratieprogramma af te sluiten.

Start daarna de bluetooth-commandoregel op met:

sudo bluetoothctl

Schakel uit dat je Pi via bluetooth te vinden is:

discoverable no

En schakel ook pairing uit:

pairing no

Sluit daarna bluetoothctl af:

quit

Je Pi is nu niet meer door andere apparaten te detecteren en kan ook niet meer met andere apparaten pairen. Zodra je Pi herstart, is het toestel echter terug detecteerbaar en kun je terug pairen. Je zet dan best weer een seriële verbinding via bluetooth op om dan opnieuw de verbinding te beveiligen en zo te voorkomen dat iemand anders in de buurt ziet dat je Pi via bluetooth te benaderen is.

Geschreven door: Koen Vervloesem op

Category: Workshop, Algemeen

Tags: Raspberry Pi, Draadloos, Bluetooth, Inloggen