Вопрос или проблема
Когда я перезагружаю 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-устройства:
-
Понимание проблемы:
- При перезагрузке Beaglebone Black USB-модем не стартует автоматически.
- Обнаружено, что отключение и повторное включение USB-модема вручную решает проблему.
- Использование
devmem2
возможно в Armstrong, но недоступно в Debian.
-
Unix-команды для работы с USB:
- Проверка подключения USB-устройств:
lsusb
- Видно, что модем не появляется, если вставлен до включения, но обнаруживается при подключении после загрузки системы.
- Проверка подключения USB-устройств:
-
Отключение и повторное подключение устройства:
- Временное отключение устройства:
echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue
- Повторное включение модема может быть проблематичным, если просто попытаться активировать его обратно тем же способом.
- Временное отключение устройства:
-
Решение с использованием libusb:
- Более надежный метод — реализовать перезапуск USB-устройства через вызов
libusb_reset_device()
. Это требует написания небольшой программы на C. - Пример программы можно найти в онлайн-руководствах.
- Более надежный метод — реализовать перезапуск USB-устройства через вызов
-
Рекомендации по улучшению оборудования:
- Поскольку GSM-модемы могут зависать и требуется их периодическая перезагрузка, стоит рассмотреть возможность использования более стабильного оборудования, чтобы минимизировать простои.
Дополнительные шаги:
- Обновление ОС: Убедитесь, что у вас свежая версия Debian, так как обновления могут содержать исправления известных проблем с USB.
- Сценарии автоматизации: Можно написать скрипт Shell, который выполняет отключение и повторное подключение модема с помощью команд отладки. Этот скрипт может быть добавлен в cron для планового выполнения.
- Диагностика: Если проблема сохраняется, проведите диагностику, чтобы понять, не связана ли она с драйверами или совместимостью вашего модема с Beaglebone Black.
Принятие указанных мер поможет устранить проблемы с подключением модема и улучшить устойчивость системы. Если вы продолжаете испытывать трудности, рекомендуется обратиться за консультацией к поставщику GSM-модема или использовать альтернативные решения на аппаратном уровне.