понеділок, 7 вересня 2015 р.

Запускаем сервер широкополосного радиосканера RTL-SDR на Raspberry Pi

Недавно появилась в хозяйстве крайне интересная вещь как широкополосный радиоприемник/сканер из свистка для приема цифрового телевидения DVB-T на чипах RTL2832U и R820T2.
В этом кратком мануале я расскажу как запустить сервер rtl_tcp чтобы удаленно слушать эфир.


Несколько слов о RTL-SDR приемнике:
RTL-SDR — это целое семейство дешевых ТВ-тюнеров, способных выполнять функцию SDR-приемника. У этих игрушек разные названия и бренды, но объединяет их одно — все они построены на чипсете RTL2832. Это микросхема, содержащая два 8-битных АЦП с частотой дискретизации до 3,2 МГц (однако выше 2,8 МГц могут быть потери данных), и интерфейс USB для связи с компьютером. Эта микросхема на входе принимает I- и Q-потоки, которые должны быть получены другой микросхемой.
R820T и E4000 — это две наиболее удобные для SDR микросхемы, реализующие радиочастотную часть SDR: усилитель антенны, перестраиваемый фильтр и квадратурный демодулятор с синтезатором частоты. Разница между ними следующая: E4000 работает в диапазоне ~52–2200 МГц и имеет немного большую чувствительность на частотах менее 160 МГц. Из-за того что производитель E4000 обанкротился и микросхема снята с производства, остающиеся тюнеры покупать все труднее, и цены на них растут.
R820T работает в диапазоне 24–1766 МГц, однако диапазон перестройки внутренних фильтров сильно затрудняет работу R820T выше 1200 МГц (что делает невозможным, например, прием GPS). На данный момент тюнеры на этой микросхеме легко купить, и стоят они около 10–11 долларов.
Копипаста отсюда 

Сейчас производитель Rafael Micro уже давно выпускает новую версию чипа R820T - R820T2. В сети уже есть результаты сравнения R820T и R820T2, в которых последний чип лучше старого.







Плата свистка на чипе R820T с установленным диодом (защита от статики)
R820T2

Тут написано и тут чем лучше R820T2

И так, приступим.
  • sudo apt-get update
  • sudo apt-get install cmake build-essential python-pip libusb-1.0-0-dev libusb-1.0 python-numpy git
  • cd ~
  • git clone git://git.osmocom.org/rtl-sdr.git
  • cd rtl-sdr
  • mkdir build
  • cd build
  • cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
  • make
  • sudo make install
  • sudo ldconfig
Проверим что свисток работает
  • rtl_test 
Вывод будет примерно таким
  • pi@raspberrypi:~$ rtl_test
    Found 1 device(s):
      0:  Realtek, RTL2832U, SN: 00001302

    Using device 0: Generic RTL2832U
    Found Rafael Micro R820T tuner
    Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
    [R82XX] PLL not locked!
    Sampling at 2048000 S/s.

    Info: This tool will continuously read from the device, and report if
    samples get lost. If you observe no further output, everything is fine.

    Reading samples in async mode...
    lost at least 68 bytes
Далее, чтобы корректно работал rtl_tcp (при переподключении rtl_tcp намертво зависал или выключался) нужно установить более свежую версию libusb.
Для этого редактируем список источников
  • sudo nano /etc/apt/sources.list
Добавляем строку, сохраняем и выходим из nano
  • deb http://archive.raspbian.org/raspbian jessie main
Обновляем информацию о пакетах
  • sudo apt-get update
Устанавливаем свежую версию libusb
  • sudo apt-get install libusb-1.0
Редактируем список источников до первоначального состояния
  • sudo nano /etc/apt/sources.list
Заккоментируем добавленную строку, сохраним и перезагрузим малину.
  • #deb http://archive.raspbian.org/raspbian jessie main 
  • sudo reboot
Теперь чтобы транслировать в сеть достаточно запустить rtl_tcp и указать IP Raspberry Pi и вручную указать порт (по умолчанию это 1234)
  • rtl_tcp -a 192.168.1.129 -p 1234
Теперь в программе SDR Touch или SDR# или GQRX указываем IP и порт
  • 192.168.1.129:1234
Результат:
Теперь при переподключении к Raspberry Pi - rtl_tcp не будет сам выключаться или зависать.

Raspberry Pi Model B+ и RTL2832U+R820T2
Загрузка процессора при максимальной полосе в 2.4МГц на Raspberry Pi Model B+ и частотой процессора 700МГц (без разгона) подключено с помощью мобильного приложения SDR Touch

