Raspberry Pi 2 im Test

Dieser Blog-Beitrag dokumentiert erste Experimente mit dem Pi 2:

  • Kompatiblität / SD-Karte vom Pi1 weiterverwenden
  • Speicherprobleme — wenn aus einem GByte plötzlich magere 744 MByte werden
  • Overclocking
  • Mathematica in »Full Speed«
  • openELEC 5.0.1 ausprobiert
  • WiringPi und RPi.GPIO Pi-2-kompatibel machen

Kompatiblität

Eigentlich war ja versprochen worden, der Pi2 wäre vollständig abwärtskompatibel zum Pi. Also habe ich auf meinem Pi (Modell B+) zuerst ein Update durchgeführt und habe die SD-Karte dann vom alten in den neuen Pi gesteckt und wollte damit booten. Fehlanzeige! Der Kernel startet nicht. (Wie es doch geht, verrät der nächste Abschnitt.)

Also NOOBs heruntergeladen, auf eine neue SD-Karte gespielt und damit ein neues Raspbian installiert. Damit klappt alles, wie es soll. Der Bootprozess erfolgt gefühlt ein wenig schneller als bisher, die Verbesserung ist aber nicht dramatisch.

Von den Bootproblemen abgesehen scheint aber ansonsten software-seitig wirklich alles kompatibel zu sein. Dennoch erwartet ich, dass der Pi 2 die Pi-Welt spalten wird. Es ist nur eine Frage der Zeit, bis es für den ARMv7 optimierte Pi-Distributionen geben wird — und die sind dann natürlich auf den älteren Pi-Modellen nicht mehr lauffähig. Spannend ist natürlich auch, wie viel mehr an Geschwindigkeit sich durch eine ARMv7-Kompilierung erzielen lässt. Vermutlich nur ein paar Prozent, aber besser als nichts!

SD-Karte eines alten Raspberry Pi weiterverwenden

Die oben beschriebenen Bootprobleme haben damit zu tun, dass sich der Bootprozess beim Pi 2 geändert hat. Die Details sind mir noch nicht ganz klar, aber auf jeden Fall gibt es im Verzeichnis /boot nun zwei neue Dateien:

  • kernel7.img (vermutlich der Linux-Kernel kompiliert für ARMv7)
  • bcm2709-rpi-2-b.dtb (vermutlich das Device Tree Blob für den Pi 2)

Wenn Sie ein vorhandenes Raspbian-System eines Pi1 auf einem Pi2 weiterverwenden möchten, müssen Sie auf dem Pi1 zuerst ein Update durchführen. Dieses muss auch ein Update der Firmware- und Kernel-Dateien beinhalten. Dieses führen Sie mit rpi-update durch. Also:

sudo -s
apt-get update
apt-get dist-upgrade
apt-get install rpi-update
rpi-update
halt

Danach entfernen Sie die SD-Karte aus dem alten Pi, stecken Sie in den neuen ein und alles klappt!

Hinweis Wenn Sie Raspbian nicht direkt, sondern via NOOBS installiert haben, müssen Sie auch die boot-Dateien von NOOBS verändern. Eine entsprechende Anleitung finden Sie in den Kommentaren.

Arbeiten auf dem Desktop

Wie zu erwarten war, lässt sich der Desktop nun wesentlich flüssiger als bisher bedienen. Die Kombination aus mehr Speicher, höherer CPU-Frequenz und mehreren Cores wirkt Wunder. Habe ich in der Vergangenheit noch vor Programmen wie Firefox (Iceweasel) oder Gimp gewarnt, laufen diese Programme jetzt wunderbar. Lediglich das Scrollen durch lange Webseiten in Firefox erfolgt noch immer noch ein wenig schleppend.

Von der vollmundig versprochenen sechsfachen Geschwindigkeitssteigerung ist aber naturgemäß nichts zu spüren: Die meisten Desktop-Programme nutzen nur eine CPU-Core, die anderen drei haben die nichts zu tun. Das ändert sich erst, wenn mehrere Programme gleichzeitig um CPU-Ressourcen kämpfen — dann sind die drei zusätzlichen Cores natürlich eine Hilfe.

Mehrere Programme gleichzeitig auf dem Desktop ausführen: kein Problem mehr auf dem Pi 2
Mehrere Programme gleichzeitig auf dem Desktop ausführen: kein Problem mehr auf dem Pi 2

Speicherprobleme (wie aus einem GByte magere 744 MByte werden und was Sie dagegen tun können …)

free zeigt nach einer Raspbian-Neuinstallation aus NOOBs (2015-02-02) einen Gesamtspeicher von nur 744 MByte an. Das ist natürlich mehr als bisher, aber weniger als erwartet.

free -h
             total   used   free   shared  buffers  cached
