On Sun, 19 Dec 2004, John Dalgliesh wrote:
Currently Bjarne Steinsbø and me are working a driver for the b2c2-usb devices. For the tests we are using a sky2pc (equipped with stv0299) and a air2pc box (equipped with a mt352).On Sat, 18 Dec 2004, Christian Schmitt wrote:Hello, i'm using a Technisat Airstar2 for DVB-T reception. It works quite well, but there is one issue: the driver (skystar2) seems to be unable to tune to VHF frequencies, which makes it impossibel to receive 4 channels here in Frankfurt/Germany. I already searched the list archives and found some other people reporting the same problem but so far no working solution. The problem does not occur under windows, so it should work under Linux, too. Since i'm not a programmer, I can not solve the issue myself, but i'll be more than happy to help with fixing/testing. Are there currently any efforts to make it work?Yes, I am trying to use one in Australia, where all the channels are 7 MHz bandwidth like the German VHF channels - so I have even more reason to care :) I've got a pretty good idea of what to do, but I haven't found any time to try it out yet, and since I'm leaving for two weeks holiday tomorrow, it doesn't look like I'll get to it this year. But I'll be sure to post here when I do get it working.
Index: skystar2.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/b2c2/skystar2.c,v retrieving revision 1.60 diff -u -3 -p -r1.60 skystar2.c --- skystar2.c 19 Dec 2004 18:00:44 -0000 1.60 +++ skystar2.c 19 Dec 2004 23:08:30 -0000 @@ -2358,19 +2358,19 @@ static int samsung_tdtc9251dh0_demod_ini int samsung_tdtc9251dh0_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params, u8* pllbuf) { u32 div; - unsigned char bs = 0; + u8 bs = 0x01, tmp = 0xb4; #define IF_FREQUENCYx6 217 /* 6 * 36.16666666667MHz */ div = (((params->frequency + 83333) * 3) / 500000) + IF_FREQUENCYx6; - if (params->frequency >= 48000000 && params->frequency <= 154000000) bs = 0x09; - if (params->frequency >= 161000000 && params->frequency <= 439000000) bs = 0x0a; - if (params->frequency >= 447000000 && params->frequency <= 863000000) bs = 0x08; + if (params->frequency >= 48000000 && params->frequency <= 154000000) { tmp = 0xb4; bs = 0x09; } + if (params->frequency >= 161000000 && params->frequency <= 439000000) { tmp = 0xb4; bs = 0x02; } + if (params->frequency >= 447000000 && params->frequency <= 863000000) { tmp = 0xbc; bs = 0x08; } pllbuf[0] = 0xc2; // Note: non-linux standard PLL i2c address pllbuf[1] = div >> 8; pllbuf[2] = div & 0xff; - pllbuf[3] = 0xcc; + pllbuf[3] = tmp; pllbuf[4] = bs; return 0;