Правило udev не работает, кто-то утверждает, что iface до меня
Мое устройство:16c0:05dc
'' ''> $ lsusb Bus 002 Устройство 005: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure
Приложения Процессорная шина 002 Устройство 007: ID 1cbe:00fd Luminary Micro Inc. Шина интерфейса внутрисхемной отладки 002 Устройство 006: ID 16c0: 05dc Общий идентификатор Van Ooijen Technische Informatica для использования с libusb Bus 002 Устройство 004: ID 1a40:0101 Terminus Technology Inc. Hub Bus 002 Устройство 003: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Устройство 001: ID 1d6b: 0002 Шина корневого концентратора Linux Foundation 2.0 001 Устройство 006: ID 1bcf:280b Sunplus Innovation Technology Inc. Шина 001 Устройство 005: ID 413c:8187 Dell Computer Corp. DW375 Шина модуля Bluetooth 001 Устройство 007: ID 040b:2000 Weltrend Semiconductor Bus 001 Устройство 004: ID413c: 2513 Компьютер Dell Corp. внутренний USB-концентратор шины E-Port Replicator Bus 001 Устройство 008: ID 0781: 558c Шина SanDisk Corp. 001 Устройство 003: ID 413c:2513 Dell Computer Corp.внутренний USB-концентратор шины репликатора E-Port 001 Устройство 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Устройство 001: ID 1d6b: 0002 Корневой концентратор Linux Foundation 2.0 [alexb@latitude ve12demo_fw6a]$ ll /dev/bus/usb/002/006 crw-rw-rw- 1 пользователи root 189, 133 7 августа 01:35 /dev/bus/usb/002/006 '''' мое правило: '''$ cat /etc/udev/rules.d/61-vedemo.rules SUBSYSTEM=="usb",ATTRS{idVendor}=="16c0",ATTRS{idProduct}=="05dc",GROUP="users",MODE="0666" SUBSYSTEM=="usb",ATTRS{idVendor}=="16c0",ATTRS{idProduct}=="05dc", ENV{ID_MM_DEVICE_IGNORE}="1" '''Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:Интегрированная шина концентратора согласования скорости 001 Устройство 001: ID 1d6b: 0002 Корневой концентратор Linux Foundation 2.0 [alexb@latitude ve12demo_fw6a]$ ll /dev/bus/usb/002/006 crw-rw-rw- 1 пользователи root 189, 133 августа 7 01:35 /dev/bus/usb/002/006 '''' мое правило: '' '$ cat /etc/udev/rules.d/61-vedemo.rules SUBSYSTEM == "usb", ATTRS {idVendor } == "16c0", ATTRS {idProduct} == "05dc", GROUP = "users", MODE = "0666" SUBSYSTEM == "usb", ATTRS {idVendor} == "16c0", ATTRS {idProduct} = = "05dc", ENV {ID_MM_DEVICE_IGNORE} = "1" '' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:Интегрированная шина концентратора согласования скорости 001 Устройство 001: ID 1d6b: 0002 Корневой концентратор Linux Foundation 2.0 [alexb@latitude ve12demo_fw6a]$ ll /dev/bus/usb/002/006 crw-rw-rw- 1 пользователи root 189, 133 августа 7 01:35 /dev/bus/usb/002/006 '''' мое правило: '' '$ cat /etc/udev/rules.d/61-vedemo.rules SUBSYSTEM == "usb", ATTRS {idVendor } == "16c0", ATTRS {idProduct} == "05dc", GROUP = "users", MODE = "0666" SUBSYSTEM == "usb", ATTRS {idVendor} == "16c0", ATTRS {idProduct} = = "05dc", ENV {ID_MM_DEVICE_IGNORE} = "1" '' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:35 / dev / bus / usb / 002/006 '' '' мое правило: '' '$ cat /etc/udev/rules.d/61-vedemo.rules SUBSYSTEM == "usb", ATTRS {idVendor} = = "16c0", ATTRS {idProduct} == "05dc", GROUP = "users", MODE = "0666" SUBSYSTEM == "usb", ATTRS {idVendor} == "16c0", ATTRS {idProduct} == " 05dc ", ENV {ID_MM_DEVICE_IGNORE} =" 1 "'' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:35 / dev / bus / usb / 002/006 '' '' мое правило: '' '$ cat /etc/udev/rules.d/61-vedemo.rules SUBSYSTEM == "usb", ATTRS {idVendor} = = "16c0", ATTRS {idProduct} == "05dc", GROUP = "users", MODE = "0666" SUBSYSTEM == "usb", ATTRS {idVendor} == "16c0", ATTRS {idProduct} == " 05dc ", ENV {ID_MM_DEVICE_IGNORE} =" 1 "'' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:ENV {ID_MM_DEVICE_IGNORE} = "1" '' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:ENV {ID_MM_DEVICE_IGNORE} = "1" '' 'Однако lsusb не удалось запросить интерфейс 0 с ошибкой (-6):LIBUSB_ERROR_BUSY Примечание:
$ lsof /dev/bus/usb/002/006
[alexb@latitude ve12demo_fw6a]$ fuser -m /dev/bus/usb/002/006
/dev / bus / usb / 002/006: 18207 18225 18238 18240 18242m 18294 18437 18444 18447 18478 18512 18518 18534 18544 18548 18549 18551 18555 18568 18573 18577 18586 18592 18603 18607 18614 18616 18623 18628 18638 18640 18644 18664 1866 18678 18681 18683 18688 18690 18691 18698 18702 18705 18754 18759 18760 18772 18773 18792 18811 18849 18866 18909 18910 18947 18951 18952 18970 1899719021 19039 19045 19046 19083 19125 19144 19174 19174 193749 19045 19046 19083 19125 19144 1940 19174 1937540184 обратите внимание, что завершение этих процессов с помощью kill -9 28207 218225 и т. д. приведет к сбою системы..... Пожалуйста, помогите мне определить, кто требует мое устройство до меня? Примечание 2: перед заявкой на интерфейс я отключаю драйвер ядра и устанавливаю autodetach true, см. Код ниже:
Цитата
rc=libusb_kernel_driver_active( dev_handle, INTERFACENUMBER);
if(rc==1)
{
rc=libusb_detach_kernel_driver(dev_handle, INTERFACENUMBER);
if(rc!=LIBUSB_SUCCESS) errmsg(__LINE__,__FILE__,"kernel driver failed to be detached",rc,true);
};
rc=libusb_set_auto_detach_kernel_driver(dev_handle, true);
rc=libusb_kernel_driver_active( dev_handle, INTERFACENUMBER);
if(rc==1)
{
rc=libusb_detach_kernel_driver(dev_handle, INTERFACENUMBER);
if(rc!=LIBUSB_SUCCESS) errmsg(__LINE__,__FILE__,"kernel driver failed to be detached",rc,true);
};
0 ответов
Причиной такого поведения был не udev, а qt, который дважды вызвал libusb_claim. Чтобы обеспечить одиночный выстрел даже в многопоточной среде, использовалась функция QTimer single _shot, и это решило проблему. [https://stackru.com/questions/14269766/using-qt-how-to-call-function-once-after-a- sure-interval-even-if-more-calls]