The latest posts in full-text for feed readers.
Sicherungskopien von DVD-Filmen liegen bei uns auf einem NAS, welches per NFS auf der Dreambox DM7080HD verfügbar gemacht wird. Aus Sicherheitsgründen ist der NFS-Ordner im NAS für die Dreambox als "nur lesen" markiert, damit ein aus versehenes "Löschen" auf der Dreambox nichts kaputt machen kann.
Leider führt das dazu, daß der Abspielfortschritt bei Filmen nicht gespeichert wird, denn das erfolgt bei der Dreambox über .meta-Dateien, die im gleichen Verzeichnis gespeichert werden wie die Filmdatei.
Eine Lösungsmöglichkeit wäre die Überlagerung des Filmverzeichnisses vom NAS mit einem schreibbaren, so daß die Abspielstati zwar scheinbar im gleichen Verzeichnis, intern jedoch woanders gespeichert werden. Der Linux-Kernel der DM7080HD hat Version 3.4, overlayfs ist allerdings erst ab 3.18 im Kernel enthalten.
Seitdem ich mein altes Synology-NAS durch eine Kombination aus Homeserver (Bereitstellung der NFS-Freigaben) und Backupserver (tägliche Sicherungen vom Homeserver) ersetzt habe, ist eine andere Lösung möglich: overlayfs direkt auf dem Server, und die Dreambox bindet die Freigabe im Lese+Schreibmodus ein.
+----------+ +--------------------------------+ | Dreambox | --[Netzwerk]-> | NFS-Freigabe "dreambox-videos" | +----------+ | | | | [überlagert] | | v | | normaler Filmordner | +--------------------------------+
Damit kann die Dreambox ihre Metadateien in die Freigabe "dreambox-videos" des Homeservers schreiben, während die Filme darunter vor Veränderungen geschützt sind.
Ordnerstruktur auf dem Server:
/data ├ videos # Originaler Filmordner └ dreambox ├ overlay-working # temporäres Verzeichnis für das Overlay ├ videos # NFS-Freigabe für die Dreambox └ videos-changes # Dateien, die die Dreambox schreibt
Das Overlay wird automatisch beim Start des Server bereitgestellt:
overlay /data/dreambox/media x-systemd.requires-mounts-for=/data,nfs_export=on,lowerdir=/data/videos,upperdir=/data/dreambox/videos-changes,workdir=/data/dreambox/overlay-working
Wichtig ist hier das nfs_export=on, weil es sonst zu folgendem Fehler kommt:
$ exportfs -r exportfs: /data/dreambox/media does not support NFS export
Der NFS-Export ist folgendermaßen konfiguriert:
/data/dreambox/videos dreambox(rw,sync,no_wdelay,no_subtree_check,no_root_squash,insecure_locks,anonuid=0,anongid=0)
Published on 2023-12-27 in dreambox
Mein Satellitenreceiver Dreambox DM7080HD wird per Infrarotfernbedienung gesteuert, allerdings will man ab und zu auch mal per Suchbegriffe eintippen - das passiert per T9 und ist sehr nervig.
Schön wäre es deshalb, wenn man das Handy/Tablet einfach per Bluetooth mit der Dreambox koppeln und als Tastatur verwenden könnte. (Eigentlich wollte ich das schon 2016.)
Es gab im Dreambox-Forum immer wieder Fragen, ob die 7080 denn nun Bluetooth unterstützt. Die Fakten sind folgende:
[ 0.064000] Bluetooth: Core ver 2.16 [ 0.064000] NET: Registered protocol family 31 [ 0.064000] Bluetooth: HCI device and connection manager initialized [ 0.065000] Bluetooth: HCI socket layer initialized [ 0.065000] Bluetooth: L2CAP socket layer initialized [ 0.066000] Bluetooth: SCO socket layer initialized ... [ 0.886000] Bluetooth: RFCOMM TTY layer initialized [ 0.887000] Bluetooth: RFCOMM socket layer initialized [ 0.887000] Bluetooth: RFCOMM ver 1.11 [ 0.888000] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 0.889000] Bluetooth: BNEP filters: protocol multicast [ 0.889000] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 ... [ 5.016000] input: dreambox remote control (bluetooth le) as /devices/virtual/input/input5
Laut einem Händler kann die seit 2018 verfügbare Bluetooth-Fernbedienung RCU-BT ohne Adapter an der 7080 genutzt werden.
Fernbedienung BT/IR ist für folgende Dreamboxen geeignet:
[...]
BT Betrieb:
- DM 7080 HD
- DM 900 UHD (nur in Verbindung mit BT Dongle)
Wenn man auf der Dreambox per SSH bluetoothctl startet dann sagt es einem, daß keine Bluetooth-Adapter verfügbar sind.
Die Erweiterung geminibluetooth zeigt keinerlei Adapter an, wenn man nicht zusätzlich einen USB-Bluetooth-Adapter ansteckt.
Meine Vermutung ist deshalb, daß die DM7080HD zwar schon Bluetooth eingebaut hat, das aber so eingeschränkt ist, daß man es nur für die offizielle Fernbedienung und Tastatur nutzen kann.
Ein weiterer Forenpost bestätigt das:
Bluetooth wird in Zukunft nur für eine Fernbedienung nutzbar sein (Aussage DMM). Für alles andere wird, nach wie vor, ein BlueTooth-Dongle [...] erforderlich sein.
Published on 2023-01-22 in dreambox
My Dreambox DM7080HD satellite receiver from 2014 shipped with a USB Wi-Fi adapter:
It has the FCC ID MQ4WU5501 which tells it that is has been made by Abocom Systems Inc.
When attaching it to a Linux computer we see:
Bus 001 Device 037: ID 07b8:8188 AboCom Systems Inc AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter]
usb 1-2: new high-speed USB device number 37 using xhci_hcd usb 1-2: New USB device found, idVendor=07b8, idProduct=8188, bcdDevice= 2.00 usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2: Product: RTL8188S WLAN Adapter usb 1-2: Manufacturer: Manufacturer Realtek usb 1-2: SerialNumber: 00e04c000001 rtl8192cu: Chip version 0x10 rtl8192cu: Board Type 0 rtl_usb: rx_max_size 15360, rx_urb_num 8, in_ep 1 rtl8192cu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin ieee80211 phy2: Selected rate control algorithm 'rtl_rc' usb 1-2: firmware: direct-loading firmware rtlwifi/rtl8192cufw_TMSC.bin rtl8192cu 1-2:1.0 wlx407b17034d61: renamed from wlan0
The debian package firmware-realtek is required.
It is a PROLiNK WN2001 Wireless Nano USB Adapter with the RTL8188S Realtek chip. Only Wi-Fi, no Bluetooth.
Published on 2023-01-22 in dreambox, hardware
Zwecks besseren Tons nutzen wir eine Micro-Stereoanlage als Lautsprecher für unseren Fernseher, und zwar eine alte Sharp XL-HP434H von 2004. Wenn man die Dreambox 7080HD anschaltet, wird der Fernseher dank HDMI-CEC automatisch angeschaltet. Bei der Musikanlage ist das leider nicht so, weshalb immer eine 2. Fernbedienung genutzt werden musste.
Um die Schwibbögen zentral schalten zu können, habe ich in den letzten Wochen mehrere Shelly-Geräte in Unterputzsteckdosen verbaut. Einen hatte ich noch übrig, und damit wollte ich die Stereoanlage per Netzwerk schaltbar machen.
Die einfache Lösung wäre ein Shelly Plug S gewesen, ein Zwischenstecker zwischen Stereoanlagenstecker und Steckdose.
Das hat allerdings den Riesennachteil, daß man die Anlage nicht mehr am An-/Ausschalter und auch nicht mit der Fernbedienung schalten kann, weil der Strom weg ist. Außerdem verliert die Anlage nach ein oder zwei Tagen ohne Strom die Einstellungen, so daß man immer manuell auf den externen Eingang umschalten müsste.
Die schönere Lösung ist es, den An-/Ausschalter der Anlage mit dem Shelly zu schalten.
Das Drücken der Knöpfe an der Anlagenfront schließt kurzzeitig einen Stromkreis, was von der Anlage dann als Schaltbefehl registriert wird. Der Shelly müsste also nur denselben Stromkreis schließen, den der On/Off-Schalter auch schließt.
Einmal die Anlage aufgeschraubt und ... gesehen, daß auf der Rückseite der Leiterplatte mit den Knöpfen sind sehr viele Lötstellen sind. Welche sind nun die, die ich brauche?
Im Internet fand ich das Service Manual Sharp XL-HP434H, in dem alle Schaltpläne und die beschrifteten Leiterplatten aufgeführt sind.
Seite 35 (6-15) zeigt die Leiterplatte mit den Knöpfen PWB-B1:
Nachdem das klar war, baute ich die Leiterplatte aus und lötete ein von einem alten Trafo geklautes Kabel an. Nun konnte ich die Anlage durch Verbinden der beiden Kabelenden an- und ausschalten:
Als nächstes musste der Shelly in die Anlage eingebaut und vor allem auch mit Strom versorgt werden. Intern nutzen die Shellys 12V Gleichstrom, können aber dank eingebautem Transformator auch direkt an 230V Wechselstrom angeschlossen werden. Dann werden sie ziemlich warm - die Shelly 1 Plus in den Steckdosen haben im Normalbetrieb 55-60°C.
Wenn ich also den in der Stereoanlage verbauten Trafo mitnutzen könnte, würde das weniger Strom verbrauchen. Die Schaltung des Trafos ist im Servicehandbuch auf Seite 25 (6-5) zu sehen:
Ganz rechts ist der Stromanschluß, und der führt zu zwei Transformatoren: Main und Sub. Der Strom vom Haupttransformator kann durch ein Relais getrennt werden, während der Untertransformator als einziger immer Strom hat. Der Untertransformator liefert den Strom im Standby-Modus - schaltet man die Anlage an, wird das Relais geschaltet und der Haupttrafo bekommt auch Strom.
Das reduziert die Auswahl an Stromquellen für den Shelly also auf den Standby-Stromkreis, und zwar auf die links rot markierten Anschlüsse, und von denen sogar nur die 5 und 6. Die liefern allerdings nur 5,6 Volt, was zu wenig für den Shelly ist :-(
Da blieb nun nichts anderes übrig als den Shelly an die 230V zu hängen, auch wenn er dann seinen eigenen Trafo nutzen muss.
An der Rückseite war noch genug Platz, und aus Mangel an kleinen langen Schrauben bohrte ich 3 Löcher in die Rückwand und band den Shelly mit einem längerem Verpackungsdraht fest:
Alles wieder zusammenschrauben, Stecker in die Steckdose, mit dem Shelly-WLAN verbinden und übers Webinterface schalten. Klappt tadellos.
Der An-/Ausschalter liefert immer nur einen Stromstoß, während der Shelly den Stromkreis permanent anschaltet. Aus diesem Grund habe ich in den Timer-Einstellungen das Auto off auf 1 Sekunde gesetzt.
Letztes Puzzlestück war noch die Dreambox, die die Anlage beim Aufwachen aus dem Standby die Anschalt-URL des Shelly aufruft. Im Dreambox-Forum wurde ich fündig: Es gibt das Plugin ExecuteOnPowerEvent, bei dem man ein Script auf der Dreambox oder eine URL aufrufen lassen kann, wenn die Dreambox aufwacht oder schlafen geht:
Alles in allem hat die Aktion ~5 Stunden gedauert. Dafür erspart sie mir jetzt immer 5 Sekunden beim Anschalten des Fernsehers :) Nicht zu unterschätzen natürlich der Erfahrungsgewinn und die Weiterbildung der Kinder in Sachen Stromkreis.
Published on 2021-12-19 in dreambox, hardware
I wanted to copy some movies to an external disk in preparation for our summer vacation, and attached an external USB3 disk to our Dreambox satellite receiver.
Nothing happened; the disk did not get automatically mounted. Manually mounting also failed. dmesg told me:
usb 10-2: new SuperSpeed USB device number 2 using xhci_hcd scsi2 : usb-storage 10-2:1.0 scsi 2:0:0:0: Direct-Access TOSHIBA External USB 3.0 0 PQ: 0 ANSI: 6 sd 2:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 2:0:0:0: [sdb] Write Protect is off sd 2:0:0:0: [sdb] Mode Sense: 43 00 00 00 sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sdb: sdb1 sd 2:0:0:0: [sdb] Attached SCSI disk EXT4-fs (sdb1): couldn't mount RDWR because of unsupported optional features (400)
I formatted the disk on a Debian unstable (kernel 4.19), and it enabled the metadata checksum feature that is not supported by the DreamOS 2.6's kernel (3.4-4.0-dm7080). I had to disable that feature on the disk with my laptop:
$ e2fsck -f /dev/sdb1 $ tune2fs -O ^metadata_csum /dev/sdb1
Source: Couldn't mount RDWR because of unsupported optional features (400)
The next mount try also resulted in an error:
usb 10-2: new SuperSpeed USB device number 3 using xhci_hcd scsi3 : usb-storage 10-2:1.0 scsi 3:0:0:0: Direct-Access TOSHIBA External USB 3.0 0 PQ: 0 ANSI: 6 sd 3:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 3:0:0:0: [sdb] Write Protect is off sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00 sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sdb: sdb1 sd 3:0:0:0: [sdb] Attached SCSI disk JBD2: Unrecognised features on journal EXT4-fs (sdb1): error loading journal
So kernel 4.19 also adds new journal data.
$ tune2fs -l /dev/sdb1 tune2fs 1.43-WIP (18-May-2015) Filesystem volume name: videos Last mounted on: /media/cweiske/videos Filesystem UUID: 7e07e565-99c7-4ea9-b2a3-1eb02ba23572 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 61054976 Block count: 244190208 Reserved block count: 12209510 Free blocks: 210555405 Free inodes: 61042713 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 965 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Fri Feb 15 20:05:55 2019 Last mount time: Sat Jul 13 10:51:53 2019 Last write time: Sat Jul 13 11:02:12 2019 Mount count: 0 Maximum mount count: -1 Last checked: Sat Jul 13 11:02:12 2019 Check interval: 0 (<none>) Lifetime writes: 121 GB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 32 Desired extra isize: 32 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 83196fde-051e-43c5-967c-7aa3935c571e Journal backup: inode blocks
Instead of finding out which journal feature I had to disable, I disabled the whole journal:
$ tune2fs -O ^has_journal /dev/sdb1
I could now finally mount the disk on the Dreambox.
Published on 2019-08-06 in dreambox, linux
Two years after its last release, I finally found the time - and a reason - to rewrite the playVideoOnDreambox browser extension, making it compatible with newer Firefox versions.
The extension adds a button to Firefox that sends the currently playing video to the Dreambox satellite receiver - useful for showing a Youtube video to the family on the large TV screen.
Dreambox' media player does not support playing websites, so the extension needs to extract the URL of the video embedded on the current page. I did not implement this myself, but rely on youtube-dl for this.
Mozilla dropped support for "classic" extensions in Firefox 57; you have to use the "web extension" format now that severely restricts the things you can do. The main problem for me is that extensions cannot execute other programs on the computer anymore (unless the are registered manually with the browser and speak a certain protocol). This broke the my old extension that called youtube-dl directly.
I could have written a youtube-dl proxy script that users would need to register in their browser and that speaks said protocol. But instead I made the Firefox extension rely on the playVideoOnDreambox proxy application, just as the Android app does.
So when your browser shows some video and you click "Play on Dreambox", the extension sends the page URL to the proxy server web app running on some machine in your network. This proxy calls youtube-dl to find the video URL, and then instructs the Dreambox to play the video.
You can download the playVideoOnDreambox firefox extension version 0.6.0 from its homepage or the Mozilla Add-Ons page.
You migh be interested in the playVideoOnDreambox Android app that lets you "share" the video with your satellite receiver.
Published on 2019-03-14 in dreambox, php, video, web
Für unsere Dreambox DM7080 HD gibt es eine "DVD-Player"-Erweiterung enigma2-plugin-extensions-dvdplayer, mit der man DVDs abspielen kann.
Nachdem ich ein externes USB-DVD-Laufwerk angeschlossen hatte, ging genau nichts. Ich bekam die Speichergeräteliste angezeigt, aber das externe Laufwerk fehlte.
Also per SSH auf die Dreambox und ins dmesg geschaut:
usb 9-2: new high-speed USB device number 4 using xhci_hcd
Das wars; nichts weiter als diese eine Zeile. Im Internet hatte ich gelesen, daß das DVD-Laufwerk unter /autofs/sr0 verfügbar ist - allerdings gab es diese Datei bei mir nicht.
Meine Vermutung war nun, daß die Dreambox einfach keinen Treiber für das Laufwerk hatte. Ich schloß es an den Laptop an und schaute da ins dmesg:
usb 9-2: new high-speed USB device number 5 using xhci_hcd scsi2 : usb-storage 9-2:1.0 usbcore: registered new interface driver ums-cypress scsi 2:0:0:0: CD-ROM TSSTcorp CDDVDW TS-L632H fs03 PQ: 0 ANSI: 0 sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray cdrom: Uniform CD-ROM driver Revision: 3.20 sr 2:0:0:0: Attached scsi CD-ROM sr0
Hier gab es dann auch /dev/sr0, allerdings wusste ich nicht, welcher Treiber denn nun genutzt wurde.
Mit Hilfe von lsmod kann man sich alle geladenen dynamischen Kernelmodule angzeigen lassen, und das tat ich. Da die Liste aber sehr lang und ich faul war, packte ich sie in eine Datei, zog das Laufwerk ab und generierte die Liste nochmal. Die beiden Dateien diffte ich dann:
$ lsmod > module-mit-laufwerk
# usb-laufwerk abziehen
$ lsmod > module-ohne-laufwerk
$ diff module-*
2,6d1
< sr_mod 28672 0
< cdrom 69632 1 sr_mod
< ums_cypress 16384 0
< uas 28672 0
< usb_storage 69632 2 ums_cypress,uas
125c120
< usbcore 290816 7 xhci_hcd,ums_cypress,usb_storage,ath3k,btusb,xhci_pci,uas
---
> usbcore 290816 4 xhci_hcd,ath3k,btusb,xhci_pci
127c122
< scsi_mod 249856 7 ums_cypress,sd_mod,usb_storage,uas,libata,sg,sr_mod
---
> scsi_mod 249856 3 sd_mod,libata,sg
Und hier sehen wir ... ums_cypress. Schauen wir mal in die Liste der verfügbaren Kernelmodule auf der Dreambox:
$ apt search cypress
Sorting... Done
Full Text Search... Done
kernel-module-cypress-m8/unknown 3.4-r1.28 mipsel
cypress-m8 kernel module
kernel-module-ums-cypress/unknown,now 3.4-r1.28 mipsel
ums-cypress kernel module
$ apt install kernel-module-ums-cypress
Nachdem ich das USB-Laufwerk frisch an die Dreambox angesteckt hatte, hat die DVD-Player-Erweiterung auch direkt die DVD abgespielt.
.. zumindest bis zum Kopierschutzhinweis, danach ging es nicht weiter. Die DVD ist "kopiergeschützt", bzw. abspielgeschützt, denn kopieren kann man die Daten problemlos.
Schon vor 19 Jahren wurde dieses Verschlüsselungssystem geknackt, und heute existiert die Bibliothek "libdvdcss2", mit der auch kopiergeschützte DVDs abgespielt werden können.
Leider gibt es diese nicht in der Standardpaketliste der Dreambox, deshalb musste ich mir das Paket von newnigma herunterladen: newnigma feed -> OE 2.5 mips32el -> libdvdcss2_1.3.0-r0.1_mipsel.deb
Diese Datei dann noch mit dpkg -i auf der Dreambox installiert, den DVD-Player beendet und wieder gestartet und .. alles funktioniert.
Published on 2018-12-26 in dreambox, linux
Ich hab es noch nie auf einen Chaos Communication Congress geschafft, auch auf den letztjährigen 34C3 nicht. Trotzdem schaue ich mir sehr gern die Videos an, die auf media.ccc.de veröffentlicht werden. Letztes Jahr machte ich das mit der playVideoOnDreambox-Android-App, dafür muss man aber immer das Handy dabei haben und die Videos raussuchen.
Um das ganze angenehmer zu gestalten, habe ich einen Patch für die Dreambox-MediaPortal-Extension gebaut, welches die media.ccc.de-API integriert und alle Kongresse und deren Videos abspielbar macht.
Damit man den Überblick behält, werden bereits gesehene Videos auch als solche angezeigt. Die letzten 3 Konferenzen, in denen man Videos angeschaut hat, werden zur einfacheren Navigation ganz oben in der Konferenzliste anzeigt.
Aktuell ist der Patch nur im
ccc-Branch
meines mediaportal-Git-Repositories zu finden.
Ich hoffe allerdings, daß der Patch in die offizielle Erweiterung
aufgenommen wird.
Seit 2018-01-17 ist das ganze als "CCC Media" in der Kategorie "Fun" im offiziellen Mediaportal-Paket zu finden.
Published on 2018-01-03 in dreambox, video
Auf der Dreambox nutze ich Advanced Movie Selection zum Auswählen und Verwalten der aufgenommenen Filme.
Seit einiger Zeit zeigte AMS allerdings immer nur 1.1 Terabyte an freiem Speicher an, obwohl eigentlich nicht viele Filme auf der 3 TiB-Platte waren. Den Papierkorb hatte ich geleert aber das half nichts.
Per SSH sah ich, daß in den Unterordnern noch viele .trash-Dateien rumlagen, die trotz Leeren des Papierkorbs nicht gelöscht worden waren.
In den Einstellungen der Erweiterten Filmauswahl gibt es auf Seite 4 die Option Papierkorb Datei(en), die standardmäßig auf Aktuelles Filmverzeichnis gestellt ist.
Stellt man sie auf Aktuelles Filmverzeichnis und Unterverzeichnisse, dann sieht man im Papierkorb auf einmal alle Dateien und kann sie mit einem Mal löschen.
Published on 2016-06-30 in dreambox
Our Dreambox 7025+ satellite receiver is not able to play many video formats because of its slow MIPS processor. Watching non-mpeg2 videos on our TV is thus only possible via its VLC plugin enigma2-plugin-extensions-vlcplayer, which requires a VLC media player process with HTTP interface running on another machine.
Since it is lame to always start VLC on the laptop just to watch videos on TV, I chose to run a VLC daemon on our home server. I replaced the old VIA Epia 500 machine with a Thinkpad last year, so it is fast enough to do the transcoding.
Using VLC as daemon on a headless machine means it should always be running, be easy to start/stop and automatically restart in case of a crash.
After setting up tinydns some weeks ago, I knew that daemontools are the right solution to turn the vlc client into a proper daemon.
Install daemontools to get svc and svscan.
$ apt-get install daemontools daemontools-run
Create a user vlcd that VLC should run as:
$ useradd -M -d /nohome -s /bin/false -u 521 -g nogroup vlcd
Setup the daemon configuration:
$ mkdir /var/log/vlcd
$ chown vlcd /var/log/vlcd
$ mkdir /etc/service/vlcd /etc/service/vlcd/log
Create the daemon script in /etc/service/vlcd/run:
&1
exec setuidgid vlcd vlc -I http --http-port 8081
]]>
Create the logger in /etc/service/vlcd/log/run:
Make both scripts executable:
$ chmod +x /etc/service/vlcd/run /etc/service/vlcd/log/run
The daemon will be started now, but VLC is not yet installed. So better stop it for now, or daemontools will try to run it again and again:
$ svc -d /etc/service/vlcd
Setting up vlc-nox on Debian squeeze (6.0.5) turned out to be a real problem, because it did not decode MPEG4 videos.
Note that packages from deb-multimedia.org are not needed!
Enable the Debian backports repository:
/etc/apt/sources.list.d/backports.list
$ apt-get update
]]>
The backports line for Wheezy (Debian 7) is
deb http://ftp.debian.org/debian/ wheezy-backports main
Install vlc-nox (since we're on a headless server) from backports:
$ apt-get -t squeeze-backports install vlc-nox
It should be version 2.0.3 or higher.
Start the daemon:
$ svc -u /etc/service/vlcd
$ svstat /etc/service/vlcd
/etc/service/vlcd: up (pid 24912) 2 seconds
The log is /var/log/vlcd/current
In case of problems, add -vvv to the VLC parameters in /etc/service/vlcd/run and restart the service (-d, then -u).
When trying to view MPEG4 videos, I got the following debug output:
stream_out_transcode stream out debug: creating video transcoding from fcc=`mp4v' to fcc=`mp2v' main generic debug: no decoder module matching "any" could be loaded stream_out_transcode stream out error: cannot find video decoder stream_out_transcode stream out error: cannot create video chain main decoder error: cannot create packetizer output (mp4v)
You need ffmpeg for it, also from backports. I got version 0.8.5-1:
$ apt-get -t squeeze-backports install ffmpeg
Unfortunately, this does not help at all - VLC does not use the ffmpeg library, libavcodec, because of a bug in Debian: vlc-nox does not include /usr/lib/vlc/plugins/codec/libavcodec_plugin.so .
I noticed that by comparing the output of a working VLC client with the "broken" one on the server:
(working)
$ LC_ALL=C vlc --list|grep avcodec
avcodec FFmpeg audio/video decoder
avcodec FFmpeg audio/video encoder
avcodec FFmpeg deinterlace video filter
$
(not working)
$ setuidgid vlcd vlc --list|grep avcodec
$
Reason for avcodec not being listed is the missing plugin libavcodec_plugin.so, which is available in the normal vlc package. Since I wanted to keep the headless VLC version, I only downloaded and extracted it:
$ mkdir /tmp/deb
$ cd /tmp/deb
$ aptitude -t squeeze-backports download vlc
$ dpkg-deb -x vlc_2.0.3-1~bpo60+1_amd64.deb .
$ cp usr/lib/vlc/plugins/codec/libavcodec_plugin.so /usr/lib/vlc/plugins/codec/
$ svc -d /etc/service/vlcd
$ svc -u /etc/service/vlcd
vlc --list contains avcodec now! When playing mp4 videos, you'll get no errors anymore:
stream_out_transcode stream out debug: creating video transcoding from fcc=`mp4v' to fcc=`mp2v' main generic debug: looking for decoder module: 27 candidates avcodec generic debug: libavcodec initialized (interface 0x352300) avcodec generic debug: trying to use direct rendering avcodec generic debug: allowing 3 thread(s) for decoding avcodec generic debug: ffmpeg codec (MPEG-4 Video) started avcodec generic debug: using frame thread mode with 3 threads
main libvlc warning: cannot load module `/usr/lib/vlc/plugins/codec/libavcodec_plugin.so' (libva-x11.so.1: cannot open shared object file: No such file or directory)
You have to install libva-x11-1.
Published on 2013-03-07 in dreambox, linux, server