Ultrasound data transmission via a laptop

We present a simple example of data transmission using ultrasound, using a standard laptop using gnuradio. We simply make use of the laptops
own in-built speaker, along with a cheap microphone.

Gnuradio is an excellent suite of programs, which allows the creation of Software Defined Radios.

The following is the flow diagram we designed using the gnuradio-companion program, which generates the necessary python
code for us. We make use of a carrier frequency of 23KHz, which is above the range of human hearing and a sample rate of 48KHz, which
allows us to produce this frequency. We tried PSK and FSK, but found FSK worked most reliably for this, however further research into the best
modulation technique is necessary.

We make use of the packet encoder/decoder modules, in order to handle all good stuff like correctly aligning bits to the byte boundary etc.
One very important setting you must do is to make sure the gain of the final output, is around 0.5, as if not set to around this, you will get audible output.

Flow diagram

Further research:

I’m looking to modify the generated python code, to automatically iterate through a wide range of different potential baud rates and different modulators, in order to find the most effective configuration to use.


Download the gnuradio-companion file.

With thanks to the folks on #gnuradio for their help

  • JLOT
    December 10, 2013 Reply

    BadBIOS tecnology is true.

  • labbeth
    December 10, 2013 Reply

    Nice. It would be interresting to know how 23kHz is efficient under water.
    Thinking about RC submarines…

  • rajumoh
    December 18, 2013 Reply

    Hi, what version of gnuradio did u use ?

    • admin
      December 18, 2013 Reply

      Hi, I used the latest version 3.7.x. cheers

  • su
    January 7, 2014 Reply

    Hi, which daughterboard did you use in this project?

    • admin
      January 9, 2014 Reply

      I’m just using the computers soundcard.

  • me
    January 22, 2014 Reply

    Hi, what is the maximum distance between the laptop?

    • admin
      January 26, 2014 Reply

      I’ve only tested to around 3m so far.

  • hendri
    February 2, 2014 Reply

    hi, i’ve tried gnuradio-companion file, but the wx gui is not showing up? do you know shy? i’m using gnu radio companion

    actually i’ve got 2 warning, but have a same message when i execute the companion : “Block key “blocks_ctrlport_monitor_performance” not found when loading category tree”
    whether it has the effect of warning?

    • hendri
      February 2, 2014 Reply

      sory, i mean i’ve tried your gnu-companion file, and i mean “do you know why?” hehehe

      • admin
        February 4, 2014 Reply

        I’m using too, which works fine for me, possibly you haven’t compiled it with WX support?

        • hendri
          February 8, 2014 Reply

          But when i tried to run a simple grc the wxpy was run very well, i tried to change the tcp sink with audio sink or null sink, your ultrasound-fsk wx gui is showing up.

          i think, i have problem with the network configuration in gnuradio companion. :D

        • hendri
          February 9, 2014 Reply

          I want to try, create ultrasonic like your grc project. i have a question for to ensure me, can we create ultrasonic with frequency more than 23 khz (maybe more than 30khz) using standard speaker (that written have spec: respond in 90 hz – 20 khz)?

          • admin
            February 9, 2014

            Potentially you could, but both your soundcard and speaker would have to support that. I know most laptop’s soundcards
            only seem to go up to around 48kHz, meaning the max. frequency you could output would be 48/2=24kHz (according to nyquist).

Leave Comment

× six = 42

Error Please check your entries!