Posts by Frodo

    Die letzten 3 mal ging es und natürlich gehen noch andere Wege. Die alle zu erklären würde aber die meisten überfordern.

    Das genannte Skript ist im übrigen auch auf meinen Mist gewachsen, nur funktioniert auch das nur solange die Sourcen minimal verändert wurden.


    Mir ging es erst einmal darum, dass man einen Einstieg zum selbst bauen bekommt.


    Spätestens wenn man mehr damit herumspielt wird man sich ein eigenes Repository im Launchpad erstellen und so weiter.

    Sorry, wenn es etwas länger dauert. Ich habe meine VDR Installationen nur noch zum Spaß und nutze seit geraumer Zeit VU+ Receiver in meiner Familie.

    Deshalb merke ich Probleme erst spät.


    Egal die neue Version baut gerade.


    Es ist aber sicherlich von Vorteil zu wissen wie man ein Paket baut.


    Als erstes möchte ich auf folgen Beitrag verweisen der schoneinmal für die Grundvorraussetungen sorgt:

    [gelöst] [0.4] VDR selbst übersetzen (für Patch von kls)?

    Der ist schon etwas älter war aber mein Einstieg und funktioniert noch heute.


    Als erstes muß man seinem Ubuntu beibringen das es auch Source Pakete aus den Repositories bekommt.

    Das geht auf zwei Wege entweder man geht in die entsprechende Datei unter /etc/apt/source.list bzw. /etc/apt/source.list.d/... und aktiviert bzw. fügt die Zeilen deb-src hinzu oder im Fall von Bionic und der Ansible Installation führt man die folgenden Befehle aus:

    Code
    1. # Sourcen von meinem Paket z.B. vdr-epg-daemon
    2. sudo add-apt-repository ppa:frodo-vdr/experimental-main-yavdr -s -y
    3. # Sourcen vom Ansible vdr-epg-daemon
    4. sudo add-apt-repository ppa:yavdr/experimental-main -s -y
    5. # Sourcen vom VDR und dessen Plugins (Für vdr-epg-daemon wird das nicht benötigt aber für Plugins)
    6. sudo add-apt-repository ppa:yavdr/experimental-vdr -s -y

    Das -s fügt die Sourcen in das Verzeichnis /etc/apt/source.list.d/ hinzu.


    Nun brauchen wir eine Build Umgebung:

    Code
    1. # Nötige Pakete für den Paketbau installieren
    2. sudo apt-get install ubuntu-dev-tools build-essential
    3. # Bau-Abhängigkeiten des Pakets vdr installieren (Für Plugins)
    4. sudo apt-get build-dep vdr

    Nun haben wir die Vorraussetzungen geschaffen um uns der Beschaffung der Sourcen zu widmen.


    Jetzt benötigen wir ein Verzeichnis in den wir die Sourcen installieren möchten, da das schnell unübersichtlich wird sollte man sich dieses im Homeverzeichnids erstellen.

    Code
    1. mkdir ~/build
    2. cd ~/build

    Jetzt holen wir uns die passenden Sourcen zum einen das alte mit dem tvm Patch und das neue von der ansible Installation.

    Dazu schauen wir ersteinmal nach welche Versionen es gibt

    Code
    1. sudo apt-cache policy vdr-epg-daemon

    Die Ausgabe des Befehls sieht wie folgt aus:

    In diesem Fall müssten wir nichts tun ausser dafür sorgen das vdr-epg-daemon aus meinem PPA installiert wird und nicht aus dem von YaVDR. Im Beispiel ist das PPA von YaVDR priorisiert auf 1000 während mein PPS nur 500 hat, das nur am Rande.


    Für das weitere Vorgehen holen wir uns nun die Sourcen für 1.1.157-0yavdr0~bionic und 1.1.155-1frodo0~bionic.

    Code
    1. # Das zu modifizierende Paket holen
    2. apt-get source vdr-epg-daemon=1.1.157-0yavdr0~bionic
    3. # Das Paket mit den Passenden Patches holen
    4. apt-get source vdr-epg-daemon=1.1.155-1frodo0~bionic

    Wenn ihr nun in eurem build Verzeichnis schaut habt ihr zwei unterschiedliche Versionen von vdr-epg-daemon.

    Die neuere wollen wir nun so modifizieren das sie die Eigenschaften (tvm, tvsp) der alten bekommt, hierzu kopieren wir aus dem debian/patches Ordner das plugin.patch von der alten auf die neue Version.

    Code
    1. cp vdr-epg-daemon-1.1.155/debian/patches/plugins.patch vdr-epg-daemon-1.1.157/debian/patches/

    Jetzt müssen wir noch dafür sorgen das der Patch auch verwendet wird das müssen wir in der neuen Version die Datei debian/patches/series um den Dateinamen des Patches erweitern.

    Code
    1. echo "plugins.patch" >> vdr-epg-daemon-1.1.157/debian/patches/series

    Die Datei sollte dann so aussehen:

    Code
    1. modify_Make.conf.patch
    2. try_alternative_image_format.patch
    3. plugins.patch

    Nun können wir uns ans Paketbauen machen. Um nachher auch noch zu erkennen ob das Paket vom Repository oder von euch kommt empfiehlt es sich die debian/changelog Datei anzupassen. Dazu wechsekln wir in das Source Verzeichnis und führen dch -i aus.

    Code
    1. cd vdr-epg-daemon-1.1.157
    2. dch -i

    Das Kommando fügt automatisch einen neuen Eintrag hinzu, den passen wir entsprechend an

    Wichtig ist das die Syntax der ersten Zeile der letzten entspricht, durch das hochzählen der Zahl vor yavdr wird verhindert das das Paket gleich wieder überschrieben wird bei einem Update.


    Nun könnten wir mit dem Paket bauen loslegen allerdings fehlen uns hierzu noch diverse dev-Pakete.


    Die installieren wir einfach nach entweder mit trial and Error

    Code
    1. dpkg-buildpackage -tc -uc -us
    2. dpkg-source: Information: plugins.patch wird angewandt
    3. dpkg-checkbuilddeps: Fehler: Nicht erfüllte Bauabhängigkeiten: dh-exec dh-systemd libarchive-dev libcurl4-openssl-dev libimlib2-dev libjansson-dev libjpeg-dev libmariadb-dev-compat (>= 10.3.13) | libmariadbclient-dev libmicrohttpd-dev libsystemd-dev libxml2-dev libxslt1-dev python-dev python2.7-dev rhino uuid-dev
    4. dpkg-buildpackage: Warnung: Bauabhängigkeiten/-konflikte nicht erfüllt; Abbruch
    5. dpkg-buildpackage: Warnung: (Verwenden Sie -d, um sich darüber hinwegzusetzen.)

    oder eleganter

    Code
    1. sudo apt-get build-dep vdr-epg-daemon

    Jetzt können wir unser Paket erstellen

    Code
    1. dpkg-buildpackage -tc -uc -us

    Jetzt nur noch in das Verzeichnis darüber wechseln und die Lorbeeren ernten ;-)

    Code
    1. epgd_1.1.157-1yavdr0~bionic_amd64.deb
    2. epgd-dbg_1.1.157-1yavdr0~bionic_amd64.deb
    3. epghttpd_1.1.157-1yavdr0~bionic_amd64.deb
    4. epghttpd-dbg_1.1.157-1yavdr0~bionic_amd64.deb
    5. mariadb-plugin-epglv_1.1.157-1yavdr0~bionic_amd64.deb

    Dort liegen nun die Pakete welche mit dpkg -i [paketname].deb installiert werden können.


    Ich hoffe das hilft dem ein oder anderen zukünftig das Problem selbst zu lösen.

    Besser ist noch ein zusätzliches awk mit hinzuzunehmen, da sonst bei einem VPN Netz beide IPs zusammen genommen werden.

    Code
    1. ip a | grep inet | grep -vw lo | grep -v inet6 | awk '{ print $2 }' | cut -d \/ -f1 | sed 's/[^0-9\.]*//g'

    Meine zwei YaVDR Ansible VDRs starten wie folgt:


    1. VDR i5-2500T (4 DVB Tuner)

    Code
    1. Startup finished in 3.150s (kernel) + 19.596s (userspace) = 22.747s
    2. graphical.target reached after 11.399s in userspace


    2. VDR i3-6100 (nur SAT-IP) UEFI

    Code
    1. Startup finished in 9.566s (firmware) + 1.888s (loader) + 2.829s (kernel) + 17.592s (userspace) = 31.876s
    2. graphical.target reached after 11.135s in userspace

    Ich würde mich freuen wenn der VDR ein Ausgabe Plugin hätte, das problemlos Audio und Video syncron in FullHD und UHD ausgeben könnte.

    Mit den aktuellen Plugins ist das ein ständiges herumgebastel mit ALSA, Pulseaudio oder den diversen Grafikkarten Herstellern.

    Was auch sehr schön wäre wenn man mit dem AppleTV wie zur VU+ direkt auf den VDR zugreifen könnte.


    Da all das nicht geht habe auch ich angefangen einen Teil meiner VDR Installationen gegen einen VU+ Receiver auszutauschen. Dort gibt es mit den zuvor genannten Wünschen keine Probleme. Auch ein Kodi Plugin gibt es, welches alles kann was man braucht.


    Dennoch finde ich den VDR als DVB Receiver genial, ein besseres Werkzeug zum scheiden von Aufnahmen gibt es nicht, auch die Bedienung ist Kinderleicht, das ist bei einer VU+ leider nicht der Fall.

    Eigentlich ist es egal woher das Zertikat kommt, nur einspielen muß man es rechtzeitig. Hier hilft einem Letsencrypt recht gut.

    Man kann sich aber auch einen Termin in den Kalender schreiben...

    Das habe ich gesehen.


    Es gibt aktuell noch ein Probleme mit den Imon Displays


    1. Für yavdr-ansible/roles/autoinstall-imonvfd/tasks/main.yml habe ich einen Pull request gestellt weil die Zeile imon_vfd_device: '{{ "imon_0044" if "15c2:0044" in usb else "imon_0036" }}'

    im git noch falsch ist.


    Das andere hat sich gerade gelöst die udev Regeln für die imonlcd Devices 0038 und ffdc waren verschwunden. Nachdem ich das Paket vdr-plugin-imonlcd nochmals installiert habe

    apt install --reinstall vdr-plugin-imonlcd

    sind sie wieder da.

    Mit meinem 0036 Device habe ich es getestet, es funktioniert :)

    Das 0044 kann ich erst heute Abend prüfen, da ist aber immer noch eine 0 zuviel in dem String imon_00044 der sollte doch sicherlich wie folgt aussehen: imon_0044

    Ohne das ich es probiert habe in der Zeile ist was falsch:

    imon_vfd_device: '{{ "imon_00044" if "15c2:0044" in usb else "imon_0044" }}'

    Die 0 von imon_00044 dürfte zu viel sein und für das 0036 USB Device wird die Variable gar nicht gesetzt.


    Sollte das nicht wie folgt aussehen?

    imon_vfd_device: '{{ "imon_0044" if "15c2:0044" in usb else "imon_0036" }}'

    Ich habe eine kleine ansible role gebastelt welche die Imon VFD Displays (15c2:0036,15c2:0044) einbindet d.h. das Plugin vdr-plugin-lcdproc und den LCDd Daemon einrichtet und startet.

    Es wird analog zum imonlcd eine /lib/udev/rules.d/92-imon.rules angelegt. Ausserdem wird die Konfiguration für den LCDd vervollständigt und er systemd Job aktiviert.


    Ich weiss nicht ob alle Zeichen richtig dargestellt werden, bei Ubuntu Trusty mußte man noch eine charmap im LCDd.conf für das imon Device angeben. Diese Maps gibt es unter Bionic nicht mehr.


    Eventuell werden noch Anpassungen bei den default vdr-plugin-lcdproc Parametern benötigt. Hier hab ich ersteinmal nur meine vorhandenen (von Trusty) Einstellung übernommen aber nicht ins ansible gepackt.

    Ich habe die udev Regeln für das USB Device in 98-lircd.rules auskommentiert und in rc_maps.cfg ttusbir rc-tt-1500 /lib/udev/rc_keymaps/rc-tt-1501 aufgenommen. Danach ging die Fernbedienung gar nicht mehr, auch nicht nach dem ein- und ausstecken.


    Was mir im syslog aufgefallen ist das die Fernbedienung solange funktioniert bis folgende Fehlermeldung kommt:

    Code
    1. Jun 12 21:13:31 vdr4 systemd-udevd[488]: seq 3780 '/devices/pci0000:00/0000:00:1c.6/0000:03:00.0/usb3/3-1/3-1:1.0/rc/rc1/lirc0' killed
    2. Jun 12 21:13:31 vdr4 systemd-udevd[488]: worker [505] terminated by signal 9 (KILL)
    3. Jun 12 21:13:31 vdr4 systemd-udevd[488]: worker [505] failed while handling '/devices/pci0000:00/0000:00:1c.6/0000:03:00.0/usb3/3-1/3-1:1.0/rc/rc1/lirc0'

    Um welche Sender geht es dabei und wie äußert sich das (gar kein Ton, Tonstörungen, kein Passthrough)?

    Der Sender war

    Code
    1. ANIXE HD;BetaDigital:10773:HC34M5O20P0S1:S19.2E:22000:255=27:0;259=deu@106:0:0:21100:1:1053:0

    und es gab kein Ton bei Passthrough im Softhddevice Plugin.


    Ist das ein ttusbir-Empfänger, der von neueren Kernel-Versionen über rc-core eingebunden wird und mit ir-keytable sichtbar ist? Da könnte es sein, dass noch diese udev-Regel aus yavdr-remote stört: https://github.com/yavdr/yavdr…r/udev/98-lircd.rules#L40


    Das könnte sein, das USB IR Device ist genau das gelistete:

    Bus 003 Device 002: ID 0b48:2003 TechnoTrend AG

    Wenn ich den Stick kurz abziehe und wieder anstecke hat er zusätzlich als aktiviertes Protocol rc-5:

    Dann funktioniert er wieder.

    Ich habe nun 3 meiner 5 betreuten VDR Installationen auf yavdr-ansible mit Branch bionic umgestellt, weshalb ich hier mal meine Erfahrungen wiedergeben möchte.


    Bis auf pulseaudio, läuft alles sehr geschmeidig durch. Mit pulseaudio habe ich keinen Ton, erst nach Aufruf der pulsaudioconsole wird dieser bei mir aktiv.

    Da damit aber bei einigen Sendern der Ton kaputt war habe ich pulseaudio wie bereits von anderen hier beschrieben deinstalliert und auf alsa umgestellt.


    Die Ausgabe des Bildes funktionierte bei allen dreien ohne irgendwelche Bastelleien, das ist deutlich besser als bei yavdr 0.6.


    Bei den imon Fernbedienungen, mußte ich ein paar Anpassung vornehmen da ich nicht dir original Fernbedienung des imon pad benutze sonder Logitech Harmony mit MCE habe ich dies in der rc_maps.cfg angepasst und in der .lircrc meine Taste für Kodi definiert.


    Zwei IR-Empfänger parallel machen noch Probleme, nach kurzer Zeit wird der TechnoTrend USB-IR Empfänger unbrauchbar (es werden keine Eingaben mehr entgegen genommen).


    Den avahi-daemon und avahi-linker habe ich mit systemd Mittel deaktiviert. Avahi führte bei mir dazu das erst nach mehreren Minuten das Aufnahme Verzeichnis ansprechbar war, merkwürdiger weise wurde im OSD ein Teil der Aufnahmen angezeigt. Ein ls im Aufnahme Verzeichnis kam erst gar nicht mit einer Ausgabe zurück. Da bei mir alle VDR Installationen ihre Aufnahmen auf dem NAS auf einen gemeinsamen nfs Share machen benötige ich dieses gegenseitige mounten der Aufnahmeverzeichnisse nicht.


    Einzig mein altes imon VFD Display muß ich noch zum laufen bekommen.


    Meine Änderungen führe ich alle per ansible durch, so kann ich ohne Anpassungen am Original yavdr-ansible alles umbiegen auf meine Bedürfnisse. :]


    Bei den zwei noch nicht umgestellten VDR Installationen ist eine Technotrend TT-6400 verbaut, da diese nicht vom Kernel unterstützt wird und es noch kein passendes dkms Paket für Bionic gibt muß ich hier noch warten bzw. experimentieren.


    Mein Fazit eine tolle Arbeit die hier geleistet wurde vielen Dank an seahawk1986 und seine Unterstützer. :thumbup: