Recent Posts

31
Allgemein [ General ] / Neuinstallation
« Last post by purzel on October 11, 2026, 10:47:35 »
Moin Claus!

Zuerst auf jeden Fall vielen Dank für Deine Variante - sie sieht, besonders durch den Verzicht auf die sed- und awk-"Orgie", bedeutend simpler aus.

Natürlich habe ich mit schnellem Erfolg versucht herauszufinden, was `setting get...` überhaupt ist. Aha, Bestandteil des MLD-WebIf. Das ist in diesem Fall natürlich nicht schlecht, aber...
Ich habe damals (~2015), als ich die RCU (*) Hardware neu aufgelegt habe (**), mit meinem Script versucht für möglichst viele VDR-Distris oder auch "Selbstbauer" kompatibel zu sein, also mit Bordmitteln zu arbeiten. Die Zeiten ändern sich halt... Das `setting get` (ist) limitiert auf MLDs WebIf - hier jedoch wie gesagt nicht nachteilig  :)

Deine Variante macht (im Grunde erwartungsgemäß) auch das Richtige; die Option mit dem printf braucht's nicht.
Noch eine kleine Frage in zwei Teilen dazu: wie kann ich (falls notwendig) bootDuration und shutdownDuration beeinflussen? Ist das in irgendwie in /etc/settings.json hardcoded oder kann man die auch mehr oder weniger direkt verändern, z.B. durch `setting set` oder so sowas? Ich habe nämlich nur wenig Lust, Deine ganze Software zu analysieren  ;D

BTW: Darf ich nochmal nachfragen, ob Ihr schon Zeit und Gelegenheit hattet, über den Einzug von vdr-2.8.3 in die MLD-6.5 zu befinden? (siehe hier). Roland hatte ich sogleich angeschrieben, aber er war anscheinend schon eine Weile nicht mehr hier.

(*) nicht nur Fernbedienung(sempfänger) sondern auch noch 7-Segment-Kanalanzeige und Wakeup-Board
(**) das Original stammt(e) von kls etwa aus der Zeit der Jahrtausendwende

Viele Grüße
Matthias
32
Das "modprobe ddbridge" hat doch funktioniert. Das Modul wurde also geladen.
Es wird allerdings nicht automatisch geladen, weil deine DD Karte dd01:0021 nicht von dem Treiber unterstützt wird. Wenn Du "modinfo ddbridge" aufrufst, siehst Du dass die PCI ID nicht mit aufgeführt ist.

Mir ist jetzt aufgefallen, dass auch in der MLD-6.6 nicht die neuste Version des Treibers enthalten war. Ich habe das Paket jetzt also aktualisiert. Jetzt wird auch Deine Karte von dem Treiber unterstützt.
33
Ja, der Paketserver war wohl offline.
Heute funktioniert es wieder.
Gruß Gerhard
34
Hallo Claus, wie ich schon schrieb, wollte bei keinem der netinstall-Images irgendeine Installation starten.

Aus reiner Verzweiflung, weil ich schon so lange ohne funktionierenden VDR bin, habe ich nun die sources.list in meinem noch laufenden System durch die aus der (mld6.6.testing) mld-image-netinstall-x86-64.iso ersetzt.
Mit apt update und full-upgrade läuft das System nun mit kernel 6.14.0-yocto-standard. dddvb wurde wieder installiert, ohne dass sich etwas tat. Vielleicht war das sowieso kein gangbarer Weg, aber immerhin habe ich dabei einiges lernen können

Inzwischen habe ich deine letzte Antwort gelesen:  Bei "Paketmanager/Updates" war nichts zu aktualisieren.
Dann doch das neue Image auf einen Stick kopiert und neu installiert. Dann auch wieder dddvb installiert, neu gestartet.

Von der 5.4 kenne ich, dass bei Vorhandensein der scr.conf im VDR-Menu unter VDR-LNB sofort die Adapter melden, wenn diseqc eingeschaltet wird. Das passiert nach wie vor nicht.
Die diseqc.conf ist ok, die scr.conf auch.

Code: [Select]
lspci | grep -i dd01                                                                                                                                     
05:00.0 Class 0480: dd01:0021                                                                                                                                               

find /lib/modules/ -name "*dddvb*.ko" -o -name "*ddbridge*.ko"                                                                                           
/lib/modules/6.18.24-yocto-standard/kernel/drivers/media/pci/ddbridge/ddbridge-dummy-fe.ko                                                                                   
/lib/modules/6.18.24-yocto-standard/kernel/drivers/media/pci/ddbridge/ddbridge.ko                                                                                           
/lib/modules/6.18.24-yocto-standard/updates/ddbridge/ddbridge.ko                                                                                                           

lsmod | grep -i dddvb

lsmod | grep -i ddbridge

modprobe -a dddvb                                                                                                                                         
modprobe: WARNING: Module dddvb not found in directory /lib/modules/6.18.24-yocto-standard                                                                                   

