Many USB storage devices are NVMe devices accessed through a USB-NVMe bridge chip, such as those by JMicron and Asmedia. These chipsets do not forward SMART data requests to the devices, but do have the capability to forward raw NVMe commands to the devices using vendor specific requests.
How can we provide access to SMART data for NVMe devices accessed through a bridge chip like this?
Many people used the OSX SAT SMART kext driver to provide access to SMART data for devices using USB-SATA chips, but it is a kext and doesn't support NVMe. See https://binaryfruit.com/drivedx/usb-drive-support#install-instructions
Would we need to implement a kext like that to make this work? Is there a DriverKit way to do this?
Post
Replies
Boosts
Views
Activity
When using external NVMe devices on iOS / iPadOS I cannot tell how to access the disk SMART data.
On macOS I can use NVMeSMARTLibExternal.h to access this information but the same system does not seem to work on iPadOS (even with Thunderbolt NVMe devices).
When using M series iPads with professional Thunderbolt storage this woudlbe very useful.
How does device matching work on DriverKit?Before there were general requirements in the plist, then specific requirements encoded in a probe(...) function. Is there documentation for the matching process of the new DriverKit APIs (like this old one https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/Matching/Matching.html#//apple_ref/doc/uid/TP0000015-TP9)H
This list is the KPIs deprecated in macOS 10.15 https://developer.apple.com/support/kernel-extensions
Is there a list for the KPIs deprecated on macOS 11?
We build Thunderbolt hardware, but at a PCI level they are generic so we do not have a PCI VID. They do require a kext driver. Currently Apple requires a PCI VID to get a PCIDriverKit entitlement. Is there any way that this requirement could be relaxed?
What is the best way to have full access to the IORegistry (traversing fromPath etc) from within DriverKit?IOService SearchProperty isn't enough control for the matching that I need to do. I also cannot work out how to change arbitrary IOReg keys from within my driver.