Ultrasonic Data Transmission With GNU Radio

When we hear GNU Radio was used in a build, the first thing we think of is, obviously, radio. Whether it’s a using extremely expensive gear or just a USB TV tuner dongle, GNU Radio is the perfect tool for just about everything in the tail end of the electromagnetic spectrum.

There’s no reason GNU Radio can’t be used with other mediums, though, as [Chris] shows us with his ultrasound data transmission between two laptops. He’s transmitting audio from the speakers of one laptop at 23 kHz. It’s outside the range of human hearing, but surprisingly able to be picked up by a cheap desktop mic connected to another laptop. His GNU Radio setup first converts a string of text to a 5-bit packet, modulates it with FSK, and bumps up the signal to 23 kHz. On the other end, the data is decoded by doing the same thing in reverse.

The setup is easily able to reject all audio that isn’t in the specified frequency range; in the video after the break, [Chris] successfully transmits a ‘hello world’ while narrating what he’s doing.


35 thoughts on “Ultrasonic Data Transmission With GNU Radio

  1. Have you tried testing it with a dog in the room? It was always possible, but not very practical. There are so many impractical ways to do things that we are already doing in a more practical way. The real challenge is to find an even more practical way to to things.

    1. Why would that be a problem? People communicate with each other by speaking in the presence of dogs, which they hear but usually don’t care about (unless the word “treat” comes up).

      1. I don’t think the point was “this is exactly how badbios is implemented”, but rather that it’s proof that the data transmission is possible using commodity hardware. How it’s implemented at a BIOS level (if possible) remains to be seen.

      2. You don’t have to run GNU Radio in Bios. I’m sure you can implement the needed stuff compact enough to fit.

        What this here does is to proof, that the standard audio setup in modern laptops is capable of the things the “badbios” assumptions claimed.

        1. The ability to send data using ultrasonic sound from your PC speakers to another PC microphone? Sure. As this demo shows, it is completely possible. Data rate isn’t great in this proof of concept but you’re not going to be able to refine it that much considering how inefficient the speakers and microphones will be for this frequency range. The average PC speaker and microphone are awful even for normal audio ranges.

          The claim that badbios can make an infected PC infect a clean PC just from this transmission method? No. That is just irrational paranoia talking. You’d need to have an extremely low level vulnerability in the audio subsystem multiple OSes, a rootkit that is completely undetectable from the OS but also capable of running on everything, a robust way of hiding from a complete wipe of the system including BIOS flash itself and you’d also need to be able to do all of this without waiting a week for your exploit to broadcast itself. Don’t forget the ECC as well.

          1. That’s not what was claimed with badbios. It was claimed that two infected computers can communicate over the air to explain how a completely cleaned (apart from the bios) machine, not connected to any network, was re-injected with malware. In other words: the target machine would still be stage-1 infected and this communication channel would take care of additional payloads.
            Still hard to believe, not impossible

  2. Congrats! I’m working on something very similar, actually. Though, my focus is mainly on high data rates and understainding modern modulation and error correction techniques. So far I managed to transmit 1700 bits/s using a 2 kHz bandwidth in a reverberating room from one laptop to another. A pretty decent spectral efficiency of 0.85 bits/second/Hertz I’m kinda proud of. :-)

    1. Oops… I see somebody already mentioned badbios above. I recall reading about transmitting data over open air with sound card+microphone+speakers back in the 90’s, using DOS programs. As I recall, they had a higher data rate than the video above demonstrates, using an 8-bit ISA sound card as I recall…

    2. Unfortunately unless your computer is set up to execute audio streams or there’s a high frequency overrun in your audio software, you’d need to pre-infect your targets for badbios to work. This means you need an inside job or some other vector to get to the isolated PCs in the first place.

  3. Dog’s can hear up to 45 kHz. Most human teenagers can hear almost up to 23 kHz. Cat’s and Dolphins can hear even higher.

    To use this underwater for submarine data communications you would have to work out some sort of error correction as the audio signal tends to mutate over distance and has too many echoes from hitting solid objects underwater. Also salinity can effect data transmission too. It can be done but don’t expect too much distance.

    Sound waves travel pretty far underwater but you could only achieve very low data bandwidths. It would be better to use Morse Code like binary communication rather than data or voice. The US Navy has experimented with this extensively. They pretty much abandoned this for Blue-Green lasers communications underwater.

  4. This looks more like a good tutorial on GNURadio than a practical solution. Modem chips in the past did the very same thing: data i/o here, sound i/o there. I used them to record to and get back from a normal audio cassette deck data coming from machines that had serial i/o but no tape. If you find an old AM7910 chip you can easily build a modem in the audio range. Other chips will go up to and beyond ultrasound frequencies.

  5. Ok, so he invented an acoustic modem? No, I mean seriously, original acoustic sent data over phone lines by modulating sound signals at one end and demodulating them at the other, this is the same idea, only through the air, so it’s a modem, right? Anyway its cool, who would have thought of using GNURadio for this.

  6. I tried this with minimodem (http://www.whence.com/minimodem/) a while ago using a very cheap pair of external speakers and an old EeePC 701 using its internal mic as the receiver. But I couldn’t get anything over about 16 KHz to work. I guess the quality of the speakers and microphone play a big role as to what frequencies it will work with, so ultrasonic comms might not be possible with all (or even most???) laptop speakers and microphones.

    1. You might check if your sound driver has any “enhancements” enabled. For example, on some windows 10 machines I was playing with the microphone echo cancellation would cut off frequencies that are assumed to be inaudible to humans. The cutoff point was very close to the 16kHz you mention and was enabled by default

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.