Raspberry Pi

Bijgewerkt december 2020. Hoewel het verhaal begint in 2012, is de beschrijving van de basis SW installatie bijgewerkt naar de huidige (2020) situatie; zou voor alle Pi's moeten gelden. Tweede helft pagina is nog wat ouder (stuk over X-windows etc nog checken).

Raspberri Pi eindelijk binnen

Binnen (4 juli 2012)...
Met het originele T-shirt

De grote aankondiging in 2012: de Raspberry Pi, een '$25 Linux computer'. OK, de zaak ligt iets genuanceerder, maar toch was dit de doorbraak voor dit type computertjes. Oorspronkelijk is dit project in de UK opgezet om kinderen op scholen weer in aanraking te laten komen met 'echte computers' in plaats van kant-en-klare kastjes. Ondertussen is dit wereldwijd 'de standaard' voor low-cost Linux-gebaseerd hobby-platforms, door velen gekopieerd.

Ik heb er destijds vrij vroeg een te pakken gekregen (juli 2012): een van de eerste B-versies van $35 met ethernet-aansluiting, voor krap €41 incl invoerrechten/verzendkosten. Ik had er twee; een als server, en een bijvoorbeeld voor de infrarood camera. Al in augustus 2012 een presentatie voor Raspberry Pi 1B beginners over gehouden bij EmSE: Embedded Systems Eindhoven.

Raspberri Pi Pico binnen

Binnen (11 feb 2021)...
Raspberri Pi Pico!

Half maart 2016 voor de server overgegaan op de Raspberry Pi versie 3, met meer geheugen en rekenkracht; nu voor €42. En in april 2018 de Raspberry 3B+, met 5 GHz WiFi, etc. Deze pagina begint toch nog met mijn Raspberry Pi 1B verhaal, want dat is toch hoe ik begonnen ben. Pas aan het einde van deze pagina de Raspberry Pi 3B. Al lijken ze veel op elkaar, er zijn toch wel belangrijke verschillen... Ondertussen is ook de Raspberry Pi 4 is uit (midden 2019; eindelijk met gigabit Ethernet, en tot 8 GB RAM). Zo veel rekenkracht heb ik niet nodig, en het energie-gebruik is daarmee ook gestegen: voorlopig blijf ik op de 3 serie.

En nu ook: de Raspberry Pi Pico!!! Geen Linux, maar een '$4' embedded processor vergelijkbaar met de Arduino Nano (maar dan veel krachtiger). Meer info op de 'embedded' paginas.

Bijhorende pagina's:

  • Hardware: Voor hardware, en speciaal I/O-experimenten (m.n. gpio en i2c) zie mijn Raspberry hardware pagina. Bedoeling om met de hardware ook apparaten te kunnen besturen en uit en aan te zetten ('home control'), maar de bijhorende pagina is nog niet klaar.
  • Server: Voor mijn gebruik als (file, media, proxy, openVPN, ...)-server zie mijn Raspberry Server pagina. Samen met de veilige toegang via ssh kan ik overal via het internet bij mijn gegevens, veilig internetten en zo, zelfs vanuit een terrasje in de zon met een onbetrouwbare WiFi hot spot.
  • Projecten: Wat rommelde daar op het dak? Gekeken met een Raspberry en de NoIR-camera: blijkt een steenmarter te zijn

Raspberry Pi board

"Raspberry Pi" is a trademark of the Raspberry Pi Foundation

Wat is de Raspberri Pi: een klein computerprintje (credit-card formaat, behalve de dikte: ongeveer 8½ bij 5½ bij 2 cm) met voldoende kracht om een volledige Linux-omgeving (bijvoorbeeld Debian, Ubuntu of Android) inclusief grafische omgeving te draaien. En met connector waar je je eigen uitbreidingen op kan aansluiten (digitale I/O, I2C, SPI, ...), dus leuk om te hobbyen met bijvoorbeeld home control/domotica.

