🎖️ Licentie: CC BY-NC-SA 4.0 📅 Aangemaakt: 22-05-2024
Inleiding
Bronnen
- https://www.hardill.me.uk/wordpress/2023/12/23/pi5-usb-c-gadget/#comment-32830
- https://www.youtube.com/watch?v=Zr0WuRBpJyg
- https://help.realvnc.com/hc/en-us/articles/360002249917-RealVNC-Connect-and-Raspberry-Pi#changing-the-raspberry-pi%E2%80%99s-screen-resolution-0-11
- https://www.google.com/search?q=ipad+pro+11+inch+resolution&oq=iPad+pro+11+inch+resolu&sourceid=chrome&ie=UTF-8
- https://unix.stackexchange.com/questions/214502/changing-screen-scale-in-lxde
- https://blues.com/blog/tips-tricks-optimizing-raspberry-pi-power/
Doel project
Oké wat wil ik bereiken en wat houdt dit project nu weer in? - Ik wil een Raspberry Pi (4) met een enkele kabel verbinden om met VNC & SSH te interfacen zonder scherm of toetsenbord verbonden aan de Pi. Dit betekent:
Drawing 2024-05-26 15.53.07.excalidraw
- Bij een PC of tablet handelt de Pi als een netwerkkaart verbonden via een USB kabel waarover stroom en netwerkdata wordt vervoerd.
- Bij een telefoon handelt de Pi als een hotspot client waarover netwerkdata wordt vervoerd
Benodigdheden
- Een Raspberry Pi
- Een USB-C kabel (en voeding)
- Een Laptop, PC, Smartphone en/of tablet
Pi OS installeren
Pi imager downloaden
Ga naar pi https://www.raspberrypi.com/software/ en download de Raspberry Pi imager. Open hem via het startmenu.
Kies je model van Pi
Op het moment van schrijven hebben we een aantal Pi’s, waaronder mijn Raspberry Pi 4. We kiezen voor ons hardware model.
Kies je image
In ons geval nemen we de desktop versie van Raspberry Pi OS. Dit kan ofwel 32- of 64-bit zijn. In ons geval gebruiken we de 64-bit versie aangezien we een 8GB Model 4B hebben.
Kies je SD kaart
Plug je SD kaart in de PC en kies voor de juiste.
Pas de instellingen aan!
Om zonder monitor straks te verbinden met je Pi moet je al een gebruikersnaam, wachtwoord en wifi verbinding instellen. Dit menu komt er automatisch op als je op de Volgende
knop klikt.
Vul je gegevens in bij “Algemeen”
Ga door Algemeen en vul de juiste gegevens in. Vergeet niet Wifi
in te stellen.
Zet SSH aan
Dit is ook een cruciale stap, ga naar SERVICES
en zet SSH aan.
Voer je instellingen door
Klik op Opslaan
en daarna Ja
. Als je zeker bent klik de waarschuwing weg door weer op Ja
te klikken. Je besturingssysteem wordt naar de kaart geschreven.
Verbinden met Pi
IP zoeken
Vind je apparaat via je router of installeer Advanced IP Scanner en vind je Pi op het netwerk.
Verbinden > SSH verbinding
Verbind met je Pi door via Powershell SSH op te starten, in ons geval:
One-cable* oplossing opzetten
One-cable voor PC, tablet en/of Android smartphone
Nu je ingelogd bent op je Pi gaan we enkele configuratiebestanden aanpassen en aanmaken om met Ă©Ă©n kabel de Pi te voorzien van energie en een netwerkconnectie. Dit doen we met het USB-gadget script van https://www.hardill.me.uk/wordpress/2023/12/23/pi5-usb-c-gadget/#comment-32830.
Updaten Pi
Update je Pi door deze commando’s te runnen.
sudo apt update -y && sudo apt upgrade -y
Installatie afhankelijkheden
Installeer dnsmasq via apt, we hebben dit later nodig.
Zet OTG aan op de USB-C poort
Om straks de Pi een netwerkkaart te laten emitteren moeten we OTG aanzetten zodat de poort kan doen wat hij wil - We doen dit door dtoverlay=dwc2
toe te voegen op het einde van je Pi’s configuratiebestand.
In dit voorbeeld zien we hoe dit eruit zou kunnen zien. Dit hangt af van Pi tot software revisie af.
Module toevoegen tijdens opstarten
Nu moeten we de module toevoegen aan onze systemd opstarttaken door modules-load=dwc2
toe te voegen aan het einde van /boot/firmware/cmdline.txt
.
Hier zien we nog eens een voorbeeld hoe dit er uit kan zien bij jouw Pi - Dit staat normaal allemaal op Ă©Ă©n lijn.
Warning
Oudere versies van Raspberry Pi OS gebruiken /boot/config.txt en /boot/cmdline.txt, nu gebruikt men de versie in de firmware map.
Pas bij huidige installaties nooit de root versie van de bestanden aan (/boot/config.txt of /boot/cmdline.txt), enkel de /boot/firmware/… versie is juist!
Afhankelijkheid toevoegen bij het opstarten
Om alles correct te doen verlopen hebben we de afhankelijkheid libcomposite
tijdens het opstarten. Die is normaal niet direct beschikbaar en we moeten die dus gaan toevoegen aan het /etc/modules
bestand.
Aanmaken script
Maak een script aan in de sbin
die bij het opstarten wordt geladen om de USB gadget modus aan te zetten.
sudo nano /usr/local/sbin/usb-gadget.sh
Voeg het onderstaande in zonder aanpassingen te maken.
Pas de permissies aan van het script zodat systemd hem later kan gebruiken bij het opstarten.
Aanmaken service
Maak een nieuwe opstarttaak aan via systemd door een bestand aan te maken in /lib/systemd/system/usbgadget/service
sudo nano /lib/systemd/system/usbgadget.service
Voeg de onderstaande configuratie code in.
[Unit]
Description=My USB gadget
After=network-online.target
Wants=network-online.target
#After=systemd-modules-load.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/sbin/usb-gadget.sh
[Install]
WantedBy=sysinit.target
Zet nu de service aan.
sudo systemctl enable usbgadget.service
One-cable* oplossing voor iPhone met hotspot
Je kan dit in combinatie met de vorige oplossing maken of individueel. Je moet gewoon maken dat je Pi met stroom gevoed wordt.
Update je Pi
sudo apt update -y && sudo apt upgrade -y
Installeer afhankelijkheden
Installeer usbmuxd
, een pakket om via USB de netwerkstack beschikbaar te maken.
sudo apt install usbmuxd
Configureer je gsm
Plug je GSM in de USB A kabel van de Pi na het installeren van usbmuxd
en geef de PC toegang met je toegangscode.
Verbinden met opstelling
Herstart de Pi
Herstart om de bewerkingen door te voeren.
sudo reboot
Vind het IP
Open je vorige SSH verbinding via het wifi netwerk Verbinden met Pi en voer het ip a
commando uit.
Verbind
Gebruik het IP die je nodig hebt om te verbinden met je opstelling:
- In het geval van One-cable voor PC, tablet en/of Android smartphone: br0 (10.55.0.1)
- In het geval van One-cable* oplossing voor iPhone met hotspot: eth1 (172.20.10.2)
Nu kan je via SSH verbinden via die kabel zonder internet!
Windows > Statisch IP instellen op Windows
Windows snapt niet altijd dat wanneer je naar 10.55.0.1
een verbinding probeert op te stellen ze niet moet kijken naar de netwerkkaart met enkel 192.168.0.X
adressen. Om jouw verbinding betrouwbaar te maken moeten we dit toevoegen aan onze configuratie voor de netwerkkaart die de Raspberry Pi aanmaakt.
Open configuratiescherm
Open je configuratiescherm via de Windows zoekbalk.
Ga naar Netwerkcentrum
Klik op je Pi netwerkkaart
Meestal kan je die herkennen door het Geen internettoegang
label, anders trek je hem uit en steek je hem weer in om te zien welke verdwijnt - Klik op de blauwe tag (in ons geval Ethernet 3
).
Klik op eigenschappen
Klik op eigenschappen, je krijgt dit te zien:
Open de IPv4 eigenschappen
Klik op Internet Protocol versie 4
en daarna Eigenschappen
.
Voer de juiste configuratie in
Klik op Het volgende IP-adres gebruiken:
en voer daarna de volgende nummers in:
IP-adres: 10.55.0.10
Subnetmasker: 255.255.255.0
Daarnaast vul je niks in.
Grafische toegang aanzetten < VNC server op Pi
Ok we hebben al dat werk gedaan om een desktopversie van Raspberry Pi OS te installeren maar gebruiken de desktop niet! - We gaan een gelijkaardig protocol als SSH gebruiken die gefocust is op het tonen van grafische omgevingen, VNC!
VNC server configureren
Installatie RealVNC server
Installeer RealVNC’s server component. Dit is normaal al geïnstalleerd op je Pi maar voor het zekerste:
Testen van de server
Test de VNC server door hem op te starten - Hij zal je om een passwoord vragen. Je voert hier best gewoon je gebruikerspasswoord in, dat is gemakkelijk te herinneren.
Opstarttaak aanmaken
Om niet telkens het commando via SSH eerst te moeten invoeren vooraleer we toegang krijgen maken we een opstarttaak aan.
We zetten in dit bestand:
- Je kan het lijntje
su $VNCUSER -c '/usr/bin/vncserver-virtual :1 -geometry 1920x1080'
aanpassen naar welke resolutie je ook maar wilt.
Permissie instellen
sudo chmod 755 /etc/init.d/vncserver
sudo update-rc.d vncserver defaults
Uittesten
Herstarten Pi
Verbinden > VNC verbinding
Verbinden doe je op dezelfde manier als bij SSH maar dan met een VNC client zoals RealVNC Client
Met computer
Open de viewer
Op de VNC viewer gaan we een nieuwe verbinding aanmaken.
Connectie configureren
Vul het IP die we daarnet hebben geconfigureerd tijdens One-cable voor PC, tablet en/of Android smartphone (10.55.0.1) in gevolgd door het nummer van de virtuele desktop (:1). Geef hem desnoods een naam.
Verbinden
Klik op Ok
en klik daarna met rechtermuisknop op je gloednieuwe verbinding en verbind.
Voer je inloggegeven in
Voer daarna je VNC naam (naam van de gebruiker) en je passwoord in (het passwoord dat je ingesteld hebt bij Testen van de server)
Verbinding is tot stand gebracht!
Jouw desktop zal er ietsje anders uitzien maar hier is je Raspberry Pi desktop!
Op iPhone > RealVNC verbinding op iOS
Installeer RealVNC Viewer
Voeg een verbinding toe
Voer je IP in
In ons geval 172.20.10.2
gevolgd door het nummer van de desktop geconfigureerd in Opstarttaak aanmaken. We vonden het IP in IP zoeken - Klik daarna op save.
Klik op Connect
Voer je inloggegevens in
Voer daarna je VNC naam (naam van de gebruiker) en je passwoord in (het passwoord dat je ingesteld hebt bij Testen van de server)
Je bent binnen!
Optimalisatie
Schermgrootte
Resolutie
Zoals eerder vermeld bij Opstarttaak aanmaken kan je je resolutie aanpassen door het -geometry
label aan te vullen met welke resolutie je maar wilt - Handige resoluties
Schaling > LXDE scherm schaling
Op een computer heb je ook de schaal van een scherm, zo kun je een scherm met een gigantische resolutie hebben die ook nog leesbare tekst heeft.
Voorbeeld in windows
De LXDE omgeving waarop de Raspberry Pi is gebouwd doet dit niet standaard. Je moet een bestandje aanmaken met een configuratie.
In dit bestand zet je het volgende:
150
is het percentage waarmee er geschaald wordt, je kan dit verhogen of verlagen naar gelang je het ervaart.
Stroom
Een Raspberry Pi vraagt met een lichte desktopomgeving zoals LXDE niet veel stroom, maar het kan altijd minder! - Als je dit wilt toepassen met een iPad of Laptop dan wil je dat je batterij nog even goed meegaat. We gaan enkele veranderingen in de configuratie van de Pi maken om dit te verlagen.
Radio’s uitzetten
Als je ze niet nodig hebt kan je de bluetooth en wifi antennes uitzetten via de grafische omgeving of door ze te blokkeren via rfkill
. Maak dat je verbinding via kabel dan wel effectief werkt als je niet dichtbij een scherm, kabel en toetsenbord bent.
En om ze weer aan te zetten:
CPU limiteren
We kunnen de boost stand van de CPU uitzetten en ze limiteren tot een bepaalde frequentie - Open de config.txt
alweer.
Voeg de volgende parameters toe indien ze niet bestaan, anders verander ze naar de volgende waardes:
Hierna moet je weer opnieuw opstarten - Om de limitaties weg te halen verander je arm_boost
weer naar 1
en verwijder je de frequentie parameters (of zet je ze hoger)