What is SDR?

“Software-defined radio (SDR) is a radio communication system where components that have been traditionally implemented in hardware (e.g. mixers, filters, amplifiers, modulators/demodulators, detectors, etc.) are instead implemented by means of software on a personal computer or embedded system. While the concept of SDR is not new, the rapidly evolving capabilities of digital electronics render practical many processes which were once only theoretically possible.

A basic SDR system may consist of a personal computer equipped with a sound card, or other analog-to-digital converter, preceded by some form of RF front end. Significant amounts of signal processing are handed over to the general-purpose processor, rather than being done in special-purpose hardware (electronic circuits). Such a design produces a radio which can receive and transmit widely different radio protocols (sometimes referred to as waveforms) based solely on the software used.” - Wikipedia

How is a VGA Dongle used for SDR?

The concept of SDR is not limited to VGA Dongles, any graphics card or display hardware that uses VGA can be hacked to generate SDR.

The original project can be found at: https://bk.gnarf.org/creativity/vgasig/html/

However, for the sake of this blog we’ll be using a derivative of this project specifically written fot the FL2000 USB to VGA ASIC: https://osmocom.org/projects/osmo-fl2k/wiki

How to run it on the Hikey960?

  • Install Debian on Hikey960: Follow This Guide
  • Install dependencies:
    • apt install libusb-1.0-0-dev build-essentials cmake make sox pv ffmpeg
  • Download a mp3 audio clip and save it as sample.mp3
  • Download the git repo:
    •   git clone git://git.osmocom.org/osmo-fl2k.git
        mkdir osmo-fl2k/build
        cd osmo-fl2k/build
      
  • Build:
    •   cmake ../ -DINSTALL_UDEV_RULES=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr
        make -j8
      
  • Install:
    •   sudo make install
        sudo ldconfig
      
  • Run: ffmpeg -re -i sample.mp3 -c:v none -f wav - | pv -B 256k | sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 - -c 1 -e signed-integer -b 16 -t raw - biquad 4.76963 -2.98129 0 1 0.78833 0 sinc -15k loudness 5 | ./osmo-fl2k/build/src/fl2k_fm - -s 130e6 -c 300e5 -i 44100
  • Hikey960 should now start transmitting audio at 100.0MHz which can be played back using any FM Radio Reciever!!!

Video