Getting Started with the VNWA

IMG_5856I just got a vector network analyzer (VNA) from SDR Kits and after performing the calibration procedure, I decided to try it out quickly on a few VHF and UHF antennas. The version I got is called VNWA 3E. The antennas I tried were the 144-148MHz rubber ducky that came with a Kenwood TR-2500 (some 30 years ago), an 434MHz rubber ducky that came with the Texas Instruments (SPWH24433TI made by Pulse Larsen), an 144/430/1200MHz Diamond antenna (SRH815), short VHF and UHF antennas that came with a Baofeng UV3R, and a 145MHz PCB magnetic loop that I built a while ago. You can see the VNA and the antennas (ordered from left to right) in the picture on the right.


146-kenwood146-kenwood-handThe Kenwood antenna performs reasonably well in its design frequencies, but at least when mounted directly on the VNA (as opposed to being mounted on the transceiver it was designed for), it resonates a little higher than its design frequencies. When I placed my hand on the VNA, the resonance frequency dropped significantly, to well below 144MHz. Placing my hand on the VNA puts the antenna in a fairly similar environment to the one it was designed for, namely being on top of a handheld transceiver. Either with my hand or without it, the SWR between 144 and 148MHz was not much worse than 3:1 (return loss of -6dB).


baofeng-UV-3Rbaofeng-UV-3R-handStaying on the same band, the Baofeng antenna performed a little worse. Without my hand the return loss was as low as -4dB.  With my hand on the VNA, resonance moved into the band and return loss improved.



diamond-SRH815-2mdiamond-SRH815-2m-handThe Diamond performed poorly with or without my hand on the VNA. This is a pretty expensive antenna (about $30), so this is disappointing.



diamond-SRH815-70cmdiamond-SRH815-23cmThe Diamond performs better at UHF, where its length is about λ/4 at 430MHz and about 3λ/4 near 1300MHz.



linx-CW-QWThe Pulse UHF antenna, which is also a  λ/4 whip, is the best performer of the lot. The SWR is less than 1.4:1 from 430 to 450MHz.



The short UHF antenna that came with the UV-3R is okay at 430MHz, but pretty bad at 450MHz. Not too bad.



Finally, the loop antenna. It is very narrow band, as expected from a small loop. The useful bandwidth is about 1MHz.


Toaster-Oven Reflow Soldering without a Controller

Two circuit boards that I designed with Eagle use tiny components that I knew I could not solder with a soldering iron (chips in QFN packages and others). You can see one of the designs below.


I was aware of two low-cost ways to solder them: with a hot plate, or in an oven. I decided to try to use an oven (mostly because I thought it would be easier, especially with boards that have components on both sides). Ovens designed for soldering (this process is called reflow soldering) are expensive, but I knew that people have successfully converted low-cost toaster ovens to reflow ovens by adding a specialized controller that ramps up and down the temperature at the required rates and brings the board to the required temperature (and hopefully no higher). The results may not be as reliable as a professional reflow oven, but they are fine for prototyping. There is plenty of information on the internet on such conversions: here is one example, a second, a third, a fourth; there are surely many more.

I wondered whether the controller was really necessary. A bit of searching led to a discussion in an online forum in which one of the participants wrote that he uses an unmodified toaster oven to reflow solder. He specified the model that he uses (Cuisinart Exact Heat) and the procedure he uses (convection bake setting, 3 minutes at 300°F, then 2 minutes at 450°F). A little more searching led to a web page at Duke University, where the same model is used to reflow solder in a students’ project lab (with a slightly procedure that also involves monitoring the temperature using a thermocouple). The fact that students can follow the instructions and solder successfully suggested that the process is quite robust and repeatable.

