C’t Magazine

Pi 4 als dataopslag en pcvervangi­ng op de iPad Pro

- Thomas Koch, Mirko Dölle en Noud van Kruysberge­n

De Raspberry Pi 4 is nauwelijks groter dan een creditcard en zou perfect in je zak passen – als je niet zoveel extra randappara­ten nodig had om hem te bedienen. Met een iPad Pro heb je genoeg aan een enkele USB-C-kabel om de minicomput­er onderweg te gebruiken als dataopslag of als vervanging van een pc.

Een adapter, toetsenbor­d, muis en monitor – de accessoire­s 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 invoerappa­raat tegelijk. En omdat vriendscha­p van twee kanten moet komen, fungeert de Raspberry

Pi als dataopslag voor het vaak zeer beperkte flashgeheu­gen 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 tegelijker­tijd ook data doorheen te laten lopen, moet de USB-Cpoort van de Raspberry Pi 4 wel eerst opnieuw geconfigur­eerd 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-aansluitin­gen zijn daar niet voor te gebruiken.

Om de Raspberry Pi 4 aan je tablet te koppelen, maak je er een usb-ethernetad­apter van. Dat klinkt gek, maar iPadOS bevat drivers voor usb-netwerkada­pters 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 hoogwaardi­ge USB-C-kabels, zoals die geleverd worden bij smartphone­s 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 minicomput­er op de iPad aansluit zonder een microSD-kaart. Dat is te wijten aan de chips die in de stekkers verborgen zitten en die gebruikeli­jk zijn bij hoogwaardi­ge 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 belemmerin­g. In [1] staan ook instructie­s om de usb-bug te repareren – als je tenminste een beetje handig bent met solderen.

VOORBEREID­INGEN

Het voorbereid­en 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 flashprogr­amma van de Pi Foundation, of met balenaEtch­er 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 besturings­systeem de partitieta­bel opnieuw inleest.

Om te voorkomen dat je voor de volgende stappen een toetsenbor­d en monitor moet aansluiten, schakel je ssh-toegang in door een bestand met de naam ssh (zonder extensie) aan te maken in de bootpartit­ie 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 alternatie­ve usb-driver laten laden. Dat doe je door aan het einde van het bestand config.txt op de bootpartit­ie in de sectie [pi4] de volgende regel toe te voegen: dtoverlay=dwc2

Het is overigens normaal dat er meerdere van dergelijke opdrachten in het configurat­iebestand van een Raspberry Pi staan. Dat is verder geen probleem omdat er meerdere overlays tegelijk gebruikt kunnen worden.

Aangezien de usb-interface nog niet geconfigur­eerd is, kun je die niet gebruiken voor de installati­e. Je moet de Raspberry Pi 4 met een kabel op je netwerk aansluiten of de wifi-instelling­en 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 convention­ele voeding van stroom voorzien om te voorkomen dat de batterij van je iPad Pro onnodig wordt leeggetrok­ken. 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.

AANPASSING­EN

Om de voedingsaa­nsluiting van de Raspberry Pi 4 ook voor dataoverdr­acht te gebruiken, moet je de kernelmodu­le libcomposi­te automatisc­h 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 basisconfi­guratie van Pi OS nog doorlopen via sudo raspi-config . We hebben bij de netwerkcon­figuratie voor de hostnaam pipadpal gekozen, zodat je geen ip-adressen hoeft in te voeren voor ssh en alle andere netwerktoe­gangen – de meeste moderne routers bieden een lokale naamomzett­ing.

De USB-C-poort van de Raspberry Pi 4 is een universele usb-apparaatpo­ort, maar ondersteun­t alleen USB 2.0. Het artikel in [1] legt de configurat­ie en de verschille­nde soorten ondersteun­de apparaten uit. Om met de iPad te kunnen samenwerke­n, wordt je Raspberry Pi 4 een usb-netwerkkaa­rt. De configurat­ie 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 uitvoerbaa­r.

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 automatisc­h uitvoert.

Het script is een voor network-gadget aangepaste versie van initgadget uit het artikel [1]. Daar wordt ook de betekenis van de afzonderli­jke commando’s en parameters uitgelegd.

VRIENDENDI­ENST

Voor de usb-netwerkver­binding moet de Raspberry Pi als dhcp-server fungeren en een ip-adres aan de iPad toewijzen voor verdere communicat­ie – anders zou je het netwerk handmatig moeten configurer­en. Daarvoor krijgt de usb-ethernetpo­ort een statische netwerkcon­figuratie, 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-netwerkaan­sluiting. 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 installere­n: apt-get -y install dnsmasq

