Infobord, spelletjesmachine en meer

Op een Raspberry Pi draai je normaal een Linux-distributie, maar ook Android draait erop. Het voordeel is dat je onmiddellijk een besturingssysteem hebt dat is ontworpen voor een aanraakscherm én dat je toegang hebt tot een breed assortiment Android-apps. Sluit gewoon een aanraakscherm op je Raspberry Pi aan, installeer Android en je hebt een infobord, spelletjesmachine en meer.

Koen Vervloesem

Stel jezelf eerst de vraag waarom je Android op je Raspberry Pi zou draaien? Raspberry Pi OS (het vroegere Raspbian) is best gebruiksvriendelijk en je hebt toegang tot allerlei opensource-software. Het is ook het officiële besturingssysteem van de Raspberry Pi en daardoor uitstekend ondersteund. Maar de standaard gebruikersinterface is domweg niet ontworpen voor een aanraakscherm.

Voor toepassingen waarbij een aanraakscherm wel handig is, gebruik je het best een besturingssysteem dat daar van meet af aan is voor ontworpen. En zo komen we bij Android uit. Als je een klein aanraakscherm op je Raspberry Pi aansluit, zou een tabletinterface immers ideaal zijn. Bovendien heb je zo ook toegang tot Android-apps, die allemaal ontworpen zijn voor een aanraakinterface. Wij probeerden Android 10 uit op een Raspberry Pi 4B met 8 GB geheugen in combinatie met het officiële 7inch-aanraakscherm voor de Raspberry Pi en een hdmi-aanraakscherm (ook 7 inch) van Adafruit, beide met een resolutie van 800 × 480 pixels. We raden echt de Raspberry Pi 4B aan: op de Raspberry Pi 3B+ bleek Android veel te traag te zijn.

Het officiële aanraakscherm van de Raspberry Pi heeft op de achterzijde plaats voor het computerbordje.

01 Aangepaste LineageOS

Als je Android op je Raspberry Pi wilt draaien, heb je een aangepaste versie van LineageOS (www.lineageos.org) nodig, de bekendste custom rom voor Android-telefoons. Je vindt die aangepaste versie op de website van KonstaKANG (www.konstakang.com), een ontwikkelaar die ook actief is op het Android-forum XDA-Developers (www.xda-developers.com). Met de hulp van anderen heeft hij LineageOS aangepast zodat die op de Raspberry Pi 3B, 3B+ en 4B (met minstens 2 GB geheugen) draait. Eerdere modellen van de Raspberry Pi worden niet ondersteund.

Heb je een Raspberry Pi 3B of 3B+, download dan de nieuwste LineageOS voor de Pi 3 (www.konstakang.com/devices/rpi3). Heb je een Raspberry Pi 4B, download dan de versie voor de Pi 4 (www.konstakang.com/devices/rpi4). Op het moment van schrijven was dat LineageOS 17.1 (wat overeenkomt met Android 10). Mogelijk is er wanneer je dit leest al een nieuwere versie.

Schrijf vervolgens het gedownloade zip-bestand met een programma zoals balenaEtcher (www.balena.io/etcher) of USBImager (www.tiny.cc/usbim) naar een micro-sd-kaartje van minstens 8 GB groot. Wanneer dat is voltooid, steek je het micro-sd-kaartje in je Raspberry Pi, sluit je het aanraakscherm, eventueel een ethernetkabel en tot slot de voedingskabel aan. Als alles goed gaat, start je Raspberry Pi nu in Android op.

01 KonstaKANG heeft een versie van LineageOS voor de Raspberry Pi gemaakt.

02 Eerste opstart

Als je scherm zijn ondersteunde resoluties niet meldt via EDID, start LineageOS standaard op in een resolutie van 1280 × 720 pixels (voor de Raspberry Pi 3) of 1920 × 1080 pixels (voor de Raspberry Pi 4). Als je scherm die resolutie niet ondersteunt (zoals bij onze beide schermen het geval is), krijg je maar een deel van het scherm te zien. Om dat op te lossen, steek je de micro-sd-kaart weer in je pc en open je in de bootpartitie die wordt aangekoppeld het bestand resolution.txt. Vul daar de resolutie van je scherm in, zoals 800×480. Sla het bestand op, ontkoppel de micro-sd-kaart en start je Raspberry Pi er weer van op.

