Принудительное соответствие драйвера устройству - PullRequest
22 голосов
/ 14 января 2009

У меня есть кусок USB-оборудования, для которого я знаю драйвер. Однако идентификатор поставщика и идентификатор продукта не совпадают с парой VID, PID, зарегистрированной в драйвере. Есть ли в linux способ принудительно связать драйвер с известным устройством, который не требует перекомпиляции модуля ядра для добавления пары PID / VID?

Ответы [ 3 ]

22 голосов
/ 14 января 2009

Найдите модуль в дереве sysfs. В этом случае это было в

/sys/bus/usb-serial/drivers/cp2101

В этом каталоге есть запись в файле new_id, которую можно использовать для динамического добавления пары VID PID, например:

echo VID PID >new_id

Вот запись LWN об этой функции

1 голос
/ 14 января 2009

На самом деле вам не нужно перекомпилировать все ядро, достаточно будет перекомпилировать только соответствующий модуль ядра с обновленной таблицей соответствия, в случае, если этот ответ не будет работать на вашем ядре.

0 голосов
/ 23 октября 2018

Если вы хотите сделать это изменение постоянным и назначить конкретный драйвер устройству (VID, PID), вы можете найти этот ответ полезным.

Например, создать новый файл /etc/udev/rules.d/98-joystick.rules с содержанием:

ACTION == "add", ATTRS {idVendor} == "1345", ATTRS {idProduct} == "6005", RUN + = "/ sbin / modprobe xpad" RUN + = "/ bin / sh -c 'echo 1345 6005> / sys / bus / usb / drivers / xpad / new_id '"

Замените 1345 на свой VID и 6005 на свой PID.

Заменить xpad на соответствующий драйвер.

Выполнить следующую команду:

$ sudo udevadm control --reload

Отключите и снова подключите устройство и проверьте, загружен ли новый драйвер.

Пример, показанный здесь, предназначен для устранения проблем с драйвером с Speedlink Strike FX Gamepad (SL-6537-BK)

...