Автор Тема: RTL-SDR длиннопост  (Прочитано 8701 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« : 05 Декабрь 2017, 16:52:47 »
Ни для кого не секрет, что несколько лет назад сумрачный хакерский гений добрался до дешёвых китайских ТВ-тюнеров, реализованных на 8-битном АЦП от тайваньской Realtek - RTL2832U. Ребята выяснили, что чип способен давать чистые IQ пакеты, которые можно программно демодулировать, и написали соответствующие драйвера. Таким образом, обычные ТВ-тюнеры, предназначенные для приёма цифрового наземного телевидения стандарта DVB-T (Terrestrial), превратились в полноценный радиосканнер - девайс, который раньше стоил тысячи американских президентов. Драйверы из года в год совершенствовались, и на сегодняшний день полностью доведены до ума.

Говоря о внутреннем устройстве девайса, следует выделить два основных компонента - это сам АЦП RTL2832U и тюнер, который позволяет настраиваться свистку на частоты свыше 28 МГц (до 28 МГц настраивается сам АЦП). На данный момент самый широкодиапазонный и чувствительный тюнер - это чип от Rafael Micro с кодом R820T2 (от R820T отличается лучшей чувствительностью). Ранее были доступны свистки с тюнером от Elonics, однако конторка несколько лет назад обанкротилась, и малина кончилась. Существуют и другие тюнеры, но они проигрывают по частотному охвату R820, который тянет 26-1800 МГц.

Теперь несколько слов о главном виновнике торжества - АЦП RTL2832U. Данный чип, как я говорил выше, является 8-битным, из чего вытекают самые главные проблемы ртл свистков, поскольку низкая разрядность - это низкий динамический диапазон, а из этого следуют два не самых приятных эффекта перемодуляции и гармоник. Стоит, конечно, оговориться, что хороший свисток с последними драйверами из гит-репы Osmocom даже при максимально выкрученном усилении даёт не так много гармоник, это радует. Раньше дела обстояли куда хуже. Сам АЦП имеет теоретический максимум скорости семплирования в 3.2 MSPS (спектр шириной в 3.2 МГц), но на этой скорости становится нестабильным. Гарантированно работающая скорость - 2.4 MSPS (2.4 МГц), но некоторым удавалось получить 2.56 MSPS и даже 2.88 MSPS.

Одной интересной фичей данных свистков является тот факт, что охватом в 26-1800 МГц дело не ограничивается. Дело в том, что если прицепить антенну напрямую к АЦП в обход тюнера, то свисток сможет принимать КВ диапазон, если настроить в программе приёма Q-ветку. Данная модификация называется direct sampling mod. Однако припаять антенну к мелкому пину мелкого чипа - это задача весьма проблематичная, особенно для людей с моим зрением. Поэтому...

Ребята из rtl-sdr.com делают свои свистки v3 за 20 баксов (за 25 ещё и диполь в комплекте). Закономерный вопрос: ну и? кто их только не делает. А дело в том, что у этих свистков есть масса хороших отличительных от китайских вундервафель свойств:
1. Алюминиевый корпус. Во-первых, он отлично экранирует плату, поэтому без антенны будешь наблюдать чистый ровный спектр на экране (свисток в пластике даже без антенны будет принимать всё - сигналку LARS, радио Орфей, майнувиру, глас божий). Во-вторых, корпус ОЧЕНЬ прочный. Я читал, как наш коллега-радиолюбитель из Ирландии ездил своим минивэном по свистку, на котором в последствии даже вмятины не появилось. В-третьих, охлаждение. Свистки за 8 баксов теряют стабильность на высоких частотах около 1.4-1.5 ГГц из-за перегрева. Алюминиевый корпус и прокладка из термопроводящей резины проблему решает полностью.
2. Хороший термостабильный кварц (TCXO). Плавает в районе 1 ppm, не больше. У моего рабочая - 1-0.9 ppm. У китайского чуда до 100 может плавать.
3. SMA-F коннектор. Да, можно подключить нормальную антенну без переходника. Даже от баофенга. А потом отключить, поняв, что они ужасны. SMA внушает куда больше доверия, чем нанодырка MCX.
4. Программный direct sampling mod. Не надо ничего вскрывать, ничего паять. Просто прикрутил антенну, выставил Q-ветку и вуаля. Конечно, это не приём на супергетеродин, но за свою цену - прелесть.
5. Bias-T, а если по-человечески, то 4.5 В по коаксу. Можно запитать усилитель или активную антенну (GPS-антенна с Алика отлично запитывается). Паять, опять же, ничего не надо. Всё из коробки.
6. Защитные диоды от статики, ферриты на шине, чтобы не собирать шумы, нормальный согласующий фронт-энд под 50 Ом.

Я пользуюсь этим свистком уже больше года, работает отменно. Вот аспекты использования, которые я приметил для себя:
1. Никогда не втыкай напрямую в порт. Комп - штука шумная от камня до куллера, поэтому нужно держать приёмник на расстоянии. Решается это простым удлиняющим USB папа-мама метра на 4 с двумя ферритами на обоих концах. Свисток советую отдалять от любых фонящих девайсов (импульсные БП, компы и прочее) по возможности, особенно при использовании direct sampling.
2. Не использовать AGC (АРУ). Всегда настраивай усиление ручками под интересующую частоту. Видишь гармонику - уменьши гейн/поставь фильтр. Фильтр вещательного диапазона FM крайне рекомендуется, за городом нормально и без него.
3. При прослушивании цифры (DMR, P25) всегда калибруй ppm свистка. Аналог в любом случае услышишь без особой разницы, а вот слабый сигнал цифры без калибровки точной может идти с жуткими косяками. Точную ppm можно узнать с помощью утилиты kal, она есть на гитхабе. Использует downlink каналы GSM.
4. Если собираешься использовать свисток с одноплатными компами типа Raspberry Pi, никогда не ставь дрова из репозитория. Они древние и скомпилированы бог знает как. Клонируй репу Osmocom и компиляй с флагами оптимизации под интересующий процессор. Работать будет сказочно (rtl_fm при скане частот нагружает камень третьей малины на 1-2%). Да даже на Intel компиляй сам, хуже не будет.
5. Используй только узкодиапазонные антенны. Не ленись точно подстраивать длину элемента(ов). Иначе можно услышать Европу Плюс на 70 см. Лучший усилок и преселектор - это антенна.
6. Если следовать радио-феншую, то можно умудриться принять всё от авиамаяка в СВ диапазоне до сигнала Outernet на L-band. Ибо с этим свистком твоим геморроем будет только антенна.

Конечно, на ртл свистках огромный мир SDR не заканчивается, но можно с абсолютной уверенностью сказать, что начинается именно с них. Для желающих проапгрейдиться до девайса посерьёзнее, рекомендую Airspy R2, выполненный на том же тюнере, что и v3, но с 12-битным АЦП и 10 МГц спектром. Спектр чище, динамический диапазон гораздо выше. Но это совершенно другая история и ценовая политика.

Если появились или появятся в дальнейшем вопросы касательно этого чуда радиоприёма (никакого сарказма), то их смело можно задать мне.
« Последнее редактирование: 05 Декабрь 2017, 17:27:11 от Профессор »
Лучший усилок - это антенна.

Оффлайн Санта

  • Денис
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 9124
  • Пол: Мужской
  • R9CAV, 9D-10267
    • Добро пожаловать на мой канал.
RTL-SDR длиннопост
« Ответ #1 : 07 Декабрь 2017, 21:05:10 »
4. Если собираешься использовать свисток с одноплатными компами типа Raspberry Pi, никогда не ставь дрова из репозитория. Они древние и скомпилированы бог знает как. Клонируй репу Osmocom и компиляй с флагами оптимизации под интересующий процессор. Работать будет сказочно (rtl_fm при скане частот нагружает камень третьей малины на 1-2%). Да даже на Intel компиляй сам, хуже не будет.
Хм, как интересно, а то опыт окружающих показывает, что SDR на слабых компьютерах совсем плохо работает, а тут типа только в драйверах дело.
Что скажет Кандидат на такое?
"Говори правду и тогда не придется ничего запоминать." Марк Твен.
https://www.youtube.com/user/dvsdenis?sub_confirmation=1

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« Ответ #2 : 08 Декабрь 2017, 04:14:02 »
Хм, как интересно, а то опыт окружающих показывает, что SDR на слабых компьютерах совсем плохо работает, а тут типа только в драйверах дело.
Что скажет Кандидат на такое?
И в драйверах, и в разрешении FFT на водопаде, и лёгкий разгончик на 100 МГц. Малина оверклокнута до 1.3 ГГц, немного разогнана ОЗУ (не влияет, по большому счёту). Она тянет 2.4 MSPS и 8к FFT без проблем. Не так шустро, как i5, конечно, но юзабилити отличное. Скажу больше - 2.5 MSPS Airspy тоже тянет. Не надо просто gqrx из репы raspbian ставить, там никакой оптимизации. Надо скачать бинарный архив, туда в lib засунуть нормально скомпилянные дрова, а перед запуском прогнать volk_profile (пакет волка в репе есть, собирать самому - адская боль).
Лучший усилок - это антенна.

Оффлайн Санта

  • Денис
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 9124
  • Пол: Мужской
  • R9CAV, 9D-10267
    • Добро пожаловать на мой канал.
RTL-SDR длиннопост
« Ответ #3 : 08 Декабрь 2017, 06:01:55 »
И в драйверах, и в разрешении FFT на водопаде, и лёгкий разгончик на 100 МГц. Малина оверклокнута до 1.3 ГГц, немного разогнана ОЗУ (не влияет, по большому счёту). Она тянет 2.4 MSPS и 8к FFT без проблем. Не так шустро, как i5, конечно, но юзабилити отличное. Скажу больше - 2.5 MSPS Airspy тоже тянет. Не надо просто gqrx из репы raspbian ставить, там никакой оптимизации. Надо скачать бинарный архив, туда в lib засунуть нормально скомпилянные дрова, а перед запуском прогнать volk_profile (пакет волка в репе есть, собирать самому - адская боль).
Повторюсь фразой выше
Что скажет Кандидат на такое?
"Говори правду и тогда не придется ничего запоминать." Марк Твен.
https://www.youtube.com/user/dvsdenis?sub_confirmation=1

Оффлайн Серый

  • Сергей
  • Старожил
  • ****
  • Сообщений: 626
  • Пол: Мужской
    • RA9CKC
RTL-SDR длиннопост
« Ответ #4 : 08 Декабрь 2017, 06:34:10 »
Не надо просто gqrx из репы raspbian ставить, там никакой оптимизации. Надо скачать бинарный архив, туда в lib засунуть нормально скомпилянные дрова, а перед запуском прогнать volk_profile (пакет волка в репе есть, собирать самому - адская боль).
Тогда уж образ свой выкладывайте, чтоб чайникам в линуксе не мучаться. Подключаетесь как? HDMI или VNC?
D-Star

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« Ответ #5 : 08 Декабрь 2017, 06:42:12 »
Тогда уж образ свой выкладывайте, чтоб чайникам в линуксе не мучаться. Подключаетесь как? HDMI или VNC?
Ну, бинарный архив gqrx со свежими оптимизированными дровами сделать можно. Мне кажется, вместо залива образа, лучше написать пошаговый мануал, который сведётся к копипасту указанных команд (либо скрипт написать вообще, но нужна борьба с ленью). У меня подключение к телеку через HDMI.

З.Ы. Малина только 3, с остальными можно даже не пробовать. Там железо совсем унылое.
Лучший усилок - это антенна.

Оффлайн Серый

  • Сергей
  • Старожил
  • ****
  • Сообщений: 626
  • Пол: Мужской
    • RA9CKC
RTL-SDR длиннопост
« Ответ #6 : 08 Декабрь 2017, 07:55:35 »
Ну тогда ждем мануал. Пойду пока кабель HDMI искать) Хотя VNC привычнее и удобнее.
D-Star

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« Ответ #7 : 08 Декабрь 2017, 08:12:10 »
Ну тогда ждем мануал. Пойду пока кабель HDMI искать) Хотя VNC привычнее и удобнее.
А я пойду искать свободную microSD, чтобы каждый шаг проработать)
Лучший усилок - это антенна.

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« Ответ #8 : 09 Декабрь 2017, 05:50:37 »
Итак, перед нами стоит задача: мониторить спектр и слушать хэмов и всякий айяйяй (в цифре и в аналоге) на Raspberry Pi 3.

