При попытке использовать мой USRP в GNU Radio я получаю сообщение об ошибке "Устройства не найдены для ----->".

При попытке выполнить программу GNU Radio, которая использует USRP, я получаю обратную трассировку ошибки, которая (в Python) обычно заканчивается на:

    self.u = uhd.usrp_source(device_addr=args, stream_args=uhd.stream_args('fc32'))
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/__init__.py", line 122, in constructor_interceptor
    return old_constructor(*args)
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/uhd_swig.py", line 2351, in make
    return _uhd_swig.usrp_source_make(*args)
RuntimeError: LookupError: KeyError: No devices found for ----->

USRP работает.

2 ответа

Решение

Вы всегда должны сначала тестировать необработанную UHD-функциональность с помощью uhd_find_devices Инструмент первый:

uhd_find_devices

Если оно не находит ваше устройство, хотя оно загружено, то, по моему опыту, у вас есть высокая вероятность просто не иметь возможности общаться с устройством:

  • Если вы не используете UHD-версию из собственных репозиториев Ettus, особенно в не совсем новом Ubuntus, ваш UHD может просто быть старше устройства и не может с ним общаться. Первая строка вывода uhd_find_devices будет содержать информацию о версии. На момент написания статьи (октябрь 2014 г.) 3.9 является последней версией. Если возможно, всегда используйте последнюю версию.
    • B200 / B210 требуется как минимум 3.6.0, но функциональность значительно улучшилась с 3.8.4
    • X300 / X310 требуется минимум 3.7.0
    • B200mini нужно 3,9
    • USRP1 / 2 / B100 / N200 / N210 должны поддерживаться напрямую, но самые старые выпуски вы найдете в дикой природе. Не так много для всех дочерних плат, которые вы можете использовать с ними - как уже упоминалось, попробуйте использовать последнюю версию.
  • Если вы используете USB- устройство (USRP B200, B210, B200mini, B100, USRP1), есть вероятность, что вы либо
    • в Linux: не нужно устанавливать правила udev, необходимые для того, чтобы "обычные" пользователи могли общаться с USRP; проверить, /etc/udev/rules.d/ содержит что-то вроде uhd-usrp.rules,
    • в Windows: возможно, у вас не установлены драйверы USB для Windows.
    • если вы создали UHD самостоятельно (также, если вы установили GNU Radio через build-gnuradio.sh или же pybombs), возможно, отсутствовали библиотеки USB. Убедитесь, что ваши журналы UHD cmake содержат "Включение USB".
    • USB3: некоторые хост-контроллеры USB3 не соответствуют стандартам и не могут быть подключены. Если ваш USRP обнаружен, когда он подключен к порту USB2 (обычно любой, кто не синий), у вас все будет в порядке.
  • Если вы используете сетевое устройство (USRP X300/X310 с 1 Гбит /10 Гбит Ethernet, USRP N200/N210, USRP2)
    • убедитесь, что ваш сетевой интерфейс
      • С поддержкой 1Gbit (или 10GE, если применяется); Сетевые адаптеры Fast Ethernet (10/100 Мбит) не работают с USRP.
      • Не сетевой контроллер Intel 82579LM (единственная ИС сетевого контроллера PCIe, о которой известно, что она иногда отбрасывает пакеты, не сообщая об этом операционной системе
      • не адаптер USB3-Gigabit (они имеют тенденцию делать интересное переупорядочение пакетов, делая их непригодными для высокоскоростных выборок в реальном времени)
    • убедитесь, что ваш компьютер подключен к той же IP-сети. По умолчанию USRP имеют адреса из 192.168.10.XXX спектр (XXX=2 в заводских настройках). Убедитесь, что ваш компьютер имеет IP-адрес из того же диапазона, но не тот же адрес.
    • убедитесь, что базовая связь работает (по ping <ip address of USRP>). Если нет, перепроверьте свой собственный IP-адрес и попытайтесь убедиться, что USRP настроен на правильный адрес.
      • Чтобы узнать текущий IP-адрес вашего USRP, часто проще всего правильно установить wireshark (это программное обеспечение для анализа сетевых пакетов), имейте выделенный сетевой интерфейс, подключенный к (отключенный USRP), запустите захват на этом интерфейсе и включите USRP.
      • Если адрес неправильный, вы можете перепрограммировать IP-адрес USRP X300 / X310: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"
      • Если адрес неправильный, вы можете перепрограммировать IP-адрес USRP N200 / N210 / USRP2: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"
    • убедитесь, что ваш брандмауэр настроен на разрешение трафика, поступающего из порта USRP 49152. В linux: iptables Команда, как правило, добивается цели: sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT, Обратите внимание, что это пробивает дыру в вашем брандмауэре. Могут применяться политики безопасности вашего учреждения.
  • Если вы пытаетесь использовать USRP E100, E110, E310 или E312, подключенные к вашему ПК:
    • Устройства серии E являются автономными встроенными устройствами Linux SDR; они не подключаются к компьютеру как периферийное устройство. Вам придется скомпилировать свое программное обеспечение (если применимо) с помощью кросс-компилятора и запустить программное обеспечение на самом устройстве серии E, а не на вашем хост-компьютере.

В качестве быстрой проверки правильности конфигурации вашего ПК, USRP, IP-адреса кабелей и устройств загрузите текущий GNU Radio Live DVD ² (который, кстати, также содержит множество интересных примеров), загрузите его и попробуйте uhd_find_devices там.


¹ ваш пробег может отличаться, так как у каждого дистрибутива есть свое представление о том, как управлять брандмауэром

² Пожалуйста, используйте торрент-файлы, если это возможно - трафик Amazon AWS не является бесплатным для тех, кто сопровождает проект GNU Radio. Файл торрента также использует серверы AWS в качестве источника, но пытается получить часть изображения от других пользователей.

Запустите команду ниже:

sudo gedit /usr/lib/python2.7/dist-packages/gnuradio/uhd/uhd_swig.py 

В строке содержит device_addr добавлять B210 как это значение.

Args:
device_addr : B210
Другие вопросы по тегам