Superb quality and spec AB-Com PULSe 4K SE. Crazy offer! Only £129! FREE UK DELIVERY! 4K UHD, Enigma 2, Multiboot 4 images & more!...
Superb quality and spec AB-Com PULSe 4K Rev II Twin Satellite tuner only £179! FREE UK DELIVERY! 4K UHD, Enigma 2, SATA HDD facility, Multiboot 4 images & more!...

[VU+ Duo2] IPTV timers crash

  • Thread starter Thread starter steven1977
  • Start date Start date
So the change is (effectively) that tn will be None if feinfo.getFrontendData() is empty (or, actually, {}).
No, it would be None, not a Dict. Read the code like this:
Code:
# Empty Dict
{}.get("tuner_number") # returns None

# Populated Dict
{"tuner_number": 1}.get("tuner_number") # returns 1
So if the Dict is empty the code you quoted returns None (because default return from .get() is None).
 
Last edited:
...What baffles me though is I thought this had been tested for IPTV and didn't crash.
It doesn't appear to be easily recreated. Well I couldn't recreate it and there was very little info to go on with regarding to replicating it and/or even how the IPTV streams were formed.
 
It doesn't appear to be easily recreated. Well I couldn't recreate it and there was very little info to go on with regarding to replicating it and/or even how the IPTV streams were formed.
It's very simple to recreate the issue.

Just select an iptv channel with a 1:0:1 service reference and try to instant record.
 
It's very simple to recreate the issue.

Just select an iptv channel with a 1:0:1 service reference and try to instant record.
I tried with 4097: service type and 1: service type and couldn't. I assume by instant record, you mean press Rec button and select record until end of current event? I did this from both live and GEPG screen.

My IPTV streams were added via ABM custommix feature.
 
Last edited:
I accidently had the crash earlier today, finger trouble, not sure of the exact sequence, but green, green, green while an active timer recording was paused won't be far off.

I can't reproduce it.

DVB-T2 tuners only.
 
I tried with 4097: service type and 1: service type and couldn't. I assume by instant record, you mean press Rec button and select record until end of current event? I did this from both live and GEPG screen.
Strange as it happened for me with any 1:0:1 service I tried to record.
 
Strange as it happened for me with any 1:0:1 service I tried to record.
How did you add the IPTV stream into bouquets? Was it via ABMs custommix or more manual method?
 
What baffles me though is I thought this had been tested for IPTV and didn't crash.
I had tested it for an instant recording on this bouquet entry:
Code:
 #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
This is actually a stream from my other box. The resulting "recording" remained empty, but the tuner was being reported as "?" by the logging code - i.e. it didn't crash.
 
I had tested it for an instant recording on this bouquet entry:
Code:
 #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
This is actually a stream from my other box. The resulting "recording" remained empty, but the tuner was being reported as "?" by the logging code - i.e. it didn't crash.
Ok, so for a 4097 service it works fine, but not for a 1:0:1 service.

So what does feinfo = self.record_service and self.record_service.frontendInfo() return for a 4097 service? For a 1:0:1 service it returns a Python object. Maybe for a 4097 service it returns None. Which could explain the difference in behaviour. Add a bit of debug to see what happens for each service type.

Code:
# Report the tuner that the current recording is using
    def log_tuner(self, level, state):
        feinfo = self.record_service and self.record_service.frontendInfo()
        print "feinfo", feinfo
        print "fedata", (feinfo and feinfo.getFrontendData())
        tn = feinfo and feinfo.getFrontendData().get("tuner_number")
        print "tn", tn
        tuner_info = tn is not None and chr(ord('A') + tn) or "?"
        self.log(level, "%s recording on tuner: %s" % (state, tuner_info))

All academic really because the code currently in the git does not fail, but it would just be interesting to know exactly what is returned in each case.
 
Last edited:
Ok, so for a 4097 service it works fine, but not for a 1:0:1 service...
That wasn't true in my testing. I tried both gstreamer and default dvb service types as you mention (ie 4097 and 1 ).

Could it be because I used your custommix so that uses an actual service reference but with just 4097 at beginning, as my ABM mod added this rather than a completely manual adding which, I'm guessing, doesn't have a complete (or nearly complete) service ref?

The main difference to us end-users is that custommix method with ABM mod enables full use of normal $ly EPG (ie openTV) rather than having to use EPG of any provider.
 
Last edited:
The only way to know is use my debug and try various combinations. Otherwise it is just guesswork. No IPTV here so impossible for me to test.
 
