i am trying to use pyusb to access a device that has a native kernel driver on
macOS. to do this I have to first call `detach_kernel_driver`, which I must do
from a privileged (root) process. but I want to spend as little time as possible
as root, just detaching the kernel driver and then deescalating. unfortunately, it
seems like after the kernel driver has been disconnected, the device no longer
appears to pyusb *except when running as root*. so, once the kernel driver has
been detached, only root can see the device. this stops happening once the kernel
driver has been reattached, but then i can't use the device. the device is missing
from `.list()` and can't be seen at all. i ran with `LIBUSB_DEBUG=4
PYUSB_DEBUG=debug` and instead of this (running as root): [ 0.002519] [00fec7c5]
libusb: debug [darwin_get_cached_device] finding cached device for sessionID
0x17289fa31f8c [ 0.002528] [00fec7c5] libusb: debug [darwin_get_cached_device]
parent sessionID: 0x17289f4633fd [ 0.002530] [00fec7c5] libusb: debug
[darwin_get_cached_device] matching sessionID/locationID 0x17289fa31f8c/0x1110000
against cached device with sessionID/locationID 0x17289f4633fd/0x1100000 [
0.002531] [00fec7c5] libusb: debug [darwin_get_cached_device] caching new device
with sessionID 0x17289fa31f8c [ 0.002643] [00fec7c5] libusb: debug
[darwin_cache_device_descriptor] cached device descriptor: [ 0.002645] [00fec7c5]
libusb: debug [darwin_cache_device_descriptor] bDescriptorType: 0x01 [ 0.002646]
[00fec7c5] libusb: debug [darwin_cache_device_descriptor] bcdUSB: 0x0200 [
0.002647] [00fec7c5] libusb: debug [darwin_cache_device_descriptor] bDeviceClass:
0x00 [ 0.002648] [00fec7c5] libusb: debug [darwin_cache_device_descriptor]
bDeviceSubClass: 0x00 [ 0.002649] [00fec7c5] libusb: debug
[darwin_cache_device_descriptor] bDeviceProtocol: 0x00 [ 0.002649] [00fec7c5]
libusb: debug [darwin_cache_device_descriptor] bMaxPacketSize0: 0x40 [ 0.002650]
[00fec7c5] libusb: debug [darwin_cache_device_descriptor] idVendor: 0x05ac [
0.002651] [00fec7c5] libusb: debug [darwin_cache_device_descriptor] idProduct:
0x1266 [ 0.002651] [00fec7c5] libusb: debug [darwin_cache_device_descriptor]
bcdDevice: 0x0001 [ 0.002652] [00fec7c5] libusb: debug
[darwin_cache_device_descriptor] iManufacturer: 0x01 [ 0.002653] [00fec7c5]
libusb: debug [darwin_cache_device_descriptor] iProduct: 0x02 [ 0.002654]
[00fec7c5] libusb: debug [darwin_cache_device_descriptor] iSerialNumber: 0x03 [
0.002655] [00fec7c5] libusb: debug [darwin_cache_device_descriptor]
bNumConfigurations: 0x02 [ 0.003150] [00fec7c5] libusb: debug
[darwin_check_configuration] active config: 1, first config: 1 [ 0.003155]
[00fec7c5] libusb: debug [process_new_device] allocating new device in context
0x11de0db40 for with session 0x17289fa31f8c [ 0.003158] [00fec7c5] libusb: debug
[process_new_device] found device with address 2 port = 1 parent = 0x6000007ec600
at 0x600000decaba i get this when running as user: [ 0.002641] [00febf6c] libusb:
debug [darwin_get_cached_device] finding cached device for sessionID
0x17289fa31f8c [ 0.002652] [00febf6c] libusb: debug [darwin_get_cached_device]
parent sessionID: 0x17289f4633fd [ 0.002654] [00febf6c] libusb: debug
[darwin_get_cached_device] matching sessionID/locationID 0x17289fa31f8c/0x1110000
against cached device with sessionID/locationID 0x17289f4633fd/0x1100000 [
0.002655] [00febf6c] libusb: debug [darwin_get_cached_device] caching new device
with sessionID 0x17289fa31f8c [ 0.002696] [00febf6c] libusb: debug
[darwin_device_from_service] set up plugin for service retry: out of resources [
0.002733] [00febf6c] libusb: debug [darwin_device_from_service] set up plugin for
service retry: out of resources [ 0.002759] [00febf6c] libusb: debug
[darwin_device_from_service] set up plugin for service retry: out of resources [
0.002783] [00febf6c] libusb: debug [darwin_device_from_service] set up plugin for
service retry: out of resources [ 0.002806] [00febf6c] libusb: debug
[darwin_device_from_service] set up plugin for service retry: out of resources [
0.002811] [00febf6c] libusb: debug [darwin_device_from_service] could not set up
plugin for service: out of resources this is annoying because i wanted to use a
privileged helper to detach the kernel driver, but this makes me have to run my
entire GUI as root!! thanks :> (i also sent this in as a GitHub discussion, but
i'm not sure if that forum is active? so I forwarded it here too. I hope that is
not too much of a problem :)
_______________________________________________
pyusb-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyusb-users