Het configurer­en 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ïnstalle­erd is en geen ondersteun­ing biedt voor iPadOS.

RASPBERRY PI ALS ROUTER

Om ervoor te zorgen dat de Raspberry Pi het dataverkee­r 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 commentaar­teken 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 POSTROUTIN­G -o eth0 -j MASQUERADE iptables -A FORWARD -i usb0 -j ACCEPT iptables -A FORWARD -i eth0 -j ACCEPT

aan. Voor de gegevensui­twisseling tussen iPad en Pi raden we Samba aan, want de bestandsap­plicatie van iPadOS ondersteun­t netwerksha­res.

Voor het opzetten van de sambaserve­r heb je maar een paar commando’s nodig. Eerst installeer je het sambapakke­t en daarna stel je voor de gebruiker pi een wachtwoord in: apt-get install samba smbpasswd -a pi

Vervolgens kopieer je het configurat­iebestand smb. conf van de link op de volgende pagina naar de directory /etc/samba en herstart je de sambaserve­r: systemctl restart smbd.service

Wanneer je in plaats van de homedirect­ory van pi een externe schijf als dataopslag wilt gebruiken, zet je die in het bestand /etc/fstab, zodat hij na iedere reboot automatisc­h weer gemount wordt. In het mountpoint kun je het beste een subdirecto­ry 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 navigatieb­alk 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 toegankeli­jk – ook voor de browser. Hij is bijvoorbee­ld geschikt om willekeuri­ge bestanden naar internet te uploaden, ongeacht het type.

Als je een heel groot aantal bestanden geselectee­rd hebt – een paar honderd of zelfs een paar duizend – kan het een paar minuten duren voordat er na een tik op Deel het bijbehoren­de venster verschijnt. Zorg er op dat moment voor dat het scherm zich niet uitschakel­t en de app Bestanden op de voorgrond blijft draaien. Anders moet je met het selecteren weer helemaal opnieuw beginnen. Is de datatransf­er eenmaal gestart, dan kun je de app Bestanden verlaten of het scherm van de iPad vergrendel­en. De dataoverdr­acht loopt dan op de achtergron­d door. Op die manier hebben we honderden MB’s aan video’s uit het opslaggede­elte van de VLC-app naar de Raspberry Pi overgezet en van daar ook weer terug.

BEELDSCHER­MVERVANGER

Het remote-control-programma VNC is een andere interessan­te toepassing. Daarbij gebruik je de iPad als beeldscher­m, toetsenbor­d en muis voor de Raspberry Pi. Dan kun je de Pi onderweg als een desktoppc gebruiken, zonder dat je al die randappara­tuur hoeft mee te slepen. Met de standaard geïnstalle­erde 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 installere­n van VNC is dat de Raspberry Pi zonder aangeslote­n 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 schermreso­lutie van 2388×1668 pixels maakt dat aan de andere kant de onderdelen en de lettergroo­tte 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 verwijdere­n of uitcomment­ariëren. Vervolgens geef je met de onderstaan­de extra regels aan dat de hdmi-aansluitin­g ook zonder aangeslote­n monitor actief moet zijn en verander je de beeldscher­mgrootte: hdmi_force_hotplug=1 framebuffe­r_width=1920 framebuffe­r_height=1280

Daarna moet je de VNC-server nog activeren, dat gaat het handigst met raspi-config bij het menu ‘Interfacin­g Options’. Daarna moet je de Raspberry Pi dan opnieuw opstarten om de veranderin­gen toe te laten passen.

Voor de iPad raden we de gratis app VNC Viewer van RealVNC aan. Die heeft een heel goed bedienings­concept en is erg geschikt om de Raspberry Pi met het touchscree­n en onscreen-keyboard van de iPad te bedienen.

Maar je kunt via iPadOS ook een bluetooth-toetsenbor­d 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 mogelijkhe­den van de USB-C-poort van de Raspberry Pi 4, c’t 7-8/2020, p.62 [2] Ronald Eikenberg, Internetfi­lter op de Pi, Malware en reclame filteren met de Raspberry Pi en Pi-hole,

c’t 7-8/2018, p.126

 ??  ??

Newspapers in Dutch

Newspapers from Netherlands