corpnewt / USBMap

Python script for mapping USB ports in macOS and creating a custom injector kext.
MIT License
1.03k stars 88 forks source link

IONameMatch wrong for AMD matisse chipset USB controller #20

Closed johncolby closed 3 years ago

johncolby commented 3 years ago

The name of the controller does not match the name of its container (not sure if that's the correct term), so IONameMatch tries to insert ports (and also the power settings I included) at the wrong spot, and fails. A simple hack for my simple setup was to change the IONameMatch string to AppleUSBXHCIPCI from the name of the controller pci1022,149c. I'm sure you'll know of a more elegant way to fix this in your script!

USBMap.kext (with above tweak already applied) ```xml CFBundleDevelopmentRegion English CFBundleGetInfoString v1.0 CFBundleIdentifier com.corpnewt.USBMap CFBundleInfoDictionaryVersion 6.0 CFBundleName USBMap CFBundlePackageType KEXT CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 IOKitPersonalities iMacPro1,1-AppleUSBXHCIPCI CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleUSBXHCIPCI IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count CAAAAA== ports HS01 Comment 3HS UsbConnector 3 port AQAAAA== HS02 Comment 4HS UsbConnector 3 port AgAAAA== HS03 Comment 1HS UsbConnector 3 port AwAAAA== HS04 Comment 2HS UsbConnector 3 port BAAAAA== SS01 Comment 3SS UsbConnector 3 port BQAAAA== SS02 Comment 4SS UsbConnector 3 port BgAAAA== SS03 Comment 1SS UsbConnector 3 port BwAAAA== SS04 Comment 2SS UsbConnector 3 port CAAAAA== model iMacPro1,1 OSBundleRequired Root ```

screenshot (original as output by USBMap.py, with power settings added, without above tweak):

image

Before

image2 image

After

image image

Thanks for the great work!!

startergo commented 3 years ago

Does not inject for me:

Info.plist ``` CFBundleDevelopmentRegion English CFBundleGetInfoString v1.0 CFBundleIdentifier com.dortania.USBmap CFBundleInfoDictionaryVersion 6.0 CFBundleName USBMap CFBundlePackageType KEXT CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 IOKitPersonalities PXS2- AppleUSBXHCI CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleUSBXHCIPCI IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count CAAAAA== ports HS01 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AQAAAA== HS02 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AgAAAA== HS03 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AwAAAA== HS04 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BAAAAA== SS01 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BQAAAA== SS02 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BgAAAA== SS03 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BwAAAA== SS04 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port CAAAAA== model MacPro5,1 OSBundleRequired Root ```

image

johncolby commented 3 years ago

@startergo To mimic my hack above, change your IONameMatch to AppleASMedia3142USBXHCI. But YMMV since it looks like you have 2 identically named controllers, so will probably need to match also on something else.

startergo commented 3 years ago

@startergo To mimic my hack above, change your IONameMatch to AppleASMedia3142USBXHCI. But YMMV since it looks like you have 2 identically named controllers, so will probably need to match also on something else.

Thanks!: image Not sure why it did not take the second controller:

Info.plist ``` CFBundleDevelopmentRegion English CFBundleGetInfoString v1.0 CFBundleIdentifier com.dortania.USBmap CFBundleInfoDictionaryVersion 6.0 CFBundleName USBMap CFBundlePackageType KEXT CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 IOKitPersonalities PXS2-AppleUSBXHCI CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleASMedia3142USBXHCI IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports HS01 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AQAAAA== HS02 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AgAAAA== HS03 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port AwAAAA== HS04 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BAAAAA== model MacPro5,1 PXS2-AppleUSBXHCI(2) CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleASMedia3142USBXHCI IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports SS01 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BQAAAA== SS02 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BgAAAA== SS03 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port BwAAAA== SS04 Comment PCIE USB 3.2 Type A, 2.0 personality UsbConnector 3 port CAAAAA== model MacPro5,1 OSBundleRequired Root ```
corpnewt commented 3 years ago

I recently migrated USBMap to leverage IOPathMatch over IONameMatch - which should hopefully alleviate some issues with more exotic setups. The commit that added that functionality is here - but I've added some other fixes and etc since.

-CorpNewt

startergo commented 3 years ago

I recently migrated USBMap to leverage IOPathMatch over IONameMatch - which should hopefully alleviate some issues with more exotic setups. The commit that added that functionality is here - but I've added some other fixes and etc since.

-CorpNewt

I have tried Dortania's IOPathMatch, but it did not hook my ASMedia3142USBXHCI. Is there any difference between the IOProbescore (higher value than the original kext) and kUSBMuxEnabled=true?

startergo commented 3 years ago

I have tested the IOPathMatch but it is not very reliable especially with USBMap for all ports. This works fine:

Info.plist ``` CFBundleDevelopmentRegion English CFBundleGetInfoString v1.0 CFBundleIdentifier com.corpnewt.USBMap CFBundleInfoDictionaryVersion 6.0 CFBundleName USBMap CFBundlePackageType KEXT CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 IOKitPersonalities MacPro5,1-AppleUSBXHCI CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleASMedia3142USBXHCI IOPCIPrimaryMatch 0x21421b21 IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBSleepSupported kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports HS01 UsbConnector 3 port AwAAAA== HS02 UsbConnector 3 port BAAAAA== SS01 UsbConnector 3 port AQAAAA== SS02 UsbConnector 3 port AgAAAA== model MacPro5,1 MacPro5,1-AppleUSBXHCI-1 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleUSBXHCI IOPCIPrimaryMatch 0x21421b21 IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBSleepSupported kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports HS01 UsbConnector 3 port AwAAAA== HS02 UsbConnector 3 port BAAAAA== SS01 UsbConnector 3 port AQAAAA== SS02 UsbConnector 3 port AgAAAA== model MacPro5,1 MacPro5,1-EH01-8086_3a3a CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch EH01 IOPCIPrimaryMatch 0x3a3a8086 IOProbeScore 5000 IOProviderClass AppleUSBEHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count BgAAAA== ports PRT1 UsbConnector 0 name PRT1 port AQAAAA== PRT2 UsbConnector 255 name PRT2 port AgAAAA== PRT3 UsbConnector 0 name PRT3 port AwAAAA== PRT4 UsbConnector 255 name PRT4 port BAAAAA== PRT5 UsbConnector 0 name PRT5 port BQAAAA== PRT6 UsbConnector 255 name PRT6 port BgAAAA== model MacPro5,1 MacPro5,1-EH02-8086_3a3c CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch EH02 IOPCIPrimaryMatch 0x3a3c8086 IOProbeScore 5000 IOProviderClass AppleUSBEHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count BgAAAA== ports PRT1 UsbConnector 255 name PRT1 port AQAAAA== PRT2 UsbConnector 0 name PRT2 port AgAAAA== PRT3 UsbConnector 255 name PRT3 port AwAAAA== PRT4 UsbConnector 0 name PRT4 port BAAAAA== PRT5 UsbConnector 255 name PRT5 port BQAAAA== PRT6 UsbConnector 255 name PRT6 port BgAAAA== model MacPro5,1 MacPro5,1-UHC1 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC1 IOPCIPrimaryMatch 0x3a348086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC2 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC2 IOPCIPrimaryMatch 0x3a358086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC3 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC3 IOPCIPrimaryMatch 0x3a368086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC4 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC4 IOPCIPrimaryMatch 0x3a378086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC5 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC5 IOPCIPrimaryMatch 0x3a388086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC6 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC6 IOPCIPrimaryMatch 0x3a398086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 OSBundleRequired Root ```

Also Catalina uses AppleUSBXHCI, but Big Sur hooks to AppleASMedia3142USBXHCI, so for Catalina use this Info.plist instead on cMP5,1 in another kext. Restrict Min and Max Kernel and ACPI rename:

Config.plist ![image](https://user-images.githubusercontent.com/7897244/103102041-4064a900-45e8-11eb-9e6e-65b753b84f7b.png) ![image](https://user-images.githubusercontent.com/7897244/103102225-18297a00-45e9-11eb-82e4-47f07fb681c3.png)
Info.plist ``` CFBundleDevelopmentRegion English CFBundleGetInfoString v1.0 CFBundleIdentifier com.corpnewt.USBMap CFBundleInfoDictionaryVersion 6.0 CFBundleName USBMap CFBundlePackageType KEXT CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 IOKitPersonalities MacPro5,1-AppleUSBXHCI CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleUSBXHCI IOPCIPrimaryMatch 0x21421b21 IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBSleepSupported kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports HS01 UsbConnector 3 port AwAAAA== HS02 UsbConnector 3 port BAAAAA== SS01 UsbConnector 3 port AQAAAA== SS02 UsbConnector 3 port AgAAAA== model MacPro5,1 MacPro5,1-AppleUSBXHCI-1 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch AppleUSBXHCI IOPCIPrimaryMatch 0x21421b21 IOProviderClass AppleUSBXHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 2100 kUSBSleepPowerSupply 5100 kUSBSleepSupported kUSBWakePortCurrentLimit 2100 kUSBWakePowerSupply 5100 port-count BAAAAA== ports HS01 UsbConnector 3 port AwAAAA== HS02 UsbConnector 3 port BAAAAA== SS01 UsbConnector 3 port AQAAAA== SS02 UsbConnector 3 port AgAAAA== model MacPro5,1 MacPro5,1-EH01-8086_3a3a CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch EH01 IOPCIPrimaryMatch 0x3a3a8086 IOProbeScore 5000 IOProviderClass AppleUSBEHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count BgAAAA== ports PRT1 UsbConnector 0 name PRT1 port AQAAAA== PRT2 UsbConnector 255 name PRT2 port AgAAAA== PRT3 UsbConnector 0 name PRT3 port AwAAAA== PRT4 UsbConnector 255 name PRT4 port BAAAAA== PRT5 UsbConnector 0 name PRT5 port BQAAAA== PRT6 UsbConnector 255 name PRT6 port BgAAAA== model MacPro5,1 MacPro5,1-EH02-8086_3a3c CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch EH02 IOPCIPrimaryMatch 0x3a3c8086 IOProbeScore 5000 IOProviderClass AppleUSBEHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count BgAAAA== ports PRT1 UsbConnector 255 name PRT1 port AQAAAA== PRT2 UsbConnector 0 name PRT2 port AgAAAA== PRT3 UsbConnector 255 name PRT3 port AwAAAA== PRT4 UsbConnector 0 name PRT4 port BAAAAA== PRT5 UsbConnector 255 name PRT5 port BQAAAA== PRT6 UsbConnector 255 name PRT6 port BgAAAA== model MacPro5,1 MacPro5,1-UHC1 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC1 IOPCIPrimaryMatch 0x3a348086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC2 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC2 IOPCIPrimaryMatch 0x3a358086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC3 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC3 IOPCIPrimaryMatch 0x3a368086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC4 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC4 IOPCIPrimaryMatch 0x3a378086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC5 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC5 IOPCIPrimaryMatch 0x3a388086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 MacPro5,1-UHC6 CFBundleIdentifier com.apple.driver.AppleUSBMergeNub IOClass AppleUSBMergeNub IONameMatch UHC6 IOPCIPrimaryMatch 0x3a398086 IOProviderClass AppleUSBUHCIPCI IOProviderMergeProperties kUSBMuxEnabled kUSBSleepPortCurrentLimit 1000 kUSBSleepPowerSupply 3000 kUSBWakePortCurrentLimit 1500 kUSBWakePowerSupply 3700 port-count AgAAAA== ports PRT1 UsbConnector 0 port AQAAAA== PRT2 UsbConnector 0 port AgAAAA== model MacPro5,1 OSBundleRequired Root ```
corpnewt commented 3 years ago

The issue with using a generic class match for IONameMatch is that it will apply to all controllers with that name - which, in your example is fine, as you are using the same ports for both of the ASMedia controllers - but for those with different types and ports, it won't work. I suppose the search shall continue for a more reliable way - however, the IOPathMatch works fine for my ASMedia controllers (of which I have two, with different numbers of ports and different types), so I'm inclined to continue toward a solution that works with them individually over a blanket solution. If you make any other headway on the topic, please update me, but for now I won't use the class as the IONameMatch.

-CorpNewt

johncolby commented 3 years ago

Awesome, thanks for the discussion. I will play around with the path match method some too (I guess the script is not getting the path successfully for my case, so is falling back to using name match...but I need to run through debug mode to understand fully). FWIW I'm on a KVM hackintosh, so it's OVMF firmware, and my particular pci layout, may also be in play.

johncolby commented 3 years ago

Beautiful, although I had a recent snapshot after https://github.com/corpnewt/USBMap/commit/f3be68900f4c4e0d1e67c13760446f9d916faa2a, the old port map was cached and getting reused. Wiping that and rediscovering ports now picks up the correct IOPathMatch method, which works perfectly for my simple case. Thanks again for the awesome tool!