modprobe -a ddbridge

lsmod | grep -i dddvb

lsmod | grep -i ddbridge                                                                                                                                 
ddbridge              172032  0                                                                                                                                             
cxd2099                16384  1 ddbridge                                                                                                                                     
dvb_core              135168  2 ddbridge,vtunerc                                                                                                                             

Also, nach Neustart keinen Erfolg - die adapter werden nicht geladen. Wohin wurde das dddvb-Modul installiert?
Was kann / muss ich noch tun?

Klaus, der Wanderer
35
Allgemein [ General ] / Neuinstallation
« Last post by clausmuus on October 10, 2026, 22:21:44 »
Ich würde das so machen, in Anlehnung an das existierende 60_wakeup.sh Script. Dies berücksichtigt auch die Zeit für's Booten und unterbindet ein Ausschalten wenn der Time kurz bevor steht:
Code: [Select]
#!/bin/sh
# set wakeup time for the next recording

eval $(setting get --sh vdr.nexttimer)
eval $(setting get --sh vdr.wakeup)

curentTime=`date +%s`
if [ "$utctime" ] ; then
        if [ $utctime -eq 0 ] ; then
                # kein timer gesetzt
                wakeTime=$curentTime
        else
                if [ $difftime -lt $(( $bootDuration + $shutdownDuration )) ] ; then
                        echo " Time to next wakeup time is to short"
                        exit 1
                fi
                wakeTime=$(( $utctime - $bootDuration ))
        fi

        days=$(( ($wakeTime - $curentTime) / 60 / 60 / 24))
        time=$(date -d "@$wakeTime" '+%H%M')
        echo -ne \\xC0$days$time > /dev/RCU
        echo -ne \\xE2\\x0A\\x2A\\x4A\\x6A > /dev/RCU
fi
exit 0

Oder wenn Du die Byte Codes brauchst wie beschrieben geht das so:
Code: [Select]
printf '%s' "$days$time" | od -An -v -tx1 | xargs

Bei der MLD-5 kannst Du auch in der 60_wakeup.sh nachschauen, wie dort die Zeit des nächsten Timers eingebunden wird.
36
Allgemein [ General ] / Neuinstallation
« Last post by purzel on October 10, 2026, 21:14:02 »
Mit log/journal.log bezog ich mich auf das vom MLD VDR heruntergeladene Debug-Log Archiv (tgz-File). Da musst Du den Log-Schnippsel aus Post #124 ja auch her haben - kannst ja schließlich nicht "live" auf meinem VDR `jounalctl` laufen lassen ;)

Übrigens kannst Du die Tage bis zum nächsten Timer auch so berechnen:
Code: [Select]
DAYS=$(($(setting get vdr.nexttimer.difftime) / 60 / 60 / 24))

Ich brauche ja nicht nur die Tage sondern auch die Uhrzeit, alles ziffernweise als ASCII-Bytes. Beispiel: 30 32 30 31 30 für 0 Tage, 20:10 Uhr.

Du kannst also per "setting get vdr.nexttimer" einige Infos zum nächsten anstehenden Timer abfragen, und brauchst nicht selber die timers.conf auslesen. Die Werte werden immer beim ausschalten aktualisiert.
Unter MLD-5 stehen die Infos in einer Datei die Du in Dein Script einbinden kannst, um an die Werte zu kommen.

Das habe ich ja nicht gewusst - woher auch. Wie gesagt ist das Script schon seit Jahren auf meinem alten MLD 5.3 im Einsatz; da natürlich mit dem "Beiwerk" welches seinerzeit für Start- und Shutdownscripts nötig war.

Du schreibst "werden immer beim ausschalten aktualisiert." - wann genau? Das muss ja VOR meinem set_recordtimer.sh passieren damit DAS nicht "auf die Nase fällt" oder mit alten Daten arbeitet.

Die von Dir genannte Datei unter MLD-5 interessiert mich schon auch noch, auch wenn mein VDR mittelfristig von dem 6.5er abgelöst werden soll. Ich "betreue" noch zwei weitere MLD-VDRs mit RCU.

Brauchst Du noch das ganze Script? Viel mehr als die paar Befehle macht es eigentlich nicht:

Code: [Select]
#!/bin/sh                                                                                                                                                                                           
                                                                                                                                                                                                   
# DON'T FORGET TO SET FILENAME AND PATH:                                                                                                                                                           
FILE="/etc/vdr/timers.conf"                                                                                                                                                                         
                                                                                                                                                                                                   
if [ -r $FILE ] ; then                                                                                                                                                                             
  NEXT=2147483647                                                                                                                                                                                   
  while read LINE ; do                                                                                                                                                                             
# if using bash:
    EPOCH=$(date +%s -d "$(echo -n $LINE | awk -F: -v q=" " '{print q$3,$4q}' | sed 's/^\(.\{14\}\)/\1:/')")                                                                                       