Gebruik je het officiële scherm van de Raspberry Pi, dan zul je nog altijd niets zien. Je dient daarvoor namelijk de software-renderer in te schakelen. De eenvoudigste oplossing is om eerst een ander scherm en een muis aan te sluiten, zodat je tenminste iets ziet en daarna de instellingen kunt aanpassen. Op de website van KonstaKANG vind je de instructies.

03 Initiële configuratie

Je ziet na een tijdje het beginscherm van LineageOS. Druk rechtsonder op de knop Next. Heb je een scherm zonder aanraakfunctionaliteit aangesloten (of het Adafruit-scherm waarvan we ontdekken dat de aanraakfunctionaliteit wordt ondersteund), sluit dan een muis aan.

In het volgende scherm druk je op Accept om te bevestigen dat je dit project niet commercieel gebruikt. Daarna kies je je taal (ook Nederlands staat erbij), je tijdzone (Amsterdam) en stel je de huidige datum en tijd in.

Na een druk op Volgende kies je een wifi-netwerk en voer je je wachtwoord in. Na nog een keer Volgende vink je aan of apps toegang tot je locatie mogen krijgen en of je diagnostische gegevens naar de makers van LineageOS wilt sturen om te helpen met de ontwikkeling. Daarna kun je ook een pincode of wachtwoord kiezen, of je slaat die stap over als je dat niet belangrijk vindt. Klik tot slot op Start om Android te gaan gebruiken.

03 Bij de eerste start van LineageOS configureer je je Raspberry Pi.

Beperkingen van een Raspberry Pi

Android is uiteraard niet ontwikkeld voor een Raspberry Pi, dus je loopt dan wel tegen wat beperkingen aan. Zo zijn er geen geoptimaliseerde drivers, decoders en encoders voor video, waardoor alles wat traag aanvoelt. En heel wat zaken die bij een smartphone of tablet al ingebouwd zijn, dien je op een Raspberry Pi nog extra aan te sluiten: een audioapparaat, camera, gps, infraroodzender en realtime klok bijvoorbeeld. Deze zijn overigens allemaal ondersteund in LineageOS op de Raspberry Pi, maar je moet ze uiteraard zelf aansluiten. De Raspberry Pi heeft zelfs geen aan-uitknop. Wil je die aansluiten om bijvoorbeeld gemakkelijker te herstarten, sluit dan een knop aan tussen gpio-pin 21 en GND en voer in een terminal deze opdrachten uit om de ondersteuning te installeren:

su
rpi4-powerbutton.sh
Maak zelf een aan-uitknop voor je Raspberry Pi.

04 Android rooten

De Android-omgeving die je nu te zien krijgt, is vrij kaal. De basis-apps zoals een agenda, browser, contacten, bestandsbeheerder, e-mail, galerij, klok, muziek-app en opname-app zijn van de partij, maar dat is het al bijna. In totaal zijn er vijftien apps geïnstalleerd. Loop zeker ook eens door de instellingen.

Dit systeem is uiteraard te beperkt om mee te werken. Om extra apps te kunnen installeren, moeten we roottoegang inschakelen in Android. Druk daarvoor eerst helemaal onderaan in de instellingen op Over tablet en druk dan zeven keer op Build-nummer om de ontwikkelaarsopties vrij te geven.

Ga daarna in de instellingen naar Systeem / Geavanceerd / Ontwikkelaarsopties en schakel Root access in. Schakel iets daaronder ook Lokale terminal in. Daarna verschijnt de app Terminal bij je apps. Hierin kun je allerlei opdrachten invoeren voor het Android-systeem. Voor sommige opdrachten heb je rootrechten nodig: daarvoor dien je eerst su in te typen, waarna je als root ingelogd bent in de terminal en daarna de opdracht zelf.

04 Na de installatie biedt LineageOS maar een beperkt aantal apps aan.

05 Open GApps

Waarschijnlijk wil je gewoon de apps van Google draaien op je Raspberry Pi met Android. Dat kan, maar vereist nog wat extra stappen. Bezoek eerst in de browser op Android https://opengapps.org en selecteer daar als platform ARM, als Android-versie 10.0 en als variant pico. Dit is de minimale variant die je nodig hebt om Google Play te draaien. Download dit pakket dan, het is zo’n 90 MB groot.

Download daarna op je Raspberry Pi ook het zip-bestand lineagexx.x-rpi-recovery2boot.zip (via www.tiny.cc/recboot) van KonstaKANG, dat we later nodig hebben om uit de recoverymodus te raken. Om het bestand te kunnen downloaden, schakel je wel eerst in de browser de weergave van de website om naar desktopmodus (via de drie puntjes rechts van de adresbalk).

