Hacker News new | comments | ask | show | jobs | submit login
Software-Defined Radio for Engineers [pdf] (analog.com)
352 points by app4soft 6 months ago | hide | past | web | favorite | 50 comments

This book published in free access in Education Library on Analog Devices, Inc. web site.[0]

  Software-Defined Radio for Engineers, by Travis F. Collins,
  Robin Getz, Di Pu, and Alexander M. Wyglinski, 2018,
  ISBN-13: 978-1-63081-457-1.
The web site sdrforengineers[1] provides supplementary materials for the text, hands on content, labs, assignments, end of chapter questions, that anyone can use or contribute to.

Slides and other materials for lectures related to SDR for Engineer textbook released on GitHub.[2]

[0] http://www.analog.com/en/education/education-library/softwar...

[1] http://sdrforengineers.github.io

[2] https://github.com/sdrforengineers/LectureMaterials/releases...

Very nice, and I think the ADALM-PLUTO is a very accessible SDR that is a step up from the RTL sticks that most folks start with.

Primarily because it can also send.

That and a price of $99 vs $300 for the low end of the "high end" SDRs.

But if you want to actually use the chip in a design, it's still $300.

> I think the ADALM-PLUTO is a very accessible SDR that is a step up from the RTL sticks that most folks start with.

Because discussed book name is "Software-Defined Radio for Engineers", and NOT "Software-Defined Radio for Dummies"[0]

[0] https://en.wikipedia.org/wiki/For_Dummies

This is awesome, thank you for making this available. Having had to piece this together from multiple books, blog posts, tutorials, GNU Radio, etc. having a single reference is really helpful

The sdrforengineers site is just a template, and it doesn't contain or link to anything useful.

I was excited about the book, but I couldn't even get the first MATLab example (gibbs.m) to work. What is scope()?

> The sdrforengineers site is just a template, and it doesn't contain or link to anything useful.

To be clear, sdrforengineers[0] site contain few useful links:

- link to printed version of this book on Amazon;[1]

- link to video course "ECE4305 Software Defined Radio Systems and Analysis " as playlist on YouTube;[2]

- link to their page on GitHub, where repo with LectureMaterials for this book hosted.[3]

[0] http://sdrforengineers.github.io

[1] https://www.amazon.com/Software-defined-Radio-Engineers-Trav...

[2] https://www.youtube.com/playlist?list=PLBfTSoOqoRnOTBTLahXBl...

[3] https://github.com/sdrforengineers/LectureMaterials

I really wish that I could do some basic sdr with android.

People talk about decentralization and privacy and net neutrality, but sdr on handheld would sound very exciting. I'm sure ISPs would argue against it, but communicating small segments of data wirelessly between terminals would open a lot of gates for new kinds of software.

Dht is already at the core of Bitcoin, yet it's not talked a lot about. Dht, to me, is the most important networked algorithm. Implementing the concepts of dht over sdr sounds new and unexplored, but it should be the internet of the future...

The problem is that interactions between radio systems can be highly unpredictable. LTE-U, for example, was specifically designed to co-exist with coexist with Wi-Fi, but doesn't do it very well: https://pdfs.semanticscholar.org/presentation/a4ac/9af05963e.... When designing wireless protocols, there are real benefits to homogeneity.

> LTE has been modified by a few companies so that it can operate in the same unlicensed spectrum that Wi-Fi uses (called LTE-U)

It looks like to me that the problem is they decided to use the same bands of wifi. If you're going to be using the unlicensed spectrum expect interference.

But that's what you'd be doing if you permitted user-controlled transmissions from ordinary cell phones. The analog hardware in a cell phone is tied to specific frequency bands. So you'd have user-controlled transmissions, not mediated by the cell towers, on the LTE bands.

Also, LTE-U was interfering with Wi-Fi. In general, the unlicensed bands would be a lot more useful if they weren't quite so unlicensed and every radio had to follow certain basic rules.

