Rtl sdr

Материал из Радиовики
Перейти к навигации Перейти к поиску

Эта статья про программное обеспечение, про USB свисток смотрите статью RTL-SDR.

rtl_sdr - набор небольших утилит от osmocom, работающих из терминала.

Установка[править | править код]

Windows[править | править код]

  1. Скачиваем архив отсюда: https://ftp.osmocom.org/binaries/windows/rtl-sdr/. Из всей кучи выбираем архив под вашу ОС (32 или 64 бит) и с самой свежей датой. Подходящий архив для 64 бит находится в самом низу списка.
  2. Распаковываем все файлы в одну папку.
  3. ?????
  4. PROFIT!

Чтобы легко и непринуждённо открыть командную строку сразу в нужной нам папке, нажимаем Shift+ПКМ в этой папке в проводнике, затем выбираем "Открыть окно команд".

Linux[править | править код]

Debian/Ubuntu: sudo apt install rtl-sdr

Arch/Manjaro: sudo pacman -S rtl-sdr

Сборка из исходников (вам потребуется установить libusb-1.0-0-dev):

git clone https://github.com/osmocom/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake ..
make
sudo make install

Список утилит[править | править код]

rtl_sdr[править | править код]

Утилита предназначена для сохранения дампа эфира в IQ файл.

Использование: rtl_sdr -f частота [опции] [имя выходного файла]

Опции:

-f частота в герцах
-s частота дискретизации в герцах (по умолчанию: 2048000)
-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-g усиление в децибелах (по умолчанию: автоматическое)
-p коррекция PPM (по умолчанию: 0)
-b размер блока на выходе (по умолчанию: 16 * 16384)
-n количество отсчётов (семплов), сколько должно быть принято (по умолчанию: бесконечно)
-S принудительно использовать синхронный выход (по умолчанию асинхронный)

Числа можно указывать в научной нотации, например 1.8e6 вместо 1800000, 392e6 вместо 392000000. Также поддежриваются суффиксы k, M, G. Вместо имени файла можно указать - для вывода результата на стандартный вывод (stdout).

Пример: rtl_sdr -f 392e6 -s 1.8e6 /tmp/capture.bin

rtl_fm[править | править код]

Утилита для приёма и демодуляции сигнала. Поддерживает следующие виды модуляции: FM, AM, USB, LSB, RAW.

Использование: rtl_fm -f частота [опции] [имя выходного файла]

Опции:

-f частота в герцах
    Можно указать несколько частот сразу, программа будет их сканировать. Например: -f 145.500M -f 145.575M
    Можно указать диапазон с шагом. Например: -f 118M:137M:25k
    Для сканирования обязательно должен быть включен шумодав (-l).
-M модуляция (по умолчанию: fm)
    Доступные виды модуляции: fm, wbfm, raw, am, usb, lsb
    wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp
    raw == вывод сырого эфира в виде IQ (как в утилите rtl_sdr)
-s частота дискретизации (по умолчанию: 24k)
-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-g усиление в децибелах (по умолчанию: автоматическое)
-l шумодав (по умолчанию: 0 - выключено)
    for fm squelch is inverted
-o децимация (oversampling) (по умолчанию: 1, рекомендуется: 4)
-p коррекция PPM (по умолчанию: 0)
-E дополнительные опции (по умолчанию все выключены)
    Можно включать сразу несколько. Например: -E deemp -E dc
    Список всех поддерживаемых опций:
    edge:   enable lower edge tuning
    dc:     enable dc blocking filter
    deemp:  enable de-emphasis filter
    direct: прямая оцифровка (полезно для приёма КВ)
    offset: использовать offset tuning (актуально только для E4000)
-r частота передискретизации (по умолчанию: выключено)
-t задержка шумодава (по умолчанию: 10)
    Положительные значения разрешают сканирование.
    Отрицательные значения приведут к завершению работы утилиты при закрытии шумодава.
-F размер фильтра (по умолчанию: выключено)
    Включает более качественный фильтр низких частот
    Доступные значения: 0 или 9.
    0 имеет немного более плохое качество.
-A выбор тригонометрических функций (по умолчанию: std)
    Доступные значения: std, fast, lut