Zodra je beide zip-bestanden hebt gedownload, open je een terminalvenster en voer je deze commando’s uit:

su
rpi4-recovery.sh
reboot

De eerste opdracht om als rootgebruiker te werken, de tweede om de micro-sd-kaart over te schakelen zodat die niet meer LineageOS opstart, maar de recoveryfirmware TWRP (www.twrp.me). Met de derde opdracht herstart je de Raspberry Pi.

05 Met Open GApps installeer je Google Play op LineageOS.

06 Recoverymodus

Je Raspberry Pi toont nu het opstartscherm van TWRP. Veeg de knop rechts onderaan naar rechts om aanpassingen aan het systeem toe te staan. Kies dan Install, navigeer links naar de map Download en druk op het zip-bestand van Open GApps. Vink Reboot after installation is complete aan en veeg de knop rechts onderaan naar rechts om het bestand te flashen.

Je zult merken dat je na de reboot weer in de recoverymodus komt. Kies in het menu nu eerst Wipe en veeg de knop rechts onderaan naar rechts voor een herstel naar de (in dit geval fictieve) fabrieksinstellingen. Kies Install en selecteer het zip-bestand lineage-xx.x-rpi-recovery2boot.zip en vink Reboot after installation is complete weer aan voordat je het bestand flasht. Na de volgende reboot start LineageOS weer op.

06 In de recoverymodus van TWRP flash je Open GApps.

07 Google Play

Omdat je via Open GApps nu Google Play hebt geïnstalleerd en een factory reset hebt uitgevoerd, moet je opnieuw je taal te kiezen en de wifi-toegang configureren. Je krijgt de vraag of je je apps, foto’s, contacten en Google-account wilt overzetten. Daarna log je in met je Gmail-account. Nadat je alle stappen hebt doorlopen om je Android-apparaat gebruiksklaar te maken, druk je weer op Start en zie je weer dezelfde kale Android-omgeving, maar deze keer met een extra app: Google Play.

In Google Play kun je zoals je gewend bent allerlei Android-apps installeren. Overigens zullen niet alle apps even goed werken (zie ook het kader ‘Nog niet helemaal gebruiksklaar’ aan het einde van dit artikel). De meest voorkomende problemen zijn de resolutie en oriëntatie van het scherm: veel apps verwachten echt een smartphonescherm in portretmodus. Sommige apps crashen ook onverwacht en Google Play laat soms het hele besturingssysteem herstarten.

07 Met Google Play installeer je alle Android-apps die je maar wilt op je Raspberry Pi.

Geen aanraakscherm?

Android is ontworpen voor een aanraakscherm en dat geeft dan ook de optimale gebruikerservaring. Gebruik je geen aanraakscherm met je Raspberry Pi, dan is het wat aanpassen. Je zult dan minstens een muis moeten aansluiten om te kunnen klikken. Via het softkeyboard op het scherm kun je ook letters typen of je sluit een gewoon toetsenbord aan. Het voordeel van een toetsenbord is dat je met diverse toetsen de knoppen van een smartphone kunt simuleren: F1 = Home, F2 = Terug, F3 = Multitasking, F4 = Menu, F5 = Power, F11 = Volume omlaag en F12 = Volume omhoog.

08 Infobord

Als je even met Android op de Raspberry Pi speelt, zul je merken dat dit besturingssysteem het meest tot zijn recht komt als je de Raspberry Pi als een soort interactief infobord gebruikt. Laat er bijvoorbeeld je agenda op weergeven of gebruik de ingebouwde klok-app als timer voor tijdens het koken. Of wat dacht je van de app van NS om de vertrektijden van de treinen te tonen? Of gebruik de browser om bijvoorbeeld via je Raspberry Pi toegang te krijgen tot de webinterface van je domoticasysteem, zoals Home Assistant. Zo maak je heel eenvoudig van je Raspberry Pi een webkiosk, die daarnaast toch ongelooflijk flexibel is omdat je allerlei Android-apps kunt draaien.

08 LineageOS komt standaard met een beperkte set apps, zoals de agenda.

09 Portretmodus

Tot nu toe hebben we het scherm altijd in landschapsmodus gebruikt, omdat dat voor een infobord nu eenmaal de handigste oriëntatie is. Maar veel apps zijn ontworpen voor de portretmodus van een smartphone. Wil je toch je scherm in portretmodus instellen, dan dien je weer een configuratiebestand in de bootpartitie aan te passen. Schakel de Raspberry Pi dus uit. Als je geen aan-uitknop hebt en nog altijd rootrechten hebt, kan dat door deze commando’s in de terminal te typen:

