BeagleBone Black

Aus FHEMWiki

Beim BeagleBone Black (BBB) handelt es sich um eine Entwicklungsplattform von Texas Instruments für den "Sitara" Prozessor AM3358, einem Singlecore ARM Cortex-A8. Dieser Einplatinencomputer kann unter Linux betrieben werden und ist vergleichbar mit anderen Embedded Systemen wie z.B. dem Raspberry Pi, Banana Pi oder Cubieboard.

Eigenschaft BeagleBone Black Rev.C Raspberry Pi 2 Model B Raspberry Pi 3 Model B
SOC TI AM3358 Broadcom BCM2836 Broadcom BCM2837
ARM Cortex A8 A7 A53
Takt 1.0GHz 0.9GHz 1.2GHz
RAM 512MB 1024MB 1024MB
Arbeits­speicher 4GB eMMC + microSD microSD microSD
Preis ca. (Stand April 2016) 54€ 34€ 38€

Als Besonderheit verfügt der SOC des BeagleBone Black über zwei CAN-Bus Controller. Im Lieferzustand ist Ångström-Linux installiert. Das Board kann aber auch mit Android (rowboat), Ubuntu, Debian, openSUSE, FreeBSD, OpenBSD, QNX und Windows Embedded betrieben werden. Es handelt sich um OpenSource-Hardware deren Schaltpläne und Bestückungslisten öffentlich sind. Für den Einsatz in der Gebäudeautomatisierung ist ein Gehäuse für die Montage auf Hutschienen verfügbar.

Emblem-question-yellow.svgDie folgende Beschreibung gilt nur noch für REV C Boards mit 4GB emmc.

Auf alten Revisionen mit 2GB ist hinterher lediglich ca. 180MB Speicher im emmc frei. Details sind im

Fhem-Forum beschrieben.

Debian/Ubuntu auf dem BBB (emmc) installieren

Benötigt

  • micro SD-Karte nebst Lesegerät
  • 5V Stecknetzteil mit Rundstecker oder
  • alternativ ein USB-Verbindungskabel und einen USB Port der 500mA bereit stellen kann; kann auch einfach ein USB Ladeadapter in einer Steckdose sein
  • Debian: eMMC Image BeagleBone Black (eMMC flasher) auswählen
  • Win32DiskImager wenn man mit Windows arbeitet
  • alternativ kann auch dd unter Linux verwendet werden.

Image auf SD Karte

  • Das benötigte Image (Debian oder Ubuntu) herunter laden und speichern

Windows

  • entpacken
  • micro SD Karte in PC
  • Win32DiskImager starten (er benötigt Admin Rechte, nicht über die Abfrage beim Start wundern)
  • vergewissern, dass der DiskImager den richtigen Laufwerksbuchstaben (also den der SD Karte) als Ziel hat (Device)
  • nochmal kontrollieren
  • das gerade entpackte Image auswählen
  • write
  • warten... (dauert durchaus so 5 Minuten)
  • wenn fertig, bitte SD Karte ordentlich auswerfen

Linux

  • mit unxz dekomprimieren
  • micro SD Karte mit dem PC verbinden
  • als root-User mit fdisk -l prüfen mit welchem Namen die Karte als Device verfügbar ist
  • das Image mit dd auf die SD-Karte übertragen

Details und alternative Methoden finden sich für Ubuntu oder Debian im Embedded Linux Wiki.

Image von SD Karte auf eMMC

Nachdem eine bootfähige microSD-Karte erstellt wurde, kann man den BBB damit booten:

  • micro SD Karte in den BBB
  • Netzwerk und sonst nichts angeschlossen haben
  • den kleinen Knopf auf der Seite vom USB Port drücken und halten (nicht einen beim Netzwerkanschluss)
  • jetzt Strom zuführen (es leuchtet sofort 1 einzelne blaue LED)
  • wenn die restlichen LEDs anfangen zu blinken, kann man den Knopf wieder loslassen
  • warten, bis alle LEDs ruhig und gleichmäßig leuchten

Da sich viele Anwender auf diese Weise versehentlich ihr Board neu "geflashed" haben, wurde in manchen Distributionen das betreffende Kommando auskommentiert. Der BBB bootet zwar von der microSD, aber das System wird nicht auf den internen eMMC übertragen. In diesem Fall muss man sich zuerst anmelden und das Kommando selbst ausführen (siehe unten). Das hat auch den Vorteil, dass man den Installationsprozess beobachten kann.

Weiter auf dem BBB

Der BBB meldet sich als DHCP-Klient im angeschlossenen Netzwerk an. Nun muss man die IP Adresse des BBB herausfinden. Dazu kann man

  1. auf dem Router (z.B. FritzBox) nachsehen ob ein Gerät als "beaglebone" oder "arm" angemeldet ist
  2. den DHCP bzw. DNS-Server fragen z.B. mit host beaglebone
  3. als root-User z.B. mit nmap -sP 192.168.5.* einen Nummernkreis scannen lassen und dann mit arp -a | grep -i "54:4A:16" nachsehen ob ein TI Gerät gefunden wurde.

Der BBB fällt in den MAC-Listen durch seine Adresse von Texas Instruments mit 54:4A:16 am Anfang auf. Hat man ihn gefunden, dann kann man sich mit einem SSH-Klienten (z.B. Putty) einloggen. Der Benutzername entspricht der Distribution ("debian" oder "ubuntu") und das Passwort ist "temppwd". Das Passwort kann (wie auf jedem Linux System) mit passwd geändert werden.

