Cubietruck (Cubieboard 3)
Im September 2012 hat das Chinesische Unternehmen CubieTech Limited, Inc. mit der Cubiboard Serie ein, wie ich finde, recht erfolgreiches Open-Source Projekt initiiert und zeigt sehr deutlich, dass in den Werkhallen und Entwicklungsbüros von Shenzhen bei weitem nicht mehr nur kopiert wird. Sämtliche Wertschöpfungen entstammen der dort ansässigen Indistrie, begonnen bei der CPU von Allwinner Technology Co., Ltd. weiter über die Boards, Zubehör und Gehäuse sowie deren weltweiter Vertrieb (wie z.B. bei Pollin) bis hin zur mehr oder weniger direkten Unterstützung der Softwareentwicklung im Rahmen des Community Projekts SUNXI Linux.
Ein Wermutstropfen bleibt. Wie auf der Wiki-Seite von SUNXI Linux zu lesen ist, wird dem CPU Hersteller die wiederholte Verletzung der GPL vorgeworfen. Ich will das an dieser Stelle ohne weiteren Kommentar nur erwähnt haben.
Im Ergebnis erhält man mit dem Cubietruck ein mit maximal 10 Watt operierendes Computersystem in die Hand, was leistungsfähig genug ist, einen bestehenden PC auf Basis eines Intel Celeron oder Atom N270 abzulösen.
Technische Parameter
Hier verweise ich gerne auf die deutsche Wikipedia, das SUNXI Linux Wiki und das Cubiboard Wiki sowie den Cubiboard Blog. Dort gibt es mehr Detailinformationen zu entdecken, als ich hier wiedergeben will und kann. An dieser Stelle werde ich die für mich interessantesten Punkte heraus greifen.
Hardware
- CPU zzgl. Peripherie, SoC: Allwinner A20 (sun7i)
- Dual-Core ARM Cortex-A7 mit 1 GHz
- ARM Mali400 MP2 GPU (OpenGL ES 2.0)
- Cedar Engine VPU (H.264 2160P und High Profile 1080P@30fps)
- LCD/VGA/HDMI 1.4 mit TV I/O
- 10/100/1000 Ethernet Controller
- USB 1.1 und 2.0 Host Controller
- SD/MMC Interface
- SATA II Interface
- 2 GB DDR3 SDRAM GT GT8UB512M8EN oder Hynix H5TQ4G63AFR mit 480 MHz
- 8 GB NAND
- 1x 1000BASE-T Ethernet Transceiver (Realtek RTL8211E)
- 1x WiFi 802.11 b/g/n und Bluetooth (Ampak AP6210 Modul, Broadcom BCM43xx)
- 2x USB 2.0 Host
- 1x USB 2.0 OTG
- angeschlossene Komponenten:
- 1x externe SDHC Card Class 10 mit 8 GB
- 1x interne HDD Hitachi HTS54502 mit 250 GB
Software
Auf den oben genannten Wiki Seiten findet man viele Verweise zu vorgefertigten Images diverser Standard Linux Distributionen wie Debian, Ubuntu und Fedora Core. Auch Android sollte nicht unerwähnt bleiben und für die Freunde von BSD gibt es ebenso Möglichkeiten. Für mich von Interesse ist ausschließlich Debian und Ubuntu. Das Debian Projekt bietet eine von mir nicht weiter verfolgte Anleitung zur Installation auf Allwinner basierender Hardware.
Mein System habe ich mit Hilfe des ARMbian Projekts mit einem aktuellen Ubuntu LTS bestückt und kann es aktuell halten. Dazu mehr weiter unten.
Durch die Anstrengungen der Community rund um SUNXI Linux werden so gut wie alle Allwinner Plattformen direkt aus den Hauptentwicklungszweigen heraus unterstützt, das sind:
Hardware Modding
Der Cubietruck kommt von Haus aus nicht als einfaches loses Board daher, sondern punktet schon mit einem einfachen aus Plexiglas hergestellten „Primitivgehäuse“. Darin findet nicht nur das Board selbst sondern auch die SATA Festplatte und ein optionaler Akku genügend Platz für eine feste Montage. Damit bleiben alle Komponenten in Form eines kleinen Stapels fest verbunden und können nicht bei laufendem Betrieb auseinander gezogen werden. Ohne weitere Schutzmaßnahmen ist aber vom Einsatz eines solchen Aufbaus im Alltagsbetrieb abzuraten, es gibt keinen Schutz vor Staub oder Dreck.
Für den Cubietruck werden zwei verschiedenen Gehäuse angeboten, eins aus Kunststoff und eins aus Metall, genauer aus schwarz lackiertem Alu-Gussprofil. In meinem Aufbau kommt letzteres zum Einsatz. Es soll schließlich als ein Server im Dauerbetrieb für lange Zeit unbeobachtet seinen Dienst verrichten.
Alle Komponenten bekommt man, zumindest im deutschsprachigen Raum, direkt bei Pollin Electronic zu kaufen. Hier die Liste meiner Komponenten:
Pollin Nr. | Beschreibung | Preis | ||
---|---|---|---|---|
Verweise | ||||
Basishardware | 702 237 | Cubieboard 3 (Cubietruck) Kit, A20, 2 GB, 8 GB, WLAN, BT, SATA | 99,95 € | |
Beschreibung (Pollin) Produktdatenblatt (Pollin) Schaltplan Allwinner A20 Datasheet, V1.1 (21. März 2013) Allwinner A20 User Manual, V1.0 (18. Februar 2013) AMPAK AP6210 WiFi 802.11b/g/n + BT4.0 SIP Module Specifiaction, V1.2 (26. Dezember 2012) | ||||
Gehäuse | 702 305 | Cubietruck Aluminium-Gehäuse | 17,95 € | |
AutoCad Zeichnung Montageanleitung | ||||
Bootmedium | 722 867 | MicroSDHC Card VERBATIM 44012, 8 GB | 4,75 € | |
gesamt: | 122,65 € | |||
Datenspeicher | Bestand | Hitachi HTS54502, 250 GB | 50,00 € |
Dieser Zusammenbau hat von mir nun nachträglich noch folgende Erweiterungen bekommen.
Serielle Konsole
Das Gehäuse ist so konstruiert, dass man es gut im heimischen Wohnzimmer als Medienplayer an einem großen LED Monitor mit Funktastatur über USB betreiben kann. Für den Einsatz als Server ohne Monitor und ohne Tastatur fehlt schlicht und ergreifend der Zugang an die serielle Schnittstelle. An dieser wird in solchen Einsatzszenarien die Linux Konsole und ein Login angeboten, um in Notfällen über ein Terminal direkt vor Ort auf den Server zuzugreifen. Auch für die Installation neuer Systemsoftware oder den Service ist dieser Zugang unabdingbar.
Auf dem Cubietruck wird die Linux Konsole fest über die erste serielle Schnittstelle an Steckverbinder CN7 (direkt hinter den USB Buchsen) angeboten. Im Shop von Cupietech wird auch ein passendes USB UART Kabel angeboten – im Prinzip ein gewöhnliches USB zu RS232 Kabel für 3.3V TTL Pegel mit einzeln steckbaren Anschlüssen, wie es in jedem gut sortierten Elektronikladen angeboten wird. Problem bei diesem Kabel ist, dass es nicht ohne weiteres aus einem geschlossenen Gehäuse herausgeführt werden kann.
Für solche Fälle bietet DELOCK oder FTDI Chip ein solches Kabel mit einem 3,5mm Audio Klinkenstecker an. In der Gehäusewand muss an geeigneter Stelle eine Klinkenbuchse eingebaut werden und die drei Leitungen der serielle Schnittstelle im Gerät an die richtige Pfostenleiste angeschlossen werden. Das Ergebnis könnte so aussehen:
Auf- und Einbau
Für die Klinkenbuchse habe ich aus Gründen der Langlebigkeit und kompakten Bauweise das etwas teurere Exemplar KLB 4 von Lumberg gewählt. Hinter der Gehäusewand beträgt der Durchmesser dieser Buchse nur 8 mm und der Durchbruch 6 mm. Ferner sind die Kontakte in einem geschlossenen Kunststoffgehäuse untergebracht.
Nach folgendem Schaltplan werden die drei Kontakte der Klinkenbuchse über eine angewinkelte Buchsenleiste mit 4×1 Kontakten im Rastermaß 2,54mm steckbar an die Pfostenleiste CN7 auf dem Cubietruck verbunden. Danach wird in die Rückwand des Cubietruck Gehäuses an geeigneter Stelle ein Loch mit 6mm Durchmesser gebohrt und die Klinkenbuchse mit der beiliegenden Überwurfmutter befestigt. Ich habe mich über den freien Raum direkt über der HDMI Buchse des Cubietruck entschieden.
Achtung: Wer die beiliegenden Blenden mit den Beschriftungen aufkleben will, der muss sich noch Gedanken über einen Durchbruch auch in dieser Blende machen. Ich selber nutze die Blenden nicht, da sie die Schrauben verdecken. Jedes mal, wenn man das Gehäuse öffnen will, müssten die Blenden abgelöst und beim Zusammenbau neu aufgeklebt werden. Das ist nicht servicefreundlich.
Materialliste
Hersteller | Artikel | Bezeichnung | Farnell (element14) | Reichelt | ||
---|---|---|---|---|---|---|
Bestellnummer | Preis | Bestellnummer | Preis | |||
Lumberg | KLB 4 | Klinkeneinbaukupplung nach JIS C 6560 JC35J3A, 3,5 mm, 3-polig/stereo, mit Lötaugen, für Rückseitenmontage, Kunststoffgehäuse Datenblatt, 3D-Ansicht, STEP-Daten | 120-0144 | 1,35 € | LUM KLB 4 | 0,86 € |
DELOCK | 83114 | Konverter USB 2.0 Stecker → Seriell-TTL 3,5 mm Klinke 1,8 m (3,3 V) Datenblatt, Zeichnung | DELOCK 83114 | 18,95 € | ||
FTDI Chip | TTL-232R-3V3-AJ | USB zu TTL Seriell Kabel (3,3V) – 1,8m 3,5mm Audio Klinke Datenblatt | 174-0363 | 19,80 € |
ARMbian
Igor Pecovnik, der Kopf hinter dem Projekt ARMbian, stellt seit Dezember 2013 für verschiedene ARM Plattformen fertig nutzbare Debian und Ubuntu Sytemimages bereit. Ebenso ist seine gesamte Buildumgebung bei GitHub verfügbar (meiner Erfahrung nach, fast tagesaktuell). Die Dokumentation ist ausgewogen und geht an entscheidenden Stellen auch etwas mehr in die Tiefe. Für mich ein ansprechender Projektstatus, ums sich etwas mehr damit auseinander zu setzen und die Nutzung im Alltag eines Administrators zu prüfen.
Letzte Veröffentlichung v5.24
Beginnen will ich mit einer kurzen Anleitung zum Installieren der letzten Veröffentlichung für den Cubietruck. Da es sich um ein Serversystem handeln soll, habe ich die „Legacy“ Version ignoriert. Eine 3D/2D Grafikbeschleunigung oder sogar eine GUI ist nicht erforderlich. Der Vorteil ist dann die Nutzung eines aktuellen 4.x Linux Kernel.
Zum Vorbereiten der SD Karte wird ein Linux Host benötigt. Alle weiteren Administrationsschritte werden dann auf dem Cubietruck selbst ausgeführt.
Linux Host:
- auf die ARMbian Seite für den Cubietruck gehen: http://www.armbian.com/cubietruck/
- unter Mainline 4.9.5 das SD-Kartenimage für einen Ubuntu Xenial Server herunterladen und danach entpacken (pro forma
7zip
noch installieren):cd /tmp sudo apt-get install p7zip
wget http://image.armbian.com/Armbian_5.20_Cubietruck_Ubuntu_xenial_4.7.3.7z 7z x Armbian_5.20_Cubietruck_Ubuntu_xenial_4.7.3.7z
- entpackte Daten verifizieren, siehe auch How to check download authenticity? (pro forma
gnupg
noch installieren):cd /tmp sudo apt-get install gnupg
# Igor Pecovniks öffentlichen Schlüssel vom MIT Server herunter laden gpg --keyserver pgp.mit.edu --recv-key 9F0E78D5 # Die Signatur des RAW Images verifizieren gpg --verify Armbian_5.20_Cubietruck_Ubuntu_xenial_4.7.3.img.asc # ordentliche Antwort gpg: Signature made Thu Sep 15 02:43:04 2016 CEST using RSA key ID 9F0E78D5 gpg: Good signature from "Igor Pecovnik (Ljubljana, Slovenia) <igor.++++++++++++@gmail.com>" # falsche Antwort -- kein originales Armbian Image! gpg: Signature made Sun 03 Jan 2016 11:46:25 AM CET using RSA key ID 9F0E78D5 gpg: BAD signature from "Igor Pecovnik (Ljubljana, Slovenia) <igor.++++++++++++@gmail.com>"
- eine mindestens 2GB große SD Karte über einen geeigneten Card Reader anschließen
- den richtigen Namen des zugehörigen Blockgeräts der SD Karte ermitteln (pro forma
util-linux
noch installieren):cd /tmp sudo apt-get install util-linux
lsblk
… ergibt bei mir (nur ein Auszug):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdg 8:96 1 3,7G 0 disk └─sdg1 8:97 1 3,7G 0 part /media/user/EC71-196C
… und der Name lautet dann also
/dev/sdg
- wie bei mir hier im Beispiel, alle eventuell ein gehangenen Dateisysteme dieser SD Karte aushängen:
sudo umount /dev/sdg*
… und noch mal prüfen:
lsblk
… ergibt:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdg 8:96 1 3,7G 0 disk └─sdg1 8:97 1 3,7G 0 part
- RAW Image auf das oben ermittelte Blockgerät (also die SD Karte) kopieren, siehe auch How to prepare SD card? (pro forma
coreutils
undpv
noch installieren):cd /tmp sudo apt-get install coreutils pv
pv -ptebacN Armbian.img < Armbian_5.24_Cubietruck_Ubuntu_xenial_next_4.9.5.img | \ sudo dd of=/dev/sdg oflag=sync conv=notrunc,fsync bs=1M
… verläuft mit:
Armbian.img: 154MB 0:00:19 [8,07MB/s] [==> ] 14% ETA 0:01:55
… endet mit:
Armbian.img: 1,21GB 0:02:48 [7,38MB/s] [=================================>] 100% 0+9936 Datensätze ein 0+9936 Datensätze aus 1302331392 Bytes (1,3 GB) kopiert, 168,533 s, 7,7 MB/s
Cubietruck:
- die wie oben beschrieben präparierte SD Karte in das Cubietruck einstecken
- die serielle Konsole mit dem Linux Host verbinden und ein geeignetes Terminalprogramm damit öffnen (
8N1@11500
: 8 bit, keine Parität, 1 Stopp Bit, 11500 Baud) - Cubietruck einschalten und Konsole beobachten:
U-Boot SPL 2017.01-armbian (Jan 20 2017 - 22:26:32) DRAM: 2048 MiB CPU: 912000000Hz, AXI/AHB/APB: 3/2/2 Trying to boot from MMC1 ... ... Found U-Boot script /boot/boot.scr 2352 bytes read in 211 ms (10.7 KiB/s) ## Executing script at 43100000 ... ## Loading init Ramdisk from Legacy Image at 43300000 ... ## Flattened Device Tree blob at 43000000 Starting kernel ... Uncompressing Linux... done, booting the kernel. Loading, please wait... Ubuntu 16.04.1 LTS cubietruck ttyS0 cubietruck login: _
- als
root
mit Passwort1234
anmelden, und sofort ein eigenes sicheres Passwort vergeben:cubietruck login: _ <-- root Password: _ <-- 1234 You are required to change your password immediately (root enforced) Changing password for root. (current) UNIX password: _ <-- 1234 Enter new UNIX password: _ <-- wahnsinniggeheim Retype new UNIX password: _
- neuen normalen Benutzer anlegen (Aufforderung erfolgt automatisch direkt im Anschluss):
Creating a new user account. Press <Ctrl-C> to abort Please provide a username (eg. your forename): <-- user Adding user `user' ... Adding new group `user' (1000) ... Adding new user `user' (1000) with group `user' ... Creating home directory `/home/user' ... Copying files from `/etc/skel' ... Enter new UNIX password: _ <-- geheim Retype new UNIX password: _ <-- geheim passwd: password updated successfully Changing the user information for user Enter the new value, or press ENTER for the default Full Name []: _ <-- Local User Room Number []: _ Work Phone []: _ Home Phone []: _ Other []: _ Is the information correct? [Y/n] _ <-- y Dear Local User, your account user has been created and is sudo enabled. Please use this account for your daily work from now on. root@cubietruck:~# _
- umgehend abmelden und mit dem neuen
user
Konto wieder anmelden:root@cubietruck:~# _ <-- logout Ubuntu 16.04.1 LTS cubietruck ttyS0 cubietruck login: _ <-- user Password: _ <-- geheim
… FERTIG:
____ _ _ _ _ / ___| _| |__ (_) ___| |_ _ __ _ _ ___| | __ | | | | | | '_ \| |/ _ \ __| '__| | | |/ __| |/ / | |__| |_| | |_) | | __/ |_| | | |_| | (__| < \____\__,_|_.__/|_|\___|\__|_| \__,_|\___|_|\_\ Welcome to ARMBIAN 5.24 stable Ubuntu 16.04.1 LTS 4.9.5-sunxi System load: 0.11 Up time: 7 min Memory usage: 1 % of 2014Mb IP: 192.168.10.154 CPU temp: 30°C HDD temp: 26°C Usage of /: 15% of 7.0G [ 17 updates to install: apt-get upgrade ] To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. user@cubietruck:~$ _
- Ubuntu Systempakete erneuern:
user@cubietruck:~$ sudo apt-get update [sudo] password for user: _ <-- geheim ... ... user@cubietruck:~$ sudo apt-get dist-upgrade ... ... Do you want to continue? [Y/n] _ <-- Y
Selber bauen
Die folgenden Schritte sollen nur eine minimale Hilfe für den Bau eines eigenen ARMbian Images sein und exemplarisch das Grundprinzip darstellen. ARMbian ist gegenwärtig so dynamisch, dass sich die Ausschriften oder Ergebnisse schon in wenigen Tagen anders darstellen, als hier notiert. Aktuelle Informationen können und sollten dem ARMbian Developer Guide entnommen werden.
Auf einem aktuelle Ubuntu Host mit bereits installiertem Git sind folgende Schritte notwendig:
- ein Build Verzeichnis erstellen:
mkdir build-stable cd build-stable
- ARMbian Build Library von GitHub holen und auf letzte Releas stellen:
git clone https://github.com/igorpecovnik/lib.git lib
… verläuft mit:
Cloning into 'lib'... remote: Counting objects: 13999, done. remote: Compressing objects: 100% (124/124), done. remote: Total 13999 (delta 54), reused 0 (delta 0), pack-reused 13873 Receiving objects: 100% (13999/13999), 167.28 MiB | 965.00 KiB/s, done. Resolving deltas: 100% (8753/8753), done.
… lokaler Branch vom Tag:
cd lib; git checkout -b build-v2016.09 v2016.09; cd -
- das Compile Script in das eigene Build Verzeichnis kopieren und die Kontrolle auf aktuelle Veränderungen abschalten:
cp lib/compile.sh . touch .ignore_changes
- das Compile Script mit entsprechenden Parametern aufrufen, um ein Ubuntu Xenial (16.04) mit dem aktuellen
sunxi-next
Kernel für den Cubietruck zu bauen:./compile.sh BOARD=cubietruck \ BRANCH=next \ RELEASE=xenial \ KERNEL_ONLY=no \ BUILD_DESKTOP=no \ ROOTFS_TYPE=ext4 \ COMPRESS_OUTPUTIMAGE=yes \ SEVENZIP=yes \ PROGRESS_DISPLAY=plain