# if using busybox:
#    EPOCH=$(date +%s -d "$(echo -n $LINE | awk -F: '{print $3,$4}' | sed 's/^\(.\{13\}\)/\1:/')")                                                                                                 
    if [ $EPOCH -lt $NEXT ]; then                                                                                                                                                                   
      NEXT=$EPOCH                                                                                                                                                                                   
    fi                                                                                                                                                                                             
  done < $FILE                                                                                                                                                                                     
  TIMER=$NEXT                                                                                                                                                                                       
  NOW=$(date +"%s")                                                                                                                                                                                 
  DAYS=$(($(date -d "@$TIMER" +%d)-$(date -d "@$NOW" +%d)))                                                                                                                                         
  if [ $NEXT -lt 2147483647 ] ; then                                                                                                                                                               
    echo -ne \\xC0$DAYS$(date +"%H%M" -d @$TIMER) > /dev/RCU    # send recordtimer                                                                                                                 
  fi                                                                                                                                                                                               
fi                                                                                                                                                                                                 
echo -ne \\xE2\\x0A\\x2A\\x4A\\x6A > /dev/RCU    # display four '-'             
                                                                                                                   
                                                                                                                                                                                                   
37
Allgemein [ General ] / Neuinstallation
« Last post by clausmuus on October 10, 2026, 19:59:05 »
Übrigens kannst Du die Tage bis zum nächsten Timer auch so berechnen:
Code: [Select]
DAYS=$(($(setting get vdr.nexttimer.difftime) / 60 / 60 / 24))Du kannst also per "setting get vdr.nexttimer" einige Infos zum nächsten anstehenden Timer abfragen, und brauchst nicht selber die timers.conf auslesen. Die Werte werden immer beim ausschalten aktualisiert.
Unter MLD-5 stehen die Infos in einer Datei die Du in Dein Script einbinden kannst, um an die Werte zu kommen.
38
Allgemein [ General ] / Neuinstallation
« Last post by clausmuus on October 10, 2026, 18:39:08 »
Nicht unter log/journal.log, sondern per "journalctl" Kommando.

Poste mal das ganze Script.
39
Allgemein [ General ] / Neuinstallation
« Last post by purzel on October 10, 2026, 18:29:50 »
OK, danke.
Das hätte ich also - wenn es denn auftritt - in log/journal.log finden können.

Ich verstehe aber überhaupt nicht, unter welchen Bedingungen sich der Fehler ergibt. Er war halt vorgestern (erst spät abends gesehen, Posting dazu entsprechend gestern) und davor vor etwa vier Wochen (siehe oben). Heute den ganzen Tag (etliche Hoch- und Herunterfahr-Vorgänge, teils mit Timer) NICHT. Und auch sonst bei den vielen Start- und Shutdown-Vorgängen in den vergangenen Wochen keine Fehler. OK, da gab's meist keine Timer.

Das Script macht im Grunde nicht viel: es liest, falls vorhanden, den obersten Timer aus /etc/vdr/timers.conf und baut daraus eine Bytefolge für's RCU. Direkt in der Shell habe ich auch mal probiert, da kommt kein Fehler:
Code: [Select]
root@MLD:~# NEXT=2147483647
root@MLD:~# TIMER=$NEXT
root@MLD:~# NOW=$(date +"%s")
root@MLD:~# DAYS=$(($(date -d "@$TIMER" +%d)-$(date -d "@$NOW" +%d)))  # vermeintlich fehlerhafte Zeile 19
root@MLD:~# echo $DAYS
9

Interessant ist "09" - und nicht wie hier drüber "9".

Ich muss leider jetzt erstmal aufhören - habe aber just in diesem Moment eine Idee: ob das immer am 8. des Monats passiert? Das teste ich sobald es geht... Auf dem alten MLD 5.3 mit Busybox ist es übrigens noch nie vorgekommen, dass er nicht 'runterfahren will.

40
Allgemein [ General ] / Neuinstallation
« Last post by clausmuus on October 10, 2026, 16:56:51 »
Im Log des VDR ("journalctl -u vdr" oder im Webif unter "Meldungen") ist am Ende dies zu finden:
Code: [Select]
Oct 09 17:40:23 MLD vdr[1450]: Shutdown...
Oct 09 17:40:23 MLD vdr[1450]: 50_vdr.sh says:
Oct 09 17:40:24 MLD vdr[1450]:  do shutdown
Oct 09 17:40:24 MLD vdr[1450]: 60_wakeup.sh says:
Oct 09 17:40:24 MLD vdr[1450]:  do shutdown
Oct 09 17:40:24 MLD vdr[1450]: 70_set_recordtimer.sh says:
Oct 09 17:40:24 MLD vdr[1505]: /usr/share/vdr/shutdown.d/70_set_recordtimer.sh: Zeile 19: 19-09: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "09").
Oct 09 17:40:24 MLD vdr[1450]:  do not shutdown

Der Fehler ist also in Zeile 19 Deines Scripts.