Hi,
I don't know if this will make it to the mailinglist because I am not
subscribed.
I am working on code that makes bttv cards usable for gnuradio.
A lot of the restrictions the bttv card has to be usable as a general purpose
ADC can to some extend be solved in software.
The restrictions most tuner modules on bttv cards have need hardware
modifications ore are just not usable.
It would be cool if there are indeed cards (like HDTV cards or sattelite
receiver cards) which are more generic.
My progress with bttv until now.
video ADC usable in gnuradio
samplerate settable from 28 Mhz to about 80 MHz (maybe higher I didn't dare
set it higher then 80 Mhz because it is supposed to run at max 35.468950 MHz)
resolution 8 Bits
videosynchronisation can be turned off (by setting the undocumented test
register to 239)
I use the RAW capture mode (meant for teletext VBI capturing) with a modified
bttv driver to get more datalines.
This way I get around the horizontal videotimings.
I can get a continuous stream of sampledata for about 19.4 msec and then a
gap of 0.6 msec then 19.4 msec data 0.6 msec gap and so on.
This has to do with the fact that the bt878 invalidates samples during the
vertical sync pulse (which it even generates internally even if it is not
trying to synchronise with the videostream)
If I just leave out the gaps in the datastream I can use gnuradio to
demodulate FM stations and listen to them. Because of the gap there is some
distortion (garbling) but usable for listening to speech.
I have not found any way around this gap.
The tuner hase more problems.
It tries to lock to the TV station using a PLL in the synchronous
demodulator. I made a small hardware modification which breaks this lock by
connecting the RC-circuit which generates the AFC (automatic frequency
control) to Vcc.
Now I can actually freely tune and use the sampled 'videosignal' to feed
gnuradio.
There is however one more problem. Because my tuner uses a switching
synchronous demodulator it now has many harmonics of the received signal. If
I receive a 2Mhz signal I also get 4 Mhz 6 Mhz 8 Mhz and so on.
Possible solutions:
1 Use the 38.9Mhz IF output directly in stead of the videosignal.
2 Trick the videodemodulator so it stops the PLL oscillator completely (You
would then also get the 38.9 Mhz IF)
3 Only use the lowest output frequency of the videosignal.
I currently use option 3 .
The lowest frequency it outputs now is about 1.5 Mhz
So I use 2Mhz which is still below the first harmonic of the lowest frequency
(2*1.5=3Mhz)
This way only narrowband (<1Mhz) signals can be received.
I am going to try option 1 and 2 also.
Best would be option 1 but I have to find an easy way of turning the
differential IF signal into a single ended one.
It is also a bit difficult to get to the If signal because it is not on any
of the external leads of the tuner and inside it is all SMD and very hard to
mount additional components.
I also made a small modification to the linux btaudio driver so I can get 850
kHz samplerate. This stream has no gaps so it is possible to get a full 425
kHz bandwidth signal.
The good thing:
I have not had to buy any additional components yet and can experiment with
gnuradio.
I also made the AFC trick non-permanent, I can just switch back and forth
between gnuradio and normal TV reception.