De Raspberry Pi 1 bevat een 700 MHz ARM11 processor en video-coprocessor (Broadcom BCM2835), 256 of 512 MB werkgeheugen, HDMI-poort, SD-card interface, USB, audio etc. Zelf een 5-Volt (micro-USB) voeding toevoegen, plus optioneel een monitor, keyboard etc. Krachtig genoeg voor b.v. Blueray video playback.

De Raspberry Pi 3 lijkt er erg op, maar heeeft toch veel krachtiger specificaties. Een Broadcom BCM2837 1.2 GHz Quad-core 64-bit ARM processor (A53), 1 Gbyte geheugen, WiFi/Bluetooth Low Energy en nog wat uitbreidingen. De 3B+ is een kleine uitbreiding daarop, met 5 GHz WiFi, BLE, 1.4 GHz klok, en nog wat verbeteringen.

Meer info op de Raspberry Pi FAQ en Forum, en de Raspberry Pi HUB Wiki met tutorials, projecten en meer info. Op Techspot een artikel over de eerste setup en installatie. En hier nog een alternatief forum.

Wat doe ik er mee? De belangrijkste toepassing voor mij is mijn home server, ik zag het als een energie-zuinige vervanger voor mijn NSLU2 file server die te krap begon te worden; zie mijn Raspberry server pagina: NAS/file, SSH, VPN, ... Vandaar ook mijn keuze voor Raspbian gebaseerd op Debian Linux als operating systeem; draait ook op de NSLU en ben ik bekend mee (is ook de basis voor het op mijn gewone computers gebruikte Ubuntu). Plus wat I/O experimenten (er zijn ook goedkope prototype-bordjes voor te krijgen maar ik ga zelf aan de slag): zie mijn Raspberry hardware pagina.

Andere Raspberry Projecten

Alternatieven

Overigens, dit is zeker niet de enige kleine low-cost computer, er zijn heel wat partijen die hun 'Pi' hebben uitgebracht. Banana Pi, Orange Pi, ... Kijk bijvoorbeeld op The 20 Best Raspberry Pi Alternatives Available in 2020, of Top Raspberry Pi alternatives for 2020.

De voorbereiding

Installatie was in 2012 nog best wel een probleem (hier nog de oude Raspberry 1 trouble shooting guide). Ondertussen is het hele proces goed gestroomlijnd; is al door zoveel mensen gebruikt. Belangrijk is te weten hoe je de Raspberry gaat gebruiken: met display en toetsenbord/muis, of als 'headless' configuratie: op afstand via Ethernet aangesloten, maar zonder eigen scherm. Dit laatste is hoe ik hem gebruik; staat in de meterkast als server te werken, en ik zie hem alleen op afstand. Heb dus geen volledige desktop met applicaties nodig. Deze keuze bepaald wat je van de de Raspberry downloadpagina nodig hebt. En vast

een lege SD-card (8 GB, class 10), de snoertjes (micro-usb en ethernet) en voeding (advies 5V/2A usb) bij elkaar zoeken.

Pas (eind 2020) de oude Pi 1 opnieuw geïnstalleerd, hieronder de huidige moderne procedure. Ik ga voor een gestripte configuratie ("Manually install an operating system image"), en niet de standaard installer (zie ook de FAQ). Gekozen voor 'Raspberry Pi OS' (voorheen 'Raspbian') en wel de 'Lite' versie, een voor de Raspberry aangepaste minimale versie van Debian "Buster" (maar destijds begonnen met Debian 7 “wheezy”). De download is een 450 MB zip-archief dat uitgepakt moet worden, en vervolgens (voor uitleg en Windows zie de Wiki) met het Linux-commando dd op een SD-card van minimaal 4GB geplaatst moet worden. In mijn geval, op mijn laatste Raspberry Pi 3B+:

sudo dd bs=128M if=2020-12-02-raspios-buster-armhf-lite.img of=/dev/mmcblk0

