Record TV over USB

Here for general support for B series TVs, request and problem solve area.

majonezz
SamyGO Project Donor
Posts: 63
Joined: Sat Feb 06, 2010 10:44 am
Location: Wroclaw, Poland

Re: Record TV over USB

Post by majonezz »

I have LE40B679 which is CI+ with additional satellite tuner, but i guess it does not make any difference.
My CAM is Neotion Conax CAS-7 for N-tv - polish provider.
Try to play with writing values to mentioned above mem area. As sbav1 wrote, we have actual video pid @ 0x30110100 byte (or byte+half-byte?), so it will vary with every channel. Try to figure out what exactly kills the signal. You cannot change last three characters, becouse they store PID. Try to:
-Set TV to some FTA channel with CAM inserted
-Read @ 0x30110100 value
-try to modify value by eating it's left part, but do not change last four characters
For example, if you get 0x141A0A1, try 0x41A0A1.
If signal die, try reboot, then set to same channel and try 0x1A0A1.
If still no success, then probably we have totally diferent CAM's and i have luck that mine works :(
sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: Record TV over USB

Post by sbav1 »

TSD/PVR PID filter register bits (a missing explanation[s]):

Code: Select all

## PID filter registers for bank 0|1 (0x30110100|0x30110180); rv=[31..0]

   1) PID: // lldTsDmxSetPidFilter, ...
   rv & 0x00001fff // mask: 00000000 00000000 00011111 11111111
 
   2) PID_EN: // devTsd_EnablePidFilter, ...
   rv & 0x00002000 // mask: 00000000 00000000 00100000 00000000
 
   3) VidIndicator: // lldTsDmxSetVidIndicator, devTsd_SetPidFilterPvr, lldPvr_SetPvrPid
   ## set on entry #0 only while PVR on (???)
   rv & 0x00004000 // mask: 00000000 00000000 01000000 00000000
   
   4) DMX_EN: // lldTsDmxSetPidFilter, ...
   rv & 0x00008000 // mask: 00000000 00000000 10000000 00000000
   
   5) EnableExtractPayload: // devTsd_SetPidFilterPvr, lldPvr_SetPvrPid, ...
   rv & 0x00010000 // mask: 00000000 00000001 00000000 00000000
   
   6) Unknown (unused ???)
   rv & 0x00020000 // mask: 00000000 00000010 00000000 00000000

   7) 264_EN: // lldTsDmxDebugMon
   # probably unused (???)
   rv & 0x00040000 // mask: 00000000 00000100 00000000 00000000
   
   8) PVR_EN: // lldTsDmxSetPidFilter, lldPvr_SetPvrPid, ...
   rv & 0x00080000 // mask: 00000000 00001000 00000000 00000000

   9) PsiReplace: // lldTsDmxSetPsiReplace, 
   rv & 0x00100000 // mask: 00000000 00010000 00000000 00000000
   
   10) BYPASS_EN: // devTsd_SetPidBankBypass(..., bank_id, bool bypass_enable) -> lldTsDmxSetPidFilterBypass
   # !!! only set on entry #0 of bank 0|1
   rv & 0x00200000 // mask: 00000000 00100000 00000000 00000000
   
   11) NO_SCRAMBLE|ca_type.resrv|ca_type.resrv|AES-ECB|DES-ECB|3DES-CBC|ca_type.resrv|AES-CBC:   
   # !!! only set on entry #0 of bank 0|1
   # devTsd_SetPidBankCaType(..., bank_id, int ca_type) -> lldTsDmxSetPidBankCaType(bank_id, ca_type2) // ca_type2: 0..5
   rv & 0x01C00000 // mask: 00000001 11000000 00000000 00000000
Also, check out: TDM -> 11 : TD Debug -> 0x04 : spI Debug -> 50 : TSD kernel level debug -> 0 : Tsd monitor
Yields an useful (?) info; may be helpful while trying to clarify some things:

Code: Select all

root@localhost:~/bin# dmesg