Per Kommando das System kopieren

Falls es sich um ein Systemabbild (Image) handelt, bei dem nicht nach dem Startvorgang das System auf den interenen Speicher (eMMC) übertragen wird, muss man es selbst erledigen. Dazu schaut man in die Datei /boot/uEnv.txt in der eine Zeile stehen sollte die so aussieht:

#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

Das darin angegebene Kommando muss man dann in der Shell selbst ausführen. In diesem Fall also

/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

Jetzt kann man der Übertragung des Betriebssystems in den internen Speicher zusehen. Danach die microSD-Karte entfernen und den BBB neu starten.

System identifizieren

Nach der Installation eines neuen Betriebssystems oder wenn ein BBB vorliegt und das System ist nicht bekannt, kann man auf der "Hundemarke" nachsehen. Bei den BeagleBones hat es sich eingebürgert eine Datei /etc/dogtag anzulegen, in der das System bezeichnet ist z.B.:

BeagleBoard.org Debian Image 2015-03-01

Perl und Fhem installieren

Jetzt geht es weiter, ziemlich genau wie am RasPi auch:

# Timezone einstellen
sudo dpkg-reconfigure tzdata
# OS auf aktuellen Stand bringen (kann länger dauern):
sudo apt-get update
sudo apt-get dist-upgrade
# Perl Interpreter und Bibliotheken installieren
sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl

Die aktuellste, stabile Version herunter laden. Die Version im folgenden Befehl bitte entsprechend anpassen:

wget  http://fhem.de/fhem-X.Y.deb
# Das Debian-Paket installieren
sudo dpkg -i fhem-X.Y.deb

Jetzt sollte man auf der IP Adresse des BBB unter der Portnummer 8083 von fhem begrüßt werden z.B.

http://192.168.10.43:8083

Inbetriebnahme

Zugangsdaten

Wie immer gibt es auch hier ein paar Dinge die man zu Beginn erledigen sollte. Man erhält zunächst die Meldung

 SecurityCheck:

 WEB,WEBphone,WEBtablet has no basicAuth attribute.
 telnetPort has no password/globalpassword attribute.

 Restart FHEM for a new check if the problem is fixed,
 or set the global attribute motd to none to supress this message.

die einen darauf hinweist, dass fhem in seiner Voreinstellung keinen Schutz gegen unbefugten Zugriff hat. Es laufen vier Dienste:

  1. WEB
  2. WEBphone
  3. WEBtablet
  4. telnet

Die alle derzeit ohne Passwort benutzt werden können. Die Seite "Erste Schritte in fhem" zeigt hier auch nur wie man diesen Zustand ignoriert indem man die Meldung mit dem fhem-Kommando

attr global motd none

unterdrückt. Alternativ wird auf die Kommandoreferenz von fhem verwiesen.

Um für eine Inbetriebnahme schnell einen halbwegs ordentlichen Zustand zu erreichen, soll hier das setzen eines Passworts für die angegebenen Dienste gezeigt werden. Dazu loggt man sich per SSH auf dem BBB ein und lässt sich Zugangsdaten (Benutzername und Passwort) in einer Base64-Kodierung erzeugen:

echo -n root:ganz_geheimes_passwort | base64

als Ausgabe erhalten wir

cm9vdDpnYW56X2dlaGVpbWVzX3Bhc3N3b3J0

Mit dieser Ausgabe können wir jetzt für jeden der vier Dienste ein Kommando im fhem eingeben mit dem das Passwort aktiviert wird.

attr WEB basicAuth cm9vdDpnYW56X2dlaGVpbWVzX3Bhc3N3b3J0
attr WEBphone basicAuth cm9vdDpnYW56X2dlaGVpbWVzX3Bhc3N3b3J0
attr WEBtablet basicAuth cm9vdDpnYW56X2dlaGVpbWVzX3Bhc3N3b3J0
attr telnetPort password ganz_geheimes_passwort

Jetzt noch auf Save config klicken und diese Kommandos stehen ab sofort in der Konfigurationsdatei /opt/fhem/fhem.cfg.

Info blue.png
VORSICHT: Die Konfigurationsdatei ist für jeden Benutzer der sich auf dem Gerät anmelden kann lesbar. Die Base64-Kodierung bietet keinen Schutz, da sie (in Gegensatz zu Hash-Codes) umkehrbar ist (base64 -d). Das Telnet-Passwort steht im Klartext in der Konfigurationsdatei.


Wer base64 nicht installiert hat kann diese Arbeit auch vom fhem erledigen lassen.

attr WEB basicAuth { "$user:$password" eq "root:ganz_geheimes_passwort" }

Allerdings stehen die Passwörter dann (wie bereits bei Telnet) sogar im Klartext in der Konfigurationsdatei.

Wird fhem jetzt neu gestartet, ist die Warnmeldung weg und der Zugang geregelt.

service fhem stop
service fhem start

Sprache

Beim Starten wird ggf. die Meldung

Starting fhem...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "de_DE.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

oder eine ähnliche Meldung ausgegeben. Das passiert wenn mit einer nicht installierten Spracheinstellung gearbeitet wurde. Der Befehl locale -a zeigt die installierten Spracheinstellungen. Im Beispiel oben fehlt also de_DE.UTF-8. Mit dpkg-reconfigure locales wird eine Interaktive Spracheinstellung vorgenommen, dort kann man die fehlende Kombination auswählen und erzeugen lassen.

Jetzt probeweise fhem nochmal neu starten und die Meldung sollte nicht wieder auftreten.

Links