原始博文链接:使用单HACKRF板接收ADS-B信息并通过BTLE发至手机

(本文提到的固件也可以这里下载: https://github.com/JiaoXianjun/ADS-B-BTLE-air-relay-HACKRF-firmware )

(为了降低风险,转发至手机的的经纬度信息已经人为降级)

写了一个hackrf固件,可以把接收的ADS-B (1090MHz) 包解析后,信息通过BTLE (2.4GHz) 链路广播. 这时你用手机就能查看飞机信息了. (比如用这个APP LightBlue。APP store下载). (优酷视频 Youtube视频

两种尝试我的固件的方法:

1. 把固件临时加载进hackrf的RAM并运行

(hackrf掉电或者重启后会丢失此固件,因此不会影响原有固件)

下载固件: https://github.com/sdr-x/sdr-x.github.io/blob/master/_resource/adsb-btle-air-relay.dfu

下载和安装dfu-util:

git clone git://gitorious.org/dfu-util/dfu-util.git

也放了一个dfu-util在这里 https://github.com/sdr-x/sdr-x.github.io/blob/master/_resource/dfu-util.tar.gz

启动HackRF One 至 DFU 模式:在上电或者重启hackrf时按下 DFU键不放. 在 3V3 LED 亮起后释放DFU键. (详细参见 https://github.com/mossmann/hackrf )

加载我的固件进RAM并且运行:

sudo dfu-util --device 1fc9:000c --alt 0 --download adsb-btle-air-relay.dfu

打开LightBlue APP, 你将会看到类似下面的飞机信息:

ICAO-addr/Flight   altitude   speed   latitude   lontitude

2. 把我的固件刷进hackrf的flash固化

(掉电也不会丢失,但会冲到你原有的固件,所以你可能将来需要刷回原有固件)

下载 adsb-btle-air-relay.bin

进行下一步之前,请确保你的hackrf正在跑原始固件, 然后:

hackrf_spiflash -w adsb-btle-air-relay.bin

hackrf_spiflash 工具应该已经随你的hackrf驱动安装了 https://github.com/mossmann/hackrf. 我也放了一个hackrf_spiflash在这里  https://github.com/sdr-x/sdr-x.github.io/blob/master/_resource/hackrf_spiflash

运行时, TX led (红) 应该闪动的很快. 如果没有闪, 你可能需要把板子启动到DFU模式,再按一下reset键,可能就跑起来了.

如何刷回hackrf原始固件

因为我的固件不支持和hackrf_spiflash工具通信, 所以你需要先把hackrf原始固件以DFU方式刷进RAM跑起来(这时就能和hackrf_spiflash正常通信了), 然后再用hackrf_spiflash工具把hackrf原始固件刷进flash固化.

进DFU模式,然后:

dfu-util --device 1fc9:000c --alt 0 --download hackrf_usb.dfu

我也放了一个hackrf_usb.dfu这里

注意:此时千万不要重启你的板子。

再刷原始固件进板子的flash固化:

hackrf_spiflash -w hackrf_usb.bin

我也放了一个hackrf_usb.bin这里

如果没有错误,你的板子就恢复了原始固件.

想知道如何编译固件和刷新固件的详细信息,可以参见https://github.com/mossmann/hackrf的firmware目录