[Ext1_0] (Locked:Valid) Serial_sync_disabled Parallel
     Sync_detection_enabled
    + RESET_SYNC=Normal SYNC_LOCK=3 SYNC_LOSS=3

    [ PID Filter #000 ] PID=0x00CA PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Video1 DEMUX_MODE=MPEG2_PES QUEUE_SIZE=2048K PCR_EN
        +
        Queue From=0x76A00000 Wr=0x76B7C3A8 To=0x76A00000

    [ PID Filter #001 ] PID=0x00CC PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Audio0 DEMUX_MODE=MPEG2_PES QUEUE_SIZE=200K
        +
        Queue From=0x76680000 Wr=0x766882C0 To=0x76680000

    [ PID Filter #005 ] PID=0x0000 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F8A000 Wr=0x79F8A4F4 To=0x79F8A4F0
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #1
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x00000000_00000000

    [ PID Filter #006 ] PID=0x0010 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F8C000 Wr=0x79F8C9F4 To=0x79F8C9F0
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #2
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x40000000_00000000

    [ PID Filter #007 ] PID=0x0011 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F8E000 Wr=0x79F8FB2C To=0x79F8FB28
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #3
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x42000000_00000000

    [ PID Filter #008 ] PID=0x0012 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F90000 Wr=0x79F91007 To=0x79F90E94
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #4
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x4E000000_00000000
            Section Filter #14
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x50000000_00000000
            Section Filter #15
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x51000000_00000000
            Section Filter #16
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x4F000000_00000000
            Section Filter #17
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x60000000_00000000
            Section Filter #18
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x61000000_00000000

    [ PID Filter #009 ] PID=0x0014 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F92000 Wr=0x79F92C44 To=0x79F92C40
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #5
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x73000000_00000000

    [ PID Filter #010 ] PID=0x00C9 PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=MPEG2_SECTION QUEUE_SIZE=8K
        +
        Queue From=0x79F94000 Wr=0x79F952A4 To=0x79F952A0
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000
            Section Filter #6
                Mask=0xFF000000_00000000
                Mode=0xFF000000_00000000
                Data=0x02000000_00000000

    [ PID Filter #011 ] PID=0x00CD PID_EN DMX_EN NO_SCRAMBLE
         TARGET_AREA=Section DEMUX_MODE=DVB_PES QUEUE_SIZE=8K
        +
        Queue From=0x79F96000 Wr=0x79F960F8 To=0x79F96000
            Section Filter #0
                Mask=0xFFFFFFFF_FFFFFFFF
                Mode=0xFFFFFFFF_FFFFFFFF
                Data=0x00000000_00000000

    [CA Buffer] Empty_slot=4
    [TS Buffer] Empty_slot=2

    [DISCONTINOUS_CC_VIDEO     error count = 5]
    [DISCONTINOUS_CC_AUDIO     error count = 5]
    [DISCONTINOUS_CC_SECTION   error count = 2]
    [DUPLICATE_CC_VIDEO        error count = 0]
    [DUPLICATE_CC_AUDIO        error count = 0]
    [DUPLICATE_CC_SECTION      error count = 0]
    [TRANSPORT_ERROR_INDICATOR error count = 11]
    [ADAPTATION_FIELD          error count = 0]
    [CVD] MPEG0 TsdWriteAddr=0x0 MpegReadAddr=0x0

 
Overall, this CI/CI+ CAM business seems to be awfully complicated :). I can't help very much with that topic, my setup is very simple (non-CI+ B650, no CI/CI+ CAM, just one DVB-T mux with FTA programs only).
sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: Record TV over USB

Post by sbav1 »

viper3k wrote:Pfff... still no luck ;) ..

But could the only reason why it aint working for me be my CAM module .. or could it also be that my TV provider has some kind of different protection ??
If it is just the CAM ..then I am willing to buy a new one I guess.
Chance that it will work better with different CAM is not a big one, IMO. It may be worth a try, I guess. Perhaps you could just borrow another CAM to perform a test?
BTW, what model / firmware version do you have, exactly?
sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: Record TV over USB

Post by sbav1 »

viper3k wrote:I've got an LE32B650 CI+ with 2006.2 patched firmware (from russian site :P)
I'll try to check this firmware version for a possible glitches in PVR code, but [overall] it's not looking very optimistic :(.
geo650
Official SamyGO Developer
Posts: 303
Joined: Wed Oct 07, 2009 12:03 pm

Re: Record TV over USB

Post by geo650 »

sbav1 wrote:...
- PIP window can be hidden, by turning Chelsea scaler #1 off. It's possible from TDM. Probably doable from Content Library application level with simple SdVideo_Get()/SdVideo_Set() calls (not tested yet).
I would like to implement PIP hide/unhide function in PVR+ but I have no idea how to call the functions you mentioned. I was trying to get PIP window size using function SdVideo_GetPCPosition (correct one?):

Code: Select all

// WARNING! This is probably wrong method! Do not use.
typedef struct
{
  int x, y, w, h;  // I'm not sure!
} SdPoint_t;
extern int _Z21SdVideo_GetPCPosition11SdVideoID_kP9SdPoint_t(int, SdPoint_t *);
//extern int _Z21SdVideo_SetPCPosition11SdVideoID_kP9SdPoint_t(int, SdPoint_t *);
SdPoint_t pip_pos;
// call exeDSP function:
_Z21SdVideo_GetPCPosition11SdVideoID_kP9SdPoint_t(0, &pip_pos);
but it returned zeros only. I am not sure about first parameter (tried 0 and 1) and if the second parameter is such struct as defined above. Can you provide a function to hide/unhide PIP window? Then I could make some tests.

I need PIP hide function for watching external (HDMI) video source with audio coming from internal DVB-C tuner.

I am also thinking about multi-channel (single mux) recording but I need more information. I need to know what mux (MUX ID or TSid, Network ID) we have now or know current channel number and DVB-type (-C, -S or -T). Then we could read channel table from mtd_rwarea files and select PIDs for current mux only (to fill filter table with allowed PIDs only).

Post Reply

Return to “[B] Support”