Cubieboard 3 und HDMI

Nachdem ich mein Cubieboard 3 aka Cubietruck noch mal an meinen TV per HDMI anschließen wollte, habe ich fest gestellt, dass zwar auf dem VGA Port ein Bild ausgegeben wurde, nicht aber auf dem HDMI Port.

Nach ein bisschen Suchen im Internet nach “cubietruck hdmi not working” findet man recht schnell eine Seite mit Informationen zum Cubietruck und der Bildausgabe. Die genauen Werte für die Aktivierung des HDMI Ports findet man im FEX Guide.

Installiert werden die benötigten Tools bin2fex und fex2bin unter Debian mit

apt-get install sunxi-tools

Anschließend kann man mit

bin2fex /boot/script.bin > /root/script.fex

die .bin Datei in eine les- und editbare .fex-Datei umwandeln. Nun kann man die Datei nach den eigenen Wünschen und Bedürfnissen angepasst werden. In meinem Fall wird mit screen1_output_type=1 und screen1_output_mode=10 die Bildausgabe per HDMI in 1080p60 aktiviert:

[disp_init]
disp_init_enable = 1
disp_mode = 1
screen0_output_type = 4
screen0_output_mode = 4
screen1_output_type = 3
screen1_output_mode = 10

Anschließend mit

fex2bin /root/script.fex > /boot/script.bin

die .bin-Datei mit den Änderungen neu erzeugen und neu starten. Nun sollte das Bild per HDMI dargestellt werden.

Probleme mit Windows Update KB3033929 (SHA2 Einführung)

Auch bei meinem Desktop hat KB3033929 zu Problemen geführt. Windows 7 befindet sich auf der ersten Festplatte, Linux auf der zweiten. Natürlich wird Grub zum Booten verwendet. Leider befand sich kein Windows Boot Loader mehr auf keiner der beiden Platten.

Woher bekommt man jetzt wieder ein direkt bootfähiges Windows 7?

  1. Die meisten Webseiten empfehlen die Windows 7 Installations Medien zu verwenden um das System zu reparieren. Gut, müsste man suchen und die richtigen Medien erwischen. Meine war “inkompatibel”.
  2. Diverse Linux-Tools wie install-mbr führten auch nicht zum Erfolg.
  3. Zum Glück konnte ich das Windows noch starten und das Programm EasyBCD installieren. Wie auf der Hersteller Web-Seite beschrieben, kann das Tool einen Windows 7 MBR schreiben.

Nach dem Anwenden von EasyBCD kann das Windows wieder nativ von der ersten Festplatte gestartet werden und ebenso von der zweiten Festplatte via Grub.

Problem gelöst!

Erfahrungen mit FRITZ!WLAN Repeater DVB-C

golem.de und das Magazin LinuxUser berichteten positiv über das Produkt von AVM. Mein TV-Gerät steht leider im Wohnzimmer. Manchmal möchte man aber auch in anderen Räumen TV sehen ohne auf Streams der Sender zurück zu greifen. Eventuell gibt es auch keine kostenfreien Streams mehr (siehe F1 bei RTL).

AVM verspricht für das Produkt auf der entsprechenden Webseite folgende Features:

  • WLAN im 2.4 und 5 GHz Band
  • Dual DVB-C Tuner
  • GBit Ethernet
  • Eine unverbindliche Preisempfehlung von 99€

Den Ausschlag gab die positive Berichterstattung. Also flugs bestellt. Alles notwendige Zubehör ist beigelegt:

  • Der Repeater natürlich
  • Ein TV-Kabel
  • Ein T-Stück um sowohl TV als auch den Repeater mit dem DVB-C Signalen zu versorgen.
  • Ein flaches Ethernetkabel (habe ich nicht verwendet)

Die WLAN Funktion ist als Erstes dran. Beim Einrichten wurde der Repeater in die Betriebsart “LAN-Brücke” gesetzt. Somit wird der Repeater quasi zum Access-Point und bietet die Möglichkeit 2 Funknetze (2.4 GHz Band und 5 GHz Band) aufzuspannen. Dadurch kann man auch ins hier absolut leere 5 GHz Band ausweichen und dort wesentlich schneller Verbindungen nutzen.

Fazit bisher: WLAN deutlich verbessert! (war aber auch bei einer Fritz!Box 7270 nicht so schwer)

Nun zum DVB-C. Auf der Oberfläche des Repeaters können mit VLC zu öffnende Links gefunden werden und schon kann TV geschaut werden. Radioempfang ist ebenso möglich. Eine Senderliste für VLC kann ebenfalls herunter geladen werden.

Die iOS App kann auf einem iPhone4 zwar installiert werden, die Resultate sind allerdings nicht unbedingt berauschend. Aber das ältere Telefone eventuell Schwierigkeiten haben, schreibt auch der LinuxUser.

Fazit: DVB-C funktioniert ebenso.

Zum Thema “Recording“:

Ein Ziel war neben dem Betrachten von Live-TV auch die Aufzeichnung von Sendungen. Auf dem Repeater kann in der Web-Oberfläche eine Senderliste im offenen M3U Format heruntergeladen werden. Mit ffmpeg kann mit folgendem Kommando aufgezeichnet werden:

ffmpeg -i "$IN" -acodec copy -vcodec copy "$OUT"

$IN ist hierbei ein Eintrag aus der M3U-Datei, $OUT die Zieldatei. Die Aufnahme stellt keine hohen Anforderungen an die Hardware. Ein CubieBoard3 ist stark genug um auf eine per SATA angebundene Festplatte aufzuzeichnen.

Symlinks für Geräte mit udev erstellen

