Question

J'ai le problème suivant: j'ai un appareil GPS WBT-202 Wintec qui a la capacité de transmettre les données de localisation en direct sous forme de données NMEA sur USB. À l'intérieur de cet USB, c'est juste un pont USB vers Serial qui est exécuté sous Windows en utilisant la norme usbser.sys chauffeur.

Mon problème est de le faire fonctionner sous Mac OS X.

Le matériel La souris GPS USB utilise une puce ATMEL ATRED AT91SAM7S256 qui est également responsable de l'interface USB.

Le problème Sous Mac OS X, il ne se passe rien. Il n'y a aucun nouveau périphérique de caractère créé sous /dev pour rendre cet appareil accessible.

Sous Windows le pilote standard usbser.sys est utilisé. Il y a juste un fichier .inf pointant le vendorid et le produit à ce pilote. De l'utilisation de Snoopy Pro sur Windows (un logiciel de reniflement USB), je sais qu'une fois que l'appareil est correctement initialisé, il envoie les données sous forme de chaînes ASCII NMEA, ce que je veux.

question 1 Y'a-t-il un usbser.sys Équivalent pour Mac OS X? Si oui, un KEXT sans code pourrait-il être utilisé pour s'assurer que la correspondance du pilote se produit correctement?

Si cela ne fonctionnait pas, j'utiliserais IOKIT à partir de l'espace utilisateur pour envoyer et recevoir des messages à l'appareil. J'ai toujours des questions sur la façon dont cela fonctionnerait en détail, car je ne comprends pas pleinement la documentation d'Apple. Si un périphérique USB est connecté, la correspondance du pilote se produit. Que se passe-t-il si aucun conducteur n'est trouvé.

question 2 Se pourrait-il que alors un pilote USB générique soit chargé à laquelle je suis capable de "parler" dans le noyau de l'espace utilisateur? Comment savoir que le bon pilote est chargé?

question 3 J'ai vu qu'il y avait une session de "démarrage avec un kit d'E / S" dans WWDC08 Y a-t-il un moyen d'accéder à cette vidéo de session?

J'ai ajouté quelques journaux d'USBProbe et de l'extrait de registre d'E / S.

Tout commentaire sur la façon dont je pourrais démarrer quelle documentation fournit un tutoriel décent serait grandement apprécié.

J'ai regardé dans Mac OS X internes - un système internes Par Amit Singh, la documentation d'Apple "Démarrage avec un kit d'E / S", "I / S Kit Fundamentals Guide" et l'échantillon de données privées USB.

ANNEXE

Sonde USB

Full Speed device @ 8 (0xFD360000): .............................................   Communication device: "WINTEC WBT202 CDC"
    Port Information:   0x0019
           Captive
           External Device
           Connected
           Enabled
    Device Descriptor   
        Descriptor Version Number:   0x0200
        Device Class:   2   (Communication)
        Device Subclass:   0
        Device Protocol:   0
        Device MaxPacketSize:   8
        Device VendorID/ProductID:   0x03EB/0x6119   (Atmel Corporation)
        Device Version Number:   0x0100
        Number of Configurations:   1
        Manufacturer String:   0 (none)
        Product String:   1 "WINTEC WBT202 CDC"
        Serial Number String:   0 (none)
    Configuration Descriptor   
        Length (and contents):   67
            Raw Descriptor (hex)    0000: 09 02 43 00 02 01 00 C0  32 09 04 00 00 01 02 02  
            Raw Descriptor (hex)    0010: 00 00 05 24 00 10 01 05  24 01 01 00 04 24 02 02  
            Raw Descriptor (hex)    0020: 05 24 06 00 01 07 05 83  03 40 00 0A 09 04 01 00  
            Raw Descriptor (hex)    0030: 02 0A 00 00 00 07 05 01  02 40 00 00 07 05 82 02  
            Raw Descriptor (hex)    0040: 40 00 00 
        Number of Interfaces:   2
        Configuration Value:   1
        Attributes:   0xC0 (self-powered)
        MaxPower:   100 ma
        Interface #0 - Communications-Control   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   2   (Communications-Control)
            Interface Subclass;   2
            Interface Protocol:   0
            Comm Class Header Functional Descriptor   
                Raw Descriptor (hex)   0000: 05 24 00 10 01 
            Comm Class Call Management Functional Descriptor   
                Raw Descriptor (hex)   0000: 05 24 01 01 00 
            Comm Class Abstract Control Management Functional Descriptor   
                Raw Descriptor (hex)   0000: 04 24 02 02 
            Comm Class Union Functional Descriptor   
                Raw Descriptor (hex)   0000: 05 24 06 00 01 
            Endpoint 0x83 - Interrupt Input   
                Address:   0x83  (IN)
                Attributes:   0x03  (Interrupt no synchronization data endpoint)
                Max Packet Size:   64
                Polling Interval:   10 ms
        Interface #1 - Communications-Data/Unknown Comm Class Model   
            Alternate Setting   0
            Number of Endpoints   2
            Interface Class:   10   (Communications-Data)
            Interface Subclass;   0   (Unknown Comm Class Model)
            Interface Protocol:   0
            Endpoint 0x01 - Bulk Output   
                Address:   0x01  (OUT)
                Attributes:   0x02  (Bulk no synchronization data endpoint)
                Max Packet Size:   64
                Polling Interval:   0 ms
            Endpoint 0x82 - Bulk Input   
                Address:   0x82  (IN)
                Attributes:   0x02  (Bulk no synchronization data endpoint)
                Max Packet Size:   64
                Polling Interval:   0 ms

