Заводим USRP B200-mini-i под macOS на M1 - (не)Уникальный опыт

Заводим USRP B200-mini-i под macOS на M1


Я уже какое-то время изучаю SDR, и вот наконец-то мне приехала более серьезная игрушка чем RTL-SDR, с которой я упражнялся ранее.

/img/usrp-b200-mini-i-macos-m1/device.jpg

Строго говоря, это не оригинальная B200-mini-i от Ettus Research, а ее китайский клон. Но так распорядилась судьба 🤗 По основным компонентам она сопоставима, поэтому жить можно.

Каких-то особых трудностей в том, чтобы заставить ее работать у меня не возникло, но для ее правильной работы все равно требуется пройти некоторый базовый сценарий. Его я и собираюсь описать.

Базовая проверка работоспособности

Китай, как известно, нам друг (хе-хе…), но бывает по-разному и проверить, что железяка вообще живая нужно в любом случае. Иначе можно потратить очень много времени на поиск проблем, которых не существует. После подключения устройства по USB, нужно убедиться, что оно обнаружилось в системе, а следовательно работает. Покажу на примере macOS Ventura, там немного изменили интерфейс.

 -> About This Mac -> More Info..., скролим вниз и жмем System Report.... Если UHD драйвер не установлен, то в разделе Hardware -> USB, устройство будет отображаться как WestBridge

/img/usrp-b200-mini-i-macos-m1/sysreport.png

Это значит все работает и можно двигаться дальше.

Установка USRP Hardware Driver (UHD) и прошивки

Несмотря на то, что в оффдоках есть информация только про установку через MacPorts, драйвер вполне себе ставится через homebrew:

brew install uhd

Нюанс тут в том, что в MacPorts обещают более свежую версию, потому что именно туда авторы драйвера заливают релизы. Но самая свежая не всегда самая лучшая, поэтому ставим через homebrew и двигаемся дальше.

После успешной установки драйвера в системе должен появится каталог /opt/homebrew/Cellar/uhd/ внутри которого будет папка с текущей установленной версией. Из этой папки нужно запустить скрипт, который скачает файлы прошивок:

# версия может отличаться!
python /opt/homebrew/Cellar/uhd/4.4.0.0/lib/uhd/utils/uhd_images_downloader.py
/img/usrp-b200-mini-i-macos-m1/download-firmware.png

⚠️ При запуске скрипта можно поймать ошибку [ERROR] Missing module 'requests'! Please install it, e.g., by running 'pip install requests' or any other tool that can install Python modules. если в интерпретаторе от которого запускается скрипт не установлена библиотека requests. Поэтому лучше поставить ее заранее.

После успешного скачивания прошивок - настраиваем переменную окружения UHD_IMAGES_DIR. Она понадобится для корректной работы различного софта, например gqrx.

# лучше сразу добавить ее в .zshrc
export UHD_IMAGES_DIR=/opt/homebrew/Cellar/uhd/4.4.0.0/share/uhd/images 

И запускаем поиск подключенной SDR командой uhd_find_devices

/img/usrp-b200-mini-i-macos-m1/find-devices.png

💬 После установки UHD, в системе появляется много разных полезных утилит. uhd_find_devices лишь одна из них. Найти их можно в каталогах:

  • /opt/homebrew/bin (ls -la uhd_*)
  • /opt/homebrew/Cellar/uhd/4.4.0.0/lib/uhd/utils
  • /opt/homebrew/Cellar/uhd/4.4.0.0/lib/uhd/examples

Первые тесты

Теперь нужно проверить, что SDR не просто включается и жужжит, но и делает что-то полезное. Начнем с получения базовой информации об устройстве. Для этого нужно выполнить команду uhd_usrp_probe

/img/usrp-b200-mini-i-macos-m1/device-info.png

Если вывод такой, как на скриншоте, то все хорошо. Теперь можно запустить бенчмарк, но не забудьте накрутить антенны чтобы ничего случайно не загорелось ;)

cd /opt/homebrew/Cellar/uhd/4.4.0.0/lib/uhd/examples
./benchmark_rate --args type=b200 --rx_rate 1e6 --tx_rate 1e6 --channels 0
/img/usrp-b200-mini-i-macos-m1/benchmark.png

Отлично! Убедившись, что черный фургон радиочастотного центра уехал из под ваших окон, можно выдохнуть и запустить красивую визуализацию спектра:

cd /opt/homebrew/Cellar/uhd/4.4.0.0/lib/uhd/examples
./rx_ascii_art_dft --rate 15e6 --freq 100e6 --gain 50 --ref-lvl -30
/img/usrp-b200-mini-i-macos-m1/rx-ascii.png

На этом установку и настройку можно считать оконченной. 📡


Смотрите также

comments powered by Disqus