32 коментарі:

  1. Инструкция супер, спасибо!

    ВідповістиВидалити
  2. Запустил на Raspberry Pi 2. Работает супер. Спасибо!!!

    ВідповістиВидалити
  3. Вот бы еще инструкцию, как сделать, чтобы при подаче питания на малину rtl_tcp автоматом запускался.

    ВідповістиВидалити
  4. А не затруднит вас написать более подробно для чайников, как добавить в автозапуск?

    ВідповістиВидалити
  5. Алексей, спасибо. Присматриваюсь к этому проекту, но я- полный чайник и иду малыми шагами. А будет это работать с wheezy и на фото не видно какой монитор используете?

    ВідповістиВидалити
  6. У меня на малине wheezy. На скриншоте изображен SDR Touch (программа для ОС Android), на Linux есть неплохая программа GQRX, для Windows это SDR# (SDR Sharp)
    Тут малина выступает в качестве сервера, это для того, чтобы не тянуть радио кабель (он намного дороже обычной витой пары)

    ВідповістиВидалити
    Відповіді
    1. Пытаюсь запустить в sdr# пишет что хост неизвестен

      Видалити
    2. Пытаюсь запустить в sdr# пишет что хост неизвестен

      Видалити
  7. Спасибо. Не понял насчет радиокабеля- он же только от антенны? Или от аудиовыхода малины? Я понимаю, что по TCP- на любой комп и дальше на любую прогу по звуку, а как можно выход просто на встроенный аудио сделать для обычных наушников или колонок? Меня интересует просто приемник на базе малины. Есть сама малина, тач-скрин 3.5 дюйма Тонтек и Донгл.

    ВідповістиВидалити
    Відповіді
    1. Радиокабель - для соединения антенны и свистка. Например вы живете на 1-м этаже, дом 9 этажей. Тянуть с крыши кабель RG-58(50Ом) очень дорого, протянуть витую пару и кинуть малинку на крыше - значительно дешевле.
      Я малину в качестве приемника для прослушивания не использую. Только как сервер.

      Видалити
    2. Спасибо. Понял. Будем искать дальше. :)

      Видалити
  8. Здравствуйте, а эта программа работает только как сервер? Нельзя выводить звук напрямую с малины, видеть водопад и управлять приемником в целом?
    Может быть есть какая-то программа для этих целей, и мануал по установке для чайника!?

    ВідповістиВидалити
  9. а я ваще ничё не магу . интересно - видно , но ! молодцы . аткуда только чё берут в голову

    ВідповістиВидалити
  10. А как сделать чтобы сервер поддерживал девайс airspy usb?

    ВідповістиВидалити
  11. Спасибо хорошая инструкция!

    ВідповістиВидалити
  12. а можно ли сконфигурировать Raspberry Pi 3 с двумя свистками.
    1 используется для снятия данных ADS-B
    2 хочу использовать для SDR.
    Если да, то подскажите как правильно сконфигурировать чтобы "конфликта небыло"

    ВідповістиВидалити
    Відповіді
    1. Делается легко. Нужно читать мануал от rtl-sdr. Подсказка
      rtl_tcp -a 127.0.0.1 -p 1234 -d 1 &
      rtl_tcp -a 127.0.0.1 -p 1235 -d 0 &
      -d это девайс

      Видалити
    2. Тоже интересно. Есть ли более подробная информация? Кто-нибудь воплотил уже?

      Видалити
  13. Настроил по Вашей инструкции , sdrsharp-ом подключаюсь ни каких ошибок не выскакивает , но и сигнала нет даже шумов нету, просто ровный одноцветный водопад. В чем может быть проблема, донгл рабочий через USB работает нормально

    ВідповістиВидалити
  14. Не устанавливется libusb-1.0. Пишет, что установлена более новая версия. При подключении сеть малины виснет.
    Что можно сделать?

    ВідповістиВидалити
  15. Подскажите где взять иcходники модернизированного драйвера USB jakub 07.02.2017 for direct sampling tcp support для использования со свистком RTL SRD V3 ! ?
    При котором появляется дополнительный параметр -i direct sampling

    ВідповістиВидалити
    Відповіді
    1. https://github.com/keenerd/rtl-sdr

      У него есть ключ -D для rtl_sdr

      Видалити
  16. Здравствуйте,А если использовать hack rf one например,не получится как я понял

    ВідповістиВидалити
  17. Сколько Пользователей могут одновременно слушать сервер?

    ВідповістиВидалити
  18. Все сделано по пунктам. Внимательно и без ошибок. Ничего не работает. Статья видимо настолько устарела что можно ее удалять...

    ВідповістиВидалити
    Відповіді
    1. А как именно не работает? На RPI 2 c raspbian 8 просто собрал исходники, libusb не обновлял - все нормально работает

      Видалити
  19. да, все пашет. libusb не обязательно ставить.

    ВідповістиВидалити
  20. А может кто подсказать как подкл к RTL-SDR серверу с внешнего ip? По локалке все работает отлично, а вот с инету не могу получить доступ(((
    ip стакика, проброс портов сделан!

    ВідповістиВидалити