Registre IO

 8: WINTEC WBT202 CDC@fd360000  <class IOUSBDevice>
     AppleUSBCDC  <class AppleUSBCDC>
     IOUSBInterface@0  <class IOUSBInterface>
         AppleUSBCDCACMControl  <class AppleUSBCDCACMControl>
     IOUSBInterface@1  <class IOUSBInterface>
   bcdDevice   256 (0x100)
   bDeviceClass   2 (0x2)
   bDeviceProtocol   0 (0x0)
   bDeviceSubClass   0 (0x0)
   bMaxPacketSize0   8 (0x8)
   bNumConfigurations   1 (0x1)
   Bus Power Available   250 (0xfa)
   Device Speed   1 (0x1)
   idProduct   24857 (0x6119)
   idVendor   1003 (0x3eb)
   iManufacturer   0 (0x0)
   IOCFPlugInTypes   
       9dc7b780-9ec0-11d4-a54f-000a27052861   IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle
   IOGeneralInterest   IOCommand is not serializable
   IOUserClientClass   IOUSBDeviceUserClientV2
   iProduct   1 (0x1)
   iSerialNumber   0 (0x0)
   locationID   -46792704 (0xfd360000)
   Low Power Displayed   No
   non-removable   yes
   PortNum   6 (0x6)
   Requested Power   50 (0x32)
   sessionID   1167822359 (0x459b8e17459b8e17)
   USB Address   5 (0x5)
   USB Product Name   WINTEC WBT202 CDC