Actually there are rules, at least in Germany, and I assume the same is true for the US. You can use a microwave heating gun, i.e., a device that shoots a beam of microwave energy to serve similar to a leaf-blower sized hair dryer, in the ISM band(s), which might be able to saturate the LNA in 2.4 GHz radios (depending on where it is placed relative to the band-pass), but you are not allowed to use a broad-band, not-caring-about-others telecommunications radio on the same frequency. For some lower frequencies I could use them to transmit power via a resonant, one-wire transmission line to a quadrocopter to save on the weight of insulation, possibly by using aluminium-clad single mode fibers to get data capacity at the same time, so I can reduce the weight of the tether reducing overall power usage, weight and size, but if I were to use the same frequency for a direct-sequence-spread-spectrum (GPS-style) radio-location-beacon network, that would not be allowed, or only within certain restrictions usually based on both EIRP/PEP/PA-in power and techniques that allow for friendly coexistence between users of the same spectrum, i.e. with CSMA/CA or restrictions to send only 1% of the time, averaged over e.g. 24h or so.

Yup, just because it's an unlicensed band doesn't mean there aren't other restrictions on it.

Pretty sure OP was talking about using the 2.4Ghz/5Ghz unlicensed spectrum. Obviously allowing user transmissions on licensed bands is a bad idea.

So you think instead people should be playing around with SDR on licensed spectrum?

If you've got a license for the bands, sure. I can blast IQ on 14.025Mhz if I feel like it assuming I stay within baud limits. Pretty cheap and easy to get a ham license these days.

Cell phones have multiple radio chips, I don't see issues with allowing SDRs on the unlicensed bands.

No need to dip down to DSP. You can do this with Android over AP-less ("peer-to-peer") Wi-Fi, so you're coding against a nicer API and Android will speak the protocol for you [1][2].

[1] https://developer.android.com/guide/topics/connectivity/wifi... [2] https://developer.android.com/guide/topics/connectivity/wifi...

For anyone working with P2P WiFi I highly recommend the Salut Library.


Thé Android P2P API is pretty difficult to use in general.

> communicating small segments of data wirelessly between terminals

Packet radio? Or, if you're content with short range, what do you need that isn't provided by wifi?

It's not the ISPs you have to worry about, it's the FCC or other local radio authorities. Because radio is a locally-shared medium, bad implementations can jam it very easily.

> Dht is already at the core of Bitcoin

No, it's bittorrent that uses DHT.

have you seen this: https://www.rtl-sdr.com/questasdr-new-rtl-sdr-software-for-a...

You could take something like a NooElec (http://www.nooelec.com/) and connect it to your phone. Though you'll need a rooted device.

I tried it and it wasn't the fastest thing out there but let me do some basic scanning.

I've tried a few of the apps on the Play store (non-rooted) and they did work, but they were crashy and when they did work, clunky to the point of being unusable

GNU Radio has a guide of how to compile it for Android. Having said that, if you're just trying to run it on your phone, it doesn't (usually) have enough power to do anything "fun". You need more capability than your average Android device. The other option is to have something a little more powerful running GNU Radio stack and then control that via your phone :)

Needs tx. LimeSDR Mini or similar would let you test the concepts but obviously embedding it into the device would be best.

Rtl-sdr driver[0] -- Port of rtl-sdr's rtl_tcp.

Allows you to use I/Q packet source in your Android applications.

All you need is to launch an intent in the form "iqsrc://rtl_tcp_arguments" where you replace rtl_tcp_arguments with the arguments that you want your application to run rtl_tcp with and the magic will be done behind the scenes.

This driver could be used by third party applications to implement Software Defined Radio.

It does not require root for Android 3.1 and above.

[0] https://f-droid.org/en/packages/marto.rtl_tcp_andro/

Certainly this is possible with a raspberry pi and a handheld radio.

At my last company I had a friend and coworker who used a pi to communicate with his Android phone for GPS data to then broadcast APRS packets to track his morning bikeride in to the office.

Not exactly handheld but there is room for miniaturization.

> People talk about decentralization and privacy and net neutrality, but sdr on handheld would sound very exciting


The hard part, and cool thing, about SDR is that it covers so many disciplines. It's the proverbial rabbit hole, with multiple layers of abstraction.

I'm very good at RF hardware and antenna design; grok that as I do it for a living.

