[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