Maar, dit is niet voldoende... In vorige versies stond SSH automatisch aan, nu moet het blijkbaar op een headless Pi handmatig aangezet worden (veiligheid, wachtwoord is nog standaard, en zou dan vanaf het netwerk door iedereen benaderbaar zijn). Hiervoor moet je de gemaakte SD-card in je computer steken (als'ie er niet nog in zat), en handmatig een file 'ssh' in de boot-partitie schrijven (file mag leeg zijn, als'ie er maar is). Bij de eerste boot op de Raspberry wordt deze file gezien, en wordt SSH aangezet (en de file verwijderd). Daarmee is SSH in die sessie beschikbaar en kan je het permanent aanzetten. Bij mij was dit:

sudo echo "ssh" >/media/kees/boot/ssh

Voeding

Netjes stoppen!

Als je de RP3 stopt met sudo halt gaat het stroomgebruik vreemd genoeg omhoog tot 0.57 Ampère, wat ook aan de temperatuur te voelen is...

Stoppen kan beter netjes met sudo shutdown -h now, dan is het stroomgebruik nog maar 50 mA, ruim 10x minder.

Er wordt gezegd dat je een goede voeding van 2.5 Ampere nodig hebt. Maar, hoe veel gebruikt'ie nu echt? Ik meet waardes tussen de 0.23 Ampère (rust) en 0.4 Ampère (SSL benchmark). Die 2.5 Ampèreis dus meer bedoeld als je ook nog bijvoorbeeld een harde schijf via de USB voedt, plus toetsenbord, muis en zo voort; en ook nog zwaar video speelt. Voor mij (geen display, niets op deUSB aangesloten behalve een extern gevoede harde schijf) zal 1 Ampère voldoende zijn, moet ik eens testen. Wel moet de voeding goed stabiel zijn. 0.4 Ampère bij 5 Volt is 2 Watt, een mooie waarde.Kan wat mij betreft gerust 24 uur per dag aan staan.

Let wel op de kwaliteit van je USB-kabeltje; veel goedkope kabels hebben bespaard op koper (dus hele dunne draadjes, hoge weerstand). Als gevolg verlies je veel van de spanning; zeker bij piekbelasting. Na de update naar Raspbian Stretch (waar te lage spanning nu door de kernel wordt gemeld) stond de dmesg log opeens vol met onderstaande meldingen, wat aangaf dat de spanning steeds even onder de 4.63V daalde. Na vervanging van de kabel was het opgelost...

[  977.606303] Under-voltage detected! (0x00050005)
[  992.166400] Voltage normalised (0x00000000)

Eerste teken van leven

De eerste test is dus een 'headless' configuratie zoals ik die ook uiteindelijk als server ga gebruiken: alleen op voeding en met een Ethernet-kabel aangesloten op mijn router, géén display/keyboard. Na aanzetten gaat de rode led aan, en de groene OK-LED knipperen, zag er dus goed uit; knippert gedurende de boot van ongeveer 20 seconden. De Raspberry krijgt automatisch via DHCP een IP-adres van de router. Welk adres? Ik heb zelf met 'Fing' op mijn Android tablet gekeken wat er bij kwam; maar je kan ook in de configuratie-pagina van je router kijken. Met het zo gevonden IP address 192.168.1.138 kan ik dan met ssh vanaf mijn desktop er bij (op Windows met PuTTY of op Linux met ssh, naar pi@192.168.1.138);

wachtwoord is 'raspberry'.

Yes! Hieronder de output van mijn eerste Raspberry Pi 1B in 2012. (bij de 3B+ was dit iets anders):

Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

Type 'startx' to launch a graphical session

/usr/bin/xauth:  file /home/pi/.Xauthority does not exist

NOTICE: the software on this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config'

Statistics

Even wat statistics voor de Raspberry Pi 1: 2.6x zo snel als mijn NSLU2 (en kan zelfs naar 1 GHz overgeklokt?). Check met BogoMIPS:

cat /proc/cpuinfo | grep Bogo
BogoMIPS : 697.95

