[mythtv] Debugging Unreliable DCT-6200 Recording

Donald Oakes donald at oakesville.com
Sat Oct 22 18:18:53 UTC 2005


I've been having similar problems with firewire connectivity and my 
DCT-6200.  Along with the appropriate plugctl commands 
(http://www.netzwerk-aktiv.com/pub/doc/newsletters/linux1394-user/html/2344.html), 
your suggested workaround enabled me to get test-mpeg2 working 100% in 
broadcast mode.  However, firewire recording and live TV were still only 
working part of the time.  So I compared the sequence of operations in 
test-mpeg2.c versus firewirerecorder.cpp, and I noticed a slight 
discrepancy in the order that the raw1394 file descriptor was obtained.

When I applied the attached patch to current svn (10/22/05) I was able 
to achieve 100% reliability for MythTV firewire recording.  I have 
absolutely no idea why moving the call to raw1394_get_fd() would have 
any impact, but it seemed to do the trick.  Any advice as to whether 
this warrants a Trac ticket would be greatly appreciated.

Thanks,
 - Don

Jim Westfall wrote:

>You have mythtv setup using broadcast firewire connection type?
>
>test-mpeg2 -r 1 > blah.ts uses a peer to peer connection type.  Doing this 
>seems to initialize something in the driver or dct-6200 and it ends up 
>making a boardcast connection work 100% after that.
>
>I know a few people that use the workaround that I do and it works for 
>them as well.
>
>jim
>
>jrandall at ftrd.us <jrandall at ftrd.us> wrote [09.23.05]:
>  
>
>>Jim,
>>
>>Thanks for the input on this.
>>
>>For me, your fix only works for live tv.  I had been doing basically  
>>the same thing before, although it's usually faster for me to skip  
>>using test-mpeg2 and just go for a few tries with mythfrontend.  The  
>>timeout is longer, but I haven't observed any relationship between  
>>getting things going correctly with test-mpeg2 and then having them  
>>subsequently work in myth.  I am seeing about 50% failure and haven't  
>>detected any sort of pattern, although perhaps I will write up a  
>>little script and let it go a few hundred trials just to check on that.
>>
>>Once livetv starts working, it is true that you are "all set" in the  
>>sense that you can (it seems) continue to watch live tv indefinitely,  
>>change channels, etc without any problem.  However, if you want to  
>>record it is still 50% odds that it works.  Even if you are watching  
>>livetv and push the 'r'ecord button, it seems that it resets the  
>>connection when switching to record mode and there's a good chance it  
>>won't work.
>>
>>I suppose another option for a workaround would be to just keep the  
>>transport stream open once it is working (just like live tv does when  
>>changing channels).  We could look for a way to hand off the open  
>>firewire stream to the recording process rather than having it  
>>reinitialized every time.
>>
>>But that would still require human intervention to get things going  
>>in the first place.  I'm going to try to hack up a way for the  
>>firewire code to detect when the transport stream connection isn't  
>>working and give a few tries at reinitializing it before giving up.
>>It looks like libs/libmythtv/firewirerecorder.cpp is the place to do  
>>this, so that's where I'm headed.
>>
>>I just noticed that there is a bug tracking system, but didn't see a  
>>bug for this yet.  Should we add one so we'll have a place to submit  
>>the patch?  It'll be good to have others who have this problem to  
>>test and make sure it solves it for more than just me.
>>
>>Josh.
>>
>>
>>On Sep 22, 2005, at 8:16 PM, Jim Westfall wrote:
>>
>>    
>>
>>>Hi Josh
>>>
>>>I have this issue as well on one of my dct-6200's.  I havent had time
>>>to see what the exact cause it, but the following work around gets it
>>>working 100% for me.
>>>
>>>make sure your firewire connection type is set to broadcast in  
>>>mythsetup.
>>>
>>>run 'test-mpeg2 -r 1 > test.ts' over and over until you get  
>>>output.  once
>>>you get output stop test-mpeg2 then attempt to watch livetv in  
>>>myth.  If
>>>livetv works you should be all set.  If not, you will need to  
>>>repeat the
>>>process until it does.  It will usually take me a few (less then  
>>>10) tries
>>>to get it in a working state.
>>>
>>>This process should only be required if you reboot your box or  
>>>dct-6200.
>>>
>>>jim
>>>
>>>jrandall at ftrd.us <jrandall at ftrd.us> wrote [09.22.05]:
>>>
>>>      
>>>
>>>>I'm having intermittent trouble recording with my DCT-6200 cable box
>>>>connected via firewire.  Basically it seems like about half the time
>>>>the program/live tv doesn't start coming in.  For example, when you
>>>>select "Watch TV" the screen just goes blank for a little while and
>>>>then returns.  If you try a few times, it always starts working
>>>>eventually, but it is much more of a problem for recording -- which
>>>>fails completely half the time.
>>>>
>>>>I have seen other people posting similar issues, so I know it is not
>>>>just me.
>>>>
>>>>I suspect that it is not an issue with MythTV per se.  I have also
>>>>observed this phenomenon when using the test-mpeg2 utility that comes
>>>>with libiec61883.  Basically, running "test-mpeg2 -r 1 > /tmp/foo.ts"
>>>>will either start to fill up the file or will leave a 0 byte file
>>>>"forever".  Either way, test-mpeg2 says "...Established
>>>>Connection..." and "Starting to receive" -- it doesn't seem to know
>>>>whether data is actually coming or not.  I also have my DCT-6200
>>>>connected directly to a TV for debugging, and I note that it always
>>>>glitches a little whenever you start capturing from it (picture
>>>>freezes and audio stops for a second, then continues).  This happens
>>>>whether the data is transmitted or not.
>>>>
>>>>When the connection is not working, mythbackend says:
>>>>"Firewire: No Input in 15 seconds [P:1 N:1] (select)"
>>>>followed by:
>>>>"RingBuffer: Couldn't read data from the capture card in 15 seconds.
>>>>Stopping."
>>>>
>>>>Once data starts flowing, I have never observed any problems, but as
>>>>I said, it has this problem about 50% of the time.  When using test-
>>>>mpeg2 to capture, it isn't really a problem, since I note right away
>>>>that no data is flowing and retry until it works.  But, mythtv fails
>>>>much harder.  It takes many seconds to timeout on live tv before
>>>>letting you retry, and has the problem on channel changing as well.
>>>>And recording shows only works about half the time, because it is
>>>>either go or no-go... there seems to be no retry possible.
>>>>
>>>>How should I go about debugging/fixing this?
>>>>
>>>>We could probably add a way to detect that no data is flowing over
>>>>firewire after the receive connection has been established and then
>>>>retry the connection, but should this problem be fixed here or at a
>>>>lower level (such as in libiec61883?).  Unfortunately, the
>>>>linux1394.org server still seems to be down, so I can't check the
>>>>buglist there to see if this is a known problem or not.
>>>>
>>>>It seems probable that the real problem here is with the firmware in
>>>>my cable box, but since it is not up to me to update that, I'd rather
>>>>see a workaround in software.
>>>>
>>>>Could someone who is familiar with the firewire STB support in mythtv
>>>>let me know where the best place would be to put the fix?  I can
>>>>start hacking around, but I'd rather do it "right" the first time.
>>>>
>>>>Thanks,
>>>>
>>>>Josh.
>>>>
>>>>
>>>>
>>>>        
>>>>
>>>      
>>>
>>>>_______________________________________________
>>>>mythtv-dev mailing list
>>>>mythtv-dev at mythtv.org
>>>>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>>>>
>>>>        
>>>>
>>>_______________________________________________
>>>mythtv-dev mailing list
>>>mythtv-dev at mythtv.org
>>>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>>>
>>>      
>>>
>>>------------------------------------------------------------------------
>>>
>>>_______________________________________________
>>>mythtv-dev mailing list
>>>mythtv-dev at mythtv.org
>>>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>>>      
>>>

-------------- next part --------------
Index: firewirerecorder.cpp
===================================================================
--- firewirerecorder.cpp	(revision 7560)
+++ firewirerecorder.cpp	(working copy)
@@ -103,7 +103,6 @@
      }
      
      isopen = true;
-     fwfd = raw1394_get_fd(fwhandle); 
      return true;
 }
 
@@ -144,6 +143,8 @@
     _request_recording = true;
     _recording = true;
    
+    fwfd = raw1394_get_fd(fwhandle);
+
     iec61883_mpeg2_recv_start(fwmpeg,fwchannel);
     lastpacket = time(NULL);
     while(_request_recording) {


More information about the mythtv-dev mailing list