Folks were playing around with Hellschreiber encoding in the #hackrf channel on Freenode last week using hackrf_transfer
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>HackRF's tx/rx'ing images in waterfall plots using http://t.co/Lyijkr63QP http://t.co/JwLsO29dqC #SDR #HackRF pic.twitter.com/aAKk4eLBgV
— ☞ Gareth (@gyaresu) August 21, 2015
Which then made me remember a tweet from @maxogden playing around with a hackrf
node
module at the CCC 2015 camp last week.
And using a hackrf
via node
is something I've wanted since before it was even a thing
.
Use Spectrum Painter to create an IQ stream:
python spectrum_painter/img2iqstream.py examples/gareth.png --samplerate 8000000 --format hackrf > gareth.raw
hackrf_transfer -f 915000000 -s 3700000 -t gareth.raw -x 20 -a 1
GQRX is a multi-platform software reciever with waterfall plot.
You might need to tweak some of the sample rate / fft settings in both hackrf_transfer
& gqrx
to get the correct aspect ratio but it's not difficult.
FFT: 8192
Rate: 50fps
Filter Width: Normal
Filter Shape: Normal
Mode: Narrow/FM
AGC: Fast
So I wrote something straight from my brain using hackrf-stream...
var devices = require('hackrf-stream')
var fs = require('fs')
var radio = devices(0).open(0)
radio.setFrequency(9.15e8)
radio.setSampleRate(3.7e6)
var tx = radio.createWriteStream()
fs.readFile('./gareth.raw', function (err, data) {
if (err) {
throw err
}
tx.write(data)
})
I managed to capture the very first code test. While in utter shock it actually worked!