Hallöchen,
viele von Euch haben schon mal vom IORegistryExplorer gehört, der in seiner ganzen Pracht eine IOREG-Datei mit den wirklich spannenden Daten Eures Systems erstellen und im Unterstützungsfall sehr viele sachdienliche Hinweise aufzeigen kann.
Das geht aber auch ohne das Programm und zwar über den Terminal-Befehl ioreg.
Die Hilfe im Terminal gibt uns folgende Infos zu dem Befehl:
- usage: ioreg [-abfilrtx] [-c class] [-d depth] [-k key] [-n name] [-p plane] [-w width]
- where options are:
- -a archive output
- -b show object name in bold
- -c list properties of objects with the given class
- -d limit tree to the given depth
- -f enable smart formatting
- -i show object inheritance
- -k list properties of objects with the given key
- -l list properties of all objects
- -n list properties of objects with the given name
- -p traverse registry over the given plane (IOService is default)
- -r show subtrees rooted by the given criteria
- -t show location of each subtree
- -w clip output to the given line width (0 is unlimited)
- -x show data and numbers as hexadecimal
Wenn man den einfach so im Terminal ausführt, ohne zusätzlichen Parameter, wird man sofort mit einer Vielzahl von Daten überschüttet.
Da wir aber meist wissen, was wir suchen *räusper* geht das auch mit gezielten Kombinationen aus Parametern.
Der erste Ansatz ist schon mal die Unterscheidung der Bereich IOService, IODeviceTree und IOACPIPlane
IOService zeigt die mit Kext versorgten Geräte im System und deren eingestellten Parameter an.
IODeviceTree zeigt zusätzlich spannende Hardware-Eigenschaften, wie Hersteller- und Geräte-ID (vendor-id, device-id)
IOACPIPlane gibt zusätzlich ACPI-Details der einzelnen Geräte an.
Hier mal ein Beispiel für die Broadcom BCM4360 in meinem Kabylake-System.
Der Befehl für die Abfrage im Bereich IODeviceTree sieht wie folgt aus:
"-p" gibt den Startpunkt für die Abfrage an - in diesem Falle "IODeviceTree"
"-n" gibt die Details des nachfolgenden Gerätenamens aus - in diesem Falle "ARPT"
"-r" gibt auch verzweigte Unterinfos aus...
Das Ergebnis könnt Ihr wiederum hier bestaunen:
- al6042-iMac:~ al6042$ ioreg -p IODeviceTree -n ARPT -r
- +-o ARPT@0 <class IOPCIDevice, id 0x10000022d, registered, matched, active, busy 0 (136 ms), retain 12>
- {
- "acpi-device" = "IOACPIPlatformDevice is not serializable"
- "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP07@1c0006/ARPT@0"
- "assigned-addresses" = <1000098200000000000080f700000000008000001800098200000000000040f70000000000004000>
- "class-code" = <00800200>
- "subsystem-vendor-id" = <6b100000>
- "vendor-id" = <e4140000>
- "IOPCIExpressLinkCapabilities" = 4643857
- "IOName" = "pci14e4,43ba"
- "IOChildIndex" = 1
- "pcidebug" = "9:0:0"
- "IOPCIExpressLinkStatus" = 4113
- "pci-aspm-default" = 256
- "IOPCIExpressCapabilities" = 2
- "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
- "built-in" = <00>
- "IOPCIResourced" = Yes
- "IODeviceMemory" = (({"address"=4152360960,"length"=32768}),({"address"=4148166656,"length"=4194304}))
- "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=258,"ChildProxyPowerState"=2,"MaxPowerState"=3}
- "AAPL,slot-name" = "PCIEX1"
- "acpi-pmcap-offset" = 72
- "name" = <"pci14e4,43ba">
- "subsystem-id" = <33010000>
- "model" = "Broadcom BCM4360 802.11ac Wireless Network Adapter"
- "device_type" = <"AirPort Extreme">
- "acpi-wake-type" = 2
- "compatible" = "pci14e4,43a0"
- "IOReportLegendPublic" = Yes
- "reg" = <000009000000000000000000000000000000000010000902000000000000000000000000008000001800090200000000000000000000000000004000>
- "IOReportLegend" = ({"IOReportGroupName"="Interrupt Statistics (by index)","IOReportChannels"=((5291294645182070784,4295098369," First Level Interrupt H$
- "device-id" = <ba430000>
- "revision-id" = <01000000>
- "IOInterruptSpecifiers" = (<1200000007000000>,<0b00000000000100>)
- "IOPCIMSIMode" = Yes
- }
Vergleicht mal in dem Ergebnis die Werte für "vendor-id" und "device-id" zum Wert von "IOName"...
Und hier der Befehl für die Abfrage zur Broadcom BCM4360 unter "IOService":
Und passend dazu natürlich auch das Ergebnis:
- al6042-iMac:~ al6042$ ioreg -f -p IOService -n ARPT -r
- +-o ARPT@0 <class IOPCIDevice, id 0x10000022d, registered, matched, active, busy 0 (136 ms), retain 12>
- | {
- | "acpi-device" = "IOACPIPlatformDevice is not serializable"
- | "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP07@1c0006/ARPT@0"
- | "assigned-addresses" =
- | 00: phys.hi: 82090010 phys.mid: 00000000 phys.lo: f7800000
- | size.hi: 00000000 size.lo: 00008000
- | bus: 9 dev: 0 func: 0 reg: 16
- | type: Mem flags: abs
- | 01: phys.hi: 82090018 phys.mid: 00000000 phys.lo: f7400000
- | size.hi: 00000000 size.lo: 00400000
- | bus: 9 dev: 0 func: 0 reg: 24
- | type: Mem flags: abs
- | "class-code" = <00800200>
- | "subsystem-vendor-id" = <6b100000>
- | "vendor-id" = <e4140000>
- | "IOPCIExpressLinkCapabilities" = 4643857
- | "IOName" = "pci14e4,43ba"
- | "IOChildIndex" = 1
- | "pcidebug" = "9:0:0"
- | "IOPCIExpressLinkStatus" = 4113
- | "pci-aspm-default" = 256
- | "IOPCIExpressCapabilities" = 2
- | "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
- | "built-in" = <00>
- | "IOPCIResourced" = Yes
- | "IODeviceMemory" = (({"address"=4152360960,"length"=32768}),({"address"=4148166656,"length"=4194304}))
- | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=258,"ChildProxyPowerState"=2,"MaxPowerState"=3}
- | "AAPL,slot-name" = "PCIEX1"
- | "acpi-pmcap-offset" = 72
- | "name" = <"pci14e4,43ba">
- | "subsystem-id" = <33010000>
- | "model" = "Broadcom BCM4360 802.11ac Wireless Network Adapter"
- | "device_type" = <"AirPort Extreme">
- | "acpi-wake-type" = 2
- | "compatible" = "pci14e4,43a0"
- | "IOReportLegendPublic" = Yes
- | "reg" =
- | 00000000: 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 09 02 00 00 00 00 00 00 00 00 ................................
- | 00000020: 00 00 00 00 00 80 00 00 18 00 09 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 ..........................@.
- | "IOReportLegend" = ({"IOReportGroupName"="Interrupt Statistics (by index)","IOReportChannels"=((5291294645182070784,4295098369," First Level Interrupt H$
- | "device-id" = <ba430000>
- | "revision-id" = <01000000>
- | "IOInterruptSpecifiers" = (<1200000007000000>,<0b00000000000100>)
- | "IOPCIMSIMode" = Yes
- | }
- |
- +-o AirPort_BrcmNIC <class AirPort_BrcmNIC, id 0x1000002ec, registered, matched, active, busy 0 (1 ms), retain 37>
- +-o CCLogPipe <class CCLogPipe, id 0x100000313, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o CCIOReporterLogStream <class CCIOReporterLogStream, id 0x100000316, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o CCLogPipe <class CCLogPipe, id 0x10000031b, registered, matched, active, busy 0 (0 ms), retain 13>
- | +-o CCLogStream <class CCLogStream, id 0x10000031f, registered, matched, active, busy 0 (0 ms), retain 7>
- | +-o CCLogStream <class CCLogStream, id 0x100000320, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o CCLogPipe <class CCLogPipe, id 0x10000032c, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o CCLogStream <class CCLogStream, id 0x10000032d, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o CCDataPipe <class CCDataPipe, id 0x10000032e, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o CCDataStream <class CCDataStream, id 0x10000032f, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o en1 <class AirPort_BrcmNIC_Interface, id 0x100000331, registered, matched, active, busy 0 (0 ms), retain 11>
- | +-o IONetworkStack <class IONetworkStack, id 0x100000309, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o IONetworkStackUserClient <class IONetworkStackUserClient, id 0x100000443, !registered, !matched, active, busy 0, retain 5>
- +-o CCDataPipe <class CCDataPipe, id 0x10000045a, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o CCIOReporterDataStream <class CCIOReporterDataStream, id 0x10000045b, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o AirPort_BrcmNIC_P2PInterface <class AirPort_BrcmNIC_P2PInterface, id 0x100000487, registered, matched, active, busy 0 (0 ms), retain 9>
- +-o CCLogPipe <class CCLogPipe, id 0x100000488, registered, matched, active, busy 0 (0 ms), retain 10>
- | +-o CCLogStream <class CCLogStream, id 0x100000489, registered, matched, active, busy 0 (0 ms), retain 7>
- +-o AirPort_BrcmNIC_P2PInterface <class AirPort_BrcmNIC_P2PInterface, id 0x10000048b, registered, matched, active, busy 0 (0 ms), retain 9>
Wie Ihr unschwer erkennen könnt, wird hier der "IODeviceTree"-Anteil und die Infos zum eingesetzten Kext (AirPort_BrcmNIC) aufgeführt.
Ihr werdet Euch nun fragen "Und warum jetzt dieser Thread? Soll er uns doch alle möglichen Kombinationen des Befehls hier einfach auflisten..."
NeNeNe... Ich möchte von Euch wissen, welche spannenden Infos Ihr mit dem Befehl aus dem Terminal locken könnt...
Was nicht erwünscht ist, sind Abfragen, welche die SMBIOS- oder NVRAM-Daten des Systems ermitteln und präsentieren würden.
Na dann... Los geht's und viel Spaß beim Tüfteln...