Raspberry Pi

De Raspberry Pi (RPi) is een complete computer ter grootte van een credit card. Met een verkoopprijs van $35 (~€45 in NL) maakt dit een ideale machine voor kleinschalige experimenten. De computer is ontworpen om scholieren met goedkope hardware te leren programmeren.

De Raspberry Pi (model B, revision 2) is sinds februari 2012 te koop maar de levertijd liep op tot enkele maanden. Sinds december 2012 heb er ook een en op deze pagina wil ik samenvatten wat ik sindsdien geleerd heb.
Update Februari 2013 is Model A op de Europese markt beschikbaar gekomen.
Update Mei 2013 is de camera-module uitgekomen.

De review die ik op Tweakers.net heb geschreven is losjes op deze pagina gebaseerd.

Hardware

Processor

Het belangrijkste onderdeel aan de Raspberry Pi is de Broadcom SoC (system on a chip) met 700 MHz ARM11 (ARMv6) processor. De Model B rev. 2 heeft 512 MB RAM (rev 1 had 265 MB RAM). Windows installeren op een RaspPi is dus een no-go en Linux all the way. Om een gevoel te krijgen van hoe capabel deze machine is: ik heb berichten gelezen die de Pi vergelijken met een iPhone 3GS, XBox 1 of een 300 MHz Pentium 2. Maar dan met veel betere graphics. Een Pi gebruiken als HTPC of eenvoudige server is een goed idee, maar verwacht geen snelle PC.

Netwerkverbinding

Onboard is er 10/100 ethernet (over USB) beschikbaar. Dat houdt in dat de bandbreedte z'n 100 Mb/s is. Uit mijn tests blijkt dat een upload en download naar en van de RPi inderdaad rond de 90 Mb/s uit komt.

Uit reviews en tutorials van anderen leer ik dat een WiFi-module toevoegen lastig is. Op de eLinux Raspberry Pi wiki staat een lijst met gesteste WiFi-modules.

Energie/Voeding

De specs van de Pi schrijven voor dat voeding over micro-USB gebeurd met een spanning van 5 V en een stroom van minimaal 700 mA. Let op: er zijn veel mensen die prestatieproblemen hebben met hun RPi die veroorzaakt zijn door een magrinale voeding.

Het electrisch vermogen dat de RPi gebruikt is dus P = 5 * 0.700 = 3.5 W. De Pi een dag aan laten staan verbruikt dus 84 Wh, ofwel iets minder dan 31 kWh per jaar. Omdat een kWh ongeveer €0.22 kost, verbruikt de RPi per jaar €6.75. Doordat de RPi zo extreem weinig energie verbruikt, maakt dat hem erg geschikt als server.

Let op dat de Pi door z'n eenvoudige stroomverbruik geen energie kan leveren aan USB-toebehoren. Gebruik dus bijvoorbeeld altijd USB-hubs en externe HDD's met eigen voeding.

Video

De Pi heeft drie video-uit mogelijkheden: composiet RCA, Display Serial Interface (SDI) en HDMI (rev 1.3 en 1.4). De RPi ondersteunt dus resoluties van 640×350 tot en met 1920×1200 en audio-uit over HDMI. Films afspelen in Full HD 1080p moet dus geen probleem zijn. In de praktijk merk ik dat goed geëncodeerde MP4 soepel draait, maar sommige (slecht geripte) MKV's elke 10 seconden stotteren. Het moge duidelijk zijn dat dit geen beperking is van de hardware, maar van de software. Tot nu toe heb ik het meest getest met Raspbmc RC3.

Audio

Er zijn twee manieren om geluid uit de RPi te persen: over HDMI en met de 3.5 mm audio-jack. Na tests met AirPi kon ik concluderen dat audio over de audio-jack ronduit waardeloos is. Dit komt doordat de Pi geen DAC (digital-to-audio converter) heeft maar een eenvoudige PWM generator. Daarvoor zijn twee oplossingen: audio over HDMI of een USB-audiokaart aanschaffen.

Opslag en besturingssysteem

De RPi boot vanaf een SD kaart. Wat ik me nooit had gereliseerd was de enorme variatie in SD-kaarten. Niet alleen de hoeveelheid geheugen (4 GB of meer is aanbevolen), maar ook de kwaliteit (koop nooit een merkloze SD-kaart) en de lees- en schrijfsnelheid. De producent van de RPi raadt minimaal een Class 4 (4 MB/s) SD-kaart aan.

Vooral voor het streamen van video en gezien de lage prijs van SD-kaarten, zie ik voordelen van een Class 10 (10 MB/s). Omdat het hele besturingssysteem vanaf een kaart draait, maakt dit het onderhouden van verschillende projectjes eenvoudig: voor Raspbian gebruik ik een 8 GB Kingston (€12, Class 10) en voor Raspbmc gebruik ik een 8GB SanDisk (€16, Class 10).