Ps: vanaf kernel 3.8 is BogoMIPS: 2.00; zie link...

Volgens free is er 188 MB memory waarvan 171 MB free (zonder X gestart te hebben, hangt geen display aan), veel meer dan de NSLU2. Heb gekozen voor 64 MB videogeheugen (arm192_start.elf), dus die 188 MB komt aardig in de buurt van de 192 die over zou moeten zijn.

Daar is'ie dan. OK, niet wereldschokkend, maar de basis is er. Nu eerst sudo raspi-config, er verschijnt een menu om een aantal zaken in te kunnen stellen zoals SSH permanent aanzetten, instellen van de tijdzone, enzovoort. Bijvoorbeeld:

  • Interface Options ⇒ SSH ⇒ Yes ⇒ OK (zorgt dat SSH permanent aan staat)
  • Advanced ⇒ Expand file system (zorgt dat hele SD-kaart gebruikt wordt, in plaats van de 2GB van het oorspronkelijke image)
  • Localisation options ⇒ Timezone ⇒ Europa ⇒ Amsterdam
  • Localisation options ⇒ Locale ⇒ nl-NL, en-US (default), en-GB, allemaal UTF-8
  • System options ⇒ Hostname ⇒ Raspberry1
  • Interface options ⇒ enable camera --> pas op, gaat fout op de Raspberry Pi 1.
  • Finish

Wat je nu ook moet doen is een nieuw wachtwoord instellen met passwd. En nu opnieuw starten... sudo reboot.

Maar, ik wil sowieso niet via een wachtwoord maar met een ssh key inloggen; is veiliger. Nu heb ik al eerder een public/private key paar aangemaakt (ben tenslotte aan het herinstalleren) en wil dezelfde key blijven gebruiken; hoef dus alleen maar de oude bewaarde authorized_keys file te kopieren naar een nieuwe /home/pi/.ssh directory. Dan ssh goed configureren (in /etc/ssh/sshd_config, met name PasswordAuthentication no), en ssh herstarten (service ssh restart). Testen!!! Je bestaande ssh verbinding blijft lopen; testen door in een nieuw window te kijken of je nog steeds kan inloggen, maar nu met de ssh key. Dan pas je oorspronkelijke window met de oude ssh verbinding sluiten.

De laatste software

De eerste actie is nu zorgen dat de zaak up-to-date is, in ieder geval (zie ook het uitgebreide 'Raspberry SW bijwerken' verderop de pagina): sudo apt-get update; sudo apt-get upgrade. Upgrade kan even duren, zeker op de Pi 1. Nu eerst weer een reboot; daarna het update-systeem laten opruimen om meer ruimte op de SD-kaart vrij te houden: sudo apt-get autoremove --purge; sudo apt-get clean Mijn huidige kernel (nu wel voor de 3B+) is nu (uname -a):

Linux Raspberry2 5.4.79+ #1373 Mon Nov 23 13:18:15 GMT 2020 armv6l GNU/Linux

Basisconfiguratie

Backup!

Maak ook eens een back-up van je SD-card. Ik heb meegemaakt dat aan het einde van een update de Raspberry niet meer op kwam... Oops. Gelukkig had ik eerder met dd een backup van de SD-card gemaakt:

sudo dd bs=1M if=/dev/sd<x> of=raspbian_backup.bin

Afhankelijk van hoe je je SD-card in je systeem stops kan deze opduiken als bijvoorbeeld /dev/sdb, of als memory card /dev/mmcblk0

Ps: je kan zelfs zo'n backup image mounten (openen/lezen) op je linux computer.

In .bashrc kan je het gedrag van je terminal-window configureren; wordt geladen bij elke nieuwe terminal. Hier voeg ik bijvoorbeeld mijn scripts-directory toe aan het zoekpad: PATH=/home/pi/scripts:$PATH. Deel hiervan is ook het laden van de .bash_aliases file, waar je afkortingen voor veelgebruikte commando's definieert, bijvoorbeeld alias ll='ls -alF'.

