С Documentation/водитель-модель/binding.txt:
При добавлении нового устройства, список из автобуса в водителях итеративен над , чтобы найти тот, который поддерживает его. Чтобы определить это, устройство ID устройства должно соответствовать одному из идентификаторов устройства, которое поддерживает драйвер . Формат и семантика для сравнения идентификаторов зависят от шины.
Из того же источника:
Процесс практически идентичен, когда добавляется новый драйвер. Список устройств шины перебирается, чтобы найти совпадение. Устройства , которые уже имеют драйвер, пропускаются. Все устройства перезаписаны , чтобы связать как можно больше устройств с драйвером.
Так это выглядит, как у вас есть проблема в согласовании ID, то есть в вашем случае специфичны для шины USB, смотрите функцию usb_device_match в драйверах/USB/ядра/driver.c.
Возможно, ваше устройство уже подключено к устройству, которое выгружено при отключении устройства (вы можете проверить это, контролируя наличие символической ссылки на драйвер в соответствующем/sys/bus/usb/xxxxx)
Существует различие между подключением устройства, а затем загрузкой драйвера после загрузки ядра "и" загрузкой драйвера во время загрузки с уже подключенным устройством. Разве это не работает для обоих этих случаев? AFAIK не будет работать, если вы загрузите модуль после подключения устройства. – Bandan