проблема со вставкой модуля ядра

Мы используем последнюю версию raspibian на плате raspberry pi и имеем драйвер ядра для периферийного USB-устройства, который добавляется извне (sudo insmod driverx.ko) после загрузки путем подключения к оборудованию с помощью ssh (это безголовая система).

Проблема в следующем: если устройство уже подключено к системе при включении питания, то запуск sudo insmod driverx.ko приводит к зависанию терминала (нет ответа, Ctrl+C не работает ). Запуск lsmod путем запуска другого сеанса ssh показывает, что модуль используется, даже если нет запущенного кода, который будет его использовать.

Если я подключаю USB-устройство после загрузки системы, то sudo insmod driverx.ko работает нормально (терминал все еще активен). Впоследствии запуск lsmod показывает, что этот модуль загружен, но никем не используется. Затем я могу запустить свой пользовательский код, и все в порядке. При запуске моего пользовательского кода lsmod показывает, что модуль ядра используется, а количество пользователей равно 1.

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

Спасибо за ваше время и помощь.


person EnthuMan    schedule 13.10.2017    source источник
comment
любая загрузка биоса с usb при запуске? вам нужно поместить usb в нижний список загрузочных биосов, это может привести к плохой ситуации, если usb является загрузочным. Не уверен, что это имеет отношение к вашей проблеме. С уважением.   -  person    schedule 13.10.2017
comment
Спасибо за отзыв. Я проверю, но судя по симптомам, думаю, дело не в этом.   -  person EnthuMan    schedule 13.10.2017
comment
Да как симптомы ;), гл.   -  person    schedule 13.10.2017
comment
Дополнение: только что проверил, загрузка через usb не включена (в /boot/config.txt)   -  person EnthuMan    schedule 13.10.2017
comment
Вы установили необходимое условие как sudo apt-get xxx-firmware или обновили свой дистрибутив sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade? что это?   -  person    schedule 13.10.2017
comment
Я использовал второй подход, sudo apt-get update.....   -  person EnthuMan    schedule 13.10.2017


Ответы (1)


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

Перед установкой драйвера проверьте список USB-устройств.

person Sathesh    schedule 13.10.2017
comment
Я проверил список USB-устройств с помощью lsusb, но ничего конкретного не увидел. Я попытался выполнить программный сброс USB-устройства, и это помогло без проблем вставить мой driverx.ko. (например, ответ в другой теме на SO, $ sudo usb_modeswitch -v 0x7392 -p 0x7811 --reset-usb). - person EnthuMan; 14.10.2017
comment
выглядит проблема с устройством, которое может потреблять больше тока от порта. Попробуйте изменить источник питания пи. - person Sathesh; 14.10.2017
comment
В качестве альтернативы используйте внешний концентратор (с автономным питанием) и подключите свое устройство к концентратору. - person Sathesh; 14.10.2017