In Big Sur 10.15 and above our software installs a codeless System Extension to inform the OS what USB device(s) we need to access and prevent any other drivers from getting access, including macOS's own drivers.
If the dext is not loaded, either because the user did not grant permission ('Allow' in the Security and Privacy dialog) or because there was a load error then our driver cannot access the device.
In this case running UPDD diagnostics will help identify the issue:
1) updd.log file will show that access has been denied:
2021/08/02-20:07:31: TRC: USB warning: (claiming interface) for bus:0001-usbix:0005Access denied (insufficient permissions)
2) A non zero dext load status in report.txt log file indicates that the dext has not loaded:
private.dext.status: 1
3) The log file 'system extension.log' will also show the dext load error
2021-08-02 23:07:30 +0000 - UPDD System Extension application has started debug01
2021-08-02 23:07:30 +0000 - Activating DriverKit extension...
2021-08-02 23:07:30 +0000 - ...submitted activation request
2021-08-02 23:07:30 +0000 - Request failed with error code: 10
2021-08-02 23:07:30 +0000 - An error occurred: The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)
Apart from manual permission not being granted we do not know why a dext will fail to load.
However, we are aware that in some cases resetting the dext database via the command 'systemextensionsctl reset' with system integrity protection disabled may resolve the issue.
Resetting the Dext database
The following sequence should reset the dext database. We are not aware of any issues with resetting the dext database but this procedure is undertaken at your own risk.
1. Start up from macOS Recovery
Determine whether you're using a Mac with Apple Silicon, then follow the appropriate steps:
Apple Silicon - Turn on your Mac and continue to press and hold the power button until you see the startup options window. Click the gear icon labelled Options, then click Continue.
Intel processor -Make sure that your Mac has a connection to the internet. Then turn on your Mac and immediately press and hold Command (⌘)-R until you see an Apple logo or other image.
If you're asked to select a user you know the password for, select the user, click Next, then enter their administrator password.
2. In recovery mode, pick the menu Utilities > Terminal
3. In the terminal window, enter the following:
csrutil disable
4. Reboot the system
5. Once rebooted, open Terminal and execute the following command:
systemextensionsctl reset
6. Enter your admin password when prompted
7. Reboot the system back into recovery mode
8. In recovery mode, once again pick the menu Utilities > Terminal
9. In the terminal window, enter the following:
csrutil enable
10. Reboot normally
Apple has claimed that at some point it will not be necessary to disable system integrity protection to do this (which is what "csrutil disable" does), which will make this process a lot easier!