Linux: как назначить драйвер USB устройству [закрыто]

этот вопрос является двукратным:

1 - как вручную отсоединить драйвер от USB-устройства и подключить другое? Например, у меня есть устройство, которое при подключении автоматически использует драйвер usb-накопителя.

// usbview выход

Vendor Id: xxxx
Product Id: xxxx
...
    Number of Interfaces: 2
    Interface Number: 0
        Name: usb-storage
        Number of Endpoints: 2
        ...
    Interface Number: 1
        Name: (none)
        Number of Endpoints: 2
        ...

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

Как вы отсоединяете драйвер вручную вне приложения?

2-Как автоматически назначить драйвер для подключения плагина устройства. В настоящее время у меня есть настройка правила udev для автоматической установки разрешений устройства.

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"

могу ли я использовать правила udev для назначения драйверов определенным интерфейсам на USB-устройстве? Например, если бы я хотел, чтобы модуль usbnet использоваться автоматически на интерфейсе 0 вместо usb-накопителя, возможно ли это в udev?

спасибо,

(Я немного смущен тем, как StackExchange работает с разными сайтами или если они все одинаковы. Это вопрос Linux, поэтому он также был опубликован в Unix и Linux. Простите, если он не должен быть размещен здесь, но StackOverflow также обрабатывает Linux, поэтому...)

1 ответов


этот вопрос звучит очень похоже на USB-устройство, содержащее небольшой флэш-диск, который содержит драйвер Windows, но на самом деле это своего рода устройство доступа к сети (модем UMTS приходит мне на ум). Если это так, попробуйте использовать USB_ModeSwitch, который содержит базу данных устройств USB и команды и данные, которые должны использоваться для перемещения устройства из режима "хранение" в режим "доступ к сети". Если устройство не настроено в базе данных, УСБ снифер для Окна может использоваться в Windows для отслеживания трафика USB и извлечения необходимой команды / данных.

автоматизация usb_modeswitch, так что он выполняет это магия, когда вы подключите устройство может быть сделано с помощью правил udev. Если вы используете дистрибутив Fedora или Ubuntu, это обрабатывается для вас при установке пакетов, предоставляющих usb_modeswitch (извините, у меня нет информации о SUSE, но я думаю, что это похоже).В Fedora это пакет use_modeswitch_data, который представляет собой оболочку для usb_modeswitch cmd и необходимые файлы правил.

если вы действительно хотите привязать / отменить привязку USB-устройств к драйверам, см. эта статья LWN. Как корень,echo $usbid > /sys/bus/usb/drivers/usb-storage/unbind будет развязать USB-устройство с $usbid из драйвера" usb-storage". Используя ту же команду, но используя bind вместо unbind, попытается связать устройство с драйвером. Но имейте в виду, что нет смысла (и не будет работать) связывать устройство, которое действует как запоминающее устройство, с драйвер usbnet.