Appareil de connexion de la sonde USB attacher

   12.719 [5]   AppleUSBHub[0x6805a00]::ProcessStatusChanged found (0x      40) in statusChangedBitmap
   12.719 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(+) now (1)
   12.719 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: port 6 obtained runLock
   12.719 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: calling GetPortStatus for port 6
   12.719 [5]   AppleUSBHub[0x6805a00]::powerChangeDone - spawning _checkForActivePortsThread
   12.719 [5]   AppleUSBEHCI[0x65ea000]::FindControlBulkEndpoint (inactive) - linking to active list: 65997c0
   12.719 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - Hub 0xfd300000 port 6 - Initial status(0x0101)/change(0x0001)
   12.719 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - change 4 clearing feature 0x10.
   12.719 [5]   AppleUSBHub[0x6805a00]::ClearPortFeature port/feature (60010) - clearing
   12.719 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - status(0x0101) - change(0x0000) - before call to (4) handler function
   12.719 [5]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler - handling port 6 changes (101,0).
   12.719 [5]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler port (6) - waiting 100 ms before asserting reset
   12.819 [5]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler - port 6 - no existing device found on port
   12.820 [4]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler port 6 status(0101)/change(0000) - no error from GetPortStatus
   12.820 [5]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler - port 6 - device detected, calling AddDevice
   12.820 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(+) now (2)
   12.820 [5]   AppleUSBHubPort[0x6807200]::DefaultConnectionChangeHandler - port 6 done, ending.
   12.820 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - err (0) on return from  call to (4) handler function
   12.820 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: calling GetPortStatus for port 6
   12.820 [5]   ***** AppleUSBHubPort[0x6807200]::AddDevice - port 6 on hub at 0xfd300000 - start
   12.820 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - Hub 0xfd300000 port 6 - Initial status(0x0101)/change(0x0000)
   12.820 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - err = 0 - done, releasing _runLock
   12.820 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(-) now (1)
   12.820 [3]   AppleUSBHub[0x6805a00]::DecrementOutstandingIO(269), outstandingIO(0), _interruptReadPending(false) - rearming read
   12.820 [5]   AppleUSBHub[0x6805a00]::DecrementOutstandingIO(269) - spawning _checkForActivePortsThread
   12.820 [5]   ***** AppleUSBHubPort[0x6807200]::AddDevice - port 6 on hub at 0xfd300000 - bus 0x65ea000 - acquiring dev zero lock
   12.820 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - about to obtain device zero lock
   12.820 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - not already locked - obtaining
   12.820 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - setting _devZeroLock to true
   12.820 [5]   AppleUSBEHCI[0x65ea000]: Acquired Device Zero
   12.820 [5]   ***** AppleUSBHubPort[0x6807200]::AddDevice - port 6 on hub at 0xfd300000 - resetting port
   12.820 [5]   AppleUSBHub[0x6805a00]::SetPortFeature port/feature (60004) - setting
   12.821 [5]   ***** AppleUSBHubPort[0x6807200]::AddDevice - port 6 on hub at 0xfd300000 - (err = 0) done - returning .
   12.821 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(-) now (0)
   12.879 [5]   AppleUSBHub[0x6805a00]::ProcessStatusChanged found (0x      40) in statusChangedBitmap
   12.879 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(+) now (1)
   12.879 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: port 6 obtained runLock
   12.879 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: delaying 100ms before first GetPortStatus after a reset of port 6
   12.879 [5]   AppleUSBHub[0x6805a00]::powerChangeDone - spawning _checkForActivePortsThread
   12.979 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler: calling GetPortStatus for port 6
   12.979 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - Hub 0xfd300000 port 6 - Initial status(0x0103)/change(0x0010)
   12.979 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - change 1 clearing feature 0x14.
   12.979 [5]   AppleUSBHub[0x6805a00]::ClearPortFeature port/feature (60014) - clearing
   12.979 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - status(0x0103) - change(0x0000) - before call to (1) handler function
   12.979 [5]   ***** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6 on hub at 0xfd300000 - start - status(0x0103) change (0x0000)
   12.979 [5]   **1** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6 on hub at 0xfd300000 - delaying 10 ms
   12.989 [5]   **2** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6 on hub at 0xfd300000 - found full speed device
   12.989 [5]   **2** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6 on hub at 0xfd300000 - configuring dev zero
   12.989 [5]   AppleUSBEHCI[0x65ea000]::ConfigureDeviceZero, new method called with hub:3, port:6
   12.989 [5]   AppleUSBEHCI[0x65ea000]::CreateDevice, high speed ancestor hub:3, port:6
   12.989 [5]   AppleUSBEHCI[0x65ea000]::DoCreateEP, high speed ancestor hub:3, port:6
   12.989 [3]   AppleUSBEHCI[0x65ea000]::UIMCreateControlEndpoint(0, 0, 8, 1 @(3, 6))
   12.989 [5]   **3** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6 on hub at 0xfd300000 - getting dev zero desc
   12.990 [5]   **3** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6, using 8 for maxPacketSize
   12.992 [5]   **5** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6, Releasing DeviceZero after successful SetAddress to 5
   12.992 [5]   AppleUSBEHCI[0x65ea000]::UIMDeleteEndpoint: unlinking async endpoint
   12.993 [5]   AppleUSBEHCI[0x65ea000]::UIMDeleteEndpoint: Deallocating 0x68bd700
   12.993 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - about to release device zero lock
   12.993 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - releasing lock
   12.993 [5]   AppleUSBEHCI[0x65ea000]::ProtectedDevZeroLock - wakeup done
   12.993 [5]   AppleUSBEHCI[0x65ea000]:: Released Device Zero
   12.993 [5]   AppleUSBEHCI[0x65ea000]::CreateDevice, new method called with hub:3, port:6
   12.993 [5]   AppleUSBEHCI[0x65ea000]::CreateDevice, high speed ancestor hub:3, port:6
   12.993 [5]   AppleUSBEHCI[0x65ea000]::CreateDevice: addr=5, speed=full, power=500
   12.993 [5]   IOUSBDevice @ 5 (500mA available, full speed)
   12.993 [5]   AppleUSBEHCI[0x65ea000]::DoCreateEP, high speed ancestor hub:3, port:6
   12.993 [3]   AppleUSBEHCI[0x65ea000]::UIMCreateControlEndpoint(5, 0, 8, 1 @(3, 6))
   12.993 [5]   IOUSBDevice[0xd335c00]::GetDeviceDescriptor (size 18)
   12.994 [5]   IOUSBDevice[0xd335c00]::GetStringDescriptor Got string descriptor 1, length 36, got 36
   12.994 [5]   **10** AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler -  port 6, at addr: 5, Successful
   12.994 [5]   AppleUSBHub[0x6805a00]::GetPortInformation  for port[6]
   12.995 [5]   WINTEC WBT202 CDC[0xd335c00]::GetDeviceInformation  Hub device name is HubDevice at USB address 3
   12.995 [5]   AppleUSBHub[0x6656800]::GetPortInformation  for port[3]
   12.995 [5]   AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - Port 6 of Hub at 0xfd300000 (USB Address: 5), calling registerService for device WINTEC WBT202 CDC
   12.995 [5]   AppleUSBHubPort[0x6807200]::AddDeviceResetChangeHandler - port 6, err = 0, ALL DONE
   12.995 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - err (0) on return from  call to (1) handler function
   12.995 [5]   AppleUSBHubPort[0x6807200]::PortStatusChangedHandler - port 6 - err = 0 - done, releasing _runLock
   12.995 [3]   AppleUSBHub[0x6805a00]::ChangeRaisedPowerState(-) now (0)
   12.995 [3]   AppleUSBHub[0x6805a00]::DecrementOutstandingIO(274), outstandingIO(0), _interruptReadPending(false) - rearming read
   12.995 [5]   AppleUSBHub[0x6805a00]::DecrementOutstandingIO(274) - spawning _checkForActivePortsThread
   12.999 [5]   Finding device driver for WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDC, score: 69000, wildCard = 0
   12.999 [5]   Finding device driver for WINTEC WBT202 CDC, matching personality using com.apple.iokit.IOUSBUserClient, score: 106999, wildCard = 3
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::handleOpen - [0xdd78880] is not an IOUSBInterface
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::TakeGetConfigLock - calling through to ChangeGetConfigLock
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::ChangeGetConfigLock - setting _GETCONFIGLOCK to true
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::GetFullConfigurationDescriptor - Index (0) - getting first 4 bytes of config descriptor
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::GetConfigDescriptor (length: 4)
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::GetFullConfigurationDescriptor - Index (0) - getting full 67 bytes of config descriptor
   13.002 [5]   WINTEC WBT202 CDC[0xd335c00]::GetConfigDescriptor (length: 67)
   13.003 [5]   WINTEC WBT202 CDC[0xd335c00]::ReleaseGetConfigLock - calling through to ChangeGetConfigLock
   13.003 [5]   WINTEC WBT202 CDC[0xd335c00]::ChangeGetConfigLock - setting _GETCONFIGLOCK to false and calling commandWakeup
   13.503 [5]   WINTEC WBT202 CDC[0xd335c00]::TerminateInterfaces interfaceList 0 terminate: 1
   13.503 [5]   WINTEC WBT202 CDC[0xd335c00]::SetConfiguration to 1
   13.504 [5]   WINTEC WBT202 CDC[0xd335c00]::SetConfiguration  Found InterfaceDescription[0] = 0x68bc889
   13.504 [5]   WINTEC WBT202 CDC[0xd335c00]::SetConfiguration  Found InterfaceDescription[1] = 0x68bc8ac
   13.504 [5]   WINTEC WBT202 CDC[0xd335c00]::RegisterInterfaces interfaceArray 0x6de9b00
   13.504 [5]   WINTEC WBT202 CDC[0xd335c00]::RegisterInterfaces  matching to interface = 0x8261700
   13.553 [5]   Finding driver for interface #0 of WINTEC WBT202 CDC, matching personality using com.apple.iokit.IOUSBUserClient, score: 104999, wildCard = 5
   13.567 [5]   Finding driver for interface #0 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCACMControl, score: 50000, wildCard = 0
   13.570 [5]   AppleUSBEHCI[0x65ea000]::DoCreateEP, high speed ancestor hub:3, port:6
   13.570 [5]   AppleUSBEHCI[0x65ea000]: UIMCreateInterruptEndpoint endpoint does NOT exist (this is normal)
   13.570 [5]   AppleUSBEHCI[0x65ea000]::AllocateInterruptBandwidth - pED[0x68bd780] _speed(1)
   13.570 [3]   AppleUSBEHCITTInfo[0x682b400]::AllocatePeriodicBandwidth: pSPE[0x6f8ae40]
   13.570 [5]   AppleUSBEHCISplitPeriodicEndpoint[0x6f8ae40]::FindStartFrameAndStartTime - _FSBytesUsed (78)
   13.570 [5]   AppleUSBEHCISplitPeriodicEndpoint[0x6f8ae40]::FindStartFrameAndStartTime - using Start Time entry found - _startFrame(1) _startTime(36)
   13.570 [5]   AppleUSBEHCI[0x65ea000]::AllocateInterruptBandwidth - returning 0x0(success)
   13.571 [5]   AppleUSBHub[0x6805a00]::powerChangeDone - spawning _checkForActivePortsThread
   13.573 [5]   WINTEC WBT202 CDC[0xd335c00]::RegisterInterfaces  matching to interface = 0xd337700
   13.621 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.iokit.IOUSBUserClient, score: 104999, wildCard = 5
   13.636 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCACMData, score: 50000, wildCard = 0
   14.024 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCACMData, score: 50000, wildCard = 0
   14.075 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.iokit.IOUSBUserClient, score: 104999, wildCard = 5
   14.089 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCACMData, score: 50000, wildCard = 0
   14.090 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCECMData, score: 50000, wildCard = 0
   14.266 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCECMData, score: 50000, wildCard = 0
   14.315 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.iokit.IOUSBUserClient, score: 104999, wildCard = 5
   14.330 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCACMData, score: 50000, wildCard = 0
   14.330 [5]   Finding driver for interface #1 of WINTEC WBT202 CDC, matching personality using com.apple.driver.AppleUSBCDCECMData, score: 50000, wildCard = 0
   14.334 [5]   WINTEC WBT202 CDC[0xd335c00]::SetConfiguration  returning success

