HDTV via GNU Radio
NortonDC writes "High Definition TV has been successfully captured in its native data stream from an over the air broadcast by a software defined radio that is Free and open source from the GNU Software Defined Radio project."
GNU TV, where the scripts are open-sourced before the show airs and you know all the jokes before the intro starts rolling.
Mind you, if you knew when to cringe in Nerds (the competitor to Friends, where housebound geeks spend their days in an eternal LAN party with the occasional visit to the pizza parlour) at the "jokes", it mightn't be so bad...
-Mark
Sounds too useful to exist.
It will taste the blade of DMCA before the end of the month.
Why am I looking at 4MB images of Lenny Briscoe?
HDTV is either 1920x1080 (1080i) or 1280x720 (720p). Where did the 2730x1088 resolution come from? It's obviously wrong (the images are obviously scrunched vertically).
The images on the site are at 2740x1088 resolution, but HDTV at max resolution is 1920x1080. You can tell from looking at the images that they're horizontally stretched, so something weird is going on.
A Linux-friendly HDTV recording solution is definitely needed. Unfortunately, it seems that in order to record HDTV you need a $1300 Analog Input Board.
Can anyone with more knowledge about this project please post a less expensive solution if one exists?
It's not so much a special radio card as it is just any wide-banded data acquisition board and a little frequency-translation unit.
There is a "tuner" that multiplies the incoming radio signals by a variable frequency. When you mix two oscillating signals (by multiplication) you get harmonics. If the variable frequency is just a sine wave (i.e., not modulated with any information), then the harmonics are identical in modulation to the original, but at a difference frequency. The tuning box is used to bring various radio signals down to a frequency that can be digitized by any ordinary data acquisition board.
These data acquisition boards are designed to basically sample voltages of whatever is tied to their inputs, and to sample it very very quickly and very often. Since these boards (and computers also) are getting more advanced (i.e. faster), they are able to sample real radio frequencies (stuff in the ones of MHz ranges).
After you get the signal digitized, it's just a simple matter of writing software that mathematically performs the functions that all the circuitry in the 'old-fashioned' receivers would do with their capacitors, resistors, and inductors (and more).
That's pretty much how it works.
This has been covered here on Slashdot before. Some of the comments in the previous post are particularily informative.
Always value the individual over the system. --Bruce Lee "I don't need a Sig - I have a custom 191" - me
A few nitpicks:
.7 volts a 6 or a 5?), and you have to slice at the correct time (the symbols are only defined at certain times - any other time the signal isn't valid, it is a blend of the current and the (next|previous) symbol - what is called inter-symbol interference or ISI). So you have to do symbol tracking - figuring out when to sample, and at what levels to slice.
You don't get harmonics (frequencies that are related to the fundimental by an integer multiple), you get mixing products, also known as "sum and difference".
You get harmonics when you feed a single signal into a non-linear element - feed f1 in, get f1, 2*f1, 3*f1, 4*f1,... out. This is commonly used in tranmsitters to allow the use of a lower-frequency crystal to generate higher frequency carriers - you use a 10 MHz crystal, and the feed it into a non-linear element such as a squaring amp, and pick off the tenth harmonic to get 100 MHz.
Mixing involves feeding 2 signals f1 and f2 into a multiplier - you get f1, f2, f1-f2, and f1+f2 out. Mixing allows changing a frequency by a non-integer relationship. You have heard this used in the voice distorters used on TV to mask mob informants - they mix the person's voice with a low-frequency signal to change the pitch of the speaker's voice. This is also the basis of any modern superheterodyne receiver - you mix two different (heterogenous) signals together.
The idea is to take the signal from whatever frequency it is on, and move it to the frequency you have designed your circuit to work at - an "intermediate frequency", or IF. You then filter the signal, amplify it to a specified level, and repeat as necessary to get the signal where you want it. For example, a standard FM radio might go from the broadcast frequency to a 10.7 MHz first IF, then to a 455 kHz second IF, then finally to the FM detector circuit.
Eventually, in a design like GnuRadio, you sample the signal. The tricky bit is you have to sample at a frequency not less than twice the highest bandwidth in the signal (Nyquist's criterion). For a 6MHz wide TV signal, that means you need to sample at not less than 12 million samples per second.
Then, for a system like HDTV, you are dealing with a complex signal - and I mean complex as in sqrt(-1), not just as in "not simple" - you need both the real (in-phase, or I signal - the "real" part) and the quadrature (out-of-phase, or Q signal - the imaginary part). The signal is 8VSB - eight level vestigial sideband. So you have to do carrier recovery and tracking (because the carrier itself was removed - that is what makes it a sideband signal), then you have to convert the signals from the analog RF signal into one of 8 levels (slicing is the technical term). However, you have to slice accurately in 2 dimensions - you have to slice at the correct level (is
Finally, once you have a symbol stream, you then have to do all the foward error correction - you have to de-interleave the signal (think of unshuffling a deck of cards) - interleaving is done so that a transient interference (like a lightning strike) doesn't scramble adjacent bits - the errors are spread out.
Then you do your block error correction - this can undo a small number of bit errors per block (again, that's why you interleave the signal: so that block error correction needs to only correct a few bit errors per block).
Then you do some more protocol recovery, and you have an MPEG stream.
Normally, you do this sort of stuff with a big FPGA or an ASIC. The GnuRadio folks are doing it in software. The up side is that you can more easily tweak the code. The downside is that you are not going to be real-time for a few more iterations of Moore's "Law".
What gets to be REALLY fun is when, in addition to all of the above, you have to compute parametrics on the signal - not just recover the bits, but measure how far out of ideal the signal was (that's the sort of stuff I do for a living.) When you do that, you have to do all of the above, THEN once you have an error corrected bit stream you have to regenerate an ideal signal and compare the received signal against it, and measure how far away from the ideal signal the real signal is.
And THAT is when you start using multi-GHz processors, 10 million gate FPGAs, big-ass DSPs, and all sorts of other fun stuff.
www.eFax.com are spammers