Всё необходимое приведено ниже, а ещё ниже объясню зачем. Что нам потребуется (с ссылками):
1. Raspberry Pi 3 (http://s.aliexpress.com/Zv2I3MvA)
2. MicroSD (http://s.aliexpress.com/EFv6jYbM) - рекомендую SanDisk на 64 Гб, поскольку у неё самая высокая скорость чтения и записи из всех мною испытанных. Toshiba Exceria на 128 Гб уделывает в пух и прах.
3. БП micro USB на 5 В и 2.5 А (http://s.aliexpress.com/uquiY322) - пишут, что лучше на 3 А, но я с этим БП никаких проблем не испытывал.
4. Хитсинки (http://s.aliexpress.com/BrUBZnui)
5. Акриловый кейс с куллером (http://s.aliexpress.com/iENNRB7f)
6. Кабель USB папа-мама - я использую Belkin на 3 метра. Чем толще кабель и чем больше феррит, тем лучше.
7. Ферриты (http://s.aliexpress.com/eM7NZJ3i)
8. SMA barrel-коннекторы (http://s.aliexpress.com/au6b6jqm) - взял себе горсть, лишним не будет.
9. RTL-свисток, антенны и FM-фильтр (https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/)

Про мышку, клаву и монитор/телевизор и так всё очевидно. Ещё нам, конечно, потребуется подключение по WiFi. Если такого нет, то можно подключить Ethernet, RJ-45 в малинке есть.

Данный перечень вызовет (по крайней мере, должен) несколько вопросов в духе "Зачем мне этот FM-фильтр? А ферриты? А можно от айфона БПшку взять? Зачем мне столько SMA коннекторов? Тем более, кейс?".

Кейс с куллером и хитсинки нам нужны, поскольку gqrx нагружает камень на 85-90%, поэтому он начинается грется, как маленькое Солнце. Активное охлаждение нужно, во-первых, чтобы продлить жизнь процессора, а во-вторых, чтобы внутренний драйвер в чипсете не ронял частоту при перегреве. При такой конфигурации процессор нагревается не выше 60 градусов. К тому же мы намерены немного разогнать камушек, поэтому охлаждение позволит сохранить стабильность системы при разгоне.

Если есть под рукой свободный БП на 5 В/2.5 А и выше, то его, разумеется, можно использовать. Но у меня не нашёлся БП ни от одного девайса, который бы заряжался при 2.5 А. От айфоновского зарядника, я полагаю, малинка вообще не дёрнется - там 0.15 А.

Ферриты помогут уменьшить шумы с шины USB, ведь запитывать малину мы будем от сети, а она очень шумная. То же касается и удлиняющего кабеля - нужно держать свисток как можно дальше от малины, чтобы уменьшить шумы. Не советую брать кабель больше 4 метров без внешнего питания, поскольку там будут большие потери тока, от чего свисток либо будет отваливаться, либо не запустится вовсе.

Кучка SMA коннекторов может пригодится, так как их можно очень легко где-нибудь потерять. Я их использую для подключения МШУ, апконвертера, FM-фильтра (у него один коннектор в комплекте идёт).

Кстати о FM-фильтре. Конечно, он не обязателен, но в условиях города очень велика вероятность перегруза приёмника от слишком сильных сигналов вещательных станций. Поэтому для избежания фрустрации я очень рекомендую приобрести один.

Касательно MicroSD можно использовать совершенно любую, подвернувшуюся под руки. Но я настоятельно (подчёркиваю) рекомендую использовать карточку, как минимум, 10 класса. Иначе всё будет адски висеть во время чтения/записи. Я использую малину как основной комп, поэтому в ней стоит карта на 64 Гб. Для наших целей с излишком хватит и на 16.

Насчёт антенны - кому какая нравится. Диполь от rtl-sdr мне очень пришёлся по душе, висит на присоске на окне. Закреплён он там постоянно, основание немного подржавело, но эта антенна стоит 10 баксов, поэтому с ней можно не сюсюкаться. Можно промазать силиконовым герметиком, в принципе. Сами телескопы из нержавейки, боятся только грязи в складном механизме, что спокойно фиксится заливом WD-40.

Допустим, что малина лежит перед нами с приклеенными хитсинками, в собранном кейсе, остальное барахло лежит на столе, а в руках мы крутим microSD с вопросом: и чё теперь?

А теперь нам надо залить дистрибутив. Будем использовать официальный дистрибутив Raspbian Stretch, основанный на Debian, поэтому работавшим с Debian или Ubuntu товарищам будет всё до боли знакомо. Добываем образ здесь https://downloads.raspberrypi.org/raspbian_latest. Для хардкорщиков советую собирать графическую оболочку самим из Lite образа, который живёт здесь https://downloads.raspberrypi.org/raspbian_lite_latest.

Дальнейшее действие зависит от ОС, которую мы используем. На линуксе всё решается командой dd, а вот в случае с виндой нужно скачать утилиту Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/files/latest/download), которая прожжёт образ на карту памяти. Утилита очень проста в обращении: вставляем карту в кардридер, запускаем программу, в списке Device выбираем карту, в Image File - образ дистрибутива и нажимаем Write. Ждём окончания записи.

Но не стоит пока торопиться вытаскивать microSD, нам ещё нужно подкорректировать конфигурационный файл, чтобы разогнать процессор, ОЗУ, включить звук по HDMI и настроить разрешение экрана (будем считать, что у нас телек, поддерживающий 1366x768 и звук, для других конфигураций значения hdmi_mode отличаются). Ниже приведён мой конфиг (ПАРАМЕТРЫ РАЗГОНА MICROSD ТОЛЬКО ДЛЯ КАРТ ТИПА UHS-1, НЕ УГРОБЬ СВОЮ КАРТУ - ПОСМОТРИ ЕЁ ТИП!!!), а найти его можно в разделе boot карты памяти, файл config.txt.

dtparam=audio=on - включаем звук
force_turbo=1 - отключаем драйвер регулировки частоты процессора, она всегда максимальна с этим параметром
arm_freq=1300 - частота процессора в МГц (1200 по умолчанию)
gpu_freq=400 - частота графического ускорителя в МГц
core_freq=500 - частота ядра в МГц
sdram_freq=500 - частота контроллера microSD в МГц (разгоняем сдшку)
sdram_over_voltage=2 - параметр, дающий слегка больше напряжения на контроллер microSD, чтобы обеспечить разгон
over_voltage=2 - параметр, дающий больше напряжения на чипсет
sdram_schmoo=0x02000020 - никто не знает что это, но помогает при разгоне контроллера карты
gpu_mem=64 - память, выделяемая для графического ускорителя из целого объёма ОЗУ, в МБ
max_usb_current=1 - параметр даёт максимально возможный ток по шине USB, нам это нужно, чтобы свисток по кабелю не отпадал
hdmi_drive=2 - телек/монитор со звуком - 2, обычный монитор - 1
hdmi_group=2 - одна из двух групп для выбора разрешения экрана
hdmi_mode=39 - 1366x768, другие приведены тут https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
audio_pwm_mode=2 - активирует альтернативный PWM драйвер, чтобы малина не шипела в простое при подключении наушников/колонок через jack
dtparam=sd_overclock=100 - ещё один параметр разгона контроллера microSD

В общем и целом мы готовы к самой интересной части - шаманству со свистком. Втыкаем сд в малину, малину в сеть, смотрим на заставку бута (потом её можно отключить, мешает диагностике), вылезает окно логина. Юзернейм pi, пароль raspberry. Логинимся.

А вот теперь господам форточникам придётся примириться с главным отличием линукса - здесь абсолютно всё делается через терминал (консоль) командами. Когда я начинал знакомство с линуксом (на малине, кстати говоря), у меня частенько пригорало от того, что я не знаю команду для нужного мне действия. Однако прошло с тех пор 4 года, и у меня сейчас нет ни одной машины дома, которая бы работала на винде, ибо самая большая сложность линукса - это его самый большой плюс. Мы убедимся потом в этом, когда будем писать небольшой скрипт (очень небольшой), который будет мониторить транк на частотах айяйяй.

На этой интригующей ноте завершаю первую часть большого малинового опуса, где мы собрали всё в кучу и настроили. Перед нами рабочий стол LXDE, и в следующей части мы готовы к компиляции драйверов с флагами оптимизации, сборке в кучу и настройке gqrx, блэклисту dvb драйверов и введение в работу программы rtl_fm, с помощью которой мы будем делать всякую интересную хренотень.
Лучший усилок - это антенна.

Оффлайн Профессор

  • Новичок
  • *
  • Сообщений: 34
  • Пол: Мужской
    • UB8CJI
RTL-SDR длиннопост
« Ответ #9 : 12 Декабрь 2017, 10:28:36 »
Продолжаем программу телепередач. Перед нами монитор с рабочим столом малины и всё остальное из предыдущей части. Расправив пальцы на руках (и на ногах), принимаемся за дело.

Сперва нужно найти терминал. Тыкаем на малинку в левом нижнем углу на панели, в меню находим System Tools (системные утилиты) и открываем LXTerminal. Терминал - мощнейшая штука в мире униксовых ОС, но при условии, что администратор знает команды. Это сакральное знание приходит с опытом и временем, ничего в этом сложного нет. Некоторые из них мы сейчас задействуем и разберём - они пригодятся в дальнейшем для работы с малиной.

Чтобы заранее предупредить вопрос - команда sudo перед любой другой командой позволяет исполнить её с правами суперпользователя (администратора). Про распределение прав в системе линукс очень рекомендую почитать отдельно, ибо это важный аспект безопасного пользования системой. Многим известно, что на линуксе не бывает вирусов. Распределение прав - причина их отсутствия. (Справедливости ради стоит сказать, что руткиты существуют - это вредоносные скрипты, которые дают кулхацкерам права суперпользователя, но внимательный администратор всегда проверяет скрипты перед тем, как их запустить).

Прежде всего нужно выучить работу утилиты apt-get - это front-end (интерфейс) для работы с менеджером пакетов dpkg. Ключевое отличие большинства дистрибутивов линукс в том, что огромное множество программ можно установить из репозитория - особого места, где хранятся уже собранные исполняемые файлы. Однако сервер репозитория, прописанный по умолчанию в Raspbian, находится не в России, поэтому скорость загрузки с него оставляет желать лучшего. Мы это исправим прописыванием адреса репозитория яндекса. А для этого нам нужна ещё одна очень полезная в быту программа - текстовый редактор nano.

Вводим в терминале sudo nano /etc/apt/sources.list. sudo даёт право редактору nano редактировать файл по адресу /etc/apt/sources.list, в котором и лежит адрес репозитория. После запуска текстового редактора удаляем всё содержимое файла, а затем копируем (или пишем ручками) туда адрес местного репозитория deb http://mirror.yandex.ru/mirrors/raspbian/raspbian/ stretch main contrib non-free rpi firmware. После адреса указаны: название версии нашего дистрибутива (stretch) и ветки репозитория, к которым будет обращаться apt-get для поиска нужных пакетов (main, contrib, non-free, rpi, firmware). Про данные ветки тоже полезно почитать интересующимся. Чтобы выйти и сохранить изменённое содержимое файла, нужно нажать одновременно Ctrl + X. Затем подтвердить своё намерение сохранить изменения нажатием Y.

Итак, адрес репки мы поменяли, теперь время обновить список пакетов и саму систему. Делать я это рекомендую хотя бы раз в неделю.

sudo apt-get update - данная команда обновляет список пакетов, запросив его с репозитория
sudo apt-get dist-upgrade - команда даёт указание apt-get полностью обновить дистрибутив путём установки новых пакетов, удаления старых и обновления имеющихся. Далее будет выведен список обновляемых пакетов, их размер. Данную процедуру требуется подтвердить нажатием Y. Чем больше пакетов будет обновляться, тем дольше займёт этот процесс (что весьма логично).

Также у apt-get есть масса других фич типа autoclean, autoremove и т.п. Настоятельно рекомендую изучить работу программы, чтобы потом не загадить систему лишним хламом.

Сейчас нам необходимо завести стандартные драйвера (модули) dvb для свистка RTL в чёрный список, чтобы система могла использовать кастомные драйвера, которые мы соберём позже. Для этого нам потребуется уже знакомый текстовый редактор nano. Мы создадим файл, в котором укажем какие модули ядру системы не загружать.

sudo nano /etc/modprobe.d/rtlsdr.conf

Теперь туда копируем список:
blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist rtl2832
blacklist dvb_usb_v2
blacklist dvb_core


Сохраняем, закрываем (Crtl + X, Y). Теперь стандартные дрова-дровишки мешать нам не будут. Перезагрузим систему, как взрослые, из терминала:

sudo reboot

Ждём, логинимся, открываем терминал, продолжаем.

Сейчас нам нужно установить утилиту git, которая позволяет проводить манипуляции с гитовыми репозиториями. Самый известный из них - это GitHub, на котором разработчики выкладывают открытые исходные коды для своих творений, чтобы совместными усилиями разрабатывать ПО. Разрабатывать мы, конечно, ничего, кроме навыков владения линуксом, не будем, но нам она потребуется, чтобы удобным образом получить необходимые нам исходники.

sudo apt-get install git, подтверждаем Y.

Теперь мы подтянем сразу три репозитория, чтобы не возвращаться к этому дважды. Первый - сами кастомные драйвера для RTL-SDR, второй - цифровой декодер dsd, с помощью которого мы будем слушать DMR, Apco P25 и другие цифровые виды передач, третий - библиотека mbelib, которая является ядром декодера dsd.

git clone https://github.com/osmocom/rtl-sdr
git clone https://github.com/szechyjs/dsd
git clone https://github.com/szechyjs/mbelib


Самое время установить всё необходимое для компиляции - компиляторы, утилиту make и т.п.

sudo apt-get install gcc g++ make cmake

А теперь начинается чёрная (для новичков) магия сборки софта из исходников. Но потом становится понятно, что чёрная она лишь из-за цвета окна терминала.

Драйвера RTL-SDR полагаются на библиотеку libusb, dev-пакет которой нам нужно установить.

sudo apt-get install libusb-1.0.0-dev

cd rtl-sdr - заходим в папку rtl-sdr, которую мы подтянули из GitHub (забыл сказать, что всё нами подтянутое находится в домашней папке нашего пользователя pi)
mkdir build - создаём папку build, в которой будет, кхм, наш билд
cd build - заходим туда
cmake .. -DINSTALL_UDEV_RULES=ON - команда строит Makefile, который нужен компилятору для сборки наших драйверов, а -DINSTALL_UDEV_RULES установит права доступа к свистку рядовому пользователю (т.е. без sudo)
CXXFLAGS='-march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -mlittle-endian -munaligned-access -ftree-vectorize -O3 -pipe' CFLAGS='-march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -mlittle-endian -munaligned-access -ftree-vectorize -O3 -pipe' make -j4

На последней огромной команде остановимся подробнее. CXXFLAGS и CFLAGS - так называемые переменные окружения, в них указаны флаги для компилятора, которые говорят ему какие оптимизации использовать и под какой конкретно процессор собирать наши драйвера. Дело в том, что без указания данных флагов компилятор будет руководствоваться стандартными флагами, которые обеспечивают совместимость полученных после компиляции исполняемых файлов с первой версией малины. Следовательно, они получаются совершенно не оптимизированными под ARM Cortex A53, установленный в Raspberry Pi 3. Таким образом мы сможем выжать из нашего камушка всё. Сама команда make, опираясь на собранный предыдущей командой Makefile, запускает компилятор и линковщик. Аргумент -j и параметр 4 говорит компилятору, чтобы он работал в 4 потока, что существенно ускоряет скорость компиляции. Потому что в нашем процессоре 4 ядра.

sudo make install - команда устанавливает скомпилированные драйвера

Ну, собственно, с драйверами мы покончили. Теперь можно воткнуть свисток в малину и запустить команду rtl_test. Если после строки Reading samples in async mode... ничего больше не выводится, то мы молодцы. Всё работает так, как и должно работать. Кстати, чтобы выйти из этой (и любой другой консольной) программы, нужно нажать Ctrl + C.

А сейчас установим gqrx - программу, с помощью которой мы сможем мониторить спектр, слушать аналоговые передачи во всех видах модуляции (AM, FM, SSB), а также пайпить (направлять) демодулированный цифровой сигнал на декодер dsd, чтобы слушать цифровые передачи.

wget https://github.com/csete/gqrx/releases/download/v2.6/gqrx-2.6-rpi3-3.tar.xz - качаем бинарный пакет gqrx (если ругается на отсутствие wget, то устанавливаем sudo apt-get install wget)
tar -xvf gqrx-2.6-rpi3-3.tar.xz - распаковываем архив
mv gqrx-2.6-rpi3-3 gqrx - переименуем папку gqrx в более удобоваримый вид
cd gqrx - заходим в папку
./setup_gqrx.sh - запускаем скрипт настройки gqrx (помнишь про то, что аккуратный администратор сперва проверяет скачанные из интернетов скрипты, а?))
sudo apt-get install libvolk1-bin - устанавливаем VOLK (оптимизация уравнений Фурье)
volk_profile - запускаем настройку профиля VOLK, идём на перекур, ибо процесс этот не самый быстрый
cd - уходим из папки
cp ./rtl-sdr/build/src/rtl* ./gqrx/bin - копируем наши оптимизированные драйвера в папку gqrx (он будет использовать эти драйвера теперь)
cp ./rtl-sdr/build/src/lib* ./gqrx/lib - делаем ту же операцию с библиотеками
cd gqrx - идём обратно в папку
./run_gqrx.sh - запускаем плоды наших трудов

В списке Device выбираем наш свисток (его название можно узнать утилитой rtl_info). В Input rate выставляем 2400000. Нажимаем ОК.

Открывается основное окно gqrx. Сейчас нам нужно настроить несколько параметров. Справа в центре есть три вкладки. Сперва тыкаем на FFT Settings. В списке FFT Size выставляем 8192, Rate - 60 fps. Затем открываем вкладку Input controls. Там ставим галочку на DC remove (убирает пик посередине). Убираем галочку с Hardware AGC. Выставляем LNA gain (усиление) на максимум - 49.6 dB. Потом по мере использования можно будет настроить подходящий коэффициент усиления, но у меня работает без проблем на максимальном. В Freq. correction в ppm указывается частотный дрейф кварца в свистке. У хороших свистков стоит TCXO, поэтому дрейфа у них нет.

Всё! Теперь мы готовы мониторить эфир. Нажимаем на кнопку Play в верхнем левом углу под вкладкой File и наслаждаемся.

В третьей части мы будем собирать dsd декодер и писать скрипт, мониторящий транк айяйяй. А пока 73!
Лучший усилок - это антенна.