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:
- Raspbian Een aangepaste versie van Debian Wheezy (Debian 7.0) en geoptimaliseerd voor de Raspberry Pi hardware. Dat houdt in dat Raspbian hard float code efficiënt uitvoert. Dit heeft ermee te maken dat de de processor van het armhf-type is. Aangeraden door de Official Raspberry Pi Foundation. Download hier.
- Raspbmc Ideaal voor media centers is XBMC. Een aangepaste, minimalistische Linux distributie (gebaseerd op Raspbian) met XBMC 12.0 Frodo pre-loaded. Voordelen zijn onder andere de UI installers voor Windows, Linux and OS X; AFP, NFS en SMB file sharing; auto-updating; 1080p decoding; vrij en open source. Download hier.
Toekomstige projecten
- Uitbreiden servermogelijkheiden (public access, Wiki, WordPress, FTP)
- Vergelijking Raspbmc met XBMC op OpenELEC
- Fold@home (kan dat uberhaubt, of véél te langzaam?)
- Facial recognition met webcam?
- Bitcoin mining (approx. 100 khash/h – 0.1 Mhash/h)
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:
- €45 Raspberry Pi (Model B, rev 2)
- €10 Voedingadapter (5V, 1A, met indicatielampje)
- €13 SD-geheugenkaart Kingston (8 GB, Class 10)
- €10 Behuizing (zwart)
- geen verzendkosten
Overige mogelijke hardware voor op je boodschappenlijstje:
- Ethernetkabel
- USB-toetsenbord
- USB-muist
- HDMI-kabel + beeldscherm
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:
- Het grootste probleem is dat Windows RT is geschreven voor de ARMv7 architecturen, terwijl de RPi er een ARMv6 (met hard float) architectuur op na houdt. Omdat WRT niet open source is, is zelf compileren geen optie.
- WRT eist minimaal 2 GB RAM (RPi heeft een halve GB)
- Drivers moeten speciaal geschreven worden en licenties moeten gekocht worden.
- Windows vereist een licentie die duurder is dan een RPi
- WRT neemt meer ruimte in dan dat ik voor een SD-kaart zou willen betalen. De minimale ruimte voor RT aangeraden op USB is 20 GB vrij + 16 GB voor de OS = 36 GB. Maar daar moet dan nog de ruimte bij op, die jij graag wil gebruiken.
- Ik geloof dat een monster als Windows op een kleine CPU zoals die van de RPi draaien, alleen maar kan eindigen in huilen.
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.
- Download de laatste Raspbian distro hier. De torrent is het snelts.
- Mount een lege SD-kaart (aangeraden: 8 GB of meer, Class 10) en open Disk Utility.app. Controleer of de SD-kaart fat32-geformatteerd is.
- Identificeer de disk (niet de partitie) van de SD-kaart, bijv disk4
diskutil list
- Unmount de disk
diskutil unmountDisk /dev/<disk# from diskutil>
- Overschrijf de disk
sudo dd bs=1m if=<your image file>.img of=/dev/<disk# from diskutil>
- Voor snelheid, gebruik rdisk
- Eject de SD-kaart en de injecteer hem in de RPi
sudo diskutil eject /dev/rdisk3
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
- Installeer iets waarvan ik niet zeker weet of het wel zo handig is
aptitude install python-software-properties
- Installeer nginx
aptitude install nginx
- Misschien even herstarten?
sudo reboot
- Controleer het versienummer (nu nginx-full armhf 1.2.1-2.2)
nginx -V
- En controleer of de server het doet, door te navigeren naar het locale IP-adres of raspberrypi.local
- De pagina die dan bezocht wordt, staat op de volgende plek
cd usr/share/nginx/www/
- PAS OP: deze volgende twee commando's zijn slecht getest:
- De user www-data zal standaard alle data proberen uit te lezen, maar heeft soms niet de juiste rechten. Een manier op dat op te lossen is het volgende commando
chown -R www-data "/usr/share/nginx/www"
- Dat vorige commando lijkt maar soms te werken. Probeer deze eens
chmod -R 755 "/usr/share/nginx/www/"
- Klaar om statische webpagina's te serveren.
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.
- Zorg ervoor dat de pi gebruiker de juiste rechten heeft om te up- en downloaden.
sudo chown -R pi /var/www
sudo chown -R pi /usr/share/nginx/www
- Installeer de vsftpd deamon
sudo aptitude install vsftpd
- Open het vsftpd-configuratiebestand
sudo nano /etc/vsftpd.conf
- Verander de volgende regels
anonymous_enable=YES naar anonymous_enable=NO
#local_enable=YES naar local_enable=YES
#write_enable=YES naar write_enable=YES
- Voeg de volgende regel toe, aan het einde van het bestand
force_dot_files=YES
- Herstart de FTP server deamon
sudo service vsftpd restart
Verbinden gaat met de volgende gegevens
- Host: raspberrypi.local
- Username: pi
- Password: raspberrypi
- Port: 21
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.
- Update het systeem
sudo aptitude update
sudo aptitude upgrade
- Installeer motion
sudo aptitude install motion
- Sluit de webcam aan en controleer dat hij herkend wordt als video0 met
cd /dev
- Zet de Motion-deamon aan met
sudo nano /etc/default/motion
- Pas de ene regel aan tot
start_motion_daemon=yes
- Pas het motion-configuratiebestand aan
sudo nano /etc/motion/motion.conf
- Stel de volgende instellingen in
daemon = on
webcam_localhost = off
- Start de Motion server en wacht ~60 seconden
sudo service motion start
- Controleer de verbinding door naar het IP-adres van de RPi te navigeren, poort 8081. De 8080-poort geeft een webconfiguratie-interface weer
10.0.1.16:8081
raspberrypi.local:8081
- Doe een vreugdedansje
- Uitzetten van de camera gaat als volgt
sudo service motion stop
Camera Module (Raspberry Pi Foundation)
- Omnivision 5647 sensor in a fixed-focus module
- 5MPixel sensor
- Still picture resolution: 2592 x 1944
- Max video resolution: 1080p
- Max frame rate: 30fps
- Size: 20 x 25 x 10mm
- Connection by flat ribbon cable to 15-pin MIPI Camera Serial Interface (CSI) connector S5 on Raspberry Pi computer board
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.