Modifier: annexé l'extrait de fichier journal à partir de console.app après le périphérique attacher

16.02.11 09:05:55   kernel  0        0 AppleUSBCDCACMControl: getFunctionalDescriptors - Descriptors are incorrect, checking...
16.02.11 09:05:55   kernel  0        1 AppleUSBCDCACMData: start - Find CDC driver for data interface failed
Était-ce utile?

La solution

La réponse que j'ai obtenue en publiant sur la liste de diffusion USB d'Apple est que l'Apple AppleUSBCDCACMData Le conducteur a un bogue dans l'informatique empêchant de faire son travail. J'ai déposé un bogue sur le radar d'Apple et j'espère qu'ils le corrigeront bientôt.

Autres conseils

Il semble que le pilote CDC du système correspond correctement, ce qui devrait créer /dev/ttyusbmodem* IIRC, je vérifierais les journaux système pour les messages d'erreur au cas où cela ne fonctionnerais pas.

Si vous êtes un programmeur de pilotes USB, vous devez télécharger le code source du projet AppleUSBCDCDriver, qui contient AppleUSBCDCDriver.Kext, AppleUSBCDCACMControl.kext, AppleUSBCDCACMDATA.Kext, AppleUSBCDCECMControl.kext, AppleUSBCDCECMDATA.Kext.

