Post

Replies

Boosts

Views

Activity

KEXT not loading in BigSur Public Beta 5
I have a Kernel Extension based on SCSI Architecture Model Family for USB Mass Storage devices which deals with IOSCSIBlockCommandsDevice, IOSCSIPeripheralDeviceType00 and IOBlockStorageService. This driver extends class IOSCSIPeripheralDeviceType00 and its provider class is: IOSCSIPeripheralDeviceNub. This driver is use to interact with External Storage Device over USB. This driver works fine and loads in Catalina and earlier versions of macOS without any issue. But this does not load in Big Sur Public Beta 5 version. I load the driver post installation using kextload, and driver installation location is: /library/Extension/MyDriver.kext When driver is loaded with below command and then machine is rebooted, no error is observed but still driver doesn't load: sudo kextload -v /Library/Extension/MyDriver.kext sudo kextcache -i / Note: Driver and installer pkg is signed with kext developer id and Notarized. SIP is enabled. Xcode v11.5 and 12 Beta 5 also checked. SDK; 14/15 both checked. I tried loading with kextutil command also and kextutil throws below error: myimac@myimac-imac Extensions% sudo kextutil -vvvv -bundle-id com.company.xxxxxx.driver Password: Defaulting to kernel file'/System/Library/Kernels/kernel' Executing: /usr/bin/kmutil load --bundle -identifier com.company.xxxxxx.driver Error: Error Domain=KMErrorDomain Code=1 "Error occurred while building cache: 1: One or more binaries has an error which prevented linking. See other errors. 2: Could not use'com.company.xxxxxx.driver' because: Cannot find symbol for metaclass pointed to by'ZN30comcompanymydriver10superClassE'.Expected symbol'ZN28 IOSCSIPeripheralDeviceType00 10gMetaClassE' to be defined in another kext com.company.xxxxxx.driver specific: 1: Cannot find symbol for metaclassSS pointed to by'EZNportable Expected to by'EZN10superClassE'. _ZN28IOSCSIPeripheralDeviceType0010gMetaClassE' to be defined in another kext "UserInfo={NSLocalizedDescription=Error occurred while building cache: 1:One or more binaries has an error which prevented linking . See other errors. 2: Could not use'com.company.xxxxxx.driver' because: Cannot find symbol for metaclass pointed to by'ZN30comcompany_mydriver10superClassE'. Expected symbol'ZN28IOSCSIPeripheralDeviceType0010gMetaClassE' to be defined in another kext com.company.xxxxxx.driver specific: 1: Cannot find symbol for metaclass pointed to by'ZN30com.company.xxxxxx.drive10superClassE'. Expected symbol'ZN28IOSCSIPeripheralDeviceType0010gMetaClassE' to be defined in another kext } Could not understand what's the error. When driver is copied/installed to location: /Library/Extension/ user approval pop up does not come, which asks user to approve the kext in the System Preferences Security pane. This is weird because this is required to work third party kext in BigSur. So my question is: What classes of kexts are deprecated?? Does System Extension and DriverKit support to send SCSI command to USB External storage?? Thread (https://developer.apple.com/forums/thread/650611) discussion concludes that: There is no support for IOSCSIArchitectureModelFamily classes like IOSCSIProtocolInterface in DriverKit yet. Support will be added in a future release. Does it mean that KEXT of these types will be allowed in Big Sur till Driverkit support is added?? If yes then why my driver is not loading and if No then how to port KEXT using IOSCSIProtocolInterface to user space IOUSBInterfaceInterface?? If someone have pointers on how to resolve this issue, It would be helpful. (I'll test this driver with SIP disabled too and will update) Thanks You!!!
10
0
6.2k
Aug ’20
PCIDevice->Open method failing with kIOReturnNotOpen
Hi, I am able to activate the PCI DEXT and matching is also happening. When I connect/Disconnect then Driver is loading and unloading. After this I followed below wwdc2020 link: https://developer.apple.com/videos/play/wwdc2020/10210/ The very first API used in this presentation is failing. PCIDevice->Open method is failing with error: kIOReturnNotOpen (0x2cd) This I have tried to call before and after RegisterService method call. In both case this Open method call is failing. Even I tried Open method calling from Externalmethod i.e. App->UserClient->ExternalMethod->MainDriverOpenSessionToPCIDevice In all case, Open is failing. Anyone faced this error?? If someone is able to Open session to PIC Device then it please let me know what steps to follow. Thanks
2
0
1.1k
Sep ’20