[Patch] "read incomplete section" und dmxdev.c ringbuffer

  • Da ich immer wieder "read incomplete section" Meldungen im Syslog finde habe ich mir diese näher angesehen und festgestellt, dass immer nur die Sections der EIT-Pid 0x12, also der EPG Daten betroffen sind.

    Eine Ursache könnte sein, dass in 'dmxdev.c' des Kernels der Ringbuffer, in dem die gefilterten Sections schlussendlich landen, standardmäßig nur mit einer Größe von 8192 Bytes erstellt wird. Bei einem Transponder mit vielen EPG Daten muss der Ringbuffer daher auch schnell ausgelesen werden, bevor die vorhandenen Daten mit denen der nächsten Sections überschrieben werden.

    Dieses Auslesen dürfte aber nicht immer schnell genug erfolgen, vor allem wenn mehrere Devices aktiv sind.

    Ich habe hier einen Patch, der den Ringbuffer für die EIT Sections auf 32 kB vergrößert um 'Device-ReadFilter()' mehr Zeit zu geben.Damit scheinen die "read incomplete section" Meldungen bei mir nicht mehr auf. Ich habe es allerdings noch nicht sehr intensiv getestet, möglicherweise braucht es bei mehr als 2 Devices auch noch einen größeren Ringbuffer.


    Zusätzlich habe ich auch diesen Kernel Patch installiert: Fix receiving invalid EIT-sections. Dieser ist ab Kernelversion 5.6.19 enthalten, alleine genügt er aber nicht, um die "incomplete" Meldungen verschwinden zu lassen.


    Helmut

  • Ein kleiner Nachtrag, weil der Patch schon im Git gelandet ist:

    Es scheint so zu sein, dass der Kernelpatch gar nicht notwendig ist weil ich die letzten 6 Tage auch ohne ihn keine 'incomplete section' Fehler mehr gesehen habe.


    Helmut

  • Hi,


    Ich habe gerade wieder

    Quote

    Apr 17 20:00:04 rpi4s vdr: [31015] tp 212551 (18/FF) read incomplete section - len = 4098, r = 4096

    Apr 17 20:00:16 rpi4s vdr: [31015] tp 212551 (18/FF) read incomplete section - len = 4098, r = 409

    im Log gefunden.


    ~Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.4x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Das scheint das gleiche Problem wie hier zu sein. Du kannst ja auch einmal versuchen den Ringbuffer zu vergrößern.


    Apr 17 20:00:04 rpi4s vdr: [31015] tp 212551 (18/FF) read incomplete section - len = 4098, r = 4096 zeigt, das zumindest die ersten 3 Bytes der Section den Wert "0xFF" haben. Das scheinen die Füllbytes im letzten TS-Paket der Section-Daten zu sein.

    Das sollte aber mit dem von den Kernel DVB-Treibern verwendeten dvb_demux.c eigentlich nicht vorkommen.

    Eine Gemeimsamkeit wäre der Sundtek Treiber. Vielleicht wird hier ein eigener Sectionfilter verwendet.

    LG Helmut

  • Ich habe an meinem Client auch ab und zu dieser Meldungen.

    Angebunden ist er via satip an einen OctopusNet. Auf meinem Server konnte ich diese Meldungen bisher nicht entdecken.

    Aufgefallen sind sie mir bisher nur, wahrend ich eine Aufnahme ansehe.

    Die Meldungen treten häufig in Verbindung mit diesen Meldungen auf:

    SATIP-ERROR: failed to send section data (146 bytes) [device=0]

    Auch diese sehe ich nicht an meinem Server und nur wenn ich Aufnahmen ansehe.