Omdat de RPi op ARM draait (en niet op iets als Intel), is het onpraktisch (waar het niet: onmogelijk) om er Windows of OS X op te draaien. Wat er dan overblijft is gratis Linux. Uitstekende basis om te leren programmeren, lijkt mij. Het meest populair zijn de volgende besturingssystemen:

Toekomstige projecten

Prijs en levering

De RPi Model B heeft een adviesprijs van $35. Begin 2012 bleek de Raspberry slecht leverbaar (maanden wachttijd) maar die tijden zijn gelukkig voorbij. In Nederland is een RPi (inclussief verzendkosten) rond de €45. Ik heb de mijne bij S.O.S. Solutions gekocht (levertijd 24h) met de volgende accesoires:

Overige mogelijke hardware voor op je boodschappenlijstje:

Andere leveringsbronnen zijn onder andere:

Relevante links

Laatste update 11-03-2013

Kies een Linux

Omdat de Raspberry Pi op een ARM processor draait, lijken Windows en OS X geen opties. Iemand opperde Windows RT, dat ook geschreven is voor de ARM architectuur. Toch zal Windows op een RPi niet lukken, om de volgende redenen:

Natuurlijk kun je om een aantal van deze problemen heen door iets met virtualisatie te doen, of remote login. Maar ja, dan ben je wel een beetje het doel voorbij gestreeft.

Maar wat draaien we dan wél?

Raspbian

Debian “Wheezy” met hard foat-ondersteuning

Raspbmc

Raspbian + XBMC

OpenELEC

Speciaal gecompileerde, lichtgewicht Linux distro met XBMC

Raspbian installeren

Deze handleiding komt van de eLinux wiki en gefilterd op OS X met Terminal.app. Succes.

Nu, plug de SD-kaart in de PRi, sluit alle andere randapparatuur aan, de voeding als laatste. Volg de instructies op het scherm. Spijt van je instellingen? Je kan altijd weer terug met het volgende commando:

raspi-config

Nu eerst maar eens de laatste updates en upgrades binnen halen.

sudo -s
aptitude update
aptitude upgrade

Nu zijn we klaar voor de volgende stap.

raspberrypi.local

In plaats van het IP-adres van de RPi in je browser te typen, is het ook mogelijk raspberrypi.local te gebruiken, door de Avahi deamon te installeren.

aptitude install avahi-daemon

Webserver nginx

Spreek uit: engine-ex (Engels). Aangepast naar de handleiding van Ars Technica

Voor verdere optimalisatie en beveiliging, ga hier verder.

FTP server

Het is leuk om bestanden van en naar de RPi te kunnen versturen. Dat kan met het FTP protocol. Installeren gaat volgens de handleiding van Instructables.

Verbinden gaat met de volgende gegevens

De webcam

QuickCam® Express (V-UH9, V-UAP9)

Om te zien of een camera wordt herkend door het besturingssysteem, moet je even kijken of er in /dev iets als video0 te zien is. Dat kan met

cd /dev

Helaas doet mijn QuickCam Express niets tonen. Balen. Next.

Philips SPC215NC/00

With QVGA resolution (320×240, interpolated to 640x480) at 30 fps with CMOS sensor and “Automatic Picture Optimizer”. No internal microphone, USB 1.1 connection. Waardeloze webcam die niet meer dan 2 fps weer lijkt te kunnen geven. Maar dat kan ook aan de RPi liggen.

Ingesteld volgende de handleiding op de pagina van Techspect.

Camera Module (Raspberry Pi Foundation)

AirPi

AirPi op Trouch.com

cd ~
sudo apt-get install libmodule-build-perl
sudo apt-get install libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl
sudo apt-get install git-core
git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
cd perl-net-sdp
sudo perl Build.PL
sudo ./Build
sudo ./Build test
sudo ./Build install
cd
sudo apt-get install avahi-utils
git clone https://github.com/hendrikw82/shairport.git shairport

and the rest is repeating the install instructions from the trouch.com post

cd shairport
sudo make
sudo ./shairport.pl -a AirPi

check if it works then Ctrl-C

sudo make install
sudo cp shairport.init.sample /etc/init.d/shairport
cd /etc/init.d
sudo chmod a+x shairport
sudo update-rc.d shairport defaults
sudo nano shairport

edit DAEMON_ARGS line: eg DAEMON_ARGS=”-w $PIDFILE -a AirPi”

Ctrl-X, Y, Enter
sudo ./shairport start

De crap met de audio

The command sudo amixer -cset numid=3 1 will send sound to the headphone socket. Use sudo amixer numid=3 2 to return it to HDMI.