Hi Drewbadour,
We are inheriting "IOUserUSBSerial" and using IOUSBHostDevice as a provider class to match our device, In start function we are getting the device, able to configure the device. below is the Start function
kern_return_t
IMPL(MyUserUSBInterfaceDriver, Start){
kern_return_t ret;
ivars-ioDevice = OSDynamicCast(IOUSBHostDevice, provider);
ret = ivars-ioDevice-Open(this, 0, NULL);
ivars-ioDevice-SetConfiguration(2, false);
/* code logic to open the interface and device request is successful, Able to communicate with device Firmware*/
ret = Start(provider, SUPERDISPATCH);
return RegisterService();
}
After DEXT is loaded IOReg is as attached
IOReg - https://developer.apple.com/forums/content/attachment/590e1a34-de62-44a6-8e92-cb76925e91fc
In Cool Term Or any Serial application when we try to open the serial node its giving
"An Error Occured while attempting to open the port,
100:Access denied"
And I can see the below logs -- e00002c7 ="unsupported function"
kernel: (IOUserSerial) IOUserSerial::call0(allocResources) ==
kernel: (IOUserSerial) IOUserSerial::call0() locklevel = 1
kernel: (sc.knight.MyUserUSBInterfaceDriver.dext) IOUserSerial::private: 522 0x600002984058
kernel: (IOUserSerial) IOUserSerial::call0() == e00002c7
kernel: (IOUserSerial) IOUserSerial::call0(freeResources) ==
kernel: (IOUserSerial) IOUserSerial::call0() locklevel = 1
kernel: (sc.knight.MyUserUSBInterfaceDriver.dext) IOUserSerial::private: 533 0x600002984058
kernel: (sc.knight.MyUserUSBInterfaceDriver.dext) IOUserSerial::private: 110 0x600002984058
kernel: (IOUserSerial) IOUserSerial::call0() == e00002c7
Our Device has Bulk in and out pipes, Connectqueues function is not automatically setting up, Please let us know how we can debug this
On Another method we have tried is Adding "AppleUSBHostCompositeDevice" as provider, We got the interface But IOHostInterface is not loading to match (init() and start() are not called)