I've set-up a hand-written bouquet file:
Code:
#NAME IPTV test
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
#SERVICE 1:0:1:0:0:0:0:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
#SERVICE 4097:0:1:104D:104D:233A:EEEE0000:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
#SERVICE 1:0:1:104D:104D:233A:EEEE0000:0:0:0:http%3a//birdman.dynalias.org/stream.m3u8:BBC ONE
I then selected each service in turn from the EPG, started an instant recording then stopped it (using the stop and delete recording option).
Service 1 and 3 (i.e. the 4097 ones) reported:
< 11864.307> [RecordTimer - DEBUG] feinfo: None
< 11864.308> [RecordTimer - DEBUG] fedata: None
< 11864.308> [RecordTimer - DEBUG] tn: None
as the values for the original code when starting a recording.
However, 2 and 4 (i.e. the 1 ones) reported:
< 11890.079> [RecordTimer - DEBUG] feinfo: <enigma.iFrontendInformationPtr; proxy of <Swig Object of type 'ePtr< iFrontendInformation > *' at 0x70490f08> >
< 11890.079> [RecordTimer - DEBUG] fedata: {}
< 11890.079> [RecordTimer - DEBUG] tn: {}
as it stepped through the original code.

The only difference between 1/2 and 3/4 was that the latter had entries in the EPG.

(None of them actually recorded or displayed anything, but that's not the issue here.)
 
How do you get on with this in those 4 cases:
Code:
# Report the tuner that the current recording is using
	def log_tuner(self, level, state):
		feinfo = self.record_service and self.record_service.frontendInfo()
		tn = feinfo and feinfo.getFrontendData().get("tuner_number")
		tuner_info = tn is not None and chr(ord('A') + tn) or "?"
		self.log(level, "%s recording on tuner: %s" % (state, tuner_info))
Any crash?
 
Last edited:
There are changes in the git so please only report further problems if you are running build 033 or greater.
 
How do you get on with this in those 4 cases:
Code:
# Report the tuner that the current recording is using
    def log_tuner(self, level, state):
        feinfo = self.record_service and self.record_service.frontendInfo()
        tn = feinfo and feinfo.getFrontendData().get("tuner_number")
        tuner_info = tn is not None and chr(ord('A') + tn) or "?"
        self.log(level, "%s recording on tuner: %s" % (state, tuner_info))
Any crash?
I didn't check that! (:-().
So have just done so for the "1" case, which had the issue.
The above code produced:
< 114.315> [RecordTimer DEBUG] feinfo: <enigma.iFrontendInformationPtr; proxy of <Swig Object of type 'ePtr< iFrontendInformation > *' at 0x6fce6c80> >
< 114.315> [RecordTimer DEBUG] tn: None
< 114.315> [RecordTimer DEBUG] tuner_info: ?
< 114.316> [RecordTimer] start recording on tuner: ?

The code which is currently in the Dev git produces:
< 325.616> [RecordTimer DEBUG] feinfo: <enigma.iFrontendInformationPtr; proxy of <Swig Object of type 'ePtr< iFrontendInformation > *' at 0x7061fed8> >
< 325.616> [RecordTimer DEBUG] fedata: {}
< 325.616> [RecordTimer DEBUG] tuner_info: (fallback) stream
< 325.617> [RecordTimer] start recording on tuner: (fallback) stream
 
I accidently had the crash earlier today, finger trouble, not sure of the exact sequence, but green, green, green while an active timer recording was paused won't be far off.

I can't reproduce it.

DVB-T2 tuners only.
Looks like I can reproduce it, although since I'm currently running with test code to print DEBUG info I don't get the crash, but would have done with the previous code.

I started an instant recording, went to another channel, started to view the current recording then press Green (Timer list), Green (Add timer), Green (Save the timer with the default settings...).

The log showed:
< 1313.497> [eDVBServiceRecord] Recording to /media/hdd/movie/20180731 1202 - Love Is a Many-Splendored Thing.ts...
< 1313.498> [eDVBServiceRecord] start recording...
< 1313.498> [eDVBServiceRecord] getting program info failed.
< 1313.499> [RecordTimer DEBUG] feinfo: <enigma.iFrontendInformationPtr; proxy of <Swig Object of type 'ePtr< iFrontendInformation > *' at 0x6e79f320> >
< 1313.499> [RecordTimer DEBUG] fedata: {}
< 1313.499> [RecordTimer DEBUG] tuner_info: (fallback) stream
< 1313.499> [RecordTimer] start recording on tuner: (fallback) stream
so it's fixed in the next release.

It does seem that G/G/G when in playback mode does odd things...
 
It does seem that G/G/G when in playback mode does odd things...
Maybe similar to this.... Pause playback of a recorded program and go to live tv via the epg, the info bar is odd, and the stop button works, returning you to the program list.

Thanks for looking at the crash log.
 
My timers keep crashing when trying the record IPTV. Free to air timers work fine as I watch these though the satellite feed. If I roll back to 5.1.030 all timers work fine.


Hi Steven, from what you are saying here, it sounds like you have been able to record IPTV channels? I have not had this success ever, timers or instant recording... did you do something to make this work? I thought IPTV recording wasn't supported on enigma and had given up.

Thanks,
Mark.
 

OpenViX Feeds Status

Back
Top