Clearly, this oven can do reflow soldering, but I could not find it locally. It looked like the Cuisinart Exact Heat is a high-end model, so I searched for high-end toaster ovens that I could buy locally. I found the Breville Smart Oven BOV800, which boasted good temperature control like the Cuisinart. Some of its programs allow you to specify a temperature and time, and some include a preheating phase; with preheating, the timer only starts when the oven reaches the set temperature. Other programs are more cryptic and specify things like the number of slices and the degree of browning. Each program runs the heating elements at a different power level, and some use only a subset of the elements, but the manual does not specify these details for every program, only for some. This is somewhat unfortunate, because the power determines the temperature ramp-up rate. But it’s a consumer product, so I guess I should not have expected a detailed specification.

When the oven arrived, I started testing it using a thermocouple (Fluke 87V multimeter with a type-K thermocouple). I used different programs and target temperatures and wrote down the actual temperature the thermocouple every 15 seconds. I compared the results to the recommended reflow profile of the solder paste I have, Chip Quick SMD291AX10. The basic building blocks of the profile are a soak period in which the temperature should ramp up from 140°C to 180°C during a period of 60-90 seconds (at around 140°, the flux activates; at 183°, the solder liquifies), and a 30-60s reflow period, at which temperature should be above 183°C, with a peak at 210-220°C. After that the temperature should drop, and it can drop pretty quickly, although that rate should be limited too.

After a few hours of testing, I settled on a reflow procedure for this oven (and this solder paste). I insert the board(s), insert the thermocouple into the oven, and close the door. I set the oven to the bake program (which uses convection by default, and I leave convection on), temperature to to 160°C and the timer to 1 minute. When the oven beeps that it reached 160° and start counting down time, I turn it off, set the target to 210°, and turn it back on. This adds some soaking time, because the oven has not yet reached 183°. At some point, you see the solder liquify; it turns from dull gray to a shiny reflective metal. This normally occurs when the thermocouple shows around 195°C, but it varies. When the oven beeps that it reached 210°, the thermocouple usually shows a lower temperature. I leave the oven on for about 10 seconds more, aiming for the thermocouple to go above 210°, and then I turn off the oven and open the door slightly, to allow the board to cool. In the first runs I also used a stopper app on my phone to ensure that the soak and reflow periods where within the recommended bounds. The periods I get with this procedure at at the slow end of the recommended bounds, perhaps even a little slower, but not by much.

Boards that I soldered with the oven come up out well, but not always perfect. I suspect that the problem is in the application of the solder paste (it’s easy to apply too much), not in the reflow process. Simple boards such as the ones shown in the previous post came up perfect every time. More complex boards like the one shown on the top of this post often suffer from too much solder paste, as you can see in the batch of four boards below (not all identical, but all soldered at the same time; results in other batches were similar).


Almost all the 0603-size resistors, capacitors and LEDs were soldered correctly (the one that didn’t, on the bottom right board, ended up on an alternative ground pad so this did not affect the circuit in any way; this was caused by too much paste). The QFN parts were mostly soldered well, but you can see some solder bridges, like on the left side of the CC1101 on the bottom-left board. These were easily removed using a solder wick. The brown baluns (the 6-pads brown components to the right of the cc1101) were mostly not soldered well. Two pads are shorted on one board, and there are unsoldered pads on others (e.g., on the top-left board). I had to fix these with a soldering iron (not easy, and some baluns got destroyed in the process). I think that in the case of these baluns, the footprint on the board is not perfect and that the pads should extend a bit more below the part; the manufacturer insists that their recommended footprint is fine, but it did not work so well for me.

All in all, I am very happy with this reflow process. Simple boards come out perfect. More complex ones require manual repairs, but the repairs are doable with a solder wick and an iron. The process allows me to solder parts that are either hard or impossible to solder with an iron, and with relative ease. The process is also faster than soldering with an iron, even for parts that I can reliably solder with an iron (0603 passives, SOT89 parts, and so on). I assume that a laser-cut stencil for applying the solder paste would make the process much more reliable, but it works reasonably well for prototyping as is.

PCBs with Eagle and Low-Cost Manufacturers

