Resultat 1 till 10 av 13

Ämne: Ubuntu 10.04 open-sasc-ng och newcamd

Hybridvisning

Föregående inlägg Föregående inlägg   Nästa inlägg Nästa inlägg
  1. #1
    Jag använder vdr-sasc-ng med oscam (r2948) och det fungerar fint iaf.

  2. #2
    Ok, ska ge det ett till försök i eftermiddag, kan ju ev vara min newcamd server som strular

  3. #3

    Jo, men jag var tvungen att koda...

    Citat Ursprungligen postat av jimmyohlin Visa inlägg
    Ok, ska ge det ett till försök i eftermiddag, kan ju ev vara min newcamd server som strular

    Hej.

    Jag höll på i våras och grejade en massa, och det slutade med att jag var tvungen att programmera om sasc-ng. Som jag begrep det så är det nån satellitspecifik status som sasc-ng väntar på, och därmed inte kommer igång. (Jag har glömt detaljerna och även om jag är programmerare vet jag inte hur dvb funkar alls...)

    Jag fick det att fungera hur som helst.

    Men inte hd-kanalerna, dvs viaccess 4.0. Dessutom var det lite instabilt, vilket fick mig att avbryta experimentet, eftersom WAF inte skulle gå att uppnå...

    Kontentan av detta är att jag inte på rak arm kan leverera en patch, men om du är intresserad kan jag lägga några timmar. Dock känns det lite tröstlöst eftersom utvecklingen av sasc-ng verkar vara rätt död, koden var rätt sunkig, och jag vet inte hur om någon softcam klarar viaccess 4.0, som jag antar man måste fixa inom snar framtid.

    Det verkar finnas flera versioner av sasc-ng. Vilken är fräschast, och finns det nån i världen som håller på med sasc-ng?

    Ska jag göra ett ryck?

  4. #4
    Den mest aktuella sasc källkoden finns väl i vdr softcam pluginen: http://85.17.209.13:6100/sc
    Det är iaf den jag använder med CanalDigital kabel-tv.

  5. #5

    PATCH för dvbloopback/plugin_getsid.c för terrestial delivery

    Här är en patch för VDR/sasc-ng så att get_sid inte snubblar på "terrestial" carriers, dvs boxer.

    Det löser inga krypteringsfel såklart, men snabbar upp synkandet. Jag upplever att kanalbyte går bättre i alla fall.

    Tala gärna om hur det går, så kan jag göra en ansats att få upp koden i repositoryt.

    Kod:
    diff -r 1cc3497be31c contrib/sasc-ng/dvbloopback/src/plugin_getsid.c
    --- a/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c   Tue Apr 13 09:55:20 2010 +0800
    +++ b/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c   Tue Sep 21 15:44:45 2010 +0200
    @@ -189,7 +189,9 @@
                  last_sec, MAX_PAT_SECTIONS);
         return 1;
       }
    +  dprintf0("read_pat: end = %0x, sec = %d, last_sec = %d\n", end, sec, last_sec);
       if (pat->version != version || last_sec != pat->last_section) {
    +    dprintf0("read_pat: pat->version: %d, version: %d, last_sec: %d, pat->last_section\n", pat->version, version, last_sec, pat->last_section);
         pat->version = version;
         pat->last_section = last_sec;
         while(! list_empty(&pat->dmx_filter_ll)) {
    @@ -232,6 +234,8 @@
           dprintf2("found NIT at PID: %d", pid);
         }
       }
    +  dprintf0("read_pat: ŕeturn 0;");
    +
       return 0;
     }
     /*
    @@ -270,14 +274,22 @@
     static int read_nit(unsigned char *buf, struct nit_data *nit, unsigned int size) {
       int len, tsl_len, td_len, tag_len, network_desc_len;
       int network_id, pos, tag;
    +
    +  if( size < 10 ) {
    +    dprintf0(
    +             "read_nit: to short buffer read (%d) < 10 bytes for header.\n",size);
    +    return -1;
    +  }
       if (buf[0] != 0x40 && buf[0] != 0x41 && buf[0] != 0x72) {
         dprintf0(
    -             "read_nit expected table 0x40  or 0x41 but got 0x%02x\n", buf[0]);
    +             "read_nit: aborting! Expected table 0x40,0x41 or 0x72 but got 0x%02x\n", buf[0]);
         return -1;
       }
       if (buf[0] != 0x40) {
    +    dprintf0("read_nit: ignoring table 0x%02x. (not NIT)\n", buf[0]);
         return 0;
       }
    +
       len = ((buf[1] & 0x07) << 8) | buf[2];
       network_id = (buf[3]<<8) | buf[4];
       network_desc_len = ((buf[8] & 0x0f) << 8) | buf[9];
    @@ -289,6 +301,7 @@
           tag = buf[pos+6];
           tag_len = buf[pos+7];
           if(tag == 0x43 && tag_len >= 11) { //satellite descriptor
    +       dprintf0("read_nit: satellite delivery");
             nit->type = tag;
             nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
             nit->orbit = (buf[pos+12] << 8) | buf[pos+13];
    @@ -300,6 +313,7 @@
             printf("Orbit: %08x%c\n", nit->orbit, nit->is_east ? 'E' : 'W');
             return 1;
           } else if(tag == 0x44 && tag_len >= 11) { //cable descriptor
    +       dprintf0("read_nit: cable delivery");
             nit->type = tag;
             nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
             nit->modulation = buf[pos+14];
    @@ -307,7 +321,13 @@
             nit->fec = buf[pos+18];
             printf("Cable: %08x\n", nit->frequency);
             return 1;
    +      } else if(tag == 0x5A && tag_len >= 11) { //terrestial_delivery
    +       dprintf0("read_nit: terrestial delivery");
    +        nit->type = tag;
    +       nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
    +       return 1;
           }
    +
           pos += tag_len+2;
           td_len -= tag_len+2;
         }

  6. #6
    Citat Ursprungligen postat av blippo Visa inlägg
    Här är en patch för VDR/sasc-ng så att get_sid inte snubblar på "terrestial" carriers, dvs boxer.

    Det löser inga krypteringsfel såklart, men snabbar upp synkandet. Jag upplever att kanalbyte går bättre i alla fall.

    Tala gärna om hur det går, så kan jag göra en ansats att få upp koden i repositoryt.

    Kod:
    diff -r 1cc3497be31c contrib/sasc-ng/dvbloopback/src/plugin_getsid.c
    --- a/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c   Tue Apr 13 09:55:20 2010 +0800
    +++ b/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c   Tue Sep 21 15:44:45 2010 +0200
    @@ -189,7 +189,9 @@
                  last_sec, MAX_PAT_SECTIONS);
         return 1;
       }
    +  dprintf0("read_pat: end = %0x, sec = %d, last_sec = %d\n", end, sec, last_sec);
       if (pat->version != version || last_sec != pat->last_section) {
    +    dprintf0("read_pat: pat->version: %d, version: %d, last_sec: %d, pat->last_section\n", pat->version, version, last_sec, pat->last_section);
         pat->version = version;
         pat->last_section = last_sec;
         while(! list_empty(&pat->dmx_filter_ll)) {
    @@ -232,6 +234,8 @@
           dprintf2("found NIT at PID: %d", pid);
         }
       }
    +  dprintf0("read_pat: ŕeturn 0;");
    +
       return 0;
     }
     /*
    @@ -270,14 +274,22 @@
     static int read_nit(unsigned char *buf, struct nit_data *nit, unsigned int size) {
       int len, tsl_len, td_len, tag_len, network_desc_len;
       int network_id, pos, tag;
    +
    +  if( size < 10 ) {
    +    dprintf0(
    +             "read_nit: to short buffer read (%d) < 10 bytes for header.\n",size);
    +    return -1;
    +  }
       if (buf[0] != 0x40 && buf[0] != 0x41 && buf[0] != 0x72) {
         dprintf0(
    -             "read_nit expected table 0x40  or 0x41 but got 0x%02x\n", buf[0]);
    +             "read_nit: aborting! Expected table 0x40,0x41 or 0x72 but got 0x%02x\n", buf[0]);
         return -1;
       }
       if (buf[0] != 0x40) {
    +    dprintf0("read_nit: ignoring table 0x%02x. (not NIT)\n", buf[0]);
         return 0;
       }
    +
       len = ((buf[1] & 0x07) << 8) | buf[2];
       network_id = (buf[3]<<8) | buf[4];
       network_desc_len = ((buf[8] & 0x0f) << 8) | buf[9];
    @@ -289,6 +301,7 @@
           tag = buf[pos+6];
           tag_len = buf[pos+7];
           if(tag == 0x43 && tag_len >= 11) { //satellite descriptor
    +       dprintf0("read_nit: satellite delivery");
             nit->type = tag;
             nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
             nit->orbit = (buf[pos+12] << 8) | buf[pos+13];
    @@ -300,6 +313,7 @@
             printf("Orbit: %08x%c\n", nit->orbit, nit->is_east ? 'E' : 'W');
             return 1;
           } else if(tag == 0x44 && tag_len >= 11) { //cable descriptor
    +       dprintf0("read_nit: cable delivery");
             nit->type = tag;
             nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
             nit->modulation = buf[pos+14];
    @@ -307,7 +321,13 @@
             nit->fec = buf[pos+18];
             printf("Cable: %08x\n", nit->frequency);
             return 1;
    +      } else if(tag == 0x5A && tag_len >= 11) { //terrestial_delivery
    +       dprintf0("read_nit: terrestial delivery");
    +        nit->type = tag;
    +       nit->frequency = (buf[pos+8] << 24) | (buf[pos+9]<<16) | (buf[pos+10]<<8) | buf[pos+11];
    +       return 1;
           }
    +
           pos += tag_len+2;
           td_len -= tag_len+2;
         }

    Jag upplever också att denna patch snabbar på kanalbyten betydligt. Bara försöka trycka in i repositoryt.
    Bra jobbat.

Liknande ämnen

  1. open-sasc-ng ersättare?
    Av cry_wolf i forum Linux
    Svar: 5
    Senaste inlägg: 2009-12-14, 17:56

Taggar för det här ämnet

Behörigheter för att posta

  • Du får inte posta nya ämnen
  • Du får inte posta svar
  • Du får inte posta bifogade filer
  • Du får inte redigera dina inlägg
  •  
stöd oss
ComHit.net är en ideell sidan som drivs helt utan reklamintäkter, detta för att du som användare ska slippa all störande reklam och diskutera de saker du är intresserad av.
Skulle man däremot känna att man vill donera en slant för att hjälpa ComHit.net att bli bättre är ni välkomna att donera via länken nedan.

https://www.paypal.me/comhit/
Följ oss