HackRF One – Aansluiten en Installeren
We hebben het al eerder gehad over radiosignalen. In de volgende post gaan we hier wat onschuldig plezier mee hebben. Maar allereerst gaan we een HackRF One van Great Scott Gadgets (Michael Ossmann) bekijken, aansluiten en installeren.
De HackRF One is een hardware platform waarmee we SDR ofwel “Software Defined Radio” mogelijk maken. De HackRF kan dus draadloze (analoge) signalen ontvangen en zenden in de bandbreedte van 1 MHz to 6 GHz. De antenne die ik gebruik (ANT500) heeft een bereik van 75MHz tot 1GHz. Er zijn veel meer apparaten die draadloze signalen kunnen ontvangen zoals bekende en zeer goedkope Realtek RTL-SDR (RTL2832U) DVB-T dongel + antenne die slechts tussen de 20 en 35 euro tezamen kosten. De RTL-SDR heeft een kleiner bereik (24 – 1766 MHz) en kan alleen ontvangen en niet zenden zoals de HackRF One. Maar is uitermate geschikt om mee te beginnen. Experimenteren met de RTL-SDR heeft mij ertoe gebracht om een HackRF One aan te schaffen.

SDR staat voor Software Defined Radio. SDR is software die de computer (processor) in staat stelt om draadloze signalen te verwerken, mixen, versterken, (de)moduleren etc. Al deze signalen worden inzichtelijk gemaakt in speciale software. Met SDR kunnen we het draadloze spectrum dus inzichtelijk maken en de aanwezige signalen ontvangen en verwerken.
HackRF One
De HackRF One die we in deze post gebruiken is een “half-duplex” apparaat. Dit wil zeggen dat we niet tegelijkertijd kunnen zenden en ontvangen. Daarnaast is de HackRF One een USB 2.0 apparaat welke ook middels USB gevoed wordt. De HackRF One beschikt over een SMA female antenne verbinding en 2 SMA female clock input en output verbindingen voor synchronisatie.

Het apparaat is in staat om 20 miljoen signalen (samples) per seconde te verwerken. De RX (ontvang sterkte), TX (zend sterkte) en het “baseband filter” zijn via de software in te stellen.
Als we naar de HackRF One kijken zien we aan beide zijdes een aantal aansluitingen en lampjes. Deze hebben de volgende functies:


Het aansluiten van de HackRF One is gemakkelijk. Zorg ervoor dat er ALTIJD een antenne of “dummy load” aangesloten is op het moment dat je gaat zenden of ontvangen.
Als de HackRF One aangesloten is dan is het zaak om deze werkend te krijgen. Het HackRF One project ket 2 verschillende software packages:
- libhackrf (libary zodat andere software (zoals GNU Radio) met HackRF kan communiceren)
- hackrf-tools (command-line tools om met de HackRF te werken)
Als je werkt met Linux Pentoo dan zijn alle packages al geïnstalleerd. Linux Pentoo support 100% de HackRF One. Als je geen Linux Pentoo gebruikt dan moeten deze libaries geïnstalleerd worden. Afhankelijk van de wensen zal 1 van de 2 libaries voldoende zijn maar meestal zal je beide willen installeren.
Alle packages zijn te vinden op: “https://github.com/mossmann/hackrf/”.
Wij gaan de HackRF op Kali Linux installeren. Dit doen we als volgt:
1. Installeer de nodige dependencies:
apt-get update apt-get install cmake apt-get install libusb-1.0-0-dev apt-get install liblog4cpp5-dev apt-get install libboost-dev apt-get install libboost-system-dev apt-get install libboost-thread-dev apt-get install libboost-program-options-dev apt-get install swig apt-get install pkg-config |
2. Maak een “sdr” directory en clone de hackrf repository naar deze directory:
mkdir sdr cd sdr git clone https://github.com/mossmann/hackrf.git |
3. Ga naar de “host” directory, maak een “build” directory en gebruik Cmake om “Makefiles” aan te maken:
cd hackrf/host mkdir build && cd build cmake ../ -DINSTALL_UDEV_RULES=ON |
4. Nu gaan we de installatiepackage maken en installeren:
make && make install && ldconfig |
Als de installatie goed gegaan is dan kunnen we nu het “hackrf_info” commando gebruiken. Als je HackRF One is aangesloten dan zien we interessante informatie van de HackRF retour zoals het serienummer en de firmware versie:

Vervolgens is het zaak om additionele software te downloaden zoals GNU radio en GQRX. GNU Radio is een gratis toolkit die signaalverwerkingsblokken realiseert om software-defined radio en signal-processing systemen te implementeren. GNU radio kan gebruikt worden met externe RF hardware een software defined radio te maken. Dit pakket is absoluut noodzakelijk en wordt als volgt geïnstalleerd:
apt-get install gnuradio gnuradio-dev gr-iqbal |
Helaas kan GNURadio / GQRX nog niet communiceren met de HackRF One. Er zijn verschillende packages die dit mogelijk kunnen maken zoals de “libhackrf” package. Wat bij mij echter altijd beter werkt is de middleware tool “GrOsmoSDR”. Om dit te doen keren we terug naar de “sdr” folder en clonen we de package zoals we al eerder gedaan hebben:
cd ~/sdr git clone git://git.osmocom.org/gr-osmosdr |
En daarna gaan we de Makefiles weer maken en de software installeren:
cd gr-osmosdr mkdir build && cd build cmake ../ make make install ldconfig |
En de laatste software die we gaan downloaden is GQRX. GQRX is SDR software met een grafische interface. Na de installatie van GQRX is het aan te raden om ook de libvolk1.bin package te downloaden en “volk_profile” te draaien. Dit levert een goede performance boost op.
apt-get install gqrx-sdr apt-get install libvolk1-bin volk_profile |
En we zijn klaar met de installatie van de additionele software. Nu kunnen we de HackRF gebruiken met o.a. GQRX.

