English version: ADS-B BTLE air relay via single HACKRF TDD
(本文提到的固件也可以这里下载: https://github.com/JiaoXianjun/ADS-B-BTLE-air-relay-HACKRF-firmware )
(为了降低风险,转发至手机的的经纬度信息已经人为降级)
写了一个hackrf固件,可以把接收的ADS-B (1090MHz) 包解析后,信息通过BTLE (2.4GHz) 链路广播. 这时你用手机就能查看飞机信息了. (比如用这个APP LightBlue。APP store下载). (youku视频, youtube视频)
两种尝试我的固件的方法:
####1. 把固件临时加载进hackrf的RAM并运行
(hackrf掉电或者重启后会丢失此固件,因此不会影响原有固件)
下载和安装dfu-util:
git clone git://gitorious.org/dfu-util/dfu-util.git
也放了一个dfu-util在这里 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
(注意,这种方法掉电或者重启后固件不保留,必须重新DFU进RAM)
打开LightBlue APP, 你将会看到类似下面的飞机信息:
ICAO-addr/Flight altitude speed latitude lontitude
####2. 把我的固件刷进hackrf的flash固化
(掉电也不会丢失,但会冲到你原有的固件,所以你可能将来需要刷回原有固件)
进行下一步之前,请确保你的hackrf正在跑原始固件(因为只有原始固件能和hackrf_spiflash通信), 然后:
hackrf_spiflash -w adsb-btle-air-relay.bin
hackrf_spiflash 工具应该已经随你的hackrf驱动安装了 https://github.com/mossmann/hackrf. 我也放了一个hackrf_spiflash在这里 here
运行时, 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]在这里 hackrf_usb.bin)
如果没有错误,你的板子就恢复了原始固件.
想知道如何编译固件和刷新固件的详细信息,可以参见 https://github.com/mossmann/hackrf (firmware目录)