Числа можно указывать в научной нотации, например 1.8e6 вместо 1800000, 392e6 вместо 392000000. Также поддежриваются суффиксы k, M, G. Вместо имени файла можно указать - для вывода результата на стандартный вывод (stdout).

Примеры:

  • прослушивание вещательных станций с помощью SoX: rtl_fm -f 104.7M -M wbfm - | play -r 32k
  • приём цифровых сигналов: rtl_fm -f ... -s 22050 - | multimon -t raw /dev/stdin

rtl_power[править | править код]

Утилита для сохранения статистики по уровню сигнала на указанном диапазоне в .csv файл. Применяется совместно с утилитой heatmap.py.

Использование: rtl_power -f частотный диапазон [опции] [имя выходного файла]

Опции:

-f от:до:размер пикселя (всё в герцах)
    Размер пикселя может быть округлён в меньшую сторону. Допустимые значения от 1 до 2.8M.
-i интервал проходов в секундах (по умолчанию: 10)
    Интервал должен быть больше, чем время полного прохода.
-1 провести только один проход (single-shot) (по умолчанию выключено)
-e таймер времени работы в секундах, доступны суффиксы s, m, h (по умолчанию выключено)
-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-g усиление в децибелах (по умолчанию: автоматическое)
-p коррекция PPM (по умолчанию: 0)
-w оконная функция (по умолчанию: rectangle)
    Доступные варианты: hamming, blackman, blackman-harris, hann-poisson, bartlett, youssef
-c урезание спектра (по умолчанию: 0%, рекомендуется: 20%-50%)
    Отбрасывает данные по краям спектра, значение 100% отбрасывает все данные.
    Не будет работать на размере пикселя больше 1 МГц.
-F размер фильтра (по умолчанию: выключено)
    Включает более качественный фильтр низких частот
    Доступные значения: 0 или 9.
    0 имеет немного более плохое качество.
    Попробуйте совместно с -c 50%
-P включает peak hold (по умолчанию выключено)
-D прямая оцифровка (полезно для приёма КВ) (по умолчанию выключено)
-O использовать offset tuning (актуально только для E4000) (по умолчанию выключено)

Вместо имени файла можно указать - для вывода результата на стандартный вывод (stdout).

Результат работы программы сохраняется в CSV следующего формата:

дата, время, частота начала диапазона, частота конца диапазона, шаг частоты, количество отсчётов, значение в dBm, значение в dBm, ...

Примеры:

  • сканирование вещательного FM диапазона: rtl_power -f 88M:108M:125k fm_stations.csv. Отдельные радиостанции должны быть хорошо различимы.
  • пятиминутное сканирование по всему диапазону в невысоком качестве: rtl_power -f 100M:1G:1M -i 5m -1 survey.csv
  • собирать данные в течение часа, сжимать их на лету: rtl_power -f ... -e 1h | gzip > log.csv.gz

Использование совместно с heatmap.py[править | править код]

Результат работы heatmap.py
  1. Для работы нам нужен python и python-pil
  2. Скачиваем скрипт отсюда: https://raw.githubusercontent.com/keenerd/rtl-sdr-misc/master/heatmap/heatmap.py
  3. Запускаем скрипт, например так: python heatmap.py input_file.csv output.png

Для получения большей информации по поводу скрипта можно прочитать встроенную справку: python heatmap.py -h

rtl_eeprom[править | править код]

Утилита для просмотра/изменения серийного номера, названия свистка и прочих данных.

Запись некорректных значений может испортить свисток!

Использование: rtl_eeprom [опции]

Опции:

-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-m задать название производителя
-p задать название устройства
-s задать серийный номер
-i 0 или 1 - включить или выключить ИК-приёмник
-g записать стандартную конфигурацию
    Нужно выбрать один из вариантов:
    realtek - Realtek default (as without EEPROM)
    realtek_oem - Realtek default OEM with EEPROM
    noxon - Terratec NOXON DAB Stick
    terratec_black - Terratec T Stick Black
    terratec_plus - Terratec T Stick+ (DVB-T/DAB)
-w имя файла для записи дампа в свисток
-r имя файла для сохранения дампа со свистка на компьютер
-h показать справку

