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

timf timf at iinet.net.au
Sun Apr 13 17:54:31 CEST 2008


timf wrote:
> timf wrote:
>   
>> 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
>>
>> _______________________________________________
>> linux-dvb mailing list
>> linux-dvb at linuxtv.org
>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>>
>>   
>>     
> Hi Hartmut,
>
> OK, tried to test radio with gradio, can't get any frequency to lock.
>
> Now, switching to radio then causes analog tv to have a very weak signal 
> - only 1 channel will scan with very noisy picture.
>
> Then need to power-cycle to revert to good system.
>
>  From syslog:
> Apr 13 14:15:47 ubuntu kernel: [ 3863.073092] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:15:47 ubuntu kernel: [ 3863.193072] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:15:47 ubuntu kernel: [ 3863.297056] tda829x 0-004b: adjust 
> gain, step 1. Agc: 0, ADC stat: 0, lock: 0
> Apr 13 14:15:47 ubuntu kernel: [ 3863.441033] tda829x 0-004b: adjust 
> gain, step 2. Agc: 204, lock: 0
> Apr 13 14:15:47 ubuntu kernel: [ 3863.585010] tda829x 0-004b: adjust 
> gain, step 3. Agc: 123
> Apr 13 14:15:47 ubuntu kernel: [ 3863.721163] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:15:48 ubuntu kernel: [ 3863.737067] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:15:48 ubuntu kernel: [ 3863.752986] tuner' 0-004b: Cmd 
> VIDIOC_S_TUNER accepted for radio
> Apr 13 14:15:48 ubuntu kernel: [ 3863.752990] tda829x 0-004b: setting 
> tda829x to system B
> Apr 13 14:15:48 ubuntu kernel: [ 3863.856965] tda827x: setting tda827x 
> to system B
> Apr 13 14:15:48 ubuntu kernel: [ 3863.912956] tda827x: AGC2 gain is: 10
> Apr 13 14:15:48 ubuntu kernel: [ 3864.240905] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:15:48 ubuntu kernel: [ 3864.360885] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:15:48 ubuntu kernel: [ 3864.480865] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:15:48 ubuntu kernel: [ 3864.584849] tda829x 0-004b: adjust 
> gain, step 1. Agc: 0, ADC stat: 0, lock: 0
> Apr 13 14:15:48 ubuntu kernel: [ 3864.728828] tda829x 0-004b: adjust 
> gain, step 2. Agc: 209, lock: 0
> Apr 13 14:15:49 ubuntu kernel: [ 3864.872802] tda829x 0-004b: adjust 
> gain, step 3. Agc: 129
> Apr 13 14:17:08 ubuntu kernel: [ 3944.108802] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:17:08 ubuntu kernel: [ 3944.132069] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
>
> -> I know the local FM station is 107.3MHz and can tune it in with WinXP
>
> Apr 13 14:17:08 ubuntu kernel: [ 3944.148049] tuner' 0-004b: radio freq 
> set to 107.30
> Apr 13 14:17:08 ubuntu kernel: [ 3944.148054] tda829x 0-004b: setting 
> tda829x to system B
> Apr 13 14:17:08 ubuntu kernel: [ 3944.256024] tda827x: setting tda827x 
> to system B
> Apr 13 14:17:08 ubuntu kernel: [ 3944.324013] tda827x: AGC2 gain is: 10
> Apr 13 14:17:08 ubuntu kernel: [ 3944.651961] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:09 ubuntu kernel: [ 3944.771941] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:09 ubuntu kernel: [ 3944.891922] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:09 ubuntu kernel: [ 3944.995906] tda829x 0-004b: adjust 
> gain, step 1. Agc: 0, ADC stat: 0, lock: 0
> Apr 13 14:17:09 ubuntu kernel: [ 3945.143884] tda829x 0-004b: adjust 
> gain, step 2. Agc: 229, lock: 0
> Apr 13 14:17:09 ubuntu kernel: [ 3945.291857] tda829x 0-004b: adjust 
> gain, step 3. Agc: 149
> Apr 13 14:17:09 ubuntu kernel: [ 3945.432058] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:17:09 ubuntu kernel: [ 3945.451896] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:17:09 ubuntu kernel: [ 3945.467841] tuner' 0-004b: Cmd 
> VIDIOC_S_TUNER accepted for radio
> Apr 13 14:17:09 ubuntu kernel: [ 3945.467845] tda829x 0-004b: setting 
> tda829x to system B
> Apr 13 14:17:09 ubuntu kernel: [ 3945.575812] tda827x: setting tda827x 
> to system B
> Apr 13 14:17:09 ubuntu kernel: [ 3945.643801] tda827x: AGC2 gain is: 10
> Apr 13 14:17:10 ubuntu kernel: [ 3945.971749] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:10 ubuntu kernel: [ 3946.091729] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:10 ubuntu kernel: [ 3946.211710] tda829x 0-004b: tda8290 
> not locked, no signal?
> Apr 13 14:17:10 ubuntu kernel: [ 3946.315694] tda829x 0-004b: adjust 
> gain, step 1. Agc: 0, ADC stat: 0, lock: 0
> Apr 13 14:17:10 ubuntu kernel: [ 3946.463670] tda829x 0-004b: adjust 
> gain, step 2. Agc: 231, lock: 0
> Apr 13 14:17:10 ubuntu kernel: [ 3946.611645] tda829x 0-004b: adjust 
> gain, step 3. Agc: 150
> Apr 13 14:17:20 ubuntu kernel: [ 3956.031282] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
> Apr 13 14:17:20 ubuntu kernel: [ 3956.046878] tuner' 0-004b: Cmd 
> VIDIOC_G_TUNER accepted for radio
>
>
> So, the radio config isn't correct.
>
> I'll keep digging.
>
> Regards,
> Tim
>
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>
>   
Hi Hartmut,
OK, I'll send you this info that I think I have worked out so far:

.gpiomask = 1 << 21, is equivalent to:
GPIO 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
gpiomask 0x00200000 = 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

from syslog:

Apr 13 22:31:56 ubuntu kernel: [ 148.955428] tda1004x: setting up plls 
for 48MHz sampling clock
Apr 13 22:31:56 ubuntu kernel: [ 149.239381] tda1004x: found firmware 
revision 29 -- ok
Apr 13 22:31:57 ubuntu kernel: [ 149.431357] tda827x: tda827x_init:
Apr 13 22:31:57 ubuntu kernel: [ 149.431365] saa7133[0]/core: setting 
GPIO22 to static 1
Apr 13 22:32:00 ubuntu kernel: [ 153.155969] tda827x: tda827xa_set_params:
Apr 13 22:32:01 ubuntu kernel: [ 153.387931] tda827x: tda8275a AGC2 gain 
is: 7


Apr 13 22:32:08 ubuntu kernel: [ 160.737003] saa7133[0]/core: setting 
GPIO22 to static 0
Apr 13 22:35:28 ubuntu ntpd[5532]: Listening on interface #6 eth0, 
fe80::21b:fcff:feb3:8532#123 Enabled
Apr 13 22:35:28 ubuntu ntpd[5532]: Listening on interface #7 eth0, 
10.1.1.5#123 Enabled
Apr 13 22:47:11 ubuntu kernel: [ 1063.436570] tuner' 0-004b: Cmd 
VIDIOC_S_STD accepted for analog TV

Seems to be:
GPIO22 = 1 for DVB-T
GPIO22 = 0 for analog-tv

What then for radio? Perhaps GPIO21 is radio?
Try this:
.gpiomask = 0 << 22
GPIO 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
gpiomask 0x00000000 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Should give start with analog-tv = on; radio =off
.gpio = 0x00200000, for radio on (GPIO21 = 1)
Result:
No radio, but dvb-t, analog-tv is ok.

My guess is that GPIO22 = 1 (dvb-t); = 0 (analog-tv, default)
GPIO21 = 0 or 1 for radio
But you would have to switch antenna from TV to radio via demux first?
I can't see where/how to do that.

It seems as if the gpiomask should be applied to GPIO22? Then how to 
start radio?

Regards,
Tim



More information about the linux-dvb mailing list