ELV Fibonacci-Uhr unter Linux ansprechen

Bei der ELV Fibonacci-Uhr handelt es sich um einen Bausatz für eine Fibonacci-Uhr. Diese kann über serielle Terminal-Befehle gesteuert werden. Auf der offiziellen Webseite werden allerdings nur Möglichkeiten angeboten das Ganze über Windows zu bewerkstelligen.

Die ELV Fibonacci-Uhr

Damit es unter Linux funktioniert, müssen ein paar kleinere Hürden genommen werden. In dem Gerät steckt ein CP210x-Chip für die serielle Kommunikation. Allerdings wird dieser auf Anhieb unter Linux nicht erkannt. Ein Aufruf von:

dmesg | tail -n 20

zeigt folgendes:

[   99.803450] usb 1-1: new full-speed USB device number 7 using xhci_hcd
[   99.928828] usb 1-1: New USB device found, idVendor=18ef, idProduct=e037, bcdDevice= 1.00
[   99.928865] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   99.928883] usb 1-1: Product: Fibonacci-Clock FC1
[   99.928898] usb 1-1: Manufacturer: ELV
[   99.928911] usb 1-1: SerialNumber: 162b12d76ceeec11bd1331f90f611c40

Allerdings taucht kein Gerät unter /dev/tty* auf. lsusb zeigt ebenfalls, dass ein USB-Gerät entdeckt wurde:

Bus 001 Device 007: ID 18ef:e037 ELV Elektronik AG Fibonacci-Clock FC1

Damit das Gerät nun über das serielle Interface angesprochen werden kann, wird im ersten Schritt der Treiber in den Kernel geladen:

modprobe cp210x

Danach wird temporär ein neues Gerät erstellt:

echo 18ef e037 | sudo tee /sys/bus/usb-serial/drivers/cp210x/new_id

Nun kann sich über Screen (alternativ kann auch Picocom genutzt werden) mit dem Gerät verbunden werden:

screen /dev/ttyUSB0 115200

Zum Test kann dort das Kommando v abgesetzt werden. Kommandos wie das Zeitkommando (T12:01:01) sollten am besten am Stück eingefügt werden, da sie sonst automatisch als t-Kommando erkannt werden, welches die Zeit nur anzeigt.

Verwaiste Screen-Session entfernen

Der Befehl screen dient dazu Terminal-Sitzungen zu erzeugen, welche im Hintergrund weiterlaufen können. Allerdings kann es hierbei unter Umständen passieren, das eine solche Session verweist bzw. nicht mehr reagiert. In einem solchen Fall kann die Session beendet werden. Tritt dies bei mehreren Sitzungen auf, kann der Befehl:

screen -wipe

genutzt werden. Der Befehl überprüft alle laufenden screen-Sitzungen und entfernt die Einträge von abgestürzten oder nicht mehr existierenden screen-Sitzungen.

Videos im Terminal unter Ubuntu in MP3s umwandeln

Videos können unter Ubuntu mithilfe von FFmpeg einfach in MP3s umgewandelt werden:

ffmpeg -i file.mp4 file.mp3

Mithilfe von find kann diese Operation auch für ein komplettes Verzeichnis durchgeführt werden:

find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Da diese Operation einige Zeit in Anspruch nimmt, kann das Ganze auch mittels screen ausgeführt und so in den Hintergrund verlagert werden:

screen find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Laufenden Prozess zu screen überführen

Das Kommandzeilentool screen ist praktisch, da Prozesse, welche mittels screen gestartet wurden, auch nach dem Logout weiter laufen. Problematisch ist es, wenn ein Prozess ohne screen gestartet wurde und er nachträglich in screen überführt werden soll. Hierfür wird das Tool reptyr benötigt:

apt install reptyr

Mithilfe von reptyr ist es möglich eine Anwendung an ein neues Terminal zu binden. Um nun einen Prozess zu screen zu überführen, muss erst einmal eine neue screen-Instanz gestartet werden:

screen bash

Sobald die Instanz geöffnet wurde, kann der eigentliche Prozess neu zugewiesen werden:

reptyr PID

PID ist hierbei die Prozess-ID, welche sich mittels des ps-Kommandos ermitteln lässt. Alternativ kann dafür auch top oder htop genutzt werden. Damit wurde die Terminalsitzung und mit ihr der laufende Prozess in die screen-Sitzung überführt.

Screen-Session wieder aufnehmen

Wenn man unter Linux eine Session mittels screen gestartet hat und diese später wieder aufrufen möchte, so nutzt man den Befehl:

screen -r

Unter bestimmten Bedingungen kann es vorkommen, das die Sitzung noch gebunden ist. Auf der Konsole würde das dann wie folgt aussehen:

# screen -r

There is a screen on:
	29711.ubuntu-release-upgrade-screen-window	(05/05/2016 04:09:56 PM)	(Attached)
There is no screen to be resumed matching 29711.ubuntu-release-upgrade-screen-window.

Vorkommen kann so etwas z.B. wenn man die SSH-Verbindung während einer Screen-Sitzung verliert. Damit man diese Screen-Sitzung wieder aufnehmen kann, muss die bestehende Bindung zuerst wieder gelöst werden. Dazu gibt es das Kommando:

screen -d

welches die Bindung löst. Bei mehreren offenen Sitzungen muss zusätzlich die ID der Sitzung angegeben werden. Anschließend kann die Sitzung wieder mittels:

screen -r

aufgenommen werden.