“HackRF+电池”独立中继1090MHz ADS-B信息经BTLE链路至手机
原始博文链接:使用单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固化
(掉电也不会丢失,但会冲到你原有的固件,所以你可能将来需要刷回原有固件)
进行下一步之前,请确保你的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目录