From 90cb3d2d4972c70d6e41032a7d1e76e624f0334d Mon Sep 17 00:00:00 2001 From: Hoang Hong Quan Date: Mon, 5 Aug 2024 14:06:14 +0700 Subject: [PATCH] Refactor USB information and remove unnecessary USB device data from the final result --- Scripts/aida64.py | 47 +++++++++++++++++++++-------------------- Scripts/efi_builder.py | 3 +-- Scripts/kext_maestro.py | 7 +++--- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/Scripts/aida64.py b/Scripts/aida64.py index 2c5b8b6..d00b6d7 100644 --- a/Scripts/aida64.py +++ b/Scripts/aida64.py @@ -274,20 +274,20 @@ class AIDA64: } return input_devices_info - - def usb(self, usb_controllers, usb_devices, windows_devices): - usb_info = { - "USB Controllers": { - controller_name: { - "Bus Type": controller_props.get("Bus Type", "Unknown"), - "Device ID": controller_props.get("Device ID", "Unknown") - } - for controller_name, controller_props in usb_controllers.items() - if controller_props.get("Bus Type", "Unknown").startswith("PCI") - }, - "USB Devices": {} + + def usb_controllers(self, usb_controllers): + return { + controller_name: { + "Bus Type": controller_props.get("Bus Type", "Unknown"), + "Device ID": controller_props.get("Device ID", "Unknown") + } + for controller_name, controller_props in usb_controllers.items() + if controller_props.get("Bus Type", "Unknown").startswith("PCI") } + def usb_devices(self, usb_devices, windows_devices): + usb_devices_info = {} + for device_name, device_data in usb_devices.items(): device_props = device_data.get("Device Properties", {}) manufacturer = device_props.get("Manufacturer", None) @@ -296,25 +296,25 @@ class AIDA64: if not device_description: device_id = device_props.get("Device ID", None) - revision = device_props.get("Revision", None)[:-1] if device_props.get("Revision") else None - hardware_id = f'USB\\VID_{device_id[:4]}&PID_{device_id[5:]}&REV_{revision}' if device_id and revision else None + revision_id = device_props.get("Revision", None)[:-1] if device_props.get("Revision") else None + hardware_id = 'USB\\VID_{}&PID_{}&REV_{}'.format(device_id[:4], device_id[5:], revision_id[:-1]) if device_id and revision_id else None if hardware_id: device_description = self.utils.search_dict_iter(windows_devices, hardware_id + "&MI_00").get("Driver Description", None) if not device_description: device_description = self.utils.search_dict_iter(windows_devices, hardware_id).get("Driver Description", device_name) - device_description = self.get_unique_key(device_description, usb_info["USB Devices"]) + device_description = self.get_unique_key(device_description, usb_devices_info) if "Hub" not in device_description and "Billboard" not in device_description and not "0000-0000" in device_props.get("Device ID"): - usb_info["USB Devices"][device_description] = { + usb_devices_info[device_description] = { "Device Description": device_description.split("_#")[0], "Device Class": device_props.get("Device Class"), "Device ID": device_props.get("Device ID"), - "Revision": device_props.get("Revision") + "Revision ID": device_props.get("Revision") } - return usb_info + return usb_devices_info def network(self, windows_devices, pci_devices): network_info = {} @@ -576,12 +576,13 @@ class AIDA64: hardware["Network"] = self.network(windows_devices, report_dict.get("PCI Devices", {})) hardware["Storage Controllers"] = self.storage_controllers(windows_devices.get("IDE ATA/ATAPI controllers", {}), windows_devices.get("Storage controllers", {})) hardware["Audio"] = self.audio(windows_devices) - hardware["USB"] = self.usb(windows_devices.get("Universal Serial Bus controllers", {}), report_dict.get("USB Devices", {}), windows_devices) - hardware["Input"] = self.input(windows_devices.get("Human Interface Devices", {}), windows_devices.get("Keyboards", {}), windows_devices.get("Mice and other pointing devices", {}), hardware["USB"].get("USB Devices", {})) + hardware["USB Controllers"] = self.usb_controllers(windows_devices.get("Universal Serial Bus controllers", {})) + usb_devices = self.usb_devices(report_dict.get("USB Devices", {}), windows_devices) + hardware["Input"] = self.input(windows_devices.get("Human Interface Devices", {}), windows_devices.get("Keyboards", {}), windows_devices.get("Mice and other pointing devices", {}), usb_devices) - hardware = self.biometric(windows_devices.get("Biometric devices", {}), hardware["USB"].get("USB Devices", {}), hardware) - hardware = self.bluetooth(windows_devices.get("Bluetooth", {}), hardware["USB"].get("USB Devices", {}), hardware) - hardware = self.sd_controller(report_dict.get("PCI Devices", {}), hardware["USB"].get("USB Devices", {}), hardware) + hardware = self.biometric(windows_devices.get("Biometric devices", {}), usb_devices, hardware) + hardware = self.bluetooth(windows_devices.get("Bluetooth", {}), usb_devices, hardware) + hardware = self.sd_controller(report_dict.get("PCI Devices", {}), usb_devices, hardware) hardware = self.intel_mei(hardware["CPU"].get("CPU Codename"), report_dict.get("PCI Devices", {}), hardware) return hardware \ No newline at end of file diff --git a/Scripts/efi_builder.py b/Scripts/efi_builder.py index b582169..fcace0a 100755 --- a/Scripts/efi_builder.py +++ b/Scripts/efi_builder.py @@ -412,7 +412,6 @@ class builder: hardware_shorc["SD Controller"] = hardware.get("SD Controller") hardware_shorc["Input"] = hardware.get("Input") hardware_shorc["Storage Controllers"] = hardware.get("Storage Controllers") - hardware_shorc["USB Controllers"] = [controller_props.get("Device ID") for controller_name, controller_props in hardware.get("USB").get("USB Controllers").items()] hardware_shorc["Intel MEI"] = hardware.get("Intel MEI") hardware_shorc["Unsupported Devices"] = hardware.get("Compatibility").get("Unsupported Devices") @@ -475,7 +474,7 @@ class builder: hardware_shorc["Input"], hardware_shorc.get("SD Controller"), hardware_shorc.get("Storage Controllers"), - hardware_shorc["USB Controllers"], + hardware.get("USB Controllers"), efi_option.get("SMBIOS"), efi_option.get("Custom CPU Name"), efi_option.get("Synchronize the TSC"), diff --git a/Scripts/kext_maestro.py b/Scripts/kext_maestro.py index 96d8857..43461fb 100755 --- a/Scripts/kext_maestro.py +++ b/Scripts/kext_maestro.py @@ -702,9 +702,10 @@ class KextMaestro: if controller_props.get("Device ID") in pci_data.UnsupportedSATAControllerIDs and not "AHCI" in controller_name: kexts.append("CtlnaAHCIPort") - for pci_id in usb_controllers: - if pci_id in pci_data.UnsupportedUSBControllerIDs: - idx = pci_data.UnsupportedUSBControllerIDs.index(pci_id) + for controller_name, controller_props in usb_controllers.items(): + device_id = controller_props.get("Device ID") + if device_id in pci_data.UnsupportedUSBControllerIDs: + idx = pci_data.UnsupportedUSBControllerIDs.index(device_id) if idx == 0: kexts.append("GenericUSBXHCI") else: