• [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access


    来自github上的讨论,But is not my problem.
     
     
    • Why GitHub?
     
     

    / libusb Public

     
     
     
     

    MacOS Monterey 12.0, libuvc, libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access #972

     
    Open
     
     
    hl0521 opened this issue on Aug 4 · 23 comments
     

    Comments

    @hl0521
     
     
     

    hl0521 commented on Aug 4

     

    When using the function "uvc_open" in libuvc on MacOS Monterey 12.0, the following exception will be thrown:

    libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access.

    Does anyone know how to solve this problem?

    The complete log is as follows:

    [device.c:322] begin uvc_open
    [ 0.706899] [00018c33] libusb: debug [libusb_open] open 20.6
    [ 0.707071] [00018c33] libusb: debug [darwin_open] device open for access
    [device.c:325/uvc_open] libusb_open() = 0
    [device.c:345] begin uvc_open_internal
    [device.c:892] begin uvc_ref_device
    [device.c:897] end uvc_ref_device
    [device.c:430] begin uvc_get_device_info
    [ 0.707100] [00018c33] libusb: debug [libusb_get_config_descriptor] index 0
    [ 0.707105] [00018c33] libusb: debug [parse_configuration] skipping descriptor 0xb
    [ 0.707109] [00018c33] libusb: debug [parse_endpoint] skipping descriptor 0x25
    [ 0.707112] [00018c33] libusb: debug [parse_endpoint] skipping descriptor 0xb
    [ 0.707115] [00018c33] libusb: debug [parse_endpoint] skipping descriptor 0x25
    [device.c:1009] begin uvc_scan_control
    [device.c:552] begin uvc_get_device_descriptor
    [ 0.707124] [00018c33] libusb: debug [libusb_get_device_descriptor]  
    [ 0.707126] [00018c33] libusb: debug [libusb_open] open 20.6
    [ 0.707160] [00018c33] libusb: debug [darwin_open] device open for access
    [ 0.707165] [00018c33] libusb: debug [libusb_submit_transfer] transfer 0x7fb688c3dbf8
    [ 0.707361] [00018c33] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 0.707368] [00018c33] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 0.707371] [00018c33] libusb: debug [handle_events] event sources modified, reallocating event data
    [ 0.707376] [00018c33] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 0.707522] [00018c32] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 0.707546] [00018c33] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 0.707549] [00018c33] libusb: debug [handle_event_trigger] event triggered
    [ 0.707551] [00018c33] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 0.707554] [00018c33] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fb688c3dbf8 has callback 0x100dfafb0
    [ 0.707556] [00018c33] libusb: debug [sync_transfer_cb] actual_length=4
    [ 0.707559] [00018c33] libusb: debug [libusb_free_transfer] transfer 0x7fb688c3dbf8
    [ 0.707564] [00018c33] libusb: debug [libusb_submit_transfer] transfer 0x7fb688e42a08
    [ 0.707586] [00018c33] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 0.707589] [00018c33] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 0.707591] [00018c33] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 0.707602] [00018c32] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 0.707613] [00018c33] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 0.707615] [00018c33] libusb: debug [handle_event_trigger] event triggered
    [ 0.707617] [00018c33] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 0.707619] [00018c33] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fb688e42a08 has callback 0x100dfafb0
    [ 0.707621] [00018c33] libusb: debug [sync_transfer_cb] actual_length=40
    [ 0.707624] [00018c33] libusb: debug [libusb_free_transfer] transfer 0x7fb688e42a08
    [ 0.707628] [00018c33] libusb: debug [libusb_submit_transfer] transfer 0x7fb688e42a08
    [ 0.707660] [00018c33] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 0.707663] [00018c33] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 0.707665] [00018c33] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 0.707799] [00018c32] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 0.707821] [00018c33] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 0.707825] [00018c33] libusb: debug [handle_event_trigger] event triggered
    [ 0.707826] [00018c33] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 0.707829] [00018c33] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fb688e42a08 has callback 0x100dfafb0
    [ 0.707831] [00018c33] libusb: debug [sync_transfer_cb] actual_length=4
    [ 0.707836] [00018c33] libusb: debug [libusb_free_transfer] transfer 0x7fb688e42a08
    [ 0.707840] [00018c33] libusb: debug [libusb_submit_transfer] transfer 0x7fb68a882298
    [ 0.707867] [00018c33] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 0.707870] [00018c33] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 0.707872] [00018c33] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 0.707883] [00018c32] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 0.707894] [00018c33] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 0.707896] [00018c33] libusb: debug [handle_event_trigger] event triggered
    [ 0.707898] [00018c33] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 0.707900] [00018c33] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fb68a882298 has callback 0x100dfafb0
    [ 0.707902] [00018c33] libusb: debug [sync_transfer_cb] actual_length=24
    [ 0.707905] [00018c33] libusb: debug [libusb_free_transfer] transfer 0x7fb68a882298
    [ 0.707909] [00018c33] libusb: debug [libusb_close]  
    [device.c:594] end uvc_get_device_descriptor (0)
    [device.c:606] begin uvc_free_device_descriptor
    [device.c:619] end uvc_free_device_descriptor
    [device.c:1232] begin uvc_parse_vc
    [device.c:1075] begin uvc_parse_vc_header
    [device.c:1280] begin uvc_scan_streaming
    [device.c:1595] begin uvc_parse_vs
    [device.c:1317] begin uvc_parse_vs_input_header
    [device.c:1323] end uvc_parse_vs_input_header (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1394] begin uvc_parse_vs_format_mjpeg
    [device.c:1412] end uvc_parse_vs_format_mjpeg (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1334] begin uvc_parse_vs_format_uncompressed
    [device.c:1353] end uvc_parse_vs_format_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1364] begin uvc_parse_vs_frame_format
    [device.c:1383] end uvc_parse_vs_frame_format (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1627/uvc_parse_vs] unsupported descriptor subtype VS_COLORFORMAT
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1306] end uvc_scan_streaming (0)
    [device.c:1107] end uvc_parse_vc_header (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1121] begin uvc_parse_vc_input_terminal
    [device.c:1142] end uvc_parse_vc_input_terminal (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1156] begin uvc_parse_vc_processing_unit
    [device.c:1167] end uvc_parse_vc_processing_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1203] begin uvc_parse_vc_extension_unit
    [device.c:1217] end uvc_parse_vc_extension_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1203] begin uvc_parse_vc_extension_unit
    [device.c:1217] end uvc_parse_vc_extension_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1061] end uvc_scan_control (0)
    [device.c:455] end uvc_get_device_info (0)
    [device.c:358/uvc_open_internal] claiming control interface 0
    [device.c:929] begin uvc_claim_if
    [ 0.708100] [00018c33] libusb: debug [libusb_detach_kernel_driver] interface 0
    [ 0.708103] [00018c33] libusb: debug [darwin_detach_kernel_driver] attempting to detach kernel driver from device
    [ 0.708239] [00018c33] libusb: info [darwin_detach_kernel_driver] no capture entitlements. can not detach the kernel driver for this device
    [device.c:942/uvc_claim_if] claiming interface 0
    [ 0.708245] [00018c33] libusb: debug [libusb_claim_interface] interface 0
    [ 0.708766] [00018c33] libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access
    [device.c:951] end uvc_claim_if (-3)
    [device.c:965] begin uvc_release_if
    [device.c:966/uvc_release_if] releasing interface 0
    [device.c:968/uvc_release_if] attempt to release unclaimed interface 0
    
    [device.c:969] end uvc_release_if (0)
    [ 0.708784] [00018c33] libusb: debug [libusb_close]  
    [device.c:908] begin uvc_unref_device
    [device.c:916] end uvc_unref_device
    [device.c:1653] begin uvc_free_devh
    [device.c:477] begin uvc_free_device_info
    [device.c:530] end uvc_free_device_info
    [device.c:1663] end uvc_free_devh
    [device.c:411] end uvc_open_internal (-3)
    [device.c:333] end uvc_open (-3)
    
     
     
    @mcuee mcuee added the macOS label on Aug 5
    @mcuee
     
     
    Member

    mcuee commented on Aug 5

    That is just a info message and not a problem.
    [ 0.708766] [00018c33] libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access

    @mcuee
     
     
    Member

    mcuee commented on Aug 5

    Do you have real problem here other than the message?

    @mcuee
     
     
    Member

    mcuee commented on Aug 5

    Reference: we have downgraded the message from warning to info as it is normal.
    #955

    @hl0521
     
     
    Author

    hl0521 commented on Aug 5

    Do you have real problem here other than the message?

    My program use the libuvc (https://github.com/libuvc/libuvc) to control the webcam. The program can work on macOS 10.x and macOS 11.x. It doesn't work on macOS 12.0 that is Apple's new system released recently. The cause is that the function "uvc_open" failed. Function "uvc_open" works as follows:

    uvc_open
    ->uvc_open_internal
    ->uvc_claim_if
    ->libusb_claim_interface
    ->usbi_backend.claim_interface ==> darwin_capture_claim_interface
    ->darwin_claim_interface
    ->USBInterfaceOpen ---------->return "USBInterfaceOpen: another process has device opened for exclusive access"

    Maybe this problem is caused by some changes in Apple’s new system, i'm not sure. And I don't know how to solve this problem, so come here for help.

    @mcuee
     
     
    Member

    mcuee commented on Aug 5

    Can you try the latest libusb git? And post the debug log again.

    @hl0521
     
     
    Author

    hl0521 commented on Aug 5

    Can you try the latest libusb git? And post the debug log again.

    I updated the latest code from the libusb yesterday and got the above log.

    The log starts with [device.c:322] begin uvc_open
    ends with [device.c:333] end uvc_open (-3)

    @mcuee
     
     
    Member

    mcuee commented on Aug 5

    I see. Thanks. Maybe there is a change on the Apple side. Anyway, this is a beta release. You may want to try again when there is a formal release.

    Right now please post the debug log for macOS 11.x as well since you say it works. By comparing the logs, you may be able to identify the differences. It could be that there is a kernel driver in the 12.x beta which opens the device for exclusive access.

    One thing you can try is to see if you can use the latest addition to the macOS side, the kernel driver detaching function, but you need to have the right entitlement. I have not tried this myself. More details are in pull request #911

    @hl0521
     
     
    Author

    hl0521 commented on Aug 5

     

    I see. Thanks. Maybe there is a change on the Apple side. Anyway, this is a beta release. You may want to try again when there is a formal release.

    Right now please post the debug log for macOS 11.x as well since you say it works. By comparing the logs, you may be able to identify the differences. It could be that there is a kernel driver in the 12.x beta which opens the device for exclusive access.

    One thing you can try is to see if you can use the latest addition to the macOS side, the kernel driver detaching function, but you need to have the right entitlement. I have not tried this myself. More details are in pull request #911

    On macOS 11.4, the log as follows:

    [device.c:322] begin uvc_open
    [ 7.424639] [0014a84b] libusb: debug [libusb_open] open 20.10
    [ 7.424768] [0014a84b] libusb: debug [darwin_open] device open for access
    [device.c:325/uvc_open] libusb_open() = 0
    [device.c:345] begin uvc_open_internal
    [device.c:892] begin uvc_ref_device
    [device.c:897] end uvc_ref_device
    [device.c:430] begin uvc_get_device_info
    [ 7.424779] [0014a84b] libusb: debug [libusb_get_config_descriptor] index 0
    [ 7.424783] [0014a84b] libusb: debug [parse_configuration] skipping descriptor 0xb
    [ 7.424785] [0014a84b] libusb: debug [parse_endpoint] skipping descriptor 0x25
    [ 7.424788] [0014a84b] libusb: debug [parse_endpoint] skipping descriptor 0xb
    [ 7.424791] [0014a84b] libusb: debug [parse_endpoint] skipping descriptor 0x25
    [device.c:1009] begin uvc_scan_control
    [device.c:552] begin uvc_get_device_descriptor
    [ 7.425724] [0014a84b] libusb: debug [libusb_get_device_descriptor]  
    [ 7.425735] [0014a84b] libusb: debug [libusb_open] open 20.10
    [ 7.425789] [0014a84b] libusb: debug [darwin_open] device open for access
    [ 7.425829] [0014a84b] libusb: debug [libusb_submit_transfer] transfer 0x7fcd2a56fd68
    [ 7.425948] [0014a84b] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 7.425973] [0014a84b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 7.425977] [0014a84b] libusb: debug [handle_events] event sources modified, reallocating event data
    [ 7.425992] [0014a84b] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 7.426368] [0014a84b] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 7.426375] [0014a84b] libusb: debug [handle_event_trigger] event triggered
    [ 7.426378] [0014a84b] libusb: debug [handle_event_trigger] hotplug message received
    [ 7.426414] [0014a84b] libusb: debug [libusb_unref_device] destroy device 20.6
    [ 7.426423] [0014a84b] libusb: debug [libusb_unref_device] destroy device 20.5
    [ 7.426446] [0014a84b] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 7.426457] [0014a84b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 7.426464] [0014a84b] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 7.427444] [0014a840] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 7.428181] [0014a84b] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 7.428194] [0014a84b] libusb: debug [handle_event_trigger] event triggered
    [ 7.428564] [0014a84b] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 7.428570] [0014a84b] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fcd2a56fd68 has callback 0x1088976e0
    [ 7.428574] [0014a84b] libusb: debug [sync_transfer_cb] actual_length=4
    [ 7.428581] [0014a84b] libusb: debug [libusb_free_transfer] transfer 0x7fcd2a56fd68
    [ 7.428588] [0014a84b] libusb: debug [libusb_submit_transfer] transfer 0x7fcd2aca5b88
    [ 7.428648] [0014a84b] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 7.428653] [0014a84b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 7.428656] [0014a84b] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 7.428932] [0014a840] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 7.428962] [0014a84b] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 7.428969] [0014a84b] libusb: debug [handle_event_trigger] event triggered
    [ 7.428971] [0014a84b] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 7.428974] [0014a84b] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fcd2aca5b88 has callback 0x1088976e0
    [ 7.428977] [0014a84b] libusb: debug [sync_transfer_cb] actual_length=40
    [ 7.428981] [0014a84b] libusb: debug [libusb_free_transfer] transfer 0x7fcd2aca5b88
    [ 7.429000] [0014a84b] libusb: debug [libusb_submit_transfer] transfer 0x7fcd277bbdd8
    [ 7.429078] [0014a84b] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 7.429083] [0014a84b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 7.429087] [0014a84b] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 7.429369] [0014a840] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 7.429568] [0014a84b] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 7.429715] [0014a84b] libusb: debug [handle_event_trigger] event triggered
    [ 7.429720] [0014a84b] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 7.429724] [0014a84b] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fcd277bbdd8 has callback 0x1088976e0
    [ 7.429727] [0014a84b] libusb: debug [sync_transfer_cb] actual_length=4
    [ 7.429731] [0014a84b] libusb: debug [libusb_free_transfer] transfer 0x7fcd277bbdd8
    [ 7.429738] [0014a84b] libusb: debug [libusb_submit_transfer] transfer 0x7fcd2b91e5f8
    [ 7.429781] [0014a84b] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
    [ 7.429786] [0014a84b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
    [ 7.429788] [0014a84b] libusb: debug [usbi_wait_for_events] poll() 1 fds with timeout in 60000ms
    [ 7.429859] [0014a840] libusb: debug [darwin_async_io_callback] an async io operation has completed
    [ 7.429984] [0014a84b] libusb: debug [usbi_wait_for_events] poll() returned 1
    [ 7.429991] [0014a84b] libusb: debug [handle_event_trigger] event triggered
    [ 7.429993] [0014a84b] libusb: debug [darwin_handle_transfer_completion] handling transfer completion type control with kernel status 0
    [ 7.429997] [0014a84b] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fcd2b91e5f8 has callback 0x1088976e0
    [ 7.429999] [0014a84b] libusb: debug [sync_transfer_cb] actual_length=24
    [ 7.430003] [0014a84b] libusb: debug [libusb_free_transfer] transfer 0x7fcd2b91e5f8
    [ 7.430008] [0014a84b] libusb: debug [libusb_close]  
    [device.c:594] end uvc_get_device_descriptor (0)
    [device.c:606] begin uvc_free_device_descriptor
    [device.c:619] end uvc_free_device_descriptor
    [device.c:1232] begin uvc_parse_vc
    [device.c:1075] begin uvc_parse_vc_header
    [device.c:1280] begin uvc_scan_streaming
    [device.c:1595] begin uvc_parse_vs
    [device.c:1317] begin uvc_parse_vs_input_header
    [device.c:1323] end uvc_parse_vs_input_header (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1394] begin uvc_parse_vs_format_mjpeg
    [device.c:1412] end uvc_parse_vs_format_mjpeg (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1334] begin uvc_parse_vs_format_uncompressed
    [device.c:1353] end uvc_parse_vs_format_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1481] begin uvc_parse_vs_frame_uncompressed
    [device.c:1516] end uvc_parse_vs_frame_uncompressed (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1364] begin uvc_parse_vs_frame_format
    [device.c:1383] end uvc_parse_vs_frame_format (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1429] begin uvc_parse_vs_frame_frame
    [device.c:1464] end uvc_parse_vs_frame_frame (0)
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1595] begin uvc_parse_vs
    [device.c:1627/uvc_parse_vs] unsupported descriptor subtype VS_COLORFORMAT
    [device.c:1644] end uvc_parse_vs (0)
    [device.c:1306] end uvc_scan_streaming (0)
    [device.c:1107] end uvc_parse_vc_header (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1121] begin uvc_parse_vc_input_terminal
    [device.c:1142] end uvc_parse_vc_input_terminal (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1156] begin uvc_parse_vc_processing_unit
    [device.c:1167] end uvc_parse_vc_processing_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1203] begin uvc_parse_vc_extension_unit
    [device.c:1217] end uvc_parse_vc_extension_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1203] begin uvc_parse_vc_extension_unit
    [device.c:1217] end uvc_parse_vc_extension_unit (0)
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1232] begin uvc_parse_vc
    [device.c:1263] end uvc_parse_vc (0)
    [device.c:1061] end uvc_scan_control (0)
    [device.c:455] end uvc_get_device_info (0)
    [device.c:358/uvc_open_internal] claiming control interface 0
    [device.c:929] begin uvc_claim_if
    [ 7.430447] [0014a84b] libusb: debug [libusb_detach_kernel_driver] interface 0
    [ 7.430451] [0014a84b] libusb: debug [darwin_detach_kernel_driver] attempting to detach kernel driver from device
    [ 7.430479] [0014a84b] libusb: info [darwin_detach_kernel_driver] no capture entitlements. can not detach the kernel driver for this device
    [device.c:942/uvc_claim_if] claiming interface 0
    [ 7.430490] [0014a84b] libusb: debug [libusb_claim_interface] interface 0
    [ 7.432406] [0014a84b] libusb: debug [get_endpoints] building table of endpoints.
    [ 7.433185] [0014a84b] libusb: debug [get_endpoints] interface: 0 pipe 1: dir: 1 number: 4
    [ 7.433247] [0014a84b] libusb: debug [darwin_claim_interface] interface opened
    [device.c:951] end uvc_claim_if (0)
    [ 7.433260] [0014a84b] libusb: debug [libusb_get_device_descriptor]  
    [ 7.433264] [0014a84b] libusb: debug [libusb_submit_transfer] transfer 0x7fcd2aca2978
    [ 7.433269] [0014a84b] libusb: debug [ep_to_pipeRef] converting ep address 0x84 to pipeRef and interface
    [ 7.433272] [0014a84b] libusb: debug [ep_to_pipeRef] pipe 1 on interface 0 matches
    [device.c:382/uvc_open_internal] libusb_submit_transfer() = 0
    [device.c:399] end uvc_open_internal (0)
    [device.c:333] end uvc_open (0)
    
     
    @mcuee
     
     
    Member

    mcuee commented on Aug 5

     

    Main difference:
    macOS 11.x

    [device.c:942/uvc_claim_if] claiming interface 0
    [ 7.430490] [0014a84b] libusb: debug [libusb_claim_interface] interface 0
    [ 7.432406] [0014a84b] libusb: debug [get_endpoints] building table of endpoints.
    [ 7.433185] [0014a84b] libusb: debug [get_endpoints] interface: 0 pipe 1: dir: 1 number: 4
    [ 7.433247] [0014a84b] libusb: debug [darwin_claim_interface] interface opened
    

    macOS 12 beta: claiming interface failed. So there is a kernel driver (or maybe system application) which opened the device for exclusive access. You may have to contact Apple for help.

    [device.c:942/uvc_claim_if] claiming interface 0
    [ 0.708245] [00018c33] libusb: debug [libusb_claim_interface] interface 0
    [ 0.708766] [00018c33] libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access
    [device.c:951] end uvc_claim_if (-3)
    
     
     
     
    Open
    @hjelmn
     
     
    Member

    hjelmn commented on Aug 8

    Think I know how I broke it. Fixing now....

    @hjelmn
     
     
    Member

    hjelmn commented on Aug 8

    Opps. Wrong bug :).

    @mcuee
     
     
    Member

    mcuee commented on Aug 8

    @hl0521 You may want to give latest git a try again (to run with sudo) under macOS 12 beta. Nathan just fixed an issue and it might help you under macOS 12 beta.

    Reference discussion: #911

    @hl0521
     
     
    Author

    hl0521 commented on Aug 8

     

    @hl0521 You may want to give latest git a try again (to run with sudo) under macOS 12 beta. Nathan just fixed an issue and it might help you under macOS 12 beta.

    Reference discussion: #911

    It works when running with sudo. Thanks.

    I also found another issue: when calling "uvc_close" in libuvc, the following line of code in function "libusb_free_transfer" oftern lead to program crash.
    usbi_dbg(TRANSFER_CTX(transfer), "transfer %p", transfer);
    The cause is null pointer in TRANSFER_CTX(transfer), the object may have been released in other place. When I comment this line of code, the program can work.

    @mcuee
     
     
    Member

    mcuee commented on Aug 8

    Thanks for the updates. Then there is no issue with libusb already. I will close this issue.

    The proper way (without using sudo) is for the developer to get the right entitlement as per the following discussion: #911

    kUSBReEnumerateCaptureDeviceMask requires either the application to be running as root OR the application has the entitlement com.apple.vm.device-access AND the user has accepted the authorization for the capture with IOServiceAuthorize.

     
     
    @mcuee mcuee closed this on Aug 8
    @mcuee
     
     
    Member

    mcuee commented on Aug 8

    I also found another issue: when calling "uvc_close" in libuvc, the following line of code in function "libusb_free_transfer" oftern lead to program crash.
    usbi_dbg(TRANSFER_CTX(transfer), "transfer %p", transfer);
    The cause is null pointer in TRANSFER_CTX(transfer), the object may have been released in other place. When I comment this line of code, the program can work.

    You may want to report the issue to libuvc, looks like a bug in libuvc. But if you think it is an issue with libusb, please create a new issue and post the debug log. Thanks.

    @scchn
     
     
     

    scchn commented on Aug 12

    Non-VM apps on the App Store have no way to get the 'com.apple.vm.device-access' or run as root by default.
    Contacted apple and they suggested that I file a bug about this problem since macOS 12 is still in beta.

     
    @mcuee
     
     
    Member

    mcuee commented on Aug 12

    Non-VM apps on the App Store have no way to get the 'com.apple.vm.device-access' or run as root by default.
    Contacted apple and they suggested that I file a bug about this problem since macOS 12 is still in beta.

    Thanks for the updates. As for the first sentence, I am not so sure if it is correct or not. I think it is not correct to say "non-VM apps".

    @scchn
     
     
     

    scchn commented on Aug 12

    Ha, me either.

    Quote from the mail:

    That entitlement is intended for virtual machine (VM) apps that need to ship in the Mac App Store
    (hence the `vm` in `com.apple.vm.device-access`).
    
    @mcuee
     
     
    Member

    mcuee commented on Aug 12

    Do not worry too much about the vm in the name.

    https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_vm_device-access
    The entitlement is required to use the IOUSBHost APIs for USB device capture.

    @mcuee
     
     
    Member

    mcuee commented 28 days ago

    https://github.com/libusb/libusb/wiki/FAQ#how-can-i-run-libusb-applications-under-mac-os-x-if-there-is-already-a-kernel-extension-installed-for-the-device-and-claim-exclusive-access

    Updates on Oct 2021: with the merging of pull request #911, support for detaching kernel drivers with authorization has been added. This will be included in the upcoming 1.0.25 release. Take note the underlying macOS capture APIs only work on the whole device and not on individual interfaces. So this will force all the kernel extensions (drivers) bound to all the interfaces of a USB Composite devices to be released (Issue #920). You will need to get the entitlement from Apple Developer support, create a provisioning profile with that entitlement, and build your app with that profile. Please take note that command line apps cannot use provisioning profiles and therefore cannot hold this entitlement.

     
     
    @mcuee mcuee changed the title MacOS Monterey 12.0 Beta, libuvc, libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access MacOS Monterey 12.0, libuvc, libusb: info [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access 20 days ago
     
     
    @mcuee mcuee reopened this 20 days ago
    @mcuee
     
     
    Member

    mcuee commented 18 days ago

    Please refer to the following discussion as well for further info. Apple support seems to say that the 'com.apple.vm.device-access' is not the right entitlement for this purpose.

     
     
    Open
    @mcuee
     
     
    Member

    mcuee commented 15 days ago

     

    Ref: libuvc/libuvc#188

    If you are just testing, then you can use latest libusb git and sudo. The following is with my Mac Mini M1 running macOS 12.0.1.

    mcuee@mcuees-Mac-mini build % sudo ./example 
    UVC initialized
    Device found
    Device opened
    DEVICE CONFIGURATION (0ac8:3420/[none]) ---
    Status: idle
    VideoControl:
    	bcdUVC: 0x0100
    VideoStreaming(1):
    	bEndpointAddress: 130
    	Formats:
    	UncompressedFormat(1)
    		  bits per pixel: 16
    		  GUID: 5955593200001000800000aa00389b71 (YUY2)
    		  default frame: 1
    		  aspect ratio: 0x0
    		  interlace flags: 00
    		  copy protect: 00
    			FrameDescriptor(1)
    			  capabilities: 00
    			  size: 640x480
    			  bit rate: 768000-196608000
    			  max frame size: 614400
    			  default interval: 1/30
    			  interval[0]: 1/30
    			  interval[1]: 1/14
    			FrameDescriptor(2)
    			  capabilities: 00
    			  size: 352x288
    			  bit rate: 768000-196608000
    			  max frame size: 202752
    			  default interval: 1/30
    			  interval[0]: 1/30
    			  interval[1]: 1/14
    			FrameDescriptor(3)
    			  capabilities: 00
    			  size: 320x240
    			  bit rate: 768000-196608000
    			  max frame size: 153600
    			  default interval: 1/30
    			  interval[0]: 1/30
    			  interval[1]: 1/14
    			FrameDescriptor(4)
    			  capabilities: 00
    			  size: 176x144
    			  bit rate: 768000-196608000
    			  max frame size: 50688
    			  default interval: 1/30
    			  interval[0]: 1/30
    			  interval[1]: 1/14
    			FrameDescriptor(5)
    			  capabilities: 00
    			  size: 160x120
    			  bit rate: 768000-196608000
    			  max frame size: 38400
    			  default interval: 1/30
    			  interval[0]: 1/30
    			  interval[1]: 1/14
    			StillFrameDescriptor
    			  bEndPointAddress: 00
    			  wWidth(1) = 640
    			  wHeight(1) = 480
    			  wWidth(2) = 352
    			  wHeight(2) = 288
    			  wWidth(3) = 320
    			  wHeight(3) = 240
    			  wWidth(4) = 176
    			  wHeight(4) = 144
    			  wWidth(5) = 160
    			  wHeight(5) = 120
    END DEVICE CONFIGURATION
    
    First format: (YUY2) 640x480 30fps
    bmHint: 0001
    bFormatIndex: 1
    bFrameIndex: 1
    dwFrameInterval: 333333
    wKeyFrameRate: 0
    wPFrameRate: 0
    wCompQuality: 0
    wCompWindowSize: 0
    wDelay: 0
    dwMaxVideoFrameSize: 614400
    dwMaxPayloadTransferSize: 2688
    bInterfaceNumber: 1
    Streaming...
    Enabling auto exposure ...
     ... full AE not supported, trying aperture priority mode
     ... enabled aperture priority auto exposure mode
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = 12345
    ...
    
    
     
     
    @mcuee
     
     
    Member

    mcuee commented 15 days ago

    ANother libuvc issue is here: libuvc/libuvc#194

     
     
    to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    Projects
    None yet
    Linked pull requests

    Successfully merging a pull request may close this issue.

    None yet
    4 participants
  • 相关阅读:
    感谢燕玲,搞定了客商名称输入即开始检测是否存在
    一步一步学习sqlserverBI多维数据库建立
    sql语句创建文件夹、判断文件夹、创建数据库、表、
    自定义Silverlight DataGrid行列:Defining Columns for a Silverlight DataGrid
    精简版XP SP3安装IIS6,过程坎坷,以此文献给有需要的朋友
    SilverLight 4页面跳转大全(转载)
    如何修改.net framework(转载)
    定义silverlight报表样式Styling a Silverlight Chart
    Silverlight Toolkit DataGrid 单元格内容对齐样式
    一步一步学习sqlserver BI数据仓库设计
  • 原文地址:https://www.cnblogs.com/jiftle/p/15611136.html
Copyright © 2020-2023  润新知