Add Subsystem ID check for accurate identification of unsupported NVMe SSDs

This commit is contained in:
Hoang Hong Quan
2024-11-05 14:08:19 +07:00
parent 8adac44a48
commit e364832423
2 changed files with 23 additions and 19 deletions

View File

@@ -241,15 +241,20 @@ class CompatibilityChecker:
def check_storage_compatibility(self):
for controller_name, controller_props in self.hardware_report.get("Storage Controllers", {}).items():
if "PCI" in controller_props.get("Bus Type"):
device_id = controller_props.get("Device ID")
if "PCI" not in controller_props.get("Bus Type"):
continue
if device_id in pci_data.IntelVMDIDs:
self.utils.request_input("\n\nDisable Intel RST VMD in the BIOS before exporting the hardware report and try again with the new report")
self.utils.exit_program()
elif device_id in pci_data.UnsupportedNVMeSSDIDs:
controller_props["Compatibility"] = (None, None)
print("{}- {}: {}".format(" "*3, controller_name if not device_id in pci_data.UnsupportedNVMeSSDIDs else pci_data.UnsupportedNVMeSSDIDs.get(device_id), self.show_macos_compatibility(controller_props.get("Compatibility"))))
device_id = controller_props.get("Device ID")
subsystem_id = controller_props.get("Subsystem ID", "0"*8)
if device_id in pci_data.IntelVMDIDs:
self.utils.request_input("\n\nDisable Intel RST VMD in the BIOS before exporting the hardware report and try again with the new report")
self.utils.exit_program()
if next((device for device in pci_data.UnsupportedNVMeSSDIDs if device_id == device[0] and subsystem_id in device[1]), None):
controller_props["Compatibility"] = (None, None)
print("{}- {}: {}".format(" "*3, controller_name, self.show_macos_compatibility(controller_props.get("Compatibility"))))
if all(controller_props.get("Compatibility") == (None, None) for controller_name, controller_props in self.hardware_report.get("Storage Controllers", {}).items()):
self.utils.request_input("\n\nNo compatible storage for macOS was found!")
@@ -285,7 +290,7 @@ class CompatibilityChecker:
if device_compatibility:
if device_compatibility[0] is None or not self.utils.parse_darwin_version(device_compatibility[0]) >= self.utils.parse_darwin_version(macos_verison) >= self.utils.parse_darwin_version(device_compatibility[-1]):
unsupported_device["{}: {}".format(device_props.get("Device Type") or device_type, device_name if not device_props.get("Device ID") in pci_data.UnsupportedNVMeSSDIDs else pci_data.UnsupportedNVMeSSDIDs.get(device_props.get("Device ID")))] = device_props
unsupported_device["{}: {}".format(device_props.get("Device Type") or device_type, device_name)] = device_props
else:
new_hardware_report[device_type][device_name] = device_props
else:

View File

@@ -1032,16 +1032,15 @@ IntelVMDIDs = [
]
# Resource: https://pci-ids.ucw.cz/
UnsupportedNVMeSSDIDs = {
"1344-5410": "Micron 2200S",
"144D-A808": "Samsung SM981/PM981/PM983",
"2646-2263": "Kingston A2000 NVMe SSD SM2263EN",
"1C5C-174A": "SK hynix BC711/PC711",
"1C5C-1639": "SK hynix PC611",
"1C5C-1627": "SK hynix PC601",
"8086-390B": "Intel 760p",
"2646-2263": "Kingston A2000"
}
UnsupportedNVMeSSDIDs = [
("144D-A808", ("A811144D")), # Samsung SM981/PM981/PM983"
("1344-5410", ("01001344")), # Micron 2200S
("2646-2263", ("22632646")), # Kingston A2000
("1C5C-174A", ("174A1C5C")), # SK hynix BC711/PC711
("1C5C-1639", ("16391C5C")), # SK hynix PC611
("1C5C-1627", ("16271C5C")), # SK hynix PC601
("8086-F1A6", ("390B8086")) # Intel 760P
]
# Resource: https://pci-ids.ucw.cz/
SpoofGPUIDs = {