USB Geräte, die in irgendeiner Form RS232 sprechen oder so tun als ob, bekommen normalerweise Einträge im dev-Verzeichnis wie

  • /dev/ttyUSB* oder
  • /dev/ttyACM*

Leider ist eine eindeutige Zuordnung (Gerät X bekommt immer /dev/ttyACM5 o.ä.) nicht gegeben. Man musst also immer erst einmal “nachsehen” (dmesg oder lsusb).

Eine Alternative bietet udev an. Dazu erstellt man udev-Regeln, am besten in einer eigenen Datei im Verzeichnis /etc/udev/rules.d.

Beispiel für einen Adapter USB auf RS232 mit einem pl2302 von Prolific Technology Inc. Dieser hat Vendor-ID 067b und Product-ID 2303.

SUBSYSTEM=="tty",ATTRS{idVendor}=="067b",ATTRS{idProduct}=="2303",SYMLINK+="pl2303"

Man erhält mit einem ls -hal /dev/ folgende Ausgabe:

lrwxrwxrwx 1 root root 7 Nov 21 18:19 /dev/pl2303 -> ttyUSB1

Man kann nun statt /dev/ttyUSB1 (wechselndes Device) immer den Symlink /dev/pl2302 (konstant) verwenden. Das lästige Suchen entfällt somit.

(Dieser Beitrag basiert auf diesem Blog und wurde natürlich angepasst)

Programme mit tmux beim Systemstart automatisch starten

Da ich für das neuste Projekt (ClimateRecording) für den Linux-Client auf der Arietta Hardware erstmal noch kein Init-Script wollte, musste eine alternative Lösung gefunden werden.

Nachdem der Client bisher manuell in tmux gestartet wurde, bot sich als Lösung die Skriptbarkeit von tmux an:

tmux new-session -d -s client_tmux
tmux select-pane -t client_tmux
tmux send-keys "cd /$PATH/ClimateRecording/linuxClient" C-m
tmux send-keys "/$PATH/ClimateRecording/linuxClient/client.py" C-m

Trägt man diese Zeilen in der Datei /etc/rc.local ein, so wird bei jedem Systemstart eine Session für tmux gestartet und darin der Linux-Client ausgeführt.

Mit

tmux a -t client_tmux

kann man dann nach Login auf der Arietta die tmux-Session aktivieren.

 

jq – Kommandozeilenbasiertes Tool für JSON

Viele Web-Dienste basieren auf REST und liefern die Resultate häufig als JSON. Das auf der Kommandozeile auszuwerten gestaltet sich wegen der verschachtelten Struktur als etwas schwerer.

EIne Lösung stellt jq dar, jq erlaubt das gezielte Abfragen der einzelnen Einträge in einem JSON String.

Beispiel:

docker inspect openvpn_server | jq '.[0].NetworkSettings.Ports | keys '

inspiziert zunächst einen Docker-Container, fragt die Ports aus den Networksettings ab und extrahiert die Keys des Objects. Das Ergebnis ist:

[
  "1194/tcp",
  "1194/udp"
]

Ein Tutorial bietet das Projekt hier: http://stedolan.github.io/jq/tutorial/. Das ausführliche Handbuch hier: http://stedolan.github.io/jq/manual/.

Update

curl -s http://api.bitcoincharts.com/v1/markets.json | jq '.[] | select(.symbol == "btcdeEUR" )'

fragt eine JSON-Datei (mit Bitcoin Informationen) und extrahiert aus dem Array das Objekt, welches den Wert btcdeEUR als symbol besitzt.

AM2302/DHT22 auf RS232 Adapter

Um der Arietta G25 einen praktischen Nutzen zu verleihen, soll sie als Logger für Temperatur und Feuchtigkeit benutzt werden. Hierzu soll der Sensor AM2302/DHT22 über UART angebunden werden.

Als Adapter habe ich mich für einen minimalistischen ATTINY45 (den hatte ich noch) entschieden.

Das entsprechende Projekt findet man auf GitHub: https://github.com/shing19m/AM2302-ATTINY45-RS232

 

Docker.io in der Praxis – OpenVPN Server

Nach dem ersten Artikel zu Docker nun ein weiterer Post zum Thema.

Diesmal direkt mit dem Erstellen eines eigenen Images. Es geht um OpenVPN, ein open-source VPN, welches eine Vielzahl von Plattformen (Windows, OS X, Linux, Android und iOS) unterstützt.

Veröffentlicht habe ich das ganze unter github.Die zentrale Datei ist die Datei Dockerfile, welche den Build des Images steuert.

FROM debian

MAINTAINER Joachim Lusiardi

RUN apt-get update; \
    apt-get -y install openvpn ;

ADD start.sh /start.sh

RUN chmod +x /start.sh

VOLUME ["/etc/openvpn"]
VOLUME ["/var/log/openvpn"]

EXPOSE 1194/udp
EXPOSE 1194/tcp

ENTRYPOINT /start.sh

FROM legt ein Basis-Image fest, hier die neuste Version von Debian.
MAINTAINER gibt den Betreuer des Images an.
RUN führt Befehle innerhalb des Images aus. Hier das Updaten der Packet-Quellen, Installieren von OpenVPN und dem Ausführbarmachen des start-Skripts.
ADD fügt eine Datei dem Image hinzu.
VOLUME gibt an, das ein Verzeichnis des Images beim Ausführen auf ein Verzeichnis des Hosts gelegt werden kann.
EXPOSE definiert welche Ports von ausserhalb des Images erreichbar sein sollen. Diese sind nicht automatisch beim Starten des Images auf eine öffentliche IP gebunden.
ENTRYPOINT gibt an, welches Kommando ausgeführt werden soll.

Weitere Detail auf github und auch unter https://registry.hub.docker.com/u/shing19m/docker-openvpn-server/.