I have dabbled in DSP and FPGAs, hacking some Verilog together with Xilinx blocks to do RF in to USB out. Not a DSP comms guru, but know my way around the theory.

Then got into GNU Radio, so had to learn Python. Got the basics down on that and wrote a GNU radio based app, putting it on Github.

Though then came C++, and the whole Linux development environment. Totally new stuff to delve into. Still trying to wrap my head around that.

Not really related to the book, but it's only yesterday that I've found out about AirplaneJS [0]. It picks up ADS-B radio signals from airplanes and display them over maps on browser like a local Flightradar. It's nice that you can interact with SDR in Node.js

About this book, it's interesting to see that there are more advanced applications of SDR on Chapter 13.

Do you, HN-friends, know any other toy/simple or advanced applications of SDR?

[0] https://github.com/watson/airplanejs

I'm by no means an expert - just a hobbyist tinkering with some RF magic, but I made a simple POC of using SDR to reverse engineer and perform jam and replay attacks on cars - essentially giving you permanent access (for cars with button keyfobs). I have a short write up here: https://github.com/trishmapow/rf-jam-replay

CubicSDR[0], Gqrx[1], swradio-8[2], qSdrSwr[3] -- all are cross-platform FOSS apps for Linux, Windows, Mac.

Also, look on csete's repos[4] from.

[0] https://github.com/cjcliffe/CubicSDR

[1] https://github.com/csete/gqrx

[2] https://github.com/JvanKatwijk/swradio-8

[3] https://github.com/PTDreamer/qSdrSwr

[4] https://github.com/csete?tab=repositories

The Stratux project (http://stratux.me) does very similar work, pushing the aircraft positions to most popular electronic flight bag apps. It’s quite common among small aircraft pilots such as myself.

https://github.com/martinmarinov/TempestSDR - Looks amazingly cool! (Van eck phreaking with an SDR)

One application I've seen people use is to spoof GPS signals.

If you don't want to set up everything yourself and just want to tune in to some numbers stations, there is an online SDR interface hosted from the Netherlands.


Arguably also the more boring use of SDR; at least for me the interesting bits come from the ability to (de)modulate, filter, process and otherwise mangle signals in a way that would not be feasible with traditional radios. Using SDR to "just" listen in on old modes and bands seems like a waste in comparison.

There are several technical advantages to using SDR (and some downsides), but the benefits are greater. By SDR I mean direct sampling of the HF, such as a Flexradio or HPSDR.

Use an audio pipe an practice demodulating the various modes you can hear.

Also try websdr.org which lists a lot more than just the U. Twente one.

Also https://sdr.hu/

I have a KiwiSDR here:

Wounderful radio. w5tsu.net:8073

A similar book, used in a few grad-level courses on software defined radio. It includes a good amount of MATLAB snippets and exercises to highlight the math.

Software Receiver Design: Build your Own Digital Communication System in Five Easy Steps

[0] https://books.google.com/books/about/Software_Receiver_Desig...

incidentally, fwiw, i just _love_ the figure-2.1 which shows both time, and frequency domain signals in a single diagram.

turn the whole thing clock-wise, and you have the fourier signals, and counter-clock-wise to get to the time-domain signal.

just beautiful :)

Thanks for this. This is such an exciting field. W5TSU

I'm a ham and I'm slowly churning through designing my own SDR HF radio. I think this might be the end-all be-all guide for my pursuit!

Picked up one of these $20 gadgets to play around with a year ago: http://a.co/71lRE13

You can get your feet wet at a small expense. Open source software is available that talks to it on various platforms.

The last few pages have a nice general history of communications. Gives some great perspective.

A few interesting things about SDR and the kind of tinkering and experimentation one can do:

- in amateur radio, SDR is starting to dominate new commercial designs, but has not yet overtaken the superhet.

- you can buy a low end SDR (rtlsdr) for $20 or a better one for $120 (sdrplay) or a high end one that transmits for $2K (flexradio)

- Ettus hardware is great if you have the dollars and only care about VHF/UHF

- if you want to play with the concepts without buying hardware, just learn DSP.

- there are many interesting applications that are now fairly affordable to build that used to require massive budgets (due to cheaper FPGAs)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact