Pi 4 als dataopslag en pcvervanging op de iPad Pro
De Raspberry Pi 4 is nauwelijks groter dan een creditcard en zou perfect in je zak passen – als je niet zoveel extra randapparaten nodig had om hem te bedienen. Met een iPad Pro heb je genoeg aan een enkele USB-C-kabel om de minicomputer onderweg te gebruiken als dataopslag of als vervanging van een pc.
Een adapter, toetsenbord, muis en monitor – de accessoires die je nodig hebt voor een Raspberry Pi 4 zijn niet bepaald handzaam, die wil je liever niet meesjouwen. Met een iPad Pro of een laptop kun je ze allemaal thuis laten en de Raspberry Pi bedienen met maar een enkele USB-C-kabel. De iPad Pro of je laptop fungeert dan als monitor en invoerapparaat tegelijk. En omdat vriendschap van twee kanten moet komen, fungeert de Raspberry
Pi als dataopslag voor het vaak zeer beperkte flashgeheugen van een tablet.
Daar is niet eens een externe voeding voor nodig, aangezien de stroom wordt geleverd door de USBC-poort van de iPad Pro. Maar om daar tegelijkertijd ook data doorheen te laten lopen, moet de USB-Cpoort van de Raspberry Pi 4 wel eerst opnieuw geconfigureerd worden. Hoe dat moet, hebben we beschreven in [1], maar deze set-up werkt niet met de Lightning-usb-adapter van Apple, dus iPads en iPhones met een Lightning-aansluitingen zijn daar niet voor te gebruiken.
Om de Raspberry Pi 4 aan je tablet te koppelen, maak je er een usb-ethernetadapter van. Dat klinkt gek, maar iPadOS bevat drivers voor usb-netwerkadapters en kan daarmee net zo goed overweg als met de wifi-interface. Het probleem van veel Android-apparaten is dat ze die drivers niet hebben. Bij de eerste generatie van de Raspberry Pi 4 wordt het plezier bovendien bedorven door een usb-bug in
de Pi. Juist hoogwaardige USB-C-kabels, zoals die geleverd worden bij smartphones en de iPad Pro, werken niet op dergelijke Pi’s.
Je kunt dat herkennen aan het feit dat de Raspberry Pi geen stroom krijgt als je de minicomputer op de iPad aansluit zonder een microSD-kaart. Dat is te wijten aan de chips die in de stekkers verborgen zitten en die gebruikelijk zijn bij hoogwaardige kabels. De oplossing is om een goedkope USB-C-kabel te gebruiken van minder dan 10 euro – daar zitten meestal geen chips in de stekkers en vormt de usb-bug van de Pi 4 dus geen belemmering. In [1] staan ook instructies om de usb-bug te repareren – als je tenminste een beetje handig bent met solderen.
VOORBEREIDINGEN
Het voorbereiden van de Raspberry Pi begint met het downloaden van de nieuwste Raspberry Pi OS-versie (die voorheen Raspbian werd genoemd) met desktop van de Raspberry Pi Foundation en die op een microSD-kaart zetten. Dat laatste kun je doen met Raspberry Pi Imager, het nieuwe flashprogramma van de Pi Foundation, of met balenaEtcher van etcher.io. Vervolgens haal je de sd-kaart eruit en steek je hem meteen weer in de computer om ervoor te zorgen dat het besturingssysteem de partitietabel opnieuw inleest.
Om te voorkomen dat je voor de volgende stappen een toetsenbord en monitor moet aansluiten, schakel je ssh-toegang in door een bestand met de naam ssh (zonder extensie) aan te maken in de bootpartitie van de sd-kaart met Pi OS. Het maakt niet uit of dat bestand leeg is of niet. Bovendien moet je de device-tree-overlay dwc2 voor een alternatieve usb-driver laten laden. Dat doe je door aan het einde van het bestand config.txt op de bootpartitie in de sectie [pi4] de volgende regel toe te voegen: dtoverlay=dwc2
Het is overigens normaal dat er meerdere van dergelijke opdrachten in het configuratiebestand van een Raspberry Pi staan. Dat is verder geen probleem omdat er meerdere overlays tegelijk gebruikt kunnen worden.
Aangezien de usb-interface nog niet geconfigureerd is, kun je die niet gebruiken voor de installatie. Je moet de Raspberry Pi 4 met een kabel op je netwerk aansluiten of de wifi-instellingen opslaan in het bestand wpa_supplicant.conf in dezelfde directory als het bestand config.txt. Een voorbeeld daarvoor, waarbij je alleen je ssid en wpa-sleutel hoeft toe te voegen, kun je downloaden via de link op de laatste pagina van dit artikel.
Totdat de usb-set-up voltooid is, kun je de Raspberry Pi ook met een conventionele voeding van stroom voorzien om te voorkomen dat de batterij van je iPad Pro onnodig wordt leeggetrokken. Voor stationair gebruik is een USB-C-hub met power-delivery voor de iPad Pro en een 5V-adapter op de GPIO-pinnen 4 en 6 van de Pi de beste oplossing. Dan kun je de USB-C-kabel ook van de Pi losmaken zonder hem eerst te moeten afsluiten.
AANPASSINGEN
Om de voedingsaansluiting van de Raspberry Pi 4 ook voor dataoverdracht te gebruiken, moet je de kernelmodule libcomposite automatisch laten laden elke keer als de Pi opnieuw opstart. Voer daarom de naam van die module toe aan het einde van het bestand /etc/modules. Vervolgens moet je de basisconfiguratie van Pi OS nog doorlopen via sudo raspi-config . We hebben bij de netwerkconfiguratie voor de hostnaam pipadpal gekozen, zodat je geen ip-adressen hoeft in te voeren voor ssh en alle andere netwerktoegangen – de meeste moderne routers bieden een lokale naamomzetting.
De USB-C-poort van de Raspberry Pi 4 is een universele usb-apparaatpoort, maar ondersteunt alleen USB 2.0. Het artikel in [1] legt de configuratie en de verschillende soorten ondersteunde apparaten uit. Om met de iPad te kunnen samenwerken, wordt je Raspberry Pi 4 een usb-netwerkkaart. De configuratie daarvoor vindt plaats in de directory /sys/kernel/ config/usb_gadget en moet na elke herstart herhaald worden. Dat gebeurt met het script initusbc, dat je bij de link op de laatste pagina kunt downloaden. Sla het script op in de directory /usr/local/sbin en maak het met chmod ug+x /usr/local/sbin/initusbc uitvoerbaar.
Daarna zet je het commando voor het script onderaan in het bestand /etc/rc.local, net boven het commando exit, zodat de Pi het bij het booten voortaan automatisch uitvoert.
Het script is een voor network-gadget aangepaste versie van initgadget uit het artikel [1]. Daar wordt ook de betekenis van de afzonderlijke commando’s en parameters uitgelegd.
VRIENDENDIENST
Voor de usb-netwerkverbinding moet de Raspberry Pi als dhcp-server fungeren en een ip-adres aan de iPad toewijzen voor verdere communicatie – anders zou je het netwerk handmatig moeten configureren. Daarvoor krijgt de usb-ethernetpoort een statische netwerkconfiguratie, die je opslaat in het bestand /etc/netwerk/ interfaces.d/usb0: allow-hotplug usb0 iface usb0 inet static address 192.168.254.1 netmask 255.255 255.0
Daarnaast moet je de dhcp-client nog meedelen dat hij zich niet langer mag bemoeien met de usb-netwerkaansluiting. Voeg daarvoor aan het einde van het bestand /etc/dhcpcd.conf een regel toe met deny- interfaces usb0. Daarna kun je de dhcp-server dnsmasq dan installeren: apt-get -y install dnsmasq
Het configureren verloopt via het bestand/etc/ dnsmasq.d/usb0. Daar voer je het volgende in: interface=usb0 dhcp-range=192.168.254.20,192.168.254.200,255. 255.255.0,12h dhcp-option=3 leasefile-ro
per gast als router wilt gebruiken voor al je apparaten – of als je met de iPad een VPN-verbinding wilt gebruiken die op de Pi geïnstalleerd is en geen ondersteuning biedt voor iPadOS.
RASPBERRY PI ALS ROUTER
Om ervoor te zorgen dat de Raspberry Pi het dataverkeer van de iPad correct doorstuurt, moet je ook packet-forwarding en NAT activeren. Daarvoor open je het bestand /etc/sysctl.conf en haal je het commentaarteken vóór de volgende regel weg: net.ipv4.ip_forward = 1
Na het uitvoeren van het commando sysctl -p / etc/sysctl.conf, is de wijziging actief en hoef je alleen nog NAT te activeren: iptables -t ccnat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i usb0 -j ACCEPT iptables -A FORWARD -i eth0 -j ACCEPT
aan. Voor de gegevensuitwisseling tussen iPad en Pi raden we Samba aan, want de bestandsapplicatie van iPadOS ondersteunt netwerkshares.
Voor het opzetten van de sambaserver heb je maar een paar commando’s nodig. Eerst installeer je het sambapakket en daarna stel je voor de gebruiker pi een wachtwoord in: apt-get install samba smbpasswd -a pi
Vervolgens kopieer je het configuratiebestand smb. conf van de link op de volgende pagina naar de directory /etc/samba en herstart je de sambaserver: systemctl restart smbd.service
Wanneer je in plaats van de homedirectory van pi een externe schijf als dataopslag wilt gebruiken, zet je die in het bestand /etc/fstab, zodat hij na iedere reboot automatisch weer gemount wordt. In het mountpoint kun je het beste een subdirectory aanmaken en als user en group pi opgeven. Bovendien moet je het pad /home/pi in het bestand smb.conf daar op aanpassen.
Op de iPad gebruik je de app Bestanden om bij de sambashare te komen. Tik daarvoor op de navigatiebalk rechts boven Locaties op het ronde pictogram met de drie puntjes en kies ‘Verbind met server’. Vervolgens geef je als server ‘pipadpal’ op en krijg je toegang tot de op de Pi opgeslagen bestanden.
Daar kun je bestanden selecteren en via Deel en ‘Bewaar in bestanden’ opslaan. Daar kies je dan de doel-app die de gegevens moet krijgen. Een bijzondere rol is weggelegd voor de map Downloads. Die is in principe voor alle apps toegankelijk – ook voor de browser. Hij is bijvoorbeeld geschikt om willekeurige bestanden naar internet te uploaden, ongeacht het type.
Als je een heel groot aantal bestanden geselecteerd hebt – een paar honderd of zelfs een paar duizend – kan het een paar minuten duren voordat er na een tik op Deel het bijbehorende venster verschijnt. Zorg er op dat moment voor dat het scherm zich niet uitschakelt en de app Bestanden op de voorgrond blijft draaien. Anders moet je met het selecteren weer helemaal opnieuw beginnen. Is de datatransfer eenmaal gestart, dan kun je de app Bestanden verlaten of het scherm van de iPad vergrendelen. De dataoverdracht loopt dan op de achtergrond door. Op die manier hebben we honderden MB’s aan video’s uit het opslaggedeelte van de VLC-app naar de Raspberry Pi overgezet en van daar ook weer terug.
BEELDSCHERMVERVANGER
Het remote-control-programma VNC is een andere interessante toepassing. Daarbij gebruik je de iPad als beeldscherm, toetsenbord en muis voor de Raspberry Pi. Dan kun je de Pi onderweg als een desktoppc gebruiken, zonder dat je al die randapparatuur hoeft mee te slepen. Met de standaard geïnstalleerde Flash-player kun je op de Pi video’s bekijken die je op de iPad normaal helemaal niet kunt afspelen.
Het grootste probleem bij het installeren van VNC is dat de Raspberry Pi zonder aangesloten monitor standaard een resolutie van slechts 1280×720 pixels aanbiedt. Dat levert op het high-res 11-inch display van de iPad Pro een overdreven groot beeld op. Maar bij de standaard schermresolutie van 2388×1668 pixels maakt dat aan de andere kant de onderdelen en de lettergrootte van de Pixel-desktop te klein. Daarom raden we al met al een resolutie van 1920×1280 pixels aan.
Om de resolutie aan te passen, moet je eerst in het bestand /boot/config.txt bij de sectie [pi4] de regel dtoverlay=vc4-fkms-v3d verwijderen of uitcommentariëren. Vervolgens geef je met de onderstaande extra regels aan dat de hdmi-aansluiting ook zonder aangesloten monitor actief moet zijn en verander je de beeldschermgrootte: hdmi_force_hotplug=1 framebuffer_width=1920 framebuffer_height=1280
Daarna moet je de VNC-server nog activeren, dat gaat het handigst met raspi-config bij het menu ‘Interfacing Options’. Daarna moet je de Raspberry Pi dan opnieuw opstarten om de veranderingen toe te laten passen.
Voor de iPad raden we de gratis app VNC Viewer van RealVNC aan. Die heeft een heel goed bedieningsconcept en is erg geschikt om de Raspberry Pi met het touchscreen en onscreen-keyboard van de iPad te bedienen.
Maar je kunt via iPadOS ook een bluetooth-toetsenbord en dito muis aan de iPad Pro koppelen en op die manier je Raspberry Pi net als op je bureau thuis gebruiken. Het is dus zeker geen eenzijdige relatie tussen de Raspberry Pi en de iPad – beide apparaten vullen elkaar aan.
Literatuur
[1] Thomas Koch, Mirko Dölle, De mogelijkheden van de USB-C-poort van de Raspberry Pi 4, c’t 7-8/2020, p.62 [2] Ronald Eikenberg, Internetfilter op de Pi, Malware en reclame filteren met de Raspberry Pi en Pi-hole,
c’t 7-8/2018, p.126