Как перезапустить USB-устройство на Beaglebone Black?

Вопрос или проблема

Когда я перезагружаю Beaglebone-black, USB модем не запускается. Мне нужно отключить модем, перезагрузить bbb и подключить его, чтобы он заработал. Как это исправить?

Я предполагаю, что мне нужно перезагрузить USB шину 1.

С Armstrong я мог использовать devmem2, но он недоступен в образе Debian.

Обратите внимание, что для GSM модемов это обычно зависания, и иногда они требуют сброса раз в день на встроенных устройствах.

Как я могу этого добиться на моем bbb и Debian?

Обычный цикл питания с подключенным USB модемом:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Модем подключен только после перезагрузки:

$ lsusb
Bus 001 Device 002: ID 114f:1234 Wavecom
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/sys/bus/usb/devices/usb1# echo 0 > bConfigurationValue

выключает устройство, но я не могу его заново включить?

(Я пробовал /sys/bus/usb/devices/usb1# echo 1 > bConfigurationValue)

Это на чистом образе Debian от 2015-03-01, попробую с обновленным…

Вы можете исключить устройство из шины и добавить его обратно, записав 0, а затем 1 в /sys/bus/usb/…/bConfigurationValue. Более надежный способ — вызвать libusb_reset_device() с использованием простую программу на C.

обычно для GSM модемов это зависания, и иногда они требуют сброса раз в день

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

Ответ или решение

Чтобы программно перезапустить USB-модем на Beaglebone Black, работающем на Debian, нужно принимать во внимание особенности платформы и технологии. Данное устройство требует правильного цикла выключения и включения USB-шины для корректной работы модема после перезагрузки. Вот как это можно осуществить.

Шаги по перезапуску USB-устройства:

  1. Понимание проблемы:

    • При перезагрузке Beaglebone Black USB-модем не стартует автоматически.
    • Обнаружено, что отключение и повторное включение USB-модема вручную решает проблему.
    • Использование devmem2 возможно в Armstrong, но недоступно в Debian.
  2. Unix-команды для работы с USB:

    • Проверка подключения USB-устройств:
      lsusb
    • Видно, что модем не появляется, если вставлен до включения, но обнаруживается при подключении после загрузки системы.
  3. Отключение и повторное подключение устройства:

    • Временное отключение устройства:
      echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue
    • Повторное включение модема может быть проблематичным, если просто попытаться активировать его обратно тем же способом.
  4. Решение с использованием libusb:

    • Более надежный метод — реализовать перезапуск USB-устройства через вызов libusb_reset_device(). Это требует написания небольшой программы на C.
    • Пример программы можно найти в онлайн-руководствах.
  5. Рекомендации по улучшению оборудования:

    • Поскольку GSM-модемы могут зависать и требуется их периодическая перезагрузка, стоит рассмотреть возможность использования более стабильного оборудования, чтобы минимизировать простои.

Дополнительные шаги:

  • Обновление ОС: Убедитесь, что у вас свежая версия Debian, так как обновления могут содержать исправления известных проблем с USB.
  • Сценарии автоматизации: Можно написать скрипт Shell, который выполняет отключение и повторное подключение модема с помощью команд отладки. Этот скрипт может быть добавлен в cron для планового выполнения.
  • Диагностика: Если проблема сохраняется, проведите диагностику, чтобы понять, не связана ли она с драйверами или совместимостью вашего модема с Beaglebone Black.

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

Оцените материал
Добавить комментарий

Капча загружается...