RF Chameleon is a set of tools to interface with ISM-band radios. It's inspired by RFQuack but provides a more abstract interface to the radio which implies that it needs to make more assumptions about the underlying protocol. Unlike RFQuack, RF Chameleon is not intended as an RF exploration tool. RF Chameleon is intended to be used in the phase after basic exploration when the underlying radio parameters are known.
RF Chameleon uses Zephyr. Follow (Zephyr's getting started guide)[https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html] to setup an Arm (cross) compiler and the west build tool. Once west has been installed, clone RF Chameleon using the following command:
west init -m https://github.com/rfchameleon/rfchameleon-fw.git rfchameleon-fw
cd rfchameleon-fw
west update
Once the repository has been initialized, follow the build instructions for your board.
The CC1101 radio is supported out of the box. This radio supports the 315 MHz, 433 MHz, 868 MHz, and 915 MHz bands. RF Chameleon currently uses a custom driver with its own device tree bindings. Other radios in the same family (e.g., CC2500) will likely work but are untested.
The RF Chameleon CC1101 board is a custom board based on an ST STM32F401 MCU and a Texas Instruments CC1101 radio.
Build the firmware using the following command:
west build -b rfccc1101 -d build.rfccc1101 rfchameleon/app
To flash the board, connect USB while simultaneously pressing the boot button. This will activate the chip's built-in ROM bootloader. The firmware can then be flashed with the default flasher (USB DFU):
west flash -d build.nrf52
The board has a Tag Connect TC2050 debug header that can be used with common off-the-shelf debuggers. The board support files contain presets for ST-Link (OpenOCD), BlackMagic Probe, and J-Link.
The exact board configuration is specified in app/boards/nrf52840dk_nrf52840.overlay. By default, the firmware will use the following radio pinout:
Board GPIO | CC1101 pin |
---|---|
P1.7 | GDO2 |
P1.8 | GDO0 |
P1.12 | CSn |
P1.13 | SCLK |
P1.14 | MISO / GDO1 |
P1.15 | MOSI |
Build the firmware using the following command:
west build -b nrf52840dk_nrf52840 -d build.nrf52 rfchameleon/app
The firmware can be flashed with the default flasher:
west flash -d build.nrf52
Any board with USB support that is supported by Zephyr can be used with RF Chameleon. To support a new board, simply create a new device tree overlay that tells the operating system how to access a supported radio. The NRF52840DK device tree overlay and configuration are a good starting points.