Montag, 18. März 2013

Die lange Reise nach OE 2.0 auf einer DreamBox DM 800 SE HD


Hinweis: Die folgenden Informationen sind nach bestem Wissen zusammengetragen worden. Für deren Richtigkeit kann ich jedoch nicht garantieren. Verwendung auf eigene Gefahr.

Das vorinstallierte Image meiner vor kurzem gekauft Dreambox 800 SE HD war schon etwas älter: ein Enigma2-Image mit OE 1.6 von Dream (DMM) aus dem Jahr 2010 und hatte hier und da ihre Macken.

Unterdessen ist es mir gelungen ein neueres Enigma2-Image von DMM mit OE 2.0 zu installieren. Das hat viele schöne neue Features und dafür andere Macken.

Wie installiert man neue Images?

Es gibt verschiedene Möglichkeiten. Die eigentlich einfachste ist das Web-Interface des „Second Stage Loader“. Dieses kann man erreichen, wenn man beim Einschalten einer völlig (mit dem Netzschalter!) ausgeschalteten Dreambox den Stand-By auf der Vorderseite gedrückt hält.

Die 800 SE zeigt in diesem Fall auf dem LED den Text *** STOP *** an. Außerdem ermittelt sie vom DHCP-Server die IP-Adresse und zeigt diese ebenfalls an. Und wenn man genau hinsieht findet man noch die Version des Bootloaders.

In diesem Zustand ist die Box über den Browser unter dieser IP erreichbar. Auf der dort angezeigten Seite gibt es einen Link „Firmware upgrade“. Klickt man darauf erscheint eine weitere Seite, über die man das zuvor aus dem Internet besorgte passende Image auswählen und mit „Flash“ in die Box hochladen können sollte.

Oder eben nicht...

So ist es zumindest in den diversen Foren beschrieben und in Youtube-Videos gezeigt – aber bei meiner Box tat nach dem Klick auf die „Flash“-Taste nichts.

Die Lösung in meinem Fall war, dass der Bootloader zu alt war. Im Webinterface wurde seine Version mit #10 angegeben. In neueren Versionen ist dieser Bug behoben. DMM stellt eine neuere Version zur Verfügung, die man zunächst flashen muss – und das klappt auch über das Webinterface des alten Bootloaders.