Mem:          744M   715M    29M       0B      27M    332M
-/+ buffers/cache:   355M   389M
Swap:          99M     0B    99M

Zuerst dachte ich, es würde eben ca. 256 MByte Video-Speicher reserviert, aber verschiedene config.txt-Einstellungen wie gpu_mem=64 änderten nichts am free-Ergebnis. Noch merkwürdiger: Wenn ich den Pi2 mit meiner alten SD-Karte boote, die bisher in einem Pi1 lief und auf der ich mit rpi-update einen aktuellen Kernel aufgespielt habe (siehe oben), dann liefert free das folgende Ergebnis, das eher meinen Erwartungen entsprach:

free -h
             total   used   free   shared  buffers  cached
Mem:          927M   179M   747M       0B      20M     90M
-/+ buffers/cache:    68M   858M
Swap:          99M     0B    99M

Wodurch ergibt sich der Unterschied? Nach einigem Suchen bin ich schließlich im raspberrypi.org-Forum auf eine Diskussion gestoßen, der zufolge ca. 1/4 GByte RAM aufgrund der bewusst gewählten Kernel-Konfiguration CONFIG_VMSPLIT=3G absichtlich geopfert wurden. Diese Konfiguration hat den Vorteil, dass SonicPi und einige andere, nicht genannten Programme nur dann stabil laufen. Es ist anscheinend geplant, diesen Programmen zuerst eine Chance zu geben, ihr Fehlverhalten zu beheben, bevor die Konfiguration für den Raspbian-Default-Kernel nochmals verändert wird.

Wenn Sie SonicPi ohnedies nicht verwenden und von den hinzugewonnenen 512 MByte nicht gleich wieder die Hälfte verschenken möchten, führen Sie einfach rpi-update aus. Damit wird ein neuer Kernel installiert, bei dem die oben erwähnte Konfiguration nicht aktiv ist. free sollte dann Ergebnisse wie oben liefern.

sudo rpi-update
sudo reboot

openELEC verwendet seit Version 5.0.3 ebenfalls einen Kernel, der das gesamte RAM nutzt.

Diskussion über den Pi 2 Memory Split auf raspberrypi.org

CPU-Frequenz und Overclocking

Die beiden folgenden Kommandos ermitteln die aktuelle und die maximal zulässige CPU-Frequenz in kHz.

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 
600000
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 
900000

Informationen zum Overclocking mit dem Pi2 sind im Internet noch rar. raspi-config kennt nun aber einen neuen Overclocking-Modus pi2 mit den folgenden Einstellungen in /boot/config.txt:

core_freq=500
sdram_freq=500
over_voltage=2

Damit läuft die CPU bei Bedarf mit bis zu einem GHz. Auf den ersten Blick scheint das zumindest bei meinem Exemplar des Pi 2 problemlos zu funktionieren. Wie weit es noch Spielraum nach oben gibt, habe ich aber nicht erforscht.

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 
1000000

Mathematica

Der erste Versuch, die Notebook-Oberfläche von MMA zu starten, endete mit der folgenden Fehlermeldung: The Wolfram Language kernel was not able to start due to licensing terms. Nach einem Update (sudo apt-get update; sudo apt-get dist-upgrade) funktionierte Mathematica dann merkwürdigerweise. Merkwürdigerweise deswegen, weil bei dem Update gar kein MMA-Paket aktualisiert wurde.

Wie auch immer: Musste man den Umgang mit MMA bisher immer mit ja, aber beschreiben, so macht das Programm jetzt richtig Spaß. Die Benutzeroberfläche reagiert bei Eingaben ohne Verzögerungen, und selbst das Verdrehen von 3D-Grafiken gelingt nun (wenn auch immer noch schleppend). Der Pi2 ist momentan der günstigste Weg, um zu einer wirklich brauchbaren MMA-Installation zu kommen!

Mathematica läuft auf dem Pi 2 viel schneller und flüssiger als auf den älteren Pi-Modellen
Mathematica läuft auf dem Pi 2 viel schneller und flüssiger als auf den älteren Pi-Modellen

openELEC 5.0.1

openELEC ist ab Version 5.0.1 vom 2.2.2015 Pi-2-kompatibel. Achtung: Auf der Download-Seite gibt es nun zwei openELEC-Varianten für den Pi, eine für Pi-1-Modelle und eine zweite für Pi-2-Modelle (momentan gibt es ja nur eines, Modell B). Die Pi-1-Variante läuft nicht am Pi 2 und umgekehrt. Laden Sie also die richtige Version herunter!

http://openelec.tv/get-openelec

