Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#9574 closed Bug Report (Fixed)

Backend HD-PVR robustness

Reported by: kbass@… Owned by: danielk
Priority: minor Milestone: unknown
Component: MythTV - Recording Version: 0.24-fixes
Severity: medium Keywords:
Cc: Ticket locked: no

Description

Occasionally something happens that causes a zero length recording with the HD-PVR. When this happens I notice that the blue recording light is on. I am unsure if this is because it is 'stuck on' from a previous recording or related to the failed recording.

My question is why can't Mythtv gracefully recover from this and in particular switch to using another available tuner?

I have no idea why in this particular case SetInputAndFormat? is hitting the NTSC/ATSC case for an HD-PVR, especially since it has just properly finished recording something the previous hour. However, if there are these failures returned from SetInputAndFormat?, why doesn't MythTV try to use another tuner. Despite printing all these messages for the full hour, MythTV merrily transitions to the Recorded state as if everything was okay.

When this condition triggers, the log shows:

2011-02-07 11:00:12.308 Channel(/dev/video-hdpvr1) Error:
SetInputAndFormat(6, NTSC)
                        while setting input (v4l v2)
                        eno: Connection timed out (110)
2011-02-07 11:00:22.322 Channel(/dev/video-hdpvr1) Error:
SetInputAndFormat(6, NTSC)
                        while setting format (v4l v2)
                        eno: Connection timed out (110)
2011-02-07 11:00:32.322 Channel(/dev/video-hdpvr1) Error:
SetInputAndFormat(6, ATSC)
                        while setting input (v4l v2)
                        eno: Connection timed out (110)
2011-02-07 11:00:42.322 Channel(/dev/video-hdpvr1) Error:
SetInputAndFormat(6, ATSC)
                        while setting format (v4l v2)
                        eno: Connection timed out (110)
2011-02-07 11:00:42.322 Channel(/dev/video-hdpvr1): SetInputAndFormat()
failed
2011-02-07 11:00:42.322 TVRec(6): Starting Signal Monitor
2011-02-07 11:00:42.322 TVRec(6): SetupSignalMonitor(1, 0)
2011-02-07 11:00:42.322 AnalogSM(/dev/video-hdpvr1): card 'Hauppauge HD
PVR' driver 'hdpvr' version '512'
2011-02-07 11:00:42.322 TVRec(6): Signal monitor successfully created
2011-02-07 11:00:42.322 AnalogSM(/dev/video-hdpvr1): hd-pvr start encoding
2011-02-07 11:00:42.322 TVRec(6): SetFlags(SignalMonitorRunning,) ->
RunMainLoop,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:00:42.322 TVRec(6): ClearFlags(WaitingForSignal,) ->
RunMainLoop,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:00:42.323 TVRec(6): SetFlags(WaitingForSignal,) ->
RunMainLoop,WaitingForSignal,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:00:42.323 TVRec(6): ClearFlags(NeedToStartRecorder,) ->
RunMainLoop,WaitingForSignal,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:00:42.323 TVRec(6): SetFlags(NeedToStartRecorder,) ->
RunMainLoop,WaitingForSignal,NeedToStartRecorder,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:00:42.329 AutoExpire: CalcParams(): Max required Free
Space: 3.0 GB w/freq: 15 min
2011-02-07 11:00:42.330 Started recording: "Dog the Bounty Hunter":"No
Luv Still": channel 2223 on cardid 6, sourceid 2
2011-02-07 11:00:43.573 AnalogSM(/dev/video-hdpvr1), Error: Start
encoding failed
                        eno: Resource temporarily unavailable (11)

( snip 26 minutes of repeats ...)

011-02-07 11:27:03.771 AnalogSM(/dev/video-hdpvr1): hd-pvr start encoding
2011-02-07 11:27:03.771 AnalogSM(/dev/video-hdpvr1), Error: Start
encoding failed
                        eno: No such device (19)
2011-02-07 11:27:03.781 ProgramInfo(2223_20110207110000.mpg), Error:
GetPlaybackURL: '2223_20110207110000.mpg' should be local, but it can
not be found.
2011-02-07 11:27:03.781 TVRec(6): SetFlags(KillRec,) ->
RunMainLoop,KillRec,WaitingForSignal,NeedToStartRecorder,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:27:03.781 TVRec(6): Changing from RecordingOnly to None
2011-02-07 11:27:03.782 TVRec(6):
ClearFlags(FrontendReady,CancelNextRecording,) ->
RunMainLoop,KillRec,WaitingForSignal,NeedToStartRecorder,SignalMonitorRunning,RingBufferReady,
2011-02-07 11:27:03.782 TVRec(6): HandleTuning Request: Program(no)
channel() input() flags(CloseRec,KillRec,KillRingBuffer,)
2011-02-07 11:27:03.782 TVRec(6): TeardownSignalMonitor() -- begin
2011-02-07 11:27:03.822 TVRec(6): TeardownSignalMonitor() -- end
2011-02-07 11:27:03.822 TVRec(6): ClearFlags(SignalMonitorRunning,) ->
RunMainLoop,KillRec,WaitingForSignal,NeedToStartRecorder,RingBufferReady,
2011-02-07 11:27:03.822 TVRec(6): ClearFlags(WaitingForSignal,) ->
RunMainLoop,KillRec,NeedToStartRecorder,RingBufferReady,
2011-02-07 11:27:03.823 TVRec(6): FinishedRecording(Dog the Bounty
Hunter) in recgroup: Default
2011-02-07 11:27:03.824 Finished recording Dog the Bounty Hunter "No Luv
Still": channel 2223
2011-02-07 11:27:03.824 TVRec(6): ClearFlags(PENDINGACTIONS,) ->
RunMainLoop,KillRec,RingBufferReady,
2011-02-07 11:27:03.824 TVRec(6):
ClearFlags(CancelNextRecording,KillRec,) -> RunMainLoop,RingBufferReady,
2011-02-07 11:27:03.825 Updating status for "Dog the Bounty Hunter":"No
Luv Still" on cardid 6 (Tuning => Recorded)
2011-02-07 11:27:03.834 Reschedule requested for id 0.

Change History (2)

comment:1 Changed 9 years ago by robertm

Resolution: Fixed
Status: newclosed

Closing as essentially a feature request without patch (though David Engel has recently substantially improved how we handle failed recordings in master, identifying failures better and rescheduling them for later, which at least improves the situation). For what remains, however, the HD-PVR driver/hardware is what really needs attention.

It's a coin flip between "fixed" (because the status of failed recordings is improved) and "wontfix" (because we don't work on the HD-PVR driver).

comment:2 Changed 9 years ago by gigem

In my experience, the hdpvr needs manual intervention, such as power cycling, when it gets into this state. From a scheduling robustness point of view, what we need in a case like this is for the recorder to tell the scheduler that the recorder should be taken off-line and some way to inform the user to take further action.

Note: See TracTickets for help on using tickets.