Nach einem Reset lassen sich dann mit dem neuen Bootloader (z.Z. #84) die „normalen“ Images wie erwartet flashen.

Den alten Bootloader erkennt man an einem grün-grauen Hintergrund. Der Pfeil zeigt auf die Versionsnummer.



Der Hintergrund des neuen Bootloaders ist neutralgrau, und die Versionsnummer ist nun nicht mehr zu übersehen.



Zu finden unter...

Sowohl das Mini-Images für den neuen Bootloader, als auch die aktuellen 1.6er und 2.0er Images gibt es unter http://dreamboxupdate.com/. Den Bootloader für die Box findet man dort unter der Link des entsprechenden Geräts im blau hinterlegten Kasten, die anderen Images in der Tabelle darunter.

Aber noch nicht das Ende vom Lied

Die DM 800 SE HD hat einen eingebauten Flash-Speicher von 64 MB und das 2.0er Image ist ca. 60 MB groß. Da bleibt nicht mehr viel übrig. Bei einem frisch geflashten 2.0er Image bleiben gerade noch 4,6 MB frei:

root@dm800se:~# df -h 
Filesystem                Size      Used Available Use% Mounted on 
/dev/root                59.0M     54.4M      4.6M  92% / 
…

Da ist für neue Plugins nicht mehr viel Spielraum.

Hier hilft der FlashExpander. Sein Funktionsprinzip ist vereinfacht: Er kopiert den Inhalt des Verzeichnisses /usr  auf einen USB-Speicherstick und konfiguriert das System so, dass zukünftig sämtliche Zugriffe darauf auf den Stick umgeleitet werden.

Der Stick muss zuvor mit ext2, ext3 oder ext4 formatiert sein und wird durch FlashExpander zunächst vollständig gelöscht.  Das Plugin und weitere Hinweise gibt es hier.

Und was bringt das?

Natürlich kann auch der FlashExpnder nicht magisch mehr internes Flash erzeugen. Die „Umleitung“ auf den Stick hilft in soweit, dass – wie man liest – das Installieren neuer Plugins, Skins usw. hauptsächlich im Verzeichnis /usr stattfindet. Und der so verbrauchte Platz geht dann nicht mehr zu Lasten des internen Speichers.

Natürlich ist der Zugriff auf den externen Flash-Speicher langsamer als auf den internen Speicher, da der Zugriff nicht direkt, sondern über die USB-Schnittstelle erfolgen muss. Aber ich bin froh, dass es überhaupt funktioniert – und mangels Vergleich ist mir auch keine merkbare Verlangsamung aufgefallen.


Links:





Samstag, 16. März 2013

Dreambox – Erste Schritte

Ich bin seit einige Tagen Besitzer einer Dreambox DM 800 HD SE. Die Warnungen, die ich bezüglich der Dreambox zuvor im Netz gelesen hatte sind alle wahr. Die Dreambox ist ein mächtiges Spielzeug mit einem Linux-Betriebssystem. Im Unterschied zu normalen Satellitenempfänger lässt sie sich programmieren, konfigurieren und erweitern. Aber - sobald man die ausgetretenen Pfade verlässt – sind drei Dinge besonders wichtig: Geduld, Google und die Foren. Grundkenntnisse in Linux sind ebenfalls hilfreich.

Suche nach Informationen

Im Internet gibt es sehr viele Informationen zur Dreambox. Viele beziehen sich aber nicht auf das Modell, das ich vor mir habe. Die zurzeit (März 2013) verkaufte Dreambox DM 800 HD SE kommt mit der GUI (Frontend) Enigma2 und die verwendete „Firmware“ OE 1.6. Es gibt andere GUIs für die Dreambox und auch andere „Firmware“. Man muss seine Suchergebnisse also immer darauf abklopfen, ob sie auch zur gewünschten Konfiguration passen.

Die Tabelle hier zeigt einige Grundinformationen der verschiedenen Modelle.

Die in diesen Postings veröffentlichten Informationen beziehen sich – soweit nicht anders angegeben – auf die Konfiguration meiner Dreambox (Enigma2, OE 1.6). Die Versionsnummer der Firmware wird beim Einloggen über Telnet angezeigt (s.u.).

Verbindung zur Dreambox

Eines der Features, weshalb man sich wohl eine Dreambox anschafft, ist, dass sie von außen über die Ethernet-Schnittstelle zugänglich ist. Dazu muss man natürlich wissen, unter welchem Namen oder welcher IP-Adresse sie erreichbar ist.

Je nach Konfiguration des lokalen Netzwerks ist die IP-Adresse unterschiedlich. In den meisten Fällen arbeitet im LAN ein DHCP-Server, der die angeschlossenen Geräte mit einer IP-Adresse und sonstigen Informationen versorgt.

Habe ich einen DHCP-Server?

Die häufigste Konfiguration dürfte sein, dass die Box in dem LAN eingesetzt wird, in dem auch der Rechner betrieben wird, der mit dem Internet verbunden ist. Dazu ist meist ein Router des Internetanbieters vorhanden. Wenn Sie Ihren Desktop-Rechner ohne weitere Konfiguration einfach in diesen Router einstecken können und ins Internet kommen, dann ist in diesem Router ein DHCP-Server integriert.

Welche IP-Adresse hat meine Dreambox?

Die IP-Adressen, die die DHCP-Komponente dieser Router den Geräten zuweist, hängen von der Konfiguration eben dieses DHCP-Servers ab. Sie beginnen aber meist mit 192.168.0. oder 10. Welche Adresse es nun genau ist, kann man nicht vorhersagen.

Ein weiterer Dienst, den ein solcher Router normalerweise bereitstellt ist DNS. DNS ist dafür verantwortlich, dass, wenn man www.google.de in den Browser eingibt, die richtige IP-Adresse im „Internet-Telefonbuch“ herausgesucht wird und der Browser diese IP-Adresse benutzt um eine Verbindung aufzubauen.

Meine Dreambox meldet sich bei diesem Dienst mit dem Namen dm800se an. Anstatt die genaue IP-Adresse zu kennen, reicht dm800se

Zugriff über den Browser

Ich kann also auf das Web-Interface der Box im Browser mit http://dm800se zugreifen, ohne die genaue IP-Adresse zu kennen (die von Google kenne ich ja auch nicht).

Zugriff über FTP

Auf die Dateien der Dreambox kann man per FTP zugreifen. Viele Betriebssysteme haben die Möglichkeit, FTP-Server wie ein Netzlaufwerk einzubinden, auf das und von dem man dann Dateien kopieren kann.

Hierzu sind die folgenden Angaben notwendig:

IP-Adresse bzw. Name: dm800se
Benutzername: root
Passwort: (irgendetwas - nur nicht leer)

Dies sind die Standardeinstellungen.

Zugriff über Telnet

Um Befehle auf der Dreambox auszuführen, muss man auf seinem Rechner ein „Terminal“ öffnen (bei Windows heißt das „Eingabeaufforderung“). Dort verbindet man sich mit der Box mit dem Befehl

telnet dm800se

dm800se wird – wie erklärt – automatisch in die notwendige IP-Adresse (in meinem Fall 192.168.0.101) umgewandelt.
Außerdem braucht man:
Benutzername: root
Passwort: (keins – einfach mit Enter bestätigen)

Die Ausgabe sollte ungefähr so aussehen:

$ telnet dm800se
Trying 192.168.0.101...
Connected to dm800se.localdomain.
Escape character is '^]'.

OpenDreambox 1.6.0 dm800se

dm800se login: root
root@dm800se:~#


Wenn man die letzte Zeile sieht, hat alles geklappt.

Für den Anfang kann man zunächst das Dateisystem erkunden. Das ist zwar umständlicher als bei der Variante mit dem Netzlaufwerk, aber vielleicht verliert man so die erste Scheu vor der Kommandozeile, ohne die Angst zu haben, etwas kaputt zu machen.

Hinweis:
Die Tatsache, dass man als root eingeloggt ist (sei es über Telnet oder FTP) besagt, dass man „Adminstrator-Rechte“ hat. Mit dieser Macht kann man die Box auch soweit „zerspielen“, dass sie nicht mehr läuft – ein Grund weshalb diese Möglichkeit bei den meisten Smartphones nicht so einfach zu bekommen ist. Der Umstand, dass man bei der Dreambox dafür nicht einmal ein Passwort braucht, macht die Sache auch nicht sicherer.

Hier ein paar Befehle, mit denen man nichts kaputt machen kann:

pwdAusgabe des Namens des aktuellen Verzeichnisses
cdWechsel zum Home-Verzeichnis
cd /Wechsel zum Haupt-Verzeichnis
cd /media/hdd/movieBei einer eingebauten Platte werden hier normalerweise die Aufnahmen gespeichert
cd ..Ein Verzeichnis höher
cd XYZIns Unterverzeichnis XYZ wechseln
lsDateien und Unterverzeichnisse im Verzeichnis anzeigen
ls -ldto, Anzeige in Listenform
ls -ladto, zusätzlich versteckte Dateien anzeigen (die Dateinamen versteckter Dateien/Verzeichnisse beginnen mit einem Punkt)
exitTelnet-Sitzung beenden

Sonntag, 17. Februar 2013

How to store images in mp3 files using eyeD3


(This post refers to version 0.7.1 of eyeD3)

eyeD3 is a powerful python utility for manipulating id3 tags from the command line, but it also exposes these function as a python module.

Unfortunately the documentation on the site on how to use it as a python module is sparse, although it covers most use cases:

import eyed3

audiofile = eyed3.load("song.mp3")
audiofile.tag.artist = u"Nobunny"
audiofile.tag.album = u"Love Visions"
audiofile.tag.title = u"I Am a Girlfriend"
audiofile.tag.track_num = 4

audiofile.tag.save()

Information on how to access images are not readily available. But being open source, you can look at the source code to find out:

Example on how to append an image

import eyed3

# load tags
audiofile = eyed3.load("song.mp3")

# read image into memory
imagedata = open("test.jpg","rb").read()

# append image to tags
audiofile.tag.images.set(3,imagedata,"image/jpeg",u"you can put a description here")

# write it back
audiofile.tag.save()

The constant 3 means Front Cover, 4 means Back Cover, 0 for other.
The complete list can found at eyed3/id3/frames.py

"image/jpeg" is the mime type.
u"...” is a description, which must be provided in a unicode string. EasyTAG e.g. stores the original file name in this field.


Example on how to access the images

import eyed3

# load tags
audiofile = eyed3.load("song.mp3")

# iterate over the images
for imageinfo in audiofile.tag.images:
   ...

Amoung the infos available via imageinfo are:
 .image_data - image binary data
 .mime_type  - e.g. “image/jpeg”
 .picture_type - 3, 4, 0, see above
 .description - the description field

You can access the imageinfo also like this:

audiofile.tag.images[x]

Where x is the index into an array starting with 0. Eventually you will get an out of range exception.


Donnerstag, 17. Mai 2012

AVCHD and avidemux


Many current camcorders store video according to the AVCHD specification. This is a MPEG2 transport stream with video encoded in H.264 and audio in Dolby AC-3 format.

avidemux which usually is my Swiss army knife for video conversion could not handle the .MTS files produced by the camcorder - at least not the version which are currently available in the Ubuntu repositories (avidemux 2.5.x).

After visiting the avidemux homepage I was pleased to find out, that version 2.6 can handle that format.

This post describes how to compile avidemux 2.6. It mostly reflects the process laid out in the avidemux wiki with some additional information to avoid some pitfalls.

I tested it on vanilla installs of Ubuntu Natty and Precise and the compilation works like a charm. Please keep in mind that you compile from nightly builds and not all functions are implemented yet (May 2012, git revision 7949).

Requirements:

First we need git to pull the source code:

sudo apt-get install git

For the core application

sudo apt-get install libxml2-dev gcc g++ make cmake pkg-config libpng12-dev fakeroot yasm

For the GUI (QT4)


sudo apt-get install libqt4-dev

For the common plugins

sudo apt-get install libaften-dev libmp3lame-dev libx264-dev  libfaad-dev libfaac-dev

For the PulseAudio plugin

sudo apt-get install libpulse-dev

Download the source

git clone git://gitorious.org/avidemux2-6/avidemux2-6.git

Compile it

cd avidemux2-6
bash bootStrap.bash --deb

This will produce four .deb files in the ./debs folder.

Install it

cd debs
dpki -i *

Run it

avidemux3_qt4


Configure it

Sometimes you have to select the correct audio device in Edit - Preferences - Audio - AudioDevice:



Links:

avidemux homepage + wiki

Donnerstag, 29. März 2012

Current versions of blender under Ubuntu

The normal way to stay current with your blender version is to download it from 
http://www.graphicall.org/

You can use the following commands to get it using the normal Ubuntu updates via ppa:

sudo add-apt-repository ppa:cheleb/blender-svn
sudo apt-get update
sudo apt-get install blender

How-to abcde from an audio CD image

abcde is a command line CD encoder.  It rips CDs and encodes it in MP3, OGG or other formats.

By default it reads from your CD drive.  If you only have an image of your CD you are out of luck. You can either first burn the image on let abcde work on the CD, or use the only other format abcde currently accepts as input: a flac file with embedded cue sheet.

There are two common images files for audio CDs: cue/bin and toc/bin

The bin file contains the digital representation of the audio, whereas the remaining file describes where the tracks start and end.

cue/bin

You can create the flac file from cue/bin files using the following command:

flac --best --force-raw --sample-rate=44100 --channels=2 --bps=16 --endian=big --sign=signed --cuesheet=image.cue image.bin -o image.flac

Check the compression ratio after flac has finished.  A ratio of approx. 0.99 usually indicates that the byte order is reversed.  This may happen if the image was created on a Mac. If you play back the flac file, you will hear mostly noise. In this case change the byte order to

--endian=little

Normal compression ratios are in the range of 0.6 to 0.7.

You can then convert the flac file to single tagged MP3 files using:

abcde -d image.flac

toc/bin

flac can't process TOC files. You have to convert them into the CUE format. Fortunately there is an app for that: cueconvert from the cuetools package:

cueconvert image.toc image.cue

I had to find out that cueconvert will abort with a syntax error when I used toc files created by Brasero.

In this case load the toc file into a text editor and remove the CD_TEXT { … } block, if present.

And while you're at it, delete all lines containing ISRC codes, as flac does not like these.

After the conversion use the resulting CUE file as described earlier.

Sonntag, 11. Dezember 2011

Replay Gain on Sansa Clip+ with mp3gain

If you play MP3 songs from different sources in shuffle mode on a MP3 player, their difference in loudness become apparent and you are constantly keep adjusting the volume.

In order to prevent that, Replay Gain can be used. With this function the MP3 player uses loudness information in the header of a MP3 file to adjust the volume automatically.

However, the loudness information is not present by default. You need software to analyse the content and store those values in the MP3 header. Replay Gain does not change the underlying (music) data, thus avoiding loss in quality by decoding, processing and re-encoding.

A popular utility in the Linux world to calculate these values and tagging the file is mp3gain.

I used it regularly, but I was still adjusting the volume on my Sansa Clip+ ...

What I didn't know was, that by default mp3gain stores the information in the APEv2 tag which the Sansa Clip does not read. In order to be used by the Sansa Clip's Replay Gain function, it must be stored in the ID3v2 tag.

mp3gain has an option to do exactly that: -s i

I'm now using the following command to analyse and tag my MP3 files:

mp3gain -p -s i *

Where the option -p also preserves the original file date.