Data ontvangen en verzenden via de command-line
Als we de eerder genoemde “hackrf-tools” geïnstalleerd hebben kunnen we via de command-line data verzenden en ontvangen. Het belangrijkste commando om dit te doen is “hackrf_transfer”.
Het “hackrf_transfer” commando heeft een groot scala opties waaronder de volgende belangrijke flags:
- -r
Dit is de “receive” mode om data te ontvangen. Data ontvangen via “hackrf_transfer” gebeurt altijd in een bestand. - -t
Dit is de “transfer” mode om data te verzenden. Data verzenden via “hackrf_transfer” gebeurt altijd vanuit een bestand. - -w
Dit is een speciale “receive” mode. De –w flag maakt van de ontvangen data een “wav” bestand en zorgt ervoor dat het bestand een automatische naam krijgt. - -f
De -f flag staat voor “frequentie”. Middels de -f flag geven we dus de frequentie aan welke kan variëren van 0MHz tot 7250MHz. - -a
De -a flag staat voor “amplifier” ofwel versterker. We kunnen tijdens het ontvangen (RX) en verzenden (TX) gebruik maken van een versterker. 1 = ingeschakeld en 0 = uitgeschakeld. - -l
Dit is de zogenaamde RX LNA (IF) gain. In te stellen van 0 tot 40 dB in stappen van 8 dB. - -g
Dit is de RX VGA (baseband) gain. In te stellen van 0 tot 62 dB in stappen van 2 dB. - -x
Dit is de TX VGA (IF) gain. In te stellen van 0 tot 47 dB in stappen van 1 dB.
Hieronder zien we een voorbeeld waarbij ik de HackRF test naar het bestand “/dev/null”. In Linux is “/dev/null” een “null device” ofwel een virtueel uitvoerapparaat die alle data ontvangt en verwijderd / negeert.
hackrf_transfer -r /dev/null |
Bovenstaande commando geeft ons de default waardes van de HackRF retour:

Zo zien we dat we een default sample rate hebben van 10000 MHz (10 miljoen samples per seconde). Als resultaat zien we 20 miljoen bytes per seconde retour. Dit is correct omdat er 2 bytes verzonden worden voor iedere sample omdat een sample uit 2 waardes bestaat (2x een signed 8-bit integer).
We kunnen testen of de USB connector een hogere sample rate aan kan (meer data per seconde kan verwerken) door de sample rate te verhogen met de -s flag. Laten we testen met de dubbele snelheid van 20 miljoen samples per seconde:
hackrf_transfer -r /dev/null -s 20000000 |
De uitkomst laat zien dat ook deze snelheid prima is. We ontvangen namelijk gemiddeld 40 miljoen bytes per seconde:

Op deze manier kun je gemakkelijk de hoogste snelheid van je USB poort testen.
Om b.v. naar Radio538 te luisteren tunen we de frequentie naar 102700000:
hackrf_transfer -r /dev/null -f 102700000 |

Het verzenden van data gaat op dezelfde manier. Bijvoorbeeld:
hackrf_transfer -t /dev/zero -f 102700000 |
Updaten HackRF One
Als we nogmaals haar de hackrf_info kijken dan zien we de huidige firmware versie. Deze is: 2015.07.2.

Dit is momenteel nog steeds de meest up-to-date versie. Mocht er echter in de toekomst een nieuwe release uitkomen dan is het updaten van de firmware een redelijk straight forward proces.
Allereerst moet natuurlijk de firmware (release package) gedownload worden. Deze gaan we uitpakken, en vervolgens gaan we naar de firmware folder. Hier schrijven (-w) we de “rom_to_ram” bin file naar de HackRF. Vervolgens rebooten we de HackRF en de firmware is geupdate. Dit proces ziet er als volgt uit:
tar -xvf /tmp/hack-rf-2015.02.2.tar.xz cd hack-rf-2015.02.2 cd firmware-bin hackrf_spiflash -w hackrf_one_usb_rom_to_ram.bin |
Na de firmware update zijn we nog niet helemaal klaar. Ook moet de configuratie van de CPLD (Complex Programmable Logic Device) geüpdate worden. Deze chip bevindt zich tussen de microcontroller en analog to digital converter (and digital to analog converter). Op deze te updaten moeten we in de firmware folder kijken naar het juiste “xsfv” bestand. Deze firmware lezen we vervolgens in met het “hackrf_cpldjtag” commando:
hackrf_cpldjtag -x hackrf_cpld_default.xsvf |
Nadat de CPLD firmware geupgrade is (wat normaliter niet langer dan 5 seconde zal duren) zal de HackRF zichzelf rebooten (of zal de melding verschijnen dat de HackRF handmatig gereboot moet worden). Na de reboot is de firmware up-to-date.
Nu we een werkende up-to-date HackRF hebben en de basisprincipes begrijpen gaan we echt leuke dingen doen…. In de volgende post gaan we een draadloze deurbel hacken 🙂 Tot de volgende…