I'm trying to getting this going, but I can't build with the reference to
USBDeviceReEnumerate(). Xcode 6 says there's no such function, even though I
have included the IOKit and CoreFoundation frameworks in the project build
settings and imported the include files.
Code snippet:
#import <IOKit/IOKitLib.h>
#import <IOKit/usb/IOUSBLib.h>
. . .
if ( USBDeviceReEnumerate( (*deviceInterface), 0 ) != kIOReturnSuccess ) {
Xcode says: "Implicit declaration of function 'USBDeviceReEnumerate'", and the
build fails with: "ld: symbol(s) not found for architecture x86_64"
If I click on the function name in my code, Xcode says: "Declared in
IOUSBLib.h" Clicking on that, it shows the path is: Frameworks > IOKit > usb >
IOUSBLib.h, which I have included.
So what is going wrong here?
-Carl
On Dec 15, 2014, at 11:34 AM, Carl Hoefs <[email protected]> wrote:
> At last a ray of hope! Is there any documentation on USBDeviceReEnumerate()
> beyond the few lines in IOUSBLib.h?
> -Carl
>
>
> On Dec 15, 2014, at 11:15 AM, Fernando Urbina <[email protected]> wrote:
>
>> Have you guys looked at the USBDeviceReEnumerate() API? If the composite
>> driver has grabbed your device, you can cause it to re-enumerate and run the
>> driver matching process again. The version of this call in the 10.10 SDK
>> also has some interesting parameters.
>>
>>
>>> On Dec 15, 2014, at 10:46 AM, Carl Hoefs <[email protected]>
>>> wrote:
>>>
>>>
>>> On Dec 15, 2014, at 1:56 AM, Roland King <[email protected]> wrote:
>>>
>>>>>
>>>>> So the .. good news .. is that my device does exactly what your device
>>>>> does. I have a number of CDC devices, picked one at random (a Nordic
>>>>> dongle with embedded Segger which presents as a CDC device + extra
>>>>> interface). It properly identifies very similarly to yours when plugged
>>>>> in, on boot however it’s claimed by the composite driver, which seems
>>>>> pretty wrong as it has a bDeviceClass and bDeviceSubclass which are
>>>>> non-zero.
>>>>>
>>>>> I’ve found no way of forcing the USB subsystem to re-enumerate/re-probe
>>>>> it.
>>>>>
>>>>> So my handwaving guess here is that at-boot the CDC driver isn’t enabled,
>>>>> or not probed or not used and the device gets claimed by the composite. I
>>>>> don’t know if that’s because the CDC kext isn’t loaded early or because
>>>>> the composite driver has changed and is picking up things it shouldn’t
>>>>> which it didn’t used to, leaving them for later kext loads.
>>>>>
>>>>> I’ll file a bug.
>>>>>
>>>>
>>>> My bug (18845268) was just closed as a duplicate of 18731228. That bug is
>>>> currently marked as open. At least that means the issue has been
>>>> determined to be a bug which may be the first stage to having it fixed one
>>>> day soon.
>>>
>>> That’s good to know! Very soon this will become a huge issue for us. Out of
>>> necessity we're converting over our older 10.8 systems to newer Apple
>>> hardware that runs only 10.10+. There’s no way to “replug” a USB device
>>> within a sealed kiosk system, so we’ll be needing either an outright fix or
>>> a some kind of workaround that can be run after boot (such as a manual bus
>>> rescan).
>>> -Carl
>>>
>>
>>
>> Woof,
>>
>> Nano Urbina
>> Build Slave
>> Razz Software
>> http://www.razzsoftware.com
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Usb mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/usb/newslists%40autonomy.caltech.edu
>
> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com
This email sent to [email protected]