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
+14 -9
View File
@@ -241,15 +241,20 @@ class CompatibilityChecker:
def check_storage_compatibility(self): def check_storage_compatibility(self):
for controller_name, controller_props in self.hardware_report.get("Storage Controllers", {}).items(): for controller_name, controller_props in self.hardware_report.get("Storage Controllers", {}).items():
if "PCI" in controller_props.get("Bus Type"): if "PCI" not in controller_props.get("Bus Type"):
device_id = controller_props.get("Device ID") continue
if device_id in pci_data.IntelVMDIDs: device_id = controller_props.get("Device ID")
self.utils.request_input("\n\nDisable Intel RST VMD in the BIOS before exporting the hardware report and try again with the new report") subsystem_id = controller_props.get("Subsystem ID", "0"*8)
self.utils.exit_program()
elif device_id in pci_data.UnsupportedNVMeSSDIDs: if device_id in pci_data.IntelVMDIDs:
controller_props["Compatibility"] = (None, None) self.utils.request_input("\n\nDisable Intel RST VMD in the BIOS before exporting the hardware report and try again with the new report")
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")))) 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()): 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!") self.utils.request_input("\n\nNo compatible storage for macOS was found!")
@@ -285,7 +290,7 @@ class CompatibilityChecker:
if device_compatibility: 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]): 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: else:
new_hardware_report[device_type][device_name] = device_props new_hardware_report[device_type][device_name] = device_props
else: else:
+9 -10
View File
@@ -1032,16 +1032,15 @@ IntelVMDIDs = [
] ]
# Resource: https://pci-ids.ucw.cz/ # Resource: https://pci-ids.ucw.cz/
UnsupportedNVMeSSDIDs = { UnsupportedNVMeSSDIDs = [
"1344-5410": "Micron 2200S", ("144D-A808", ("A811144D")), # Samsung SM981/PM981/PM983"
"144D-A808": "Samsung SM981/PM981/PM983", ("1344-5410", ("01001344")), # Micron 2200S
"2646-2263": "Kingston A2000 NVMe SSD SM2263EN", ("2646-2263", ("22632646")), # Kingston A2000
"1C5C-174A": "SK hynix BC711/PC711", ("1C5C-174A", ("174A1C5C")), # SK hynix BC711/PC711
"1C5C-1639": "SK hynix PC611", ("1C5C-1639", ("16391C5C")), # SK hynix PC611
"1C5C-1627": "SK hynix PC601", ("1C5C-1627", ("16271C5C")), # SK hynix PC601
"8086-390B": "Intel 760p", ("8086-F1A6", ("390B8086")) # Intel 760P
"2646-2263": "Kingston A2000" ]
}
# Resource: https://pci-ids.ucw.cz/ # Resource: https://pci-ids.ucw.cz/
SpoofGPUIDs = { SpoofGPUIDs = {