Wat betreft de swap-ruimte: vroeger moest je zelf ook een 1 GByte swap-partitie aanmaken. Maar, de huidige Raspberry OS gebruikt een ander swapmechanisme: een swapfile in /var (zie dphys-swapfile) in plaats van een aparte partitie. Ik heb deze swapfile (op de 8 GB SDcard) even vergroot naar 512 MB (in /etc/dphys-swapfile). De configuratie is standaard zo ingesteld dat Raspbian minimaal swapt, zie  /etc/sysctl.conf : vm.swappiness=1. Ik heb dit naar 10 verhoogd; geheugen dat echt weinig wordt gebruikt mag best naar swap; en na een aantal dagen draaien als file server is er nog steeds maar zo'n 90 kB in gebruik (zie swapon -s), verwaarloosbaar dus. Ook nog eens kijken naar zram system: schijnt door compressie extra werkgeheugen op te kunnen leveren?

Voor een langere levensduur noatime en andere parameters optimaal voor SSD (ook nuttig voor SD-cards) in /etc/fstab toevoegen zodat er niet onnodig veel naar de SD geschreven wordt (noatime is in nieuwere versies overigens al standaard). De optie data=writeback stelt het wegschrijven van buffers uit; wacht dus enkele seconden voor het uitzetten van de raspberry, of gebruik eerst netjes 'sudo poweroff' en wacht tot alle LEDs behalve de rode uitgegaan zijn! Alternatief is data-ordered, iets veiliger en iets trager, of het nog veiliger data=journal. Tip: noatime impliceert ook nodiratime. Alles hieronder is één regel (eerste veld kan anders zijn):

/dev/mmcblk0p2  /  ext4  defaults,noatime,data=writeback,commit=120,errors=remount-ro   0   1

Instellen van de firewall: iptables (en evt ip6tables) configureren, zie mijn firewall pagina. (met gebruik van de module iptables-persistent om automatisch de regels te laden bij boot).

Vervolgens extra gebruikers zoals mezelf toevoegen met adduser, en zorgen dat de 'uid' etc van de gebruikers synchroon lopen met mijn andere systemen (raspberry verplaatst naar uid 1010, mezelf op 1000). En mezelf toegevoegd aan de lijst van users die sudo mogen gebruiken, kan door toe te voegen aan groep sudo: sudo usermod -a -G adm,sudo kees óf met behulp van het commando sudo visudo (beiden werkend vanuit gebruiker pi). Daarna voor pi deze rechten verwijderen; uit groep sudo halen met sudo delgroup pi sudo, én de file /etc/sudoers.d010_pi-nopasswd verwijderen. Mocht nu iemand toegang krijgen via gebruiker pi, dan kan'ie nog steeds niet veel.

Tip: kijk ook met dmesg of er geen gekke foutmeldingen in je logs staan...

Diversen

Minimum setup met een Raspberry Pi
Minimum opzet van een Raspberry Pi: +5 Volt en ethernet

Opzetten vast IP adres (zie fixedip, voorlopig even op 192.168.1.210); zodat de raspberry zelfs zonder router direct aan een laptop gehangen kan worden met alleen maar een ethernetkabeltje tussen de twee: hier is mijn configuratiefile /etc/network/interfaces. Let op: bij een directe verbinding moet je dan ook aan de kant (dus op de laptop) een IP-adres met de hand configureren want dat wordt in deze situatie niet automatisch toegewezen; bv in Linux met sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up, of in windows in de IPv4 properties van de netwerkaansluiting in het netwerkcentrum.

IPv6 heb ik overigens op sommige Pi's uitgezet, wordt bijvoorbeeld in mijn camera-configuratie niet gebruikt. Zie How to disable IPv6 in Raspbian. Schijnt voor de RPi-1 stabieler te zijn.

Wat extra programma's geïnstalleerd via sudo apt-get install, zoals het handige screen.

