Re: kIOReturnExclusiveAccess from USBInterfaceOpen()
Subject : Re: kIOReturnExclusiveAccess from USBInterfaceOpen()
From: Kris Daniel <email@hidden >
Date: Thu, 2 Oct 2003 10:09:10 -0700
Here's the IOService plane dump, the device is on the USB bus. The
machine is a dual-G4, and the OS is 10.2.8. I loaded the kext without
the 2nd open attempt, saw the failure in USB Prober's USB Log, and
dumped the IOService plane as instructed.
| | | +-o GuitarPort@1b100000 <class IOUSBDevice>
| | | | {
| | | | "bDeviceSubClass" = 0
| | | | "bcdDevice" = 1
| | | | "idVendor" = 3649
| | | | "IOUserClientClass" = "IOUSBDeviceUserClient"
| | | | "USB Vendor Name" = "Line 6"
| | | | "iManufacturer" = 1
| | | | "Device Speed" = 1
| | | | "sessionID" = 143872086340
| | | | "locationID" = 454033408
| | | | "iProduct" = 2
| | | | "bDeviceProtocol" = 0
| | | | "bDeviceClass" = 255
| | | | "PortNum" = 1
| | | | "idProduct" = 18256
| | | | "Bus Power Available" = 250
| | | | "bMaxPacketSize0" = 8
| | | | "USB Address" = 2
| | | | "USB Product Name" = "GuitarPort"
| | | | "IOCFPlugInTypes" =
{"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/
PlugIns/IOUSBLib.bundle"}
| | | | "bNumConfigurations" = 1
| | | | "iSerialNumber" = 0
| | | | }
| | | |
| | | +-o com_line6_L6KUsbIo <class com_line6_L6KUsbIo>
| | | | | {
| | | | | "bcdDevice" = 1
| | | | | "idVendor" = 3649
| | | | | "Power Management private data" = "{ this object
= 0252da00, interested driver = 0252da00, driverDesire = 1,
deviceDesire = 0, ourDesiredPowerState = 1, previousRequest = 2 }"
| | | | | "AudioEngines" =
({"NumStreams"=1,"Formats"=({"IOAudioStreamSampleFormat"="1819304813","I
OAudioStreamAlignment"=1,"IOAudioStreamBitWidth"=16,"IOAudioStreamNumeri
cRepresentation"=1936289396,"IOAudioStream$
| | | | | "IOProviderClass" = "IOUSBDevice"
| | | | | "IOAudioDeviceManufacturerName" = "Line 6"
| | | | | "CFBundleIdentifier" =
"com.line6.driver.guitarport"
| | | | | "IOAudioDeviceShortName" = "GuitarPort"
| | | | | "Power Management protected data" = "{
theNumberOfPowerStates = 2, version 1, power state 0 = {
capabilityFlags 00000000, outputPowerCharacter 00000000,
inputPowerRequirement 00000000, staticPower 0, unb$
| | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | "IOClass" = "com_line6_L6KUsbIo"
| | | | | "IOAudioDeviceName" = "Line 6 GuitarPort"
| | | | | "idProduct" = 18256
| | | | | "IOProbeScore" = 100000
| | | | | }
| | | | |
| | | | +-o AppleUSBAudioEngine <class AppleUSBAudioEngine>
| | | | {
| | | | "IOAudioEngineSampleOffset" = 0
| | | | "IOAudioStreamSampleFormatByteOrder" = "Little
Endian"
| | | | "IOAudioEngineGlobalUniqueID" =
"AppleUSBAudioEngine:Line 6:GuitarPort:100000:0"
| | | | "IOAudioEngineState" = 0
| | | | }
| | | |
| | | +-o IOUSBInterface@0 <class IOUSBInterface>
| | | | | {
| | | | | "bcdDevice" = 1
| | | | | "idVendor" = 3649
| | | | | "iInterface" = 0
| | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient"
| | | | | "bConfigurationValue" = 1
| | | | | "bInterfaceNumber" = 0
| | | | | "bInterfaceSubClass" = 0
| | | | | "bInterfaceProtocol" = 0
| | | | | "locationID" = 454033408
| | | | | "bNumEndpoints" = 2
| | | | | "IOCFPlugInTypes" =
{"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/
PlugIns/IOUSBLib.bundle"}
| | | | | "idProduct" = 18256
| | | | | "bInterfaceClass" = 255
| | | | | "bAlternateSetting" = 0
| | | | | }
| | | | |
| | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit>
| | | | {
| | | | "IOProviderMergeProperties" =
{"IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51-
000a27052861"="IOUSBFamily.kext/Contents/PlugIns/
IOUSBLib.bundle"},"IOUserClientClass"="IOUSBInterfaceUserClient"}
| | | | "IOProviderClass" = "IOUSBInterface"
| | | | "IOMatchCategory" = "IOUSBUserClientInit"
| | | | "CFBundleIdentifier" =
"com.apple.iokit.IOUSBUserClient"
| | | | "IOProbeScore" = 9000
| | | | "IOClass" = "IOUSBUserClientInit"
| | | | }
| | | |
| | | +-o IOUSBUserClientInit <class IOUSBUserClientInit>
| | | {
| | | "IOProviderMergeProperties" =
{"IOCFPlugInTypes"={"9dc7b780-9ec0-11d4-a54f-
000a27052861"="IOUSBFamily.kext/Contents/PlugIns/
IOUSBLib.bundle"},"IOUserClientClass"="IOUSBDeviceUserClient"}
| | | "IOProviderClass" = "IOUSBDevice"
| | | "IOMatchCategory" = "IOUSBUserClientInit"
| | | "CFBundleIdentifier" =
"com.apple.iokit.IOUSBUserClient"
| | | "IOProbeScore" = 9000
| | | "IOClass" = "IOUSBUserClientInit"
| | | }
| | |
| | +-o usb@1B,1 <class IOPCIDevice>
------------------------------------------------------------------------
--------------
Here's the Info.plist for the kext:
------------------------------------------------------------------------
--------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" ;>
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>modified</string>
<key>CFBundleIdentifier</key>
<string>com.line6.driver.guitarport</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0.0d1</string>
<key>IOKitPersonalities</key>
<dict>
<key>GuitarPort</key>
<dict>
<key>AudioEngines</key>
<array>
<dict>
<key>BlockSize</key>
<integer>512</integer>
<key>Description</key>
<string>GuitarPort Audio Engine #1</string>
<key>Formats</key>
<array>
<dict>
<key>IOAudioStreamAlignment</key>
<integer>1</integer>
<key>IOAudioStreamBitDepth</key>
<integer>16</integer>
<key>IOAudioStreamBitWidth</key>
<integer>16</integer>
<key>IOAudioStreamByteOrder</key>
<integer>0</integer>
<key>IOAudioStreamDriverTag</key>
<integer>0</integer>
<key>IOAudioStreamIsMixable</key>
<integer>1</integer>
<key>IOAudioStreamNumChannels</key>
<integer>2</integer>
<key>IOAudioStreamNumericRepresentation</key>
<integer>1936289396</integer>
<key>IOAudioStreamSampleFormat</key>
<string>1819304813</string>
</dict>
</array>
<key>NumBlocks</key>
<integer>32</integer>
<key>NumStreams</key>
<integer>1</integer>
<key>SampleRates</key>
<array>
<integer>44100</integer>
<integer>48000</integer>
</array>
</dict>
</array>
<key>CFBundleIdentifier</key>
<string>com.line6.driver.guitarport</string>
<key>IOClass</key>
<string>com_line6_L6KUsbIo</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>bcdDevice</key>
<integer>1</integer>
<key>idProduct</key>
<integer>18256</integer>
<key>idVendor</key>
<integer>3649</integer>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOAudioFamily</key>
<string>1.1fc6</string>
<key>com.apple.iokit.IOUSBFamily</key>
<string>1.8</string>
</dict>
</dict>
</plist>
Thanks for taking the time to look into this. Don't be confused by the
AppleUSBAudioEngine's presence in this driver, as I was trying to use
it to get audio working. I have several directions I can go in to help
the audio aspect, just haven't had the time yet to work on it.
Kris Daniel
Line 6, Inc.
On Thursday, October 2, 2003, at 09:19 AM, Fernando Urbina wrote:
On 10/2/03 9:38 AM, "Kris Daniel" <email@hidden> wrote:
Trying to open the interface a second time, it works successfully.
Now, if Classic isn't running, and no other code of mine is opening
the
interface, what's going on?
You will still get an error in a kernel driver if somebody else, even
from
userland, has the interface open.
Can you dump the registry when your driver fails (i.e. Without
repeating
your interface->open() call):
% ioreg -l > filename.txt
And include the complete portion for your device in an email to the
list.
Also, please dump the info plist for your driver:
% pl < /path/to/your/kext/Contents/Info.plist
--
Fernando Urbina mailto:email@hidden
USB Technology Team work: 719.534.9387
Apple Computer, Inc. fax: 719.532.0981
_______________________________________________
usb mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/usb
Do not post admin requests to the list. They will be ignored.
_______________________________________________
usb mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/usb
Do not post admin requests to the list. They will be ignored.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE
Contact Apple | Terms of Use | Privacy Policy
Copyright © 2007 Apple Inc. All rights reserved.