Writing

Feed Software, technology, sysadmin war stories, and more.

Saturday, October 15, 2011

New hardware, fiddling with squelch, and the Dojo

(This is the sixth post in a series. You might want to start from the beginning for context.)

Part six: New hardware, fiddling with squelch, and the Dojo.

My creation was starting to record audio, but it sounded terrible. I was still very new to all of this stuff and just started fiddling with knobs. When you're talking about a software radio, everything is a knob, including whether something exists in your flow graph or not!

I played with the low pass filter values. I took out the squelch and put it back. Figuring maybe a power squelch was the wrong approach, I tried a CTCSS squelch. That didn't help. So then I had to start learning about what "alpha" and "ramp" meant. In the gr-smartnet source, they are treated as magic. The actual comment: "#wat". Uh, thanks?

Finally, I realized I was going to need to have some way to twiddle these values while keeping the same input data. I couldn't keep playing around with real live data, since the transmissions jump around and they might be silent when I need them to talk. Worse, at the time I was doing this -- 3 AM or so -- Santa Clara is pretty quiet! They might go 60-90 minutes between calls between 3 and 6 AM. That's awesome in terms of not having crime and fires, but it stinks in terms of working on radio stuff.

Eventually I found the "file" source in GNU Radio. All you do is take a dump of raw USRP data and save it to disk. Then you point this source at it and tell it to repeat. It'll keep giving you that same data over and over until the end of time if you want. Then you can bring up your flow graph and tinker to your heart's content. Finally, I was able to adjust things without having to deal with real-world fluctuations.

After doing this for far too long, I discovered that my power squelch needed to be *much* lower than any previously imagined value. It finally opened up and I started getting audio through.

Somewhere in the middle of all this, I realized that my poor little machine was no longer going to do the job. At some earlier point, I had gone to the trouble of figuring out what a new system should look like. One morning, I waited for Micro Center and Frys to open, then made a couple of trips and got everything I needed: a new motherboard, CPU, RAM, and a case.

This thing makes my old machine look pathetic. Whereas I was running the old one at nearly 100% utilization and was hitting thermal limits, this one runs the same program at maybe 4-5% load. It's ridiculous just how far CPU power has come in the past five or six years -- that's about when my previous machine's hardware was the "hot new thing" of its day.

In parallel with this hardware and backend work, I had been working on my frontend. It didn't do real-time updates of the call list yet, but you could click around to play calls until you ran out of data. After that, reloading would give you more. Moreover, my backend was able to log calls to disk and MySQL without any interaction from me now. Finally, I had a demo which would run by itself!

It was time to go show it to the world. I put a 50 call demo up on my web page and wrote a quick post here about it. Then, since it was Friday evening, I set out for the Hacker Dojo in Mountain View to show off what I had been working on during Happy Hour.

For reference, 15 days had passed since my USRP hardware arrived in a FedEx box. I think I will use this as my new canonical example of just how far you can get in a short amount of time, even when dropped into the deep end.

There's a lot more which follows, but that's enough for this first series.

Send me feedback if you have any questions about this or if you have requests for future topics, or even just to chat.