Beiträge von MartinKG

    Bekomme die gleichen Meldungen unter Fedora 37 mit gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4)

    Hallo Markus,


    ich versuche gerade die 1.1.6 auf Fedora 35 zu kompilieren, da scheitere ich mit der folgenden Fehlermeldung:

    Code
    etup.h: In member function 'void langOsd::addLanguage(int)':
    setup.h:23:101: error: call of overloaded 'max(int&, int)' is ambiguous   23 |     void addLanguage(int lang) { m_osdTexts[m_numLang] = getLangText(lang); m_maxOsdTextLength = max(m_maxOsdTextLength, (int)strlen(m_osdTexts[m_numLang])); m_osdMap.insert(m_numLang++, lang); }      |                                                                                                  ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/vdr/i18n.h:14,                 from /usr/include/vdr/plugin.h:13,                 from tvscraper.c:19:
    /usr/include/vdr/tools.h:59:28: note: candidate: 'T max(T, T) [with T = int]'   59 | template<class T> inline T max(T a, T b) { return a >= b ? a : b; }      |                            ^~~
    In file included from /usr/include/c++/11/bits/specfun.h:45,                 from /usr/include/c++/11/cmath:1935,                 from /usr/include/c++/11/math.h:36,                 from /usr/include/vdr/tools.h:18,                 from /usr/include/vdr/i18n.h:14,                 from /usr/include/vdr/plugin.h:13,                 from tvscraper.c:19:
    /usr/include/c++/11/bits/stl_algobase.h:254:5: note: candidate: 'constexpr const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int]'  254 |     max(const _Tp& __a, const _Tp& __b)      |     ^~~

    Wie kann ich das lösen ?

    Habe es jetzt mal mit diesem Patch beheben können.


    komplette Logdatei


    Danke

    Martin

    Damit das auch außerhalb der PM sichtbar ist, hier noch mal:

       


    ....

    Und eine Systemd-Unit, die es mit Login startet:

    Damit das beim Start geladen wird, muss man die Unit noch aktivieren: sudo systemctl enable headless-session@vdr.service

    ....


    Danke für die ausführlich Anleitung, TOP. Werde ich am Wochenende mal testen.


    Das Systemd Skript heißt dann sicherlich korrekt headless-session@vdr.service

    und nicht headless-session@.service ?


    Das @-Symbol steht für spezielle Dienste, Sockets und andere Einheiten,´

    in denen mehrere Instanzen ausgeführt werden können.

    Ach so, dann hast du das Problem generell, wenn der VDR nicht im Kontext deiner Session läuft - da gibt es (wie bei Pulseaudio auch) einige Möglichkeiten - z.B. kann man Clients über TCP dran hängen: https://wiki.archlinux.org/tit…_computers_on_the_network - d.h. der VDR braucht eine eigene Pipewire-Instanz, die sich an die des Desktop-Users hängt.


    Alternativ sollte es auch gehen, wenn der VDR unter dem selben Nutzer wie dein Desktop-User läuft und du ihm die Umgebungsvariablen der Session gibst.

    Entschuldige wenn ich frage:


    1. Wie richte ich eine eigene Pipewire-Instanz für den VDR-Benutzer ein ? Sollte doch mit den Einstellungen, die ich bereits unter /home/martin/.config/pipewire/pipewire-pulse.conf vorgenommen habe erledigt sein, oder ?


    2. wenn ich den VDR mit dem Benutzer -u martin laufen lasse, wo gebe ich dann die Umgebungsvariablen der Session mit ?


    Ich habe mal im Homeverzeichnis des VDR-Benutzers eine .bash_profile angelegt, mich ausgeloggt und wieder eingeloggt, fkt. aber nicht.

    [root@fc36 ~]# cat -v /var/lib/vdr/data/.bash_profile

    Code
    export XDG_MENU_PREFIX=gnome-
    export XDG_SESSION_DESKTOP=gnome
    export XDG_SESSION_TYPE=x11
    export XDG_CURRENT_DESKTOP=GNOME
    export XDG_SESSION_CLASS=user
    export XDG_RUNTIME_DIR=/run/user/1000
    export XAUTHORITY=/run/user/1000/gdm/Xauthority

    wenn ich dann die gesetzen Umgebungsvariablen für den Benutzer vdr abfrage erhalte ich die folgende Meldung:


    Code
    [martin@fc36 ~]$ sudo -Hiu vdr env
    Dieses Konto ist momentan nicht verfügbar.

    irgendwie bekomme ich das nicht hin

    Den Pipewire-Pulseserver habe ich bereits eingerichtet, dazu habe ich für den Desktop Benutzer martin unter Gnome folgende Einstellungen vorgenommen:

    Ich beschreibe hier einfach mal, welche Einstellungen ich vorgenommen habe, vielleicht hilft es jemand anders mal.

    Code
    [root@fc36 ~]# cp /usr/share/pipewire/pipewire-pulse.conf /home/martin/.config/pipewire/


    Einstellung in der Datei /home/martin/.config/pipewire/pipewire-pulse.conf


    Setzen der Berechtigungen

    Code
    chown martin:martin /home/martin/.config/pipewire/pipewire-pulse.conf


    Umgebungsvariable PULSE_SERVER in /home/martin/.bashrc eintragen

    Code
    export PULSE_SERVER=tcp:127.0.0.1:4713


    Aktivieren der PULSE_SERVER Umgebungsvariable in der Sitzung

    Code
    [martin@fc36 ~]$ source ~/.bashrc


    Prüfen ob der Pulseaudio Server läuft


    Lauscht Pipewire-pulse auf den Port 4713

    Code
    [martin@fc36 ~]$ netstat -tulpen |grep 4713
    tcp               0       0  0.0.0.0:4713      0.0.0.0:*      LISTEN       1000      38547      3582/pipewire-pulse    
    tcp6              0       0  :::4713


    Aktive und notwendige pipewire-Dienste:

    Code
    [martin@fc36 ~]$ systemctl --user list-unit-files|grep wire
    pipewire-pulse.service                                           enabled   disabled
    pipewire-session-manager.service                                 alias     -
    pipewire.service                                                 disabled  disabled
    wireplumber.service                                              enabled   enabled
    wireplumber@.service                                             disabled  disabled                                                                    
    pipewire-pulse.socket                                            enabled   enabled
    pipewire.socket


    Einstellungen für den VDR-Benutzer im Homeverzeichnis

    Code
    [martin@fc36 ~]$ cat -v /var/lib/vdr/data/.pulse/client.conf
    autospawn = no
    default-server = 127.0.0.1

    die Kommunikation mit pipewire klappt nicht, nur wenn ich manuell im Terminal starte.


    Meldungen in der journal-log beim Start aus dem Terminal, dann ist alles ok.

    Code
     Jul 09 15:45:23 fc36 vdr[9216]: audio/alsa: using device 'pipewire'


    journalctl -u vdr.service

    Hallo,


    ich habe auf meinem Desktop-Rechner vdr-2.6.1 mit vdr-softhddevice-1.4.0 installiert. Beim Neustart des Rechners wird der VDR über die Dienste mit dem Parameter -s im Suspend-Modus mit gestartet.



    /etc/sysconfig/vdr-plugins.d/softhddevice.conf

    Code
    PLUGIN_OPTIONS="-s -g 1680x1050+200+100 -a pipewire -d :1.0 -v vdpau"


    Zum Aufwecken des VDR habe ich mir Skripte auf den Desktop gelegt, die folgendes machen:

    Code
    xhost +
    svdrpsend plug softhddevice deta
    svdrpsend plug softhddevice atta

    dann geht das vdr-softhddevice Fenster auf dem Gnome Desktop auf, ich habe dann aber keinen Ton



    Starte ich hingegen den vdr über ein Terminal-Fenster (ohne -s Parameter ), dann habe ich sauber einen Ton

    Code
    /usr/sbin/vdr -v /video -D1 -u vdr --vfat --userdump -s vdr-shutdown.sh --plugin='dvbhddevice' --plugin='softhddevice -g 1680x1050+100+100 -a pipewire -d :1 -v vdpau' --plugin='live --ip=127.0.0.1' --plugin='skinnopacity --iconpath=/usr/share/vdr/plugins/skinnopacity/icons/ --logopath=/usr/share/vdr/plugins/skinnopacity/logos/ --epgimages=/var/cache/vdr/plugins/skinnopacity/epgimages/' --plugin='tvguide --logopath=/usr/share/vdr/plugins/tvguide/channellogos/ --epgimages=/usr/share/vdr/plugins/tvguide/epgimages/ --iconpath=/usr/share/vdr/plugins/tvguide/epgimages/' --plugin='epgsearch -l /var/log/vdr/epgsearch.log' --plugin=streamdev-server --plugin=streamdev-client --plugin='markad --logocachedir=/var/lib/vdr/data/markad/logos --autologo=2' --plugin='burn -d /data/tmp --tempdir=/data/tmp --iso=/data/film --dvd=/dev/sr1'

    Alsa leitet dann den Ton sauber auf den Pipewire-Pulseaudio Server weiter.
    [Blockierte Grafik: https://ibb.co/kmfgKPp]


    Was muss ich tun, damit ich einen Ton bekomme, wenn der VDR aus dem Suspend-Modus aufgeweckt wird ?

    Hallo,


    ich konnte bisher keine Probleme feststellen, eine Freigabe wäre meinerseits möglich.

    Ja, damit ist es mir auch nicht gelungen. Aber mein Verdacht war richtig, du kannst den Crash "mit Gewalt" erzeugen, indem du einen Timer aus der Programmübersicht erstellst und vor dem Speichern im Browser die letzte Stelle der URL löscht um eine ungültige Event ID zu erzeugen. Beim Speichern kommt dann genau dein Crash. Man sollte besser Pointer auf NULL überprüfen bevor man sie verwendet ...

    Fix ist im Branch Tntnet30, Branch crash ist gelöscht.

    Vielen Dank für deine Mühe, wann werden deine Änderungen übernommen ?