catalinii / minisatip

minisatip is an SATIP server for linux using local DVB-S2, DVB-C, DVB-T or ATSC cards
https://minisatip.org
324 stars 78 forks source link

picture freezes when multiple clients are on the same transponder and change channels #1074

Closed jyrts closed 1 year ago

jyrts commented 1 year ago

I have one SAT>IP server and two SAT>IP clients. They both use only one fixed DVB-T frequency 674MHz, ie: client1: rtsp://@192.168.2.39:554/?freq=674&bw=8000&gi=4&msys=DVBT&pids=571,18,763,0,381,1298 client2: rtsp://@192.168.2.39:554/?freq=674&bw=8000&gi=4&msys=DVBT&pids=570,18,760,380,0,1298

All good. But now when client2 changes channel, ie: rtsp://@192.168.2.39:554/?freq=674&bw=8000&gi=4&msys=DVBT&pids=577,18,781,387,0,1287 Then the picture on client 1 freezes. Not always, but very often. Most of the time it works but sometimes not.

When I have even more, like 5 clients and they change channels then picture freeze all the time :( the one that changes the channel has picture, other clients picture freez. But they are all on the same frequency. The only current solution is to set up 5 satip servers for 5 clients with all independent tuners, then no problem. This is a BIG-BIG WASTE, because they all use the same one frequency. Thats why i like minisatip, they can share a tuner as long they are on the same frequency - but in reality it does not seem to work well :(

Minisatip Version: 1.2.~0399dbb -- Build date/time: Feb 28 2023 | 19:05:53

Jalle19 commented 1 year ago

Is this a new issue or have you always had this problem?

jyrts commented 1 year ago

i'm willing to try older versions, what do you recommend for testing?

I have a few "Telestar Digibit R1" boxes for DVB-S that are running satip-axe-201810211549-15 (minisatip 0.7.16?). No problem there, clients can use same transponder, change channels and no freez. All good.

lars18th commented 1 year ago

Is this a new issue or have you always had this problem?

I've seen similar behaviour based on different causes. However, I feel the problem is: or the bitrate, or the pid changes. If the server has not sufficient CPU, or incorrect BUFFER SIZES (default values are not good), then this problem could appear. And also, if the device that has the tuner is using a low quality driver, then it's possible that a pid change could generate CC errors. In this case, when a new client makes a request that implies a change in the pid list, then other clients suffers errors. And this is true for both: adding pids and deleting pids. For this reason I've prepared some patches to delay the pid close.

I hope this information will helps to found for the real cause.

jyrts commented 1 year ago

The "minisatip" server is running on my VU+ Zero. I upgraded (Minisatip Version: 1.2.~ -- Build date/time: Mar 10 2023 | 20:38:43) and added command -b 3760000:57753600. But the problem still remains.

I think the picture freezes when clients go back to the channel they watched few minutes ago... The problem has something todo with pid changes and timing...

It seems not to be a tuner problem, because when I use tvheadend instead of minisatip then there is no freezing problem... Same OS (openatv), same box (vu+ zero), same tuner (VU+ Turbo USB Tuner DVB-C/T2)... The enigma2 is killed with "init 4" before I start minisatip.

When client1 connects to the minisatip server, all good. When client2 joins, then changing channels on the same transponders messes all up... when picture freezes on client1 or client2 then changing channes again and all works. As long client1 and client2 stay watching and not change channels, minisatip is usable. but the clients want to change channels :D

catalinii commented 1 year ago

Can u get the simplest possible repro of the issue(2 channels), upload the logs and tell me when exactly it happens (hh:mm:ss).

./minisatip -f -l http ...

jyrts commented 1 year ago

minisatip_freez.zip

3 clients: 192.168.2.21 192.168.2.28 192.168.2.33

1 server: 192.168.2.39

Channels: E46 674MHz MUX4 https://levira.com/programm.pdf (Multipleks 4)

I tried incresing buffer but no luck: /usr/bin/minisatip -R /usr/share/minisatip/html --adapter-timeout *:0 --client-send-buffer 4096 --satip-receive-buffer 4096 -B 300 -b 3760000:57753600 -a 0:1:0 -Y 1:dvbt2 -e 1 -v pmt -F /tmp/minisatip.log

jyrts commented 1 year ago

minisatip_frees_http.zip

I added a new log with http verbose and without buffer modification: /usr/bin/minisatip -R /usr/share/minisatip/html -a 0:1:0 -Y 1:dvbt2 -e 1 -l http,pmt -F /tmp/minisatip.log

  1. I set all 3 clients to the same channel. All working good
  2. one client changes the channel and then all three client pictures freez
catalinii commented 1 year ago

I got the following in the log:

[11/03 16:46:05.297 main]: clearing filter on PID 386 FD 21 [0 ms]
[11/03 16:46:05.297 AD1]: socket 8, handle 8, master 8, errno 4, read_ok 0, clearing buffer with len 5640
[11/03 16:46:05.297 AD1]: select_and_execute[8]: Interrupted system call on socket 8 (sid:1) from :0 - type dvr (5) errno 4
[11/03 16:46:05.297 AD1]: closing DVR socket 8 pos 8 aid 1
[11/03 16:46:05.298 main]: clearing demux filter on PID 778 FD 8, active_pids 8 [0 ms]
[11/03 16:46:05.298 AD1]: closing adapter 1  -> fe:7 dvr:8, sock:8, fe_sock:-1
[11/03 16:46:05.298 AD1]: deleting pids on adapter 1, sid -1, pids=NULL

Can you try again with the latest master?

jyrts commented 1 year ago

Minisatip Version: 1.2.~ -- Build date/time: Mar 11 2023 | 22:50:15

All OK now. No freezing anymore. Thank you very much.

I will do some longer testing today but it looks like we can close this bug :)

jyrts commented 1 year ago

case closed. all works