Acceso a un dispositivo serie a USB con kit de E/S
Pregunta
Tengo el siguiente problema:Tengo un dispositivo GPS Wintec WBT-202 que tiene la capacidad de transmitir datos de ubicación en vivo como datos NMEA a través de USB.Dentro de este USB hay solo un puente USB a serie que se ejecuta en Windows usando el estándar usbser.sys
conductor.
Mi problema es conseguir que funcione en Mac OS X.
el hardware El mouse USB GPS utiliza un chip Atmel AT91SAM7S256 que también es responsable de la interfaz USB.
El problema En Mac OS X no sucede nada.No se ha creado ningún nuevo dispositivo de carácter en /dev
para que este dispositivo sea accesible.
En Windows, el controlador estándar usbser.sys
se utiliza.Solo hay un archivo .inf que apunta el ID del proveedor y el ID del producto a este controlador.Al usar Snoopy Pro en Windows (un software de detección de USB), sé que una vez que el dispositivo se inicializa correctamente, envía los datos como cadenas ASCII NMEA, que es todo lo que quiero.
Pregunta 1 Hay un usbser.sys
equivalente para Mac OS X?En caso afirmativo, ¿se podría utilizar un kext sin código para garantizar que la coincidencia de controladores se produzca correctamente?
Si esto no funcionara, usaría IOKit desde el espacio del usuario para enviar y recibir mensajes al dispositivo.Todavía tengo preguntas sobre cómo funcionaría esto en detalle, porque no entiendo completamente la documentación de Apple.Si hay un dispositivo USB conectado, se produce la coincidencia del controlador.¿Qué sucede si no se encuentra ningún controlador?
Pregunta 2 ¿Podría ser que entonces esté cargado algún controlador USB genérico con el que puedo "hablar" en el kernel desde el espacio del usuario?¿Cómo sé que está cargado el controlador correcto?
Pregunta 3 Vi que había una sesión de "introducción al kit de E/S" en WWDC08. ¿Hay alguna manera de obtener acceso al video de esta sesión?
He adjuntado algunos registros de USBProbe y el extracto del registro de E/S.
Cualquier comentario sobre cómo podría comenzar y qué documentación proporciona un tutorial decente sería muy apreciado.
he investigado Componentes internos de Mac OS X: un sistema interno por Amit Singh, la documentación de Apple "Cómo comenzar con el kit de E/S", la "Guía de fundamentos del kit de E/S" y la muestra de datos privados de USB.
APÉNDICE
Sonda 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
Registro 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
Conexión de dispositivo de inicio de sesión de sonda USB
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
EDITAR:Se agregó el extracto del archivo de registro de console.app después de conectar el dispositivo.
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
Solución
La respuesta que obtuve al publicar en la lista de correo USB de Apple es que Apple AppleUSBCDCACMData
El controlador tiene un error que impide realizar su trabajo.Presenté un error en el radar de Apple y espero que lo solucionen pronto.
Otros consejos
Parece que el controlador de CDC del sistema está coincidiendo correctamente, lo que debería crear /dev/ttyusbmodem*
IIRC, verificaría los registros del sistema para los mensajes de error en caso de que esto no funcione.
Si usted es un programador de controladores USB, debe descargar el código fuente para el proyecto AppleUSBCDCDRIGN, que contiene AppleUSBCDCDRIVER.KEXT, AppleUSBCDCACCCONTROL.KEXT, AppleUSBCCACMData.Kext, AppleUSBCDCECMCONTROL.KEXT, AppleUSBCDCETMData.kext.
Lo que puedo prometer es que, definitivamente podría resolver este problema al arreglar el código y construir su propio controlador. (Recuerde cambiar el nombre de la clase del conductor).
Lo que puedo confirmar es que, el AppleUSBCDCDRIVER está diseñado principalmente de acuerdo con la especificación de clase de dispositivo de comunicación estándar, e incluyendo la consideración del equipo de desarrollo de Apple, y este problema no debe ser un error.
En Mac OS, la coincidencia del conductor es principalmente de acuerdo con la información de información del controlador, al igual que .inf archivo en Windows.
Hay una solución para el error mencionado en AppleUSBCDCACMData
.Debe asignar una interfaz al descriptor de administración de llamadas.Lo tienes establecido en 00.
Usted muestra:
Comm Class Call Management Functional Descriptor
Raw Descriptor (hex) 0000: 05 24 01 01 00
que carece y asignación.Usando las bibliotecas ATMEL USB, se vería así:
// Class-specific call management functional descriptor`
{ sizeof(CDCCallManagementDescriptor),
CDCGenericDescriptor_INTERFACE,
CDCGenericDescriptor_CALLMANAGEMENT,
CDCCallManagementDescriptor_SELFCALLMANAGEMENT,
1 // <--needed for MacOS
}