rtl_adsb[править | править код]

Утилита для приёма сигналов ADSB.

Использование: rtl_adsb [опции] [имя выходного файла]

Опции:

-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-V вывод дополнительной информации (по умолчанию выключено)
-S показывать короткие кадры (по умолчанию выключено)
-Q качество приёма (0: без проверок, 0.5: половина бита, 1: один бит (по умолчанию), 2: два бита)
-e кол-во разрешённых ошибок (по умолчанию: 5)
-g усиление в децибелах (по умолчанию: автоматическое)
-p коррекция PPM (по умолчанию: 0)

Вместо имени файла можно указать - для вывода результата на стандартный вывод (stdout).

Примеры:

  • стриминг с помощью netcat: rtl_adsb ... | netcat -lp 8080
  • стриминг с помощью socat: rtl_adsb ... | socat -u - TCP4:sdrsharp.com:47806

rtl_biast[править | править код]

Утилита для включения/выключения Bias-T - питания активной антенны. Актуально только для RTL-SDR v3. Также с помощью этой утилиты можно переключать любые GPIO порты, что актуально уже для всех свистков.

Использование: rtl_biast [опции]

Опции:

-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-b включить или выключить пин (по умолчанию: 0)
-g номер пина GPIO (по умолчанию: 0 - пин с Bias-T)

Примеры:

  • включить Bias-T: rtl_biast -d 0 -b 1
  • включить другой порт GPIO: rtl_biast -d 0 -g 1 -b 1

rtl_tcp[править | править код]

Утилита для запуска TCP сервера. К этому серверу можно подключиться из других SDR программ, например из SDR#, SDR++, GNU Radio и других.

Использование: rtl_tcp [опции]

Опции:

-a адрес (по умолчанию: 127.0.0.1)
-p порт (по умолчанию: 1234)
-f частота в герцах (по умолчанию: 100M)
-g усиление в децибелах (по умолчанию: автоматическое)
-s частота дискретизации в герцах (по умолчанию: 2048000)
-b количество буферов (по умолчанию: 32, задаётся библиотекой)
-n максимальное количество связанных буферов (по умолчанию: 500)
-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-P коррекция PPM (по умолчанию: 0)

Пример: rtl_tcp -a 192.168.0.100 - запуск сервера для клиентов из локальной сети (вместо 192.168.0.100 укажите IP сервера в локальной сети).

Для подключения в программе SDR# выберите вверху слева окна программы устройство RTL-SDR (TCP), кликните на шестерёнку и введите IP адрес. После подключения вы сможете менять частоту и усиление, как на обычном USB свистке.

Данные передаются в сыром несжатом виде, поэтому требуется достаточная скорость сети, в идеале кабель 100 мбит, но Wi-Fi типа 802.11ac тоже сойдёт. 802.11n хватает впритык и в зашумленной многоэтажке или при плохом сигнале может терять пакеты.

Требуемую скорость в байтах в секунду можно расчитать так: spd = sample_rate * 2. Для 2048000 Гц потребуется канал около 4 мб/с.

rtl_test[править | править код]

Утилита для тестирования и бенчмарка USB свистов.

Использование: rtl_test [опции]

Опции:

-s частота дискретизации (по умолчанию: 2048000)
-d номер устройства (если у вас их подключено больше одного) (по умолчанию: 0)
-t провести бенчмарк свистка на тюнере E4000
-p провести измерение PPM
-b размер блока (по умолчанию: 16 * 16384)
-S принудительно использовать синхронный выход (по умолчанию асинхронный)

Примеры:

  • просто проверить работоспособность свистка: rtl_test. Если на экране не появляются ошибки или сообщения о потерях данных, значит свисток работает корректно.
  • найти максимально возможную частоту дискретизации: rtl_test -s 3.2e6. Постепенно уменьшайте частоту, пока не пропадут сообщения о потерях данных. 2.4e6 работает на всех свистках, 2.88e6 на большинстве (в зависимости от контроллера USB в материнской плате).
  • найти доступный диапазон частот на свистке с тюнером E4000 (он отличается от свистка к свистку, также зависит от температуры): rtl_test -t

Ссылки[править | править код]

Страница на osmocom.org

Исходный код на github.com