Handmatig mounten van een externe USB stick of disk kan met het onderstaande commando (ook nog een keertje in /etc/fstab opnemen), wel eerst éénmalig de directory /mnt/stick aanmaken:

sudo mount -o noauto,noexec,noatime,errors=remount-ro,uid=1000,gid=100,fmask=113,dmask=002 /dev/sda1 /mnt/stick

Performance

Wat benchmark informatie: hoe snel is'ie eigenlijk? Mijn oorspronkelijke standaard 700 MHz Raspberry 1 (met software raspbian build #272, 7 augustus 2012):

  • Processor getest met openssl, omdat dat standaard op mijn systemen aanwezig is: openssl speed aes geeft op 256-byte block AES berekeningen 12 MB/s (aes-256 cbc), mijn nslu2 doet 2.1 MB/s, een verschil van een factor 5.7 bij een klokverschil van factor 2.6 (dit verschilt overigens per algoritme en blokgrootte, lang niet altijd zo'n groot verschil). En mijn desktop... 70.8 MB/s (op één core van een Intel E8400 op 3 GHz, dus naar verhouding weinig verschil per MHz clock maar wel veel minder energiegebruik per berekening)
  • SD card (8GB class-10) 17.7MB/s write, 19.7 MB/s read met de dd-test van (en sudo hdparm -t /dev/mmcblk0 geeft 18.7 MB/s read). Niet slecht, al doet de SSD in mijn dektop 224 MB/s. Een 4 GB class-4 card gaf 7.2 MB/s write, 20.1 MB read; er is dus verschil in classes (maar: in de praktijk meer in merken...).
  • Willekeurige USB stick (sudo dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct) lezen geeft 14.5 MB/s, maar daar is de stick vermoedelijk beperkend (desktop geeft zelfs ook maar 15.3 MB/s). Mijn external USB 2.0 disk gaat met 27.2 MB/s (behalve de eerste keer, toen sliep'ie nog: 17.6 MB/s inclusief opstarten).

De Raspberry Pi kan een stuk sneller door in config.txt te optimaliseren. Zie bijvoorbeeld SD Card performance in R-Pi onboard slot. De core, het geheugen en andere bussen overklokken kan ook via deze file, core tot maximaal iets rond 1 GHz. Nog eens uitproberen, voorlopig eerst andere zaken. Uiteraard gaat het energiegebruik ook omhoog bij overklokken.

En de snelheid van de Raspberry Pi 3, inderdaad 10x die van de Raspberry 1? Een snelle test met 'openssl speed rsa1024' laat onderstaande waardes zien (is het aantal 1024-bits RSA verificaties per seconde). Is natuurlijk slechts één benchmark, maar komt wel in de buurt van een factor 10, als je alle cores aan het werk zet (openssl gebruikt zelf maar een core, dus 4x starten). Moet nog eens een 'echte' benchmark doen, dit was even een snelle eerste indicatie.

Processor Raspberry 1 Raspberry 3 (een core) Raspberry 3 (4 cores) Intel E8400 1 core
Snelheid 1566 5030 10400
52900
Factor
1 x 3.2 x 6.6 x 34 x

X-windows zonder hdmi-TV

X starten?

De grafische LXDE omgeving start niet automatisch; gebruik startx hiervoor. X stoppen zou moeten met:
/etc/init.d/lightdm stop (???)

Zoals gezegd, ik had er nog geen display aan hangen, en overigens ook geen toetsenbord en muis (alles gaat via SSH op mijn desktop), ik wil de raspberry voorlopig toch 'headless' gebruiken. Maar, dat wil niet zeggen dat je geen grafische programma's kunt draaien, integendeel. Ik zit nu tenslotte ook achter een beeldscherm: van mijn desktop. En, lang leve het X11 windows systeem: ik kan dus de applicaties op de Raspberry Pi gebruik laten maken van de X-server op mijn Ubuntu PC! Bijvoorbeeld handig als je files wilt bewerken op de Raspberry, met de leafpad editor (stuk makkelijker dan met nano of nog erger vi).

Je moet hiervoor wel in Putty de X11 forwarding aanzetten (SSH → X11), of je normale SSH config goed zetten, of starten met -X. Ook is het nuttig de .Xauthority file bij te werken met de waardes van de magic cookies van de Raspberry; met behulp van het xauth commando. Heb de .Xauthority file op de Raspberry gelijk gemaakt voor /home/pi, /home/kees en /root, LXDE apps als leafpad (text editor als gedit), pcmanfm (file manager) en lxterminal werken nu soepel.

kees@DualCore:~$ xauth
Using authority file /home/kees/.Xauthority
xauth> list
DualCore/unix:0  MIT-MAGIC-COOKIE-1  <lange hex value>
xauth> add DualCore/unix:10  MIT-MAGIC-COOKIE-1  <hex value van de raspberry .Xauthority>
xauth> exit

Alternatieve interface

LXDE is niet iedereens smaak; lijkt wat bij elkaar geraapt. Gnome en KDE zijn te zwaar voor de Raspberry, maar Xfce is een alternatief. Start met startxfce.

leafpad geeft nog wat issues omdat leafpad een Gtk app is: verwacht een folder .local/share. Met deze aangemaakt, en de .Xauthority OK, werkt ook dit. Meestal... En, kreeg nog een foutmelding "Failed to load module "canberra-gtk-module": sudo apt-get install libcanberra-gtk-module verhelpt dit.

Met TV zonder toetsenbord

Ondertussen (eind september) heb ik hem toch ook aan de TV gehangen. Maar, hoe bedien je het dan vanaf je bank? Je kan uiteraard een draadloos toetsenbord met muis op de USB-poort aansluiten, maar een ander alternatief is het gebruik van je Android telefoon/tablet met de remoteDroid app (werkt ook voor het bedienen van computers). Op het scherm van je telefoon of tablet verschijnt er dan een toetsenbord en mouse pad, om je Raspberry (of andere computer) te bedienen. Op mijn Ubuntu PC werkt dit prima, op de Raspberry moet ik het nog proberen. Moet je wel java op je Raspberry geïnstalleerd hebben (300 Mbyte...), apt-get install openjdk-7-jdk. Vervolgens de app starten met java -jar RemoteDroidServer.jar

Raspberry SW bijwerken

Vervanging voor NSLU2

Veel van de configuratie gaat lijken op die van mijn NSLU2, dus kijk daar voor verdere stappen...

Om de Raspberry Pi te updaten is een aantal stappen nodig. Voor de regelmatige updates: ik zou eerst wat ruimte op de SD-kaart vrijmaken (gebruik 'df' om de disk ruimte te bekijken) door de oude applicatiecache te legen met het apt-get autoclean commando, en dan de lijst met recente versies ophalen om daarmee de applicaties bij te werken:

sudo apt-get autoclean;
sudo apt-get clean; # eerste de cache opruimen, scheelt ruimte
sudo apt-get update; # nieuwe lijst van packages
sudo apt-get upgrade; # de daadwerkelijke update
sudo apt-get autoremove; # opruimen packages die niet meer nodig zijn

Jessie -> Stretch -> Buster

Eens in de zoveel jaar is er een nieuwe release van Debian, en dan ook van Raspbian. Begonnen in 2012 met 'Jessie', nu (via 'Stretch' naar 'Buster'. Kan zonder volledige herinstallatie, maar is wat meer werk/risico:
Link1 Link2 Link3 Link4

Maar, dit werkt niet de onderliggende kernel en bootfiles bij; hiervoor is nog een extra commando nodig. Is overigens niet iets wat je vaak hoeft te doen, hoogstens eens per jaar of zo.:

# sudo apt-get install rpi-update; # install als je hem nog niet hebt
sudo rpi-update; # werk kernel en boot-scripts etc bij
sudo sync; sudo reboot

Hiermee heb ik de laatste kernel, zie hieronder het verschil met het commando 'uname -a' voor en na de meest recente rpi-update, over een aantal updates:

# Origineel (nog op de Raspberri Pi 1B):
Linux raspberrypi 3.1.9+  #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l
# Na bovenstaande update:
Linux raspberry1 3.18.3+  #741 PREEMPT Fri Jan 23 13:32:52 GMT 2015 armv6l GNU/Linux

# Hieronder verder op de Raspberry3
Linux Raspberry3 4.1.21-v7+ #872 SMP Wed Apr 6 17:34:14 BST 2016 armv7l GNU/Linux
# Dit waren 'kleine updates' van de 4 kernel serie. Na een sudo rpi-update maken we gelijk een stap:
Linux raspberry3 5.4.69-v7+ #1344 SMP Fri Oct 2 15:58:14 BST 2020 armv7l GNU/Linux
# Na een geslaagde release-overgang (via 'Stretch') naar 'Buster' (zie hiernaast), toch gelukt:
Linux raspberry3 5.10.17-v7+ #1403 SMP Mon Feb 22 11:29:51 GMT 2021 armv7l GNU/Linux
# En door naar Bullseye (Debian 11), via een upgrade van de installatie (kader hiernaast)
Linux raspberry3 5.15.32-v7+ #1538 SMP Thu Mar 31 19:38:48 BST 2022 armv7l GNU/Linux
# Ondertyussen gaat de tijd door,en zitten we nu op kernel 6.1
Linux raspberry3 6.1.21-v7+ #1642 SMP Mon Apr  3 17:20:52 BST 2023 armv7l GNU/Linux

En toen Buster -> Bullseye

En na de 2021 upgrade naar Buster nu mid 2022 door naar Bullseye (weer een Toys Story naam) ofwel Debian 11. Ook dat weer als upgrade op de draaiende installatie, zie vooral deze PiMyLife link voor enkele extra stappen. Let wel, zo'n upgrade wordt niet officieel ondersteund, maar toch werkte het bij mij.

Redelijk gelukt, maar gaat altijd wel weer wat mis door nieuwe versies van pakketten. In dit geval gaf de MQTT server mosquitto de nodige problemen, doordat 'Client ID's opeens nodig en uniek moeten zijn... En eth0 had opeens een andere naam... Opgelost via raspi-config.

Overigens heb ik soms het probleem dat niet alle packages worden bijgewerkt, met de melding 'The following packages have been kept back' en een lijst van packages. Dit treedt op als een package zo is veranderd dat het ook vraagt om andere nieuwe packages te installeren. Ik los dit meestal op met het onderstaande commando:

sudo apt-get --with-new-pkgs upgrade

In plaats hiervan wordt wel dist-upgrade aangeraden, maar dit kan fout gaan omdat deze ook packages kan verwijderen... Meer hierover is ook te vinden op deze pagina. Daarnaast, maak regelmatig een backup!!! Na een update kon ik niet meer booten; had gelukkig een backup en kon de BOOT partitie terugzetten. Ach, en is gelijk een goed moment om de netwerkschijf eens een file-system check te laten doen (fsck), was 893 dagen geleden... 0 fouten!!

Je kan zien welke versie van Debian/Raspbian draait (b.v. jessie of stretch) met het commando 'cat /etc/os-release'. Ik wil eerst updaten naar 'stretch', moet simpel kunnen (link 2). En dan door naar 'buster'... Hele proces ging vlekkeloos op mijn 3B+; al had ik even niet meer de allerlaatste kernel versie (5.4.51 ipv 5.4.69, zie deze rpi-update discussie). Op de productie-3B ging het minder goed; naar Stretch OK, maar door naar Buster... Maar in een tweede poging (ook vanwege de genoemde kernel-versie) lukte het wel (met wat foutmeldingen en restarts tussendoor). En later door naar Bullseye is me ook gelukt (zie kader).

OK, tot zo ver...