su
reboot -p

De –p van ‘power off’.

Steek de micro-sd-kaart dan in je computer en open het bestand config.txt in de bootpartitie. Voeg daar de volgende regel aan toe om het scherm 90 graden te draaien:

display_lcd_rotate=1

En zoek dan naar de volgende regel voor de aanraakfunctionaliteit:

dtoverlay=rpi-ft5406

En vervang die door:

dtoverlay=rpi-ft5406,touchscreen-swapped-x-y=1,touchscreen-inverted-x=1

Sla je wijzigingen op en ontkoppel de micro-sd-kaart. Als je deze weer in je Raspberry Pi steekt en die opstart, toont Android zijn interface in portretmodus. Apps zoals die van de NS zijn nu veel handiger om te gebruiken.

09 Apps zoals die van de NS komen veel beter tot hun recht in de portretmodus.

10 Android TV installeren

Voor de Raspberry Pi 4 heeft KonstaKANG ook een image waarmee je van je Raspberry Pi een Android TV-apparaat maakt. Dat is handig als je je Raspberry Pi op een groter scherm wilt aansluiten, zoals het tv-scherm in je woonkamer, maar toch graag de vertrouwde interface van Android wilt.

Download de nieuwste versie van de Android TV-editie van LineageOS voor de Raspberry Pi 4 (www.konstakang.com/devices/rpi4). Op het moment van schrijven was dat LineageOS 17.1 (wat overeenkomt met Android 10). Mogelijk is er wanneer je dit leest al een nieuwere versie. Schrijf deze naar een micro-sd-kaart van minstens 8 GB groot en start daar je Raspberry Pi van op, nadat je die op je scherm hebt aangesloten.

Omdat je tv-scherm hoogstwaarschijnlijk geen aanraakscherm is, heb je uiteraard nog invoerapparatuur nodig. Een draadloos toetsenbord en muis zijn dan handig. Een andere optie is een zogenoemde airmouse: een minitoetsenbord met ingebouwde trackpad om draadloos vanaf de bank je Android-tv aan te sturen.

10 Ook Android TV draait op je Raspberry Pi.

11 En verder

Voor de rest werkt de Android TV-editie op de Raspberry Pi bijna hetzelfde als de normale Android-editie. Je dient ook hier weer je apparaat te rooten, Open GApps via de recoverymodus te installeren en daarna kun je via de Play Store allerlei apps installeren. De landschapsinterface van Android TV met zijn grote icoontjes komt beter op zijn recht op een grote tv.

Maar ook hier loop je tegen wat beperkingen aan. Omdat de Raspberry Pi niet is gecertificeerd als Android TV-apparaat, is de Chromecast-functionaliteit niet ondersteund. Je kunt dus helaas geen video’s van je smartphone naar je slimme tv casten. Ook de officiële app Android TV Remote Control om je Android-telefoon als afstandsbediening voor je Android TV-apparaat te gebruiken, is niet ondersteund. Maar al met al zijn Android en Android TV op je Raspberry Pi interessante besturingssystemen voor heel wat toepassingen.

11 Android op je Raspberry Pi is een vertrouwde interface met veel mogelijkheden.

Nog niet helemaal gebruiksklaar

Verwacht van Android op je Raspberry Pi niet hetzelfde gebruiksgemak als op je smartphone of tablet. De Raspberry Pi is immers geen kant-en-klaar consumentenapparaat, maar een ontwikkelbordje. De versie van LineageOS die KonstaKANG heeft gemaakt voor de Raspberry Pi, is ook geen officiële LineageOS-versie. Bovendien geeft hij zelf aan dat het experimenteel is en alleen bedoeld voor geavanceerde gebruikers. Verder werken er nog enkele zaken niet, zoals de meegeleverde camera-app (hoewel heel wat andere camera-apps wel werken) en sommige games die vreemde kleuren weergeven. We ontdekten zelf al dat sommige apps zoals TeamViewer Host of alpha vnc lite niet goed werken met de niet-standaardafmetingen van het scherm en de landschapsmodus: ze tonen zich dan alleen op een smalle strook in het midden van het scherm. En de eerste keer dat we een app openen na de installatie, herstart de Raspberry Pi elke keer, merkten we. Kortom, Android op de Raspberry Pi is duidelijk nog werk in uitvoering.