[linux-dvb] Kworld DVB-T 210 - dvb tuning problem

timf timf at iinet.net.au
Sun Apr 13 08:00:45 CEST 2008


Hartmut Hackmann wrote:
> Hi, Tim
>
> timf schrieb:
>> hermann pitton wrote:
>>> Am Freitag, den 11.04.2008, 00:08 +0200 schrieb Hartmut Hackmann:
>>>  
>>>> HI, Tim
>>>>
>>>> timf schrieb:
>>>>   
>>>>> Hi Hartmut,
>>>>> OK, found some more spare time, but very, very frustrated!
>>>>>
>>>>> 1) Tried ubuntu 7.04, 7.10, 8.04
>>>>>     Tried with just modules that exist in kernel (no v4l-dvb)
>>>>>    Tried v4l-dvb from June 2007 and tried current v4l-dvb
>>>>>    Tried with/without Hartmut patch - changeset 7376    49ba58715fe0
>>>>>    Tried with .gpio_config   = TDA10046_GP11_I, or .gpio_config   
>>>>> = TDA10046_GP01_I,
>>>>>    Tried using configs in saa7134-dvb.c matching tiger, tiger_s, 
>>>>> pinnacle 310i, twinhan 3056
>>>>>
>>>>>     # Australia / Perth (Roleystone transmitter)
>>>>>     # T freq bw fec_hi fec_lo mod transmission-mode guard-interval 
>>>>> hierarchy
>>>>>     # SBS
>>>>>     T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
>>>>>     # ABC
>>>>>     T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
>>>>>     # Seven
>>>>>     T 746500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE
>>>>>     # Nine
>>>>>     T 767500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
>>>>>     # Ten
>>>>>     T 788500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
>>>>>
>>>>> 2) I have these saa7134 cards:
>>>>>     - pinnacle 310i
>>>>>     - kworld 210
>>>>>
>>>>>     This cx88 card:
>>>>>     - dvico DVB-T Pro hybrid (analog tv not work)
>>>>>
>>>>> -   problem only occurs with kworld 210 in linux (works fine in 
>>>>> WinXP)
>>>>>
>>>>> 3) In WinXP, all channels, both analog tv and dvb-t found
>>>>>
>>>>> 4) In linux, if start dvb-t first, never scans SBS - dmesg1
>>>>>
>>>>> 5) In linux, if start analog tv first, stop, then start dvb-t, 
>>>>> scan finds SBS - dmesg2
>>>>>
>>>>>       
>>>> a) The pinnacle 310i finds everything?
>>>>     It has the same chipset, but an almost perfectly handled tuner 
>>>> chip...
>>>>     This means that your initial config file is ok...
>>>> b) Does this mean that in case 4, all other channels are found?
>>>> c) Case 5: This finds everything?
>>>> d) What happens if you use the scan data of the pinnacle card?
>>>>     Does it tune SBS? Does it just take more time to stabilize?
>>>>     This can be understood.
>>>> e) Just to be sure: did you clarify the open point with 
>>>> .antenna_switch
>>>>     (i think so)
>>>> f) the kernel logs are as expected.
>>>> <snip>
>>>>
>>>>
>>>>   
>>>>> 6) Herman mentioned something called a "mode-switch" in the 
>>>>> archives, but not any description.
>>>>>       
>>>> I guess he meant the switching between analog, radio and dvb-t. 
>>>> This is the
>>>> GPIO handling and card depending.
>>>>     
>>>
>>> Tim must have it from when I mentioned the special case of card=87 and
>>> 94.
>>>
>>>  
>>>>> I tried to find some data sheets for tda8275 tda8290 but only 
>>>>> found the publicity pdf file from Phillips,
>>>>> so at least I can see they go together, so I presume this 
>>>>> "mode-switch" is coded into those modules.
>>>>> But those modules work for all other cards, so now I'm lost again.
>>>>>
>>>>> What else should I try?
>>>>>
>>>>>       
>>>> If my assumptions above are wrong, there is one other chance:
>>>> Recently i saw another card that does the (unusual) mode switching
>>>> like card 87. So to be sure, you might try to force this card type (be
>>>> aware of the antenna inputs, if in doubt, try both.
>>>>
>>>> Best regards
>>>>    Hartmut
>>>>
>>>>     
>>>
>>> For the Medion8800 Quad and CTX948 also showing this issue, needs to
>>> tune analog first to have good recepton on DVB-T, they are a little
>>> weaker on analog than other cards, but after that on DVB-T, they are as
>>> good than known good others.
>>>
>>> Cheers,
>>> Hermann
>>>
>>>
>>>   
>> Hi Hartmut and Hermann,
>>
>> a) The pinnacle 310i finds everything?
>>    It has the same chipset, but an almost perfectly handled tuner 
>> chip...
>>    This means that your initial config file is ok...
>>
>> Answer - Yes, the non-working remote (and constant unknown key 
>> messages) is all that is
>> wrong with the pinnacle 310i.
>> I tested it for your new tda8290 tda8275 patches - didn't I send you 
>> the results?
>> It works fine!
>>
>> b) Does this mean that in case 4, all other channels are found?
>>
>> Answer - In linux, if start dvb-t first, never scans SBS
>>     - yes all other channels are viewable/scannable.
>>
>> c) Case 5: This finds everything?
>>
>> Answer - In linux, if start analog tv first, stop, then start dvb-t, 
>> scan finds SBS
>>     - yes all channels are viewable/scannable.
>>
>> d) What happens if you use the scan data of the pinnacle card?
>>    Does it tune SBS? Does it just take more time to stabilize?
>>    This can be understood.
>>
>> Answer - the same answer applies as for b) and c)
>>
>> e) Just to be sure: did you clarify the open point with .antenna_switch
>>    (i think so)
>>
>> Answer - yes that was me being over-enthusiastic - made no difference
>> as you pointed out.
>>
>>
>> OK, this modification has achieved, I think success. I can now 
>> view/scan all channels
>> in analog tv or dvb-t in either order.
>> That is, I now don't have to start analog tv first, before dvb-t will 
>> start.
>>
>> In saa7134- cards.c - no change.
>>
>> In saa7134-dvb.c:
>>
>> Remove this:
>> ------------------------------------
>> static struct tda1004x_config kworld_dvb_t_210_config = {
>>    .demod_address = 0x08,
>>    .invert        = 1,
>>    .invert_oclk   = 0,
>>    .xtal_freq     = TDA10046_XTAL_16M,
>>    .agc_config    = TDA10046_AGC_TDA827X,
>>    .gpio_config   = TDA10046_GP11_I,
>>    .if_freq       = TDA10046_FREQ_045,
>>    .i2c_gate      = 0x4b,
>>    .tuner_address = 0x61,
>>    .antenna_switch= 1,
>>    .request_firmware = philips_tda1004x_request_firmware
>> };
>> ------------------------------
>>
>> Add this:
>>
>> ------------------------------
>> static int kw210_tuner_init(struct dvb_frontend *fe)
>> {
>>    struct saa7134_dev *dev = fe->dvb->priv;
>>    philips_tda827x_tuner_init(fe);
>>    /* route TDA8275a AGC input to the channel decoder */
>>    saa7134_set_gpio(dev, 22, 1);
>>    return 0;
>> }
>>
>> static int kw210_tuner_sleep(struct dvb_frontend *fe)
>> {
>>    struct saa7134_dev *dev = fe->dvb->priv;
>>    /* route TDA8275a AGC input to the analog IF chip*/
>>    saa7134_set_gpio(dev, 22, 0);
>>    philips_tda827x_tuner_sleep(fe);
>>    return 0;
>> }
>>
>> static struct tda827x_config kw210_cfg = {
>>    .tuner_callback = saa7134_tuner_callback,
>>    .init = kw210_tuner_init,
>>    .sleep = kw210_tuner_sleep,
>>    .config = 0
>> };
>>
>> static struct tda1004x_config kworld_dvb_t_210_config = {
>>    .demod_address = 0x08,
>>    .invert        = 1,
>>    .invert_oclk   = 0,
>>    .xtal_freq     = TDA10046_XTAL_16M,
>>    .agc_config    = TDA10046_AGC_TDA827X,
>>    .gpio_config   = TDA10046_GP11_I,
>>    .if_freq       = TDA10046_FREQ_045,
>>    .tuner_address = 0x61,
>>    .request_firmware = philips_tda1004x_request_firmware
>> };
>> ----------------------------
>>
>> Change this:
>>
>>    case SAA7134_BOARD_KWORLD_DVBT_210:
>>        dev->dvb.frontend = dvb_attach(tda10046_attach, 
>> &kworld_dvb_t_210_config, &dev->i2c_adap);
>>        if (dev->dvb.frontend) {
>>            if (dvb_attach(tda827x_attach,dev->dvb.frontend,
>>                   kworld_dvb_t_210_config.tuner_address, &dev->i2c_adap,
>>                                &kw210_cfg) == NULL) {
>>                wprintk("no tda827x tuner found at addr: %02x\n",
>>                    kworld_dvb_t_210_config.tuner_address);
>>            }
>>        }
>>        break;
>> ---------------------------------------------
>>
>> However, I need you to explain something for me.
>>
>> There is no difference if I use this:
>>
>>    saa7134_set_gpio(dev, 22, 1);
>>
>> or this:
>>
>>    saa7134_set_gpio(dev, 21, 1);
>>
>> I await your guidance, meanwhile I shall apply my
>> modification to enable the remote and ensure it
>> doesn't have any effect.
>>
>> Many thanks to you both,
>>
>> Regards,
>> Tim
>>
> Again progress, excellent!
> I think we will need one further interation. If i go through your
> changes and comments, i come to the opinion that we will get the same
> with less changes. But if i understand this right, its astonishing 
> that your
> card worked a bit. But let me go through your last patch again tomorrow -
> i am too tired now.
>
> Best regards
>   Hartmut
>
Hi Hartmut,

I was wrong:

->There is no difference if I use this:

->   saa7134_set_gpio(dev, 22, 1);

->or this:

->   saa7134_set_gpio(dev, 21, 1);

This is wrong.
It only works at all when it is this:   saa7134_set_gpio(dev, 22, 1);

With this:   saa7134_set_gpio(dev, 21, 1); it does not scan anything at all.

I proved this out by modifying the source, rebuild v4l-dvb,
and then instead of rebooting, I power-cycled each time.


There are 2 problems here:
1) With no modification, I must switch to analog tv before I can switch 
to dvb-t.
    If I am using Kaffeine, and then wish to use Me-tv, I must view 
analog tv
    in between.

2) With no modification, dvb-t will not scan SBS unless analog tv viewed 
first.


With this modification, both problems vanish.

I have not yet tested radio.

Regards,
Tim



More information about the linux-dvb mailing list