Mit Quadcore-Power, mehr Speicher und schnelleren Interfaces richtet sich das Hummingboard an Raspberry-Pi-Besitzer, die mit einem Aufstieg liebäugeln. Auf weitgehende Kompatibilität der Schnittstellen haben die Macher geachtet, doch der Teufel steckt, wie so oft, auch hier im Detail.
Der israelische Hersteller Solidrun will mit dem seit Kurzem fertigen Hummingboard [1] das Amateur-SBC-Segment oberhalb des Raspberry Pi besetzen. Die Spezifikation des Einplatinencomputers beeindruckt: Er stößt leistungsmäßig in einen Bereich vor, der bis vor Kurzem x86-Prozessoren vorbehalten war.
Im Vergleich zum Raspberry Pi trumpft das Hummingboard mit einer wesentlich flotteren CPU [2], mehr Speicher, einer nicht nur auf dem Papier deutlich schnelleren Netzwerkschnittstelle und durchsatzstarken Ports wie SATA und PCIe auf (siehe Tabelle 1).
Wie beim Raspberry Pi gibt es auch beim Hummingboard eine Produktfamilie mit mehreren Modellen. Der Befehlssatz der Hummingboards beschränkt sich nicht wie beim Raspberry Pi auf ARMv6: Das verbaute Freescale-i.MX6-SoC (System on a Chip) enthält ein bis vier ARM-Cortex-A9-Rechenkerne, die den ARMv7-Befehlssatz implementieren. Das bringt für den Nutzer den großen Vorteil, dass er die Armhf-Binärpakete von Debian und seinen Derivaten benutzen kann, Solidrun muss also keine eigene Distribution pflegen. Ähnliches gilt auch für andere Distributionen. Bei so vielen Pluspunkten fällt bei vielen Einsatzzwecken der höhere Stromverbrauch der Hummingboards nicht ins Gewicht.
Mit einer mustergültig breit aufgestellten Community wie der Raspberry Pi kann das Hummingboard allerdings nicht aufwarten. Der Raspi steht für gut dokumentierte Schnittstellen, viele kompatible Peripheriegeräte und Zukunftssicherheit bei der Software. Inwieweit es der Hummingboard-Familie gelingt, dies durch Schnittstellen-Kompatibilität zum Raspberry Pi und die Softwarekompatibilität zu Debian und anderen Distributionen zu kompensieren, untersucht der folgende Praxistest.
Das Hummingboard weist einen modulareren Aufbau auf als die Raspberry-Pi-Hardware: Es besteht aus einem Micro-SOM, das mit einem Kühlkörper auf einem Carrierboard sitzt (Abbildung 2). Das Micro-SOM enthält im Wesentlichen ein i.MX6-SoC sowie Speicherbausteine. Insgesamt gibt es vier verschiedene Micro-SOMs und zwei verschiedene Carrierboards, die Solidrun nach dem Mix-and-Match-Ansatz konfiguriert, sodass die Hummingboard-Familie insgesamt aus acht Mitgliedern besteht.
Neben den beiden Carrierboards baut Solidrun auch noch eines für das in Abbildung 3 gezeigte Cubox-i-Gehäuse. Damit kann Solidrun mit einer Familie von vier Micro-SOMs und drei Carriern neben den Hummingboards auch die wohnzimmertaugliche Cubox-i-Produktfamilie mit reduzierter Schnittstellenzahl anbieten. Eine vollständige Dokumentation der Hardware wie Schematics, Gerber- und DXF-Dateien stellt Solidrun im Web [3] zur Verfügung.
Als Software kam auf dem Platzhirsch Raspbian und auf dem Herausforderer ein Jessie-Debian, also die Testing-Version von Debian 8.0, in Form des Solidrun-Image [4] zum Einsatz. Die Installation erfolgte in beiden Fällen durch ein einfaches Kopieren auf eine SD- respektive Micro-SD-Karte.
Tabelle 1
Die leistungsfähigsten Hummingboard- und Raspberry-Pi-Modelle
|
Hummingboard Professional i4pro |
Raspberry Pi, Modell B+ |
|
|---|---|---|
|
SoC |
Freescale i.MX6 Quad |
Broadcom BCM 2835 |
|
ARM-Kern |
Freescale i.MX6 Quad |
ARM 1176JZF-S |
|
ARM-Befehlssatz |
ARMv7 |
ARMv6 |
|
Kerne, Taktrate |
4 Kerne mit 1 GHz |
1 Kern mit 700 MHz |
|
CPU-Benchmark |
je nach Benchmark [2] 2- bis 10-mal schneller als der Raspberry Pi |
Referenz |
|
GPU |
Vivante GC2000 |
Broadcom Videocore IV |
|
RAM |
2 GByte |
512 MByte |
|
USB-2.0-Ports |
2 |
4 |
|
Ethernet |
1 GBit/s 1 |
100 MBit/s |
|
IR |
38-kHz-Receiver |
38-kHz-Receiver |
|
Video-Eingang |
15-Pin-MIPI-CSI |
15-Pin-MIPI-CSI |
|
Video-Ausgang |
HDMI |
HDMI |
|
GPIO-Header |
26 Pins 2 |
40 Pins |
|
PCIe |
Mini-PCIe-Connector |
– |
|
E-SATA |
M-SATA |
– |
|
Leistungsaufnahme |
max. 10 W |
max. 3 W |
|
Preis |
knapp 150 US-Dollar 3 |
33 Euro |
|
1 maximal mögliche Bandbreite 470 MBit/s (SoC-Limitierung) |
||
|
2 Formfaktor identisch zum Raspberry-Pi-Modell B |
||
|
3 zuzüglich 19 Prozent Einfuhrumsatzsteuer |
||
Test 1: Kompatibilität der Schnittstellen
Zum Prüfen der Schnittstellen-Kompatibilität untersuchten die Linux-Magazin-Tester exemplarisch vier einfache Anwendungen: die serielle Konsole über UART, das Ansteuern von LEDs via GPIO, die Serial-Peripheral-Interface-Kommunikation sowie das Einbinden des Raspi-Kameramoduls. Als Hardwareplattformen dienten ein Raspberry-Pi-Modell B und ein Hummingboard Professional i2EX (Abbildung 1, Tabelle 2).
Tabelle 2
Das getestete Hummingboard
|
Name |
Hummingboard Professional i2EX |
|
Hersteller |
Solidrun |
|
SoC |
Freescale i.MX6 Dual |
|
ARM-Kern |
Cortex-A9 |
|
ARM-Befehlssatz |
ARMv7 |
|
Kerne, Taktrate |
2 Kerne mit 1 GHz |
|
GPU |
Vivante GC2000 |
|
RAM |
1 GByte |
|
USB-2.0-Ports |
2 |
|
Ethernet |
1 GBit/s 1 |
|
IR |
38-kHz-Receiver |
|
Video-Eingang |
15-Pin-MIPI-CSI |
|
Video-Ausgang |
HDMI |
|
GPIO-Header |
26 Pins 2 |
|
PCIe |
Mini-PCIe-Connector |
|
E-SATA |
M-SATA |
|
Leistungsaufnahme |
max. 7,5 W |
|
Preis |
103 Euro plus Versand |
|
Bezugsquelle |
|
|
1 maximal mögliche Bandbreite 470 MBit/s (SoC-Limitierung) |
|
|---|---|
|
2 Formfaktor identisch zum Raspberry-Pi-Modell B |
|
Kreuzweise
Die serielle Konsole nahmen die Tester mit einem USB-nach-UART-Kabel PL2303HX und Minicom in Betrieb, indem sie »GND« , »5V« , »RX« und »TX« überkreuz mit dem GPIO-Header verbanden. Das klappte bei beiden SBC ohne Probleme. Beim Hummingboard ist zu beachten, dass dessen Stromversorgung über USB erfolgen muss und der Besitzer den 5-Volt-Pin nicht verbinden darf, da das PL2303HX-Kabel selbst nicht genügend Strom liefert. Dann aber bootet das Hummingboard über die serielle Konsole, welche die Arbeiten mit U-Boot deutlich erleichtert.
Den Aufbau für das Ansteuern einer LED via GPIO zeigt Abbildung 4. Der Schaltungsaufbau erfolgte auf einer Steckplatine, die die Tester über einen T-Koppler mit dem GPIO-Header des Raspberry beziehungsweise des Hummingboard verbanden. Für den Pi findet sich eine ausführliche Dokumentation der GPIO-Ansteuerung für mehrere Programmiersprachen, zum Beispiel auf [5].
Nach dem Anschließen einer LED mit einem Vorwiderstand an »GPIO7« (Pin 26) verläuft das Ansteuern problemlos, vorausgesetzt, dass der Bastler die irreführende Nummerierung auf dem GPIO-Header durchschaut. Das Listing 1 stellt den Ablauf dar, die LED blinkt synchron zur »0-1-0…« -Ausgabe.
Eine gute GPIO-Dokumentation für das Hummingboard liefert das Blog von Gert Leenders [6]. Die Ansteuerung funktioniert weitgehend identisch wie beim Raspberry Pi (Listing 2) – mit zwei kleinen Unterschieden: Pin 26 lässt sich beim Hummingboard gar nicht als GPIO konfigurieren, deshalb nahmen die Tester Pin 22. Zudem fällt die Nummerierung der GPIOs unterschiedlich aus: Pin 22 ist beim Hummingboard GPIO 67, beim Raspberry Pi GPIO 25.
Listing 1
Blinkende LED mit dem Raspberry Pi
01 # mount -t debugfs none /sys/kernel/debug 02 # cat /sys/kernel/debug/gpio 03 GPIOs 0-53, bcm2708_gpio: 04 gpio-16 (led0 ) out hi 05 # echo "4" > /sys/class/gpio/export 06 # echo "out" > /sys/class/gpio/gpio4/direction 07 # cat /sys/kernel/debug/gpio 08 GPIOs 0-53, bcm2708_gpio: 09 gpio-4 (sysfs ) out lo 10 gpio-16 (led0 ) out hi 11 root@pi:/home/pi# val=1 12 # while : ; do 13 > echo $val > /sys/class/gpio/gpio4/value 14 > echo $val 15 > sleep 1 16 > val=$((1-$val)) 17 > done 18 0 19 1 20 0 21 1 22 [...]
Listing 2
Blinkende LED mit dem Hummingboard
01 # mount -t debugfs none /sys/kernel/debug 02 # cat /sys/kernel/debug/gpio 03 [...] 04 GPIOs 64-95, gpio-2: 05 gpio-67 (pin22 ) in hi 06 gpio-68 (PCIE RESET ) out hi 07 gpio-69 (gpio-ir-recv ) in hi 08 gpio-70 (pin15 ) in hi 09 [...] 10 # echo 67 > /sys/class/gpio/export 11 # echo out > /sys/class/gpio/gpio67/direction 12 # cat /sys/kernel/debug/gpio 13 [...] 14 GPIOs 64-95, gpio-2: 15 gpio-67 (pin22 ) out lo 16 gpio-68 (PCIE RESET ) out hi 17 gpio-69 (gpio-ir-recv ) in hi 18 gpio-70 (pin15 ) in hi 19 [...] 20 # val=1 21 # while : ; do 22 > echo $val > /sys/class/gpio/gpio67/value 23 > echo $val 24 > sleep 1 25 > val=$((1-$val)) 26 > done 27 1 28 0 29 1 30 0 31 [...]
Test 2: SPI-Vergleich
Der zweite Test gilt der Inbetriebnahme des Serial Peripheral Interface (SPI, [7]). Für den Raspberry Pi gibt es dazu viele Beschreibungen [8]. Das Programm »spidev_test.c« kommt zusammen mit dem Kernelquellcode und implementiert einen Loopback-Test, bei dem MOSI- und MISO-Pins am GPIO-Header verbunden sind (Listing 3). Das funktioniert aber nur, wenn »spidev_test.c« zum auf dem Raspberry Pi laufenden Kernel passt.
In Sachen SPI-Kommunikation mit dem Hummingboard existiert nur wenig Dokumentation. Die Tester luden das Kernelmodul »spi_imx« , das aber weder das gewünschte Gerät in »/dev« anlegte noch Einträge in Logfiles hinterließ. Erst der Einsatz eines alternativen Debian-Image [9] für das Hummingboard von Igor Pecovnik ließ die SPI-Geräte unter etwas anderem Namen erscheinen. Daraufhin klappte der Loopback-Test auch auf dem Hummingboard (Listing 4).
Listing 3
Raspberry-Pi-SPI-Loopback-Test
01 # gcc spidev_test.c -o spidev_test 02 # ./spidev_test -s 100000 -D /dev/spidev0.0 03 spi mode: 0 04 bits per word: 8 05 max speed: 100000 Hz (100 KHz) 06 07 FF FF FF FF FF FF 08 40 00 00 00 00 95 09 FF FF FF FF FF FF 10 FF FF FF FF FF FF 11 FF FF FF FF FF FF 12 DE AD BE EF BA AD 13 F0 0D
Listing 4
Hummingboard-SPI-Loopback-Test
01 # gcc spidev_test.c -o spidev_test 02 # ./spidev_test -D /dev/spidev1.0 03 spi mode: 0 04 bits per word: 8 05 max speed: 500000 Hz (500 KHz) 06 07 FF FF FF FF FF FF 08 40 00 00 00 00 95 09 FF FF FF FF FF FF 10 FF FF FF FF FF FF 11 FF FF FF FF FF FF 12 DE AD BE EF BA AD 13 F0 0D
Test 3: Kamera im Betrieb
Das Kameramodul lässt sich auf dem Raspberry Pi problemlos integrieren und unter Raspbian in Betrieb nehmen. Dazu konfigurierten die Tester es zunächst mit »raspi-config« und konnten nach einem Reboot sofort mit »raspistill -o image.jpg« Fotos aufnehmen.
Für das Hummingboard fanden sie trotz intensiver Recherche keine Anleitung, wie sich die Pi-Kamera in Betrieb nehmen ließe. Einige andere Kameratypen scheinen zu funktionieren, so berichten jedenfalls User im Internet. Solche Modelle waren für den Test aber auf die Schnelle nicht zu besorgen.
Der Software-Stack
Der ARMv7-Befehlssatz erlaubt es, auf Hummingboards direkt Debian-Pakete der Armhf-Architektur zu installieren, was bei den Vorarbeiten zu diesem Artikel auch gelang. Im Test kamen neben einem Vanilla-Debian das Solidrun-Image sowie das beim SPI-Test erwähnte Linux von Igor Pecovnik zu Ehren. Tabelle 3 vergleicht die drei Images.
Als kritischste Punkte der Software-Images kristallisierten sich der Kernel und der Grafikstack heraus. Freescale unterstützt für den Vivante-GC2000-Grafikkern der Hummingboards die Kernel 3.0.x und 3.10.x. Der Grafiktreiber besteht aus einem quelloffenen Teil im Kernel und einem binären Teil im Userspace. Zudem fließt viel Arbeit in eine Kernel-3.14.x-Variante, die Igor Pecovnik in sein Image integriert. Debian selbst arbeitet mit dem Upstream-Kernel 3.16.
Für Anwendungen, die sehr gute Hardware-Unterstützung benötigen, insbesondere für die Grafik, stellt momentan das Image von Igor Pecovnik die beste Wahl dar. Wer keine spezielle Hardware-Unterstützung benötigt, aber Wert auf die neuesten Securitypatches legt oder auf größtmögliche Flexibilität bei Softwarepaketen, der greift wohl am besten zu dem Vanilla-Debian mit seiner guten Upgrade-Infrastruktur. Die Debianer stellen jedoch bislang keinen Installer fürs Hummingboard bereit [10], sodass man das Bootstrapping auf einem x86-Debian-PC selbst organisieren muss.
Unter dem Namen Etnaviv gibt es eine durch Reverse-Engineering entstandene Open-Source-Implementierung der Vivante-Grafiktreiber, ähnlich wie Nouveau für Nvidia. Allerdings lässt sich Etnaviv auf dem Hummingboard für einen produktiven Einsatz noch nicht empfehlen.
Tabelle 3
Debian-Images für das Hummingboard
|
Solidrun |
Igor Pecovnik |
Debian |
|
|
Kernel |
3.0 |
3.14 |
3.16. |
|
Distribution |
Debian Jessie |
Debian 7 |
Debian Jessie |
|
UART-Support |
ja |
ja |
ja |
|
GPIO-Support |
ja |
ja |
funktioniert nicht |
|
SPI-Support |
funktioniert nicht |
ja |
funktioniert nicht |
|
X11-Treiber |
Vivante |
Fbdev |
funktioniert nicht |
|
Nutzt automatisch ganze SD-Karte |
nein |
ja |
ja |
|
Kernel upgradefähig |
nein |
nein |
ja |
|
Letztes Update des Image |
24.10.2014 |
4.7.2014 |
täglich |
Flott, aber (noch) fehlt die breite Unterstützung
Die Rechenleistung des Hummingboard ist im Vergleich zum Raspberry Pi gigantisch, das schnelle Ethernet ist ein weiterer dicker Pluspunkt. Zwar fassen sich die meisten Schnittstellen des Hummingboard ganz ähnlich an wie ihre Pendants auf dem Raspi – das ist die Absicht des Herstellers Solidrun. Der Praxistest beweist aber, dass es im Detail auch genügend Unterschiede gibt. Zudem mangelt es an entsprechender Dokumentation, was dazu führt, dass sich der Umgang mit dem Solidrun-SBC deutlich zeitaufwändiger gestaltet als mit dem Original. Daher sollten Besitzer beider Platinen neue Komponenten erst einmal am Raspi in Betrieb nehmen und die resultierenden Erkenntnisse für den Einsatz am Hummingboard übertragen.
Für den Erfolg der Hummingboard-Familie dürfte es entscheidend sein, ob es Solidrun gelingt, eine ausreichend große Community um die Plattform zu scharen. Erste Anzeichen dafür gibt es: So empfiehlt beispielsweise Open Elec die Cubox-i als Hardwareplattform für seine Mediacenter-Distribution [11]. Zudem tummeln sich im IRC-Kanal »#cubox« auf http://irc.freenode.org viele Benutzer. Solidrun bietet hier meist schnelle Hilfe und betreibt ein extra Forum [12].
Debian läuft heute schon vollständig – inklusive Security-Support und Backports – und sehr stabil auf dem Hummingboard. Allerdings unterstützt der Kernel 3.16 noch nicht alle Hardwarefunktionen, was sich aber kontinuierlich verbessern dürfte. X11-Grafik funktioniert auf absehbare Zeit aber nur mit dem Binärtreiber von Vivante, also wahrscheinlich nur mit dem Kernel 3.14.
Wenn Solidrun diesen mit Security-Updates versorgt und ein Paket mit Binär-X11-Treibern in einem Debian-Repository bereitstellt, dann dürfte sich das Hummingboard schnell einen guten Platz auf dem SBC-Markt erobern.
Infos
- Hummingboard: http://www.solid-run.com/products/hummingboard/
- Benchmarks: http://gleenders.blogspot.de/2014/08/hummingboard-benchmarks-raspberry-pi-vs.html]
- Schematics, Gerber- und DXF-Dateien: http://download.solid-run.com/pub/solidrun/
- Debian-Jessie-Image von Solidrun: http://download.solid-run.com/pub/solidrun/cubox-i/Debian/Jessi-repackaged-trial/debian-jessi-4-july-2014.img.xz
- “RPi Low-level Peripherals”: http://elinux.org/RPi_Low-level_peripherals
- Hummingboard-GPIO: http://gleenders.blogspot.de/2014/08/hummingboard-gpio.html
- Jürgen Quade, Eva-Katharina Kunst, “Kern-Technik” zum Thema SPI: Linux-Magazin 12/14, S. 98
- SPI-Support für den Raspberry Pi: http://elinux.org/RPi_SPI
- Debian-SD-Image für Cubox-i/Hummingboard: http://www.igorpecovnik.com/2014/08/19/cubox-i-hummingboard-debian-sd-image/comment-page-1/#comment-2466
- Laufend aktualisierte Debian-Installationsanleitung für ARM-Systeme: http://d-i.debian.org/manual/de.armhf/
- Open-Elec-Ankündigung zur Cubox-i: http://openelec.tv/news/22-releases/142-beta-openelec-5-0-beta-1-released
- Solidrun-Foren zu Cubox-i/Hummingboard: http://www.solid-run.com/community/