Ein erster Test von openELEC 5.0.1 verlief problemlos. Erwartungsgemäß läuft openELEC nun etwas flotter, was sich besonders bei der Navigation durch die Menüs bemerkbar macht. Prinzipiell hat man das Gefühl, das openELEC jetzt noch Reserven hat, während es den Pi 1 bis ans Limit forderte. Dass sich der Pi 2 die ideale Basis für Multimedia-Lösungen etablieren wird, lässt sich auch ohne prophetische Gaben leicht vorhersehen.

openELEC 5.0.1 kann die vier Cores des Pi 2 nicht auslasten
openELEC 5.0.1 kann die vier Cores des Pi 2 nicht auslasten

WiringPi

Die beliebte Bibliothek WiringPi muss aktualisiert werden, damit Sie Pi-2-kompatibel ist! WiringPi greift zur GPIO-Steuerung auf einen Adressbereich zu, dessen Adresse sich beim Pi 2 geändert hat.

Zur Installation bzw. zum Update von WiringPi führen Sie die folgenden Kommandos aus:

sudo apt-get update
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

Da so kompilierte Programm wiringPi sollte nun selbstständig erkennen, auf welcher Pi-Version es läuft, und mit allen GPIO-Ports korrekt umgehen können:

gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

Hintergrundinfos auf wiringpi.com

RPi.GPIO

Auch das beliebte Python-Modul RPi.GPIO hat noch Probleme mit dem Pi 2. Der Versuch, in einem Python-Script import RPI.GPIO as gpio auszuführen, endet mit der Fehlermeldung: This module can only be run on a Raspberry Pi!

Die Kompatibilitätsprobleme sind dem Maintainer zwar bekannt, es gibt in Raspbian aber noch keine aktualisierte Version des Pakets. Abhilfe schafft vorerst nur die manuelle Installation des Moduls:

sudo apt-get install python-dev python3-dev mercurial python-pip python3-pip
sudo apt-get remove python-rpi.gpio python3-rpi.gpio
sudo pip install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIO
sudo pip-3.2 install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIO

Quellen:

Fazit

Auch der Raspberry Pi 2 wird das heimatliche Notebook oder den Desktop-PC nicht ersetzen. Zwar läuft Linux nun viel flüssiger als bisher, die langsame I/O bremst den Pi aber weiter aus. Die versprochene sechsfache Geschwindigkeit sollten Sie auch nicht erwarten — nur ganz wenige Programme sind in der Lage, vier CPU-Cores zu nutzen!

Dessen ungeachtet gilt: Als Basis für ein Multimedia-System oder für Bastel/Elektronik-Lösungen ist der Pi genialer als je zu vor.

All jene, die darüber jammern, dass der Pi 2 weder USB3 noch SATA noch GBit-Ethernet hat: Ja, das stimmt alles. Dafür gibt es für alle Komponenten freie Treiber, und ein Software-Angebot, das seinesgleichen sucht.

Für mich ist und bleibt der Pi der optimale Bastel-Rechner. Die Summe aller Eigenschaften ist besser als bei konkurrierenden Produkten.

7 Gedanken zu „Raspberry Pi 2 im Test“

    1. Hab‘ ich gerade ausprobiert, funktioniert aber nicht. raspberrypi-ui-mods führt GUI-Änderungen durch (Menü oben statt unten etc.), ändert aber die /boot-Dateien nicht.

      Ich vermute, dass sich am Boot-Prozess irgendetwas geändert hat, bin mir aber noch nicht klar, was.

  1. Hallo,

    unter dem Thema WiringPi hat sich ein Fehler im code eingeschlichen.
    Im ersten Befehl fehlt „apt-get“:

    sudo update -> sudo apt-get update

    VG
    Kevin

  2. Zu: SD-Karte eines alten Raspberry Pi weiterverwenden
    Vielen Dank für die Hinweise, war genau, was ich suchte. Mein alter R.Pi ist ein B+. Aber warum klappt das hier nicht? Updates laufen alle durch ohne Fehlermeldung, der Neue (Pi 2) zeigt aber nur das bekannte Farbmuster anstatt zu booten. Noch ’ne Idee? Danke schonmal…

    1. keine Ahnung; rpi-update ist entscheidend; woran es sonst noch liegen kann, weiß ich nicht

  3. Hab‘ was gefunden und es funzt jetzt:
    (im Anschluss an die oben beschriebenen Schritte ausführen)
    If you have NOOBS, insert the microSD card into a card reader and into your PC/Mac. Download the latest ‚NOOBs Lite‘ zipped image from the Raspberry Pi website:
    http://www.raspberrypi.org/downloads/
    Unzip the download, and extract everything from the ZIP file to a directory. Copy everything from the extracted ZIP EXCEPT for ‚recovery.cmdline‘ to the top directory of your microSD card.
    Once completed, remove the microSD from your PC.
    You are now ready to insert the microSD card into your new Raspberry Pi2 and boot it up.
    (gefunden auf http://thepihut.com/)

Kommentare sind geschlossen.