Ce que je peux promettre, c'est que vous pourriez définitivement résoudre ce problème en corrigeant le code et en construisant votre propre pilote. (N'oubliez pas de changer le nom de la classe du pilote.)

Ce que je peux confirmer, c'est que l'AppleUSBCDCDRIVER est principalement conçu en fonction de la spécification de classe de dispositifs de communication standard, et y compris la considération par l'équipe de développement d'Apple, et ce problème ne devrait pas être un bogue.

Sur Mac OS, la correspondance du pilote est principalement en fonction de l'info.plist du pilote, tout comme le fichier .inf sur Windows.

Il y a une solution de contournement pour le bogue mentionné dans AppleUSBCDCACMData. Vous devez attribuer une interface au descripteur de gestion des appels. Vous l'avez réglé sur 00.

Tu montres:

Comm Class Call Management Functional Descriptor
Raw Descriptor (hex) 0000: 05 24 01 01 00

Qui manque et affectation. En utilisant les bibliothèques ATMEL USB, cela ressemblerait à ceci:

// Class-specific call management functional descriptor`
{ sizeof(CDCCallManagementDescriptor),
CDCGenericDescriptor_INTERFACE,
CDCGenericDescriptor_CALLMANAGEMENT,
CDCCallManagementDescriptor_SELFCALLMANAGEMENT,
1 // <--needed for MacOS
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top