Как выбирать режим Direct Sampling в клиентских программах, если в меню управления rtl_tcp нет соответствующих пунктов?
В стандартном драйвере rtl_tcp нет ключей которые позволяли бы включить этот режим.
Предлагаем собрать новый драйвер. Для начала удалим старый.
cd rtl-sdr/
cd build/
sudo make uninstall
sudo ldconfig
sudo reboot 0
После перезагрузки надо удалить папку «rtl-sdr»:
rm -rf rtl-sdr/
Теперь установка обновленного SUWS драйвера:
git clone https://github.com/SUWS/librtlsdr.git
cd librtlsdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
sudo make install
sudo ldconfig
И теперь, в выводе возможных ключей запуска rtl_tcp можно увидеть искомый — «enable direct sampling».
Запуск сервера в режиме Direct Sampling производится командой
sudo rtl_tcp -a 192.168.3.106 -p 3476 -q 2
Где параметр «-q 2» выбирает пин Q, задействованный в приемнике rtl-sdr.com v3. Для других вариаций исполнения режима Direct Sampling в других версиях приемника RTL SDR может потребоваться выбор пина I, т.е. «-q 1».
Для запуска обычного режима по-прежнему используется команда
sudo rtl_tcp -a 192.168.3.106 -p 3476
В некоем выводе служебной информации после запуска сервера можно видеть строку «Enabled direct sampling mode, input 2», что говорит о работающем режиме Direct Sampling.
Автозапуск rtl_tcp
В некоторых образах ОС для одноплатных ПК при старте системы сетевой интерфейс запускается с некоторым запозданием относительно программ в автозагрузке, и отсутствие IP-адреса на сетевом интерфейсе для программ заканчивается невозможностью их старта. Поэтому запускать программы лучше с задержкой. 10-30 секунд вроде бы хватает.
Надо создать файл с именем start_rtl.sh в папке /home/orangepi , например.
Применительно к рассматриваемому образу ОС папка по пути /home/orangepi уже существует и чтобы в нее перейти нужно дать команду cd ~ или cd /home/orangepi , а далее:
sudo touch start_rtl.sh — создать файл с именем start_rtl.sh
sudo nano start_rtl.sh — открыть его на редактирование в редакторе nano
В теле файла написать такой скрипт, подставив локальный IP-адрес одноплатного ПК :
#!/bin/sh
sleep 10
/usr/local/bin/rtl_tcp -a 192.168.3.118 -p 3476
В принципе, вместо /usr/local/bin/rtl_tcp можно писать просто rtl_tcp, т.е. rtl_tcp -a 192.168.3.118 -p 3476
CTRL+O и нажать Enter
CTRL+X
sudo chmod +x start_rtl.sh — дать файлу права на исполнение
Ради проверки можно запустить этот скрипт командой sudo ./start_rtl.sh и убедится, что через 10 секунд rtl_tcp запускается.
sudo nano /etc/rc.local — открыть на редактирование файл /etc/rc.local
И дописать следующую строчку до строки exit 0:
sudo /home/orangepi/start_rtl.sh
CTRL+O и нажать Enter
CTRL+X
Ради проверки (проверки правильности написания пути) можно дать команду sudo /home/orangepi/start_rtl.sh и убедится, что через 10 секунд rtl_tcp запускается.
Получилась такая схема — в файле rc.local указываем какой файл скрипта запускать при старте системы (start_rtl.sh), а в файле start_rtl.sh указываем какую программу запускать с задержкой в 10 секунд (rtl_tcp).
sudo reboot 0
После перезапуска сервера, ждем 10 секунд, запускаем на нем htop и убеждаемся, что процесс rtl_tcp запущен.
Теперь можно клиентскими программами (SDR Sharp, SDR Console, SDR Touch(Ведроид), еще какие-то) подключаться к серверу.