After the effort of producing a PCB for the UHF front-end using the toner-transfer and hobby-knife method, I decided to try out more conventional methods.

A few yeas ago I designed one PCB with Eagle, a PCB design program. Eagle has a free version for non-commercial use. The free version is limited, but still usable for  simple boards. The user interface of Eagle is a bit weird, so I pretty much forgot how to use it. But after spending some time with the on-line tutorial, I got the hang of it and started designing.

Back when I designed the first board with Eagle, I was very worried about having all the parts I wanted to use in the Eagle part libraries. I knew in theory that you can add parts to the library, but I thought that it is a complicated process that beginners should avoid.

But a couple of years ago I worked with a colleague who designed PCB for a joint project (using another program, not Eagle), and I noticed that he routinely added new parts to his library. He did not bother to search very hard for part libraries; he just added every part he needed to use to the library.

This is exactly what I did with the UHF front end unit. I added symbols and footprints for almost all the parts it it. This is not hard at all, and the footprints are all specified in the data sheets. This was the first board I designed for SMD devices, so I was conservative in how densely I placed parts, to ensure that hand  assembly would be easy (it turned out that I could make the circuit a lot smaller and still assemble it easily, but I didn’t know that when I designed it). I used mostly 0603-size passives, which I knew I could solder by hand easily. The layout ended up close to 10cm in length, and since the manufacturer I decided to use ( has a special deal on boards up to 5x10cm, I made the circuit 5cm wide and used the extra space for prototyping pads. You can see the design and the finished board below.



Iteadstudio is very inexpensive (the 5x10cm deal includes 10 copies of the board and cost me $22 for the boards and $6 for shipping), and they have a wide selection of board and copper thicknesses and finishes. I did not test the boards yet, but they seem just fine. (an update: the boards have been tested and they work just fine.)

The reason I did not test the boards yet is that shipping from iteadstudio in China was excruciatingly slow (I chose registered mail and I assume that more expensive shipping methods would have been faster). So after waiting for a while, I decided to order a small batch from a low-cost manufacturer in the US, OSH Park. They only offer two types of boards, 2-layer and 4-layer, but the boards arrived more quickly. I used US shipping, which is free in OSH Park. They charge a flat rate per square inch ($5 for 2 layers), so the extra area I added to pad the board to the iteadstudio deal size did not make sense. I removed that part of the design and also shrunk the width a bit. The boards came out very well (and arrived more quickly).

IMG_3250OSH Park isn’t expensive either. They make boards in multiples of 3, and 3 of these cost around $20. More expensive per board than at iteadstudio, but still affordable.

One nice thing about OSH Park is that the flat per-sq-inch rate also applied to small boards. I ordered 3 other designs from them, all pretty small, at a cost of $0.64 to $1.80 per board, including shipping (in the US)! This is pretty incredible.

Fabricating PCBs with the Toner-Transfer Hobby-Knife Method

SAMSUNGI needed to prototype a UHF front-end for the USRP. I did not want to use a PCB fabrication service, both because I forgot how to use Eagle and because I wanted the PCB as quickly as possible.

In the past I constructed circuits on copper-clad boards by cutting isolation channels between pads with a hobby knife. This works well for simple circuits, especially when combined with the “dead-bug” technique (as I’ve done here, for example). Dead-bug did not seem like appropriate technique for UHF, but the circuit I wanted to build was certainly very simple, so creating all the traces and pads by cutting isolation channels seemed plausible.

However, most of the components in this circuit are surface-mount components, and some are pretty small. The most challenging part was a 3mm-by-3mm SAW filter. The pads for it on the PCB need to be separated by about 0.5mm (the manufacturer recommends a separation of 0.38mm). This required precision; I needed to know exactly where to cut. In the past I cut the isolation channels free hand, but this job called for precision.

I decided to try to use the toner-transfer technique to transfer a PCB design from the computer to paper to the copper-clad board. Once the design was “printed” on the copper, I would cut out the channels with a hobby knife.

I started by drawing the design in Adobe Illustrator. I copied the footprints from the data sheets to Illustrator, then combined them into a circuit and drew the connecting traces and the ground plane. I printed out the design and checked that the components actually fit their pads. I then copied the design in illustrator and transformed the drawing until the copper was in white and the isolation channeled (“etched” areas) were in black. Finally, I created a mirrored version and printed it out. You can see all three phases in the picture above, along with the two-sided copper-clad board I used later.

Note that this printout is the reverse of what you need to etch using the toner-transfer method. When you etch (I used to do it years ago but now I don’t want to deal with the chemicals) using toner transfer you print in black the areas where the copper should remain.

SAMSUNGI printed the design on a laser printer on plain paper, even though glossy is supposed to work better. I taped the paper to the copper-clad board and ironed it for a few minutes. This leaves the paper glued to the copper (the toner is the glue), so I soaked the paper and carefully removed most of it. You can see the result on the right. I did not bother to remove all the paper, and I did not worry about partial transfers, because I was not going to etch the board, just to use the black toner as a marker for where to cut and drill. Some parts did not transfer well, mostly very thin lines. But most of it trasfterred well, including the sub-millimeter lines around the SAW filter.

SAMSUNGNow it was time to remove the copper from the isolation channels. I cut along the edges of the black lines with a hobby knife. The knife feels different when it is cutting through the soft copper than when it cuts through the fiberglass board, so you know when you cut through the copper. I worked by trying to cut V-shaped channels in the board. Initially I tried to use a ruler to get straight lines, but after a while I realized that it would be easier to cut free hand. The lines might not be perfectly straight, but not to an extent that matters. You can see the result in the picture. I think it looks pretty close to the design. Don’t be misled by the picture; the channels are really narrow, around 0.5mm at the narrowest, and the narrow traces are about 1mm or a bit less.

SAMSUNGAfter drilling holes for one through-hole component, for vias to two traces on the other side, and for some vias to connect the ground plane on both sides, the board was ready for soldering.

IMG_3113As expected, soldering the 3mm SAW filter was challenging, but it worked. The other components were easy to solder, even the 0603 capacitors and the SOT-89 amplifier. When I designed the board, I left quite a lot of space between components (around 4mm) to make soldering easy. It was easy, but I think it would have been easy even if the components were packed much tighter. A lesson for the future.

The finished board looks okay and from limited testing I’ve done so far, it works correctly. It certainly amplifies and filters.

The whole process took a few hours. It’s not a super-quick method, but not too consuming either. No chemicals and no waiting for commercially-made PCBs. I’m pretty happy with the result.






An update from August 29: After putting the unit in a metal box, I measured its performance with a network analyzer (thanks to Avigdor Drucker for helping out). It performed very well, with good gain and excellent filtering, as you can see in the screen shot below. At least at these UHF frequencies, this technique can deliver good results.

30MHz per horizontal division

DC Connectors

Anderson PowerpoleI needed a few wire-to-wire DC connectors for a project. For high-current applications, I use Anderson Powerpole connectors, shown on the right. They many useful features: they can be soldered or crimped, they are genderless (meaning that there are no male and female connectors; any two can be mated), and they can form multi-conductor connectors. They are designed to carry 15A and higher, which is good if the application requires high currents. But for low-power applications, they are too bulky and too expensive (around $1 for a two-wire pair).

The major manufacturers like Samtec and Molex make a wide variety of appropriate connectors, of course, but the selection is almost confusing.

SAMSUNGI eventually settled on RCY connectors from JST. They are small, polarized (really mandatory), and inexpensive. I ordered 50 pairs of mating pigtails on eBay for less than $10. This is around 10% of the cost of Powerpoles. They do have a gender (socket and plug), which is a little less convenient for making various adapters, but I don’t think that there is a genderless alternative.

I think I will use them as standard DC connectors in my projects (at least until I exhaust the 50 pairs I bought 🙂

JST RCY connectors


A small improvement to the DEMI LNA and a UHF J-Pole Antenna

IMG_0588I recently built two more UHF preamplifier kits made by Down East Microwave (DEMI) and a simple reference antenna to go with them.

The antenna and two preamplifiers feed a USRP radio with a WBX front end. The USRP uses a 6V power supply. This created a slight logistical problem for the preamplifiers. They contain a 78M05 linear voltage regulator that drops the input voltage down to 5V. The 78M05 requires an input voltage higher than 6V, which means that the power supply of the USRP cannot power the preamplifiers; I would need a separate power supply for them, one that provides 7V or higher.

This seemed a bit silly when so many low-dropout regulators are available. After searching a bit I found a 5V low-dropout regulator in the same package as the 78M05 that came with the kits (a TO-252 surface-mount package) and with the same pinout; a direct replacement. This regulator, TL720M05 by Texas Instruments, works down to an input voltage of 5.5V and can tolerate even higher input voltages than the 78M05. It does require a larger output capacitor of 22μF or higher; I used 47μF 10V SMD tantalum capacitors which fit on the printed circuit board without a problem. The parts were not expensive and I am happy with the improved functionality of the preamplifiers and the ability to use a single power supply for them and for the USRP.

IMG_0589Incidentally, I ordered these preamplifier kits with the optional enclosure and connectors; they fit together beautifully, as you can see below.

The antenna I built is a simple J-pole, which means it’s a dipole fed from one end by a quarter length matching stub. I computed the length of the stub and the radiating element using an on-line calculator. I left the radiating element a little long for tuning, soldered the coax to the matching stub at the point suggested by the calculator, and tested the antenna for low SWR with the FT-857D. The SWR was a little high. I tried the antenna up and down the 430MHz band trying to see in which direction to tune the antenna (hoping that tuning would require cutting the antenna rather than extending it). IMG_9795I eventually managed to tune it, but I discovered in the process that a J-pole is not an easy antenna to tune with an SWR meter alone. There are 3 tuning parameters: the length of the radiating element (which you can tune by chopping pieces off the top), the length of the matching stub (chopping pieces off its free end makes the stub shorter and the radiating element longer), and the connection point of the coax to the stub. The first two parameters should bring the antenna to resonance and the third should bring the resistive impedance to 50Ω. Eventually I got it close enough. In the picture on the right you can see the antenna with the coax connected. This short piece of coax is meant to connect the antenna to the preamplifier. Once it was tuned, I added a ferrite sleeve as a choke, put the antenna inside a PVC pipe with some foam to hold it in place (I also tested for resonance inside the PVC sleeve in case it affects the tuning a bit), and the antenna was ready. In the pictures below you can see the coax connection and the two halves of the ferrite sleeve, as well as the antenna mounted with a preamplifier on the roof.


Transmitting (and Receiving) DVB-T on 1.2 GHz

What interesting stuff can you do with a wideband software-defined transceiver? This question started bugging me when I got access at work to an N200 USRP with a WBX daughter board. The N200 is a DAC/ADC motherboard that can stream up to 50M samples per second to/from a computer using a gigabit Ethernet cable, and the WBX is an up/down converter that covers 50 to 2200 MHz. Together, they can receive and transmit signals with bandwidth of up to about 25 MHz almost anywhere in the VHF and UHF bands.

The coolest thing I could think of is to transmit digital television in a standard format that could hopefully be received by normal televisions, set-top boxes, and USB TV dongles. I almost succeeded, and this post tells the story. (For the impatient, here is the summary: I managed to transmit digital TV to a standard dongle, but in order to do this both legally and ethically, I had to hack its driver a bit; the video is jumpy, but it’s there.)

Standard and Frequency Selection

Choosing a digital video standard to transmit was easy. The on-the-air TV stations here transmit DVB-T (a widely-used standard for terrestrial digital TV), and I already had a DVB-T USB donble (which I used as an SDR receiver up to now), so the obvious choice was DVB-T.

Selecting a frequency to transmit is more of a problem, because the easy choice is not a good choice. Terrestrial digital TV is transmitted in VHF and low-UHF channels, from 50 to 862 MHz. DVB-T channels are 6, 7, or 8 MHz wide. The only amateur band within this range that is wide enough is the 430-440 MHz band, and it’s only 10MHz wide here; in other parts of the world it covers 420-450 MHz. If I transmit DVB-T within these 10 MHz, I will transmit over many other signals, including satellites, repeaters, and simplex channels, so this band is really not an option. The next band up is 1240-1300 MHz, which is both wide enough and almost completely unused here, except for some EME usage near 1296 MHz. So the choice is easy; I have to transmit at 1.2 GHz. But DVB-T receivers won’t tune that high, given that all of the channels are at 862 MHz or below, so it’s a choice with a problem.

Still, I knew that my DVB-T dongle can physically tune up to 1700 MHz (this is also true for many other dongles, and I image also for many set-top boxes and built-in tuners in TVs). So I decided to transmit at 1.2 GHz and to try to force the dongle to tune.

I thought that it would be easier to convince the dongle to receive at 1.2 GHz on Linux than on Windows. I managed to do it on Linux and it was not hard; I still don’t know if this is possible at all on Windows, and if it’s possible how difficult it is. But the main thing for now is that it’s manageable on Linux.

Preparing for DVB-T Reception on Linux

My dongle is based on the Realtek RTL2832U demodulator chip (and on the Elonics E4000 tuner chip). I wanted to use it on a computer running Ubuntu 12.04; the Linux kernel in Ubuntu 12.04 does not support this dongle. This turned out to be a blessing in disguise, however.

Hubert Lin’s blog shows how to install the driver on Ubuntu 12.04 (and using a somewhat different procedure, on 12.10). I tried to follow the instructions but the processed failed at some point. Fortunately, Chris Merrett packaged the driver in an easier to install format called DKMS, and he explained how to install it in a comment in Hubert’s blog. I followed the instructions and everything worked just fine. A DKMS driver is installed in a source-code format and this source code is compiled for every version of the kernel that you use. This turned out to be very useful. Installing the driver is very easy:

$ sudo apt-add-repository ppa:chrisfu/rt2832u-dkms
$ sudo apt-get update
$ sudo apt-get install rtl2832u-dkms

With the driver installed, I installed an Ubuntu package called dvbt-apps, which contains a necessary channel-enumeration utility, and I was ready to try receiving the local on-the-air DVB-T transmissions.

The process starts with a utility called scan. It takes a file containing tuning information for local stations and tries to tune the dongle to them. The station information includes the center frequency, the modulation format, and a bunch of parameters that specify how the transmission is encoded. A DVB-T transmission (station) can transmit multiple channels (simultaneous programs), and scan lists all the channels that it finds within the transmission. I found a file listing the parameters for the local transmissions (at 514 and 538 MHz, transmitting the same channels), ran scan, and it found about 5 TV channels and more than 10 radio stations within the transmissions. Here is the input file to scan (for Israel):

# Initial scan config for Israel
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T  538000000 8MHz 2/3 NONE QAM16 8k 1/32 AUTO
T  514000000 8MHz 2/3 NONE QAM16 8k 1/32 AUTO

The output looks like this (chopped here for conciseness; the first two programs are TV and the other two are radio):


Next, I ran the vlc video viewer, providing it with the file that scan produced. I was able to view TV. I also recorded the video+audio stream of one of the channels using vlc in a format called a transport stream in order to try to transmit it later.

Tuning the Dongle to 1.2 GHz

At this point I created a copy of the scan input file and changed the center frequency to a frequency in the 1.2 GHz band. Scan failed; it could not tune the dongle to this frequency. I knew that the dongle can physically tune that high so I assumed that some piece of software was aware of the allocation of DVB-T frequencies and did not allow tuning any higher. I tried various frequencies until I realized that the dongle tunes up to 862 MHz. I searched for this number in the sources of the driver and found one C file that contained the number 3 or 4 times. It was the value for a field called frequency_max in structures that describe the capabilities of the dongle for several digital TV formats, including DVB-T.

I changed the value from 862000000 to 1700000000 and tried to get the driver to re-compile. It took me a while to figure out that the correct process is to remove the driver entirely and then to rebuild and install it.

$  sudo dkms remove -m rtl2832u/3.0.1 --all
$  sudo dkms add -m rtl2832u -v 3.0.1
$  sudo dkms build -m rtl2832u -v 3.0.1
$  sudo dkms install -m rtl2832u -v 3.0.1

Now the dongle tuned to 1.2 GHz. Scan obviously did not find any transmissions there, but I was now ready to receive my transmissions.

If somebody can figure out how to get these dongles to tune to 1.2 GHz under Windows, please let me know.

Producing the DVB-T Baseband Signal

There are several software packages on the web that produce a DVB-T baseband signal from an MPEG stream. I used a package called gbDVB written by Giuseppe Baruffa. It comes in binary format only for Windows and Linux, and it can produce (and decode) DVB-T in pretty much any format and modulation. It is fast: it works faster than real time on my desktop (with an i7 processor). I used version 3.3; the latest is 3.4, but it requires a somewhat complicated registration procedure. I did register it, but on Windows, not Linux; I plan to register on Linux and upgrade.

Another option I considered is OpenDVB by Gordon Cichon, which comes in source form and is written in Matlab. It is somewhat harder to use. I plan to try it out in the future.

Before you can use either of them, you need an MPEG (video or audio) file in a format called a transport stream. I generated several of these, always using vlc, a viewer that can also write the movie to a file in various formats. To save a transport stream, I used

vlc movie --sout=file/ts:movie.ts

I called dvbtenco (part of gbDVB) with options that told it to generate a DVB-T transmission using the same format and modulation as the local broadcasts, which I knew work with my dongle.

gbdvb/dvbtenco -i movie.ts -M 16 -m 2k -d t -l movie.log -o movie

This command generates a file called movie.bin with complex baseband samples at a sampling rate of 9.142857 M samples/s. The USRP cannot transmit at that rate (it needs a rate that divides 100 M samples/s), so I used a simple gnuradio-companion program to upsample the signal to by a 70/64 to 10 M samples/s, using a rational resampler.

Putting it all Together

That was basically it. I used a USRP utility to tx_samples_from_file to transmit the 10 M samples/s baseband file at 1.2GHz (actually near 1.3) and I called scan with an input file telling it to look for a DVB-T transmission there. Scan found my USRP transmission and produced an ouput that allowed vlc to tune and display the video I transmitted!

Actually, the video was very jumpy. I think this happened because tx_samples_from_file did not manage to read the baseband file and to send it to the USRP quickly enough. I managed to improve things a bit by converting the baseband file from a floating-point representation (8 bytes per sample) to short integers (4 bytes per sample), but it was still jumpy. Maybe the disk is not fast enough. I’ll try to transmit with a 6MHz bandwidth rather than 8 and hopefully the sampling rate can be reduced, which will shrink the rate at which the samples need to be read from the file and sent to the USRP. I need to investigate.

As I wrote above, dvbtenco runs faster than real time on my desktop, so in theory, I may be able to transmit live video with this setup. But the gnuradio resampler is very slow; maybe I can optimize it and run the whole thing live. But the first step should be to transmit a video from a file without jumps.

Another thing that is still missing is an identification of the program that is being transmitted. This information needs to be multiplexed into the transport stream. I am trying to learn how to do that.