Wide-band capture with HackRF One

multirtl | hackrf-sox & channelize | hopping

Single ARFCN

arfcn=23
freq=`arfcncalc -a $arfcn -d`
hackrf_transfer -r $arfcn.hrf.cs8 -f $freq -a 1 -l 32 -g 32 -s 2e6 -n 20000000
#-s 8e6 -n 80000000

sox -h | less
sox -t raw -b 8 -e signed-integer -c 2 -r 2000000 $arfcn.hrf.cs8 -t raw -b 32 -e floating-point -c 2 $arfcn.hrf.sox rate 1000000
#-v 2

Multiple ARFCNs

Let’s say we need to target those two ARFCNs

23 ---> 939.6 bcast 939600000
26 ---> 940.2 hop 940200000

673 ---> 1837400000 (broadcast)
725 ---> 1847800000 (traffic)

and check there is something going-on at those frequencies with GQRX

The minimum bandwidth we need would be

>>> ( 940200000 + 100e3 ) - ( 939600000 - 100e3 )
800000.0

>>> ( 1847800000 + 100e3 ) - ( 1837400000 - 100e3 )
10600000.0

but since the channel bandwidth becomes 1M as for channelize

>>> ( 940200000 + 500e3 ) - ( 939600000 - 500e3 )
1600000.0

>>> ( 1847800000 + 500e3 ) - ( 1837400000 - 500e3 )
11400000.0

wide=2000000
wide=12000000

and the center frequency would be

>>> ( 940200000 + 939600000 ) / 2
939900000

>>> ( 1837400000 + 1847800000 ) / 2
1842600000

center=

check that normal 2M wide capture works and inspect the result

invppm=-22
hackrf_transfer -r air.cs8 -f $freq -a 1 -l 32 -g 24 -s 2e6 -n 10000000 -C "$invppm"
inspectrum --rate 2e6 air.cs8

we can now proceed and capture that wider band. Also inspect the result (you should notice both channels in there - each one being close to every end of the band)

hackrf_transfer -r $arfcn.hop.hrf.cs8 -f $center -a 1 -l 32 -g 24 -s $wide -n $(( wide * 10)) -C "$invppm"
inspectrum --rate $wide $arfcn.hop.hrf.cs8

here we do not need to re-sample, as channelize will do the job later on

sox -t raw -b 8 -e signed-integer -c 2 -r 12000000 $arfcn.hop.hrf.cs8 -t raw -b 32 -e floating-point -c 2 $arfcn.hop.hrf.sox
ls -lhF $arfcn.hop.hrf.*

Ready to go

you are now ready to channelize then de-hop


HOME | GUIDES | BENCHMARKS | html