
Прошивки и исследовательские инструменты для USB-донглов и плат расширения на базе Nordic Semiconductor nRF24LU1+.
Прошивка и исследовательские инструменты для USB-донглов и отладочных плат на основе nRF24LU1+ от Nordic Semiconductor.
Установка зависимостей в Ubuntu:
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio
Следующее оборудование было протестировано и гарантированно работает.
make
Микросхемы nRF24LU1+ поставляются с заводским загрузчиком, занимающим верхние 2 КБ флэш-памяти. Прошивка CrazyRadio и исследовательская прошивка RFStorm поддерживают USB-команды для входа в загрузчик Nordic.
Донглы и отладочные платы можно программировать через USB, если на них запущена одна из следующих прошивок:
Для прошивки через USB:
sudo make install
Наиболее распространённые донглы Unifying основаны на nRF24LU1+, но в некоторых используются микросхемы Texas Instruments. Эта прошивка поддерживается только на вариантах nRF24LU1+ с номером модели C-U0007. Скрипт прошивки автоматически определит, какой тип донгла подключён, и будет пытаться прошить только варианты на nRF24LU1+.
Чтобы прошить прошивку через USB на донгл Logitech Unifying:
sudo make logitech_install
Скачайте и распакуйте образ прошивки Logitech, который будет называться RQR_012_005_00028.hex или похоже. Затем выполните следующую команду, чтобы прошить прошивку Logitech на донгл:
sudo ./prog/usb-flasher/logitech-usb-restore.py [path-to-firmware.hex]
Если ваш донгл или отладочная плата превратилась в «кирпич», вы можете запрограммировать её через SPI с помощью Teensy.
Это было протестировано только с Teensy 3.1/3.2, но, вероятно, будет работать и с другими вариантами Arduino.
platformio run --project-dir teensy-flasher --target upload
sudo make spi_install
Инструмент обнаружения устройств в псевдо-неразборчивом режиме, который сканирует список каналов и выводит декодированные пакеты Enhanced ShockBurst.
usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-p PREFIX, --prefix PREFIX Promiscuous mode address prefix
-d DWELL, --dwell DWELL Dwell time per channel, in milliseconds
Поиск устройств на каналах 1-5
./nrf24-scanner.py -c {1..5}
Поиск устройств с адресом, начинающимся с 0xA9, на всех каналах
./nrf24-scanner.py -p A9
Сниффер слежения за устройством, который следует за конкретным устройством nRF24 при его перескоках между каналами и выводит декодированные пакеты Enhanced ShockBurst от этого устройства.
usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Address to sniff, following as it changes channels
-t TIMEOUT, --timeout TIMEOUT Channel timeout, in milliseconds
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
Перехватывайте пакеты с адреса 61:49:66:82:03 на всех каналах
./nrf24-sniffer.py -a 61:49:66:82:03
Инструмент картографирования звездообразной сети, который пытается обнаружить активные адреса в сети, изменяя последний байт заданного адреса и отправляя запросы на каждый из 256 возможных адресов на каждом канале из списка каналов.
usage: ./nrf24-network-mapper.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Known address
-p PASSES, --passes PASSES Number of passes (default 2)
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
Постройте карту звездообразной сети, к которой принадлежит адрес 61:49:66:82:03
./nrf24-network-mapper.py -a 61:49:66:82:03
Микросхемы nRF24LU1+ включают тестовый механизм для передачи непрерывного тона, частоту которого можно проверить при наличии SDR. Существует вероятность, что расхождения частот между устройствами могут вызывать неожиданное поведение. Например, одна из протестированных плат расширения SparkFun имела смещение частоты около 300 кГц, из-за чего она принимала пакеты на двух соседних каналах.
Этот скрипт заставит трансивер передавать тон на первом канале из переданных.
usage: ./nrf24-continuous-tone-test.py [-h] [-c N [N ...]] [-v] [-l]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
Передача непрерывного тона на частоте 2405 МГц
./nrf24-continuous-tone-test.py -c 5
| Teensy | CrazyRadio PA | Плата расширения Sparkfun nRF24LU1+ |
|---|
| GND | 9 | GND |
| 8 | 3 | RESET |
| 9 | 2 | PROG |
| 10 | 10 | P0.3 |
| 11 | 6 | P0.1 |
| 12 | 8 | P0.2 |
| 13 | 4 | P0.0 |
| 3.3V | 5 | VIN |