- Joined
- Mar 8, 2018
- Messages
- 99
- Motherboard
- ASRock X299M Extreme 4
- CPU
- i9 7920X
- Graphics
- RX Vega 64
- Mac
- Classic Mac
- Mobile Phone
Good to knpw.
Mine actually works quite well, WiFi as well as BT, the only issue is:
when I use BT audio somewhen AFTER sleep, the computer freezes.
I hoped that this effect maybe vanishes once I implemented the card successfully under PCI.
So you think it is rather hardware related? The card itself or faulty USB connection?
I also wonder if the fail of the SSDT code might have a connection with the USB management in general.
I witness sub-optimal USB performance on several ports.
You have a opinion on that?
And lastly, I would like to call
SSDT special agent @apfelnico !
Nico, can you see any point why my SSDT fails programming-/ IOReg-wise?
The IOReg for the WiFi card is PCIO.RP19.PXSX
which I renamed to PCIO.RP19.ARPT in clover configurator (renaming device section).
renaming works, but SSDT below fails (in full SSDT is DTGP included of course)
Code:External (_SB_.PCIO.RP19.ARPT, DeviceObj) // (from opcode) ... ... Scope (_SB.PCIO.RP19.ARPT) { Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x0E) { "built-in", Buffer (One) { 0x00 }, "device-id", Buffer (0x04) { 0xBA, 0x43, 0x00, 0x00 }, "AAPL,slot-name", Buffer (0x07) { "Slot-5" }, "device_type", Buffer (0x13) { "AirPort Controller" }, "model", Buffer (0x4A) { "OSK WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller" }, "compatible", Buffer (0x0D) { "pci14e4,43ba" }, "name", Buffer (0x10) { "AirPort Extreme" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } }
All ideas welcome!
(IOReg screenshots after clover renaming.)
Hi @fingers-crossed
what looks weird to me is that your define with
External (_SB_.PCIO.RP19.ARPT, DeviceObj) // (from opcode)
ARPT as a device object and then later
Scope (_SB.PCIO.RP19.ARPT)
you try to match this with a scope object
I am a beginner with all the SSDT things as well, but this does not feel right.
I am not using the renaming with clover and do all of it in SSDT.
Here the what I used on my old mobo
Code:
DefinitionBlock ("", "SSDT", 1, "FSDO", "X299", 0x00000000)
{
External (_SB_.PCI0.RP21.ARPT, DeviceObj) // (from opcode)
External (_SB_.PCI0.RP21.PXSX, DeviceObj) // (from opcode)
External (GPRW, MethodObj) // 2 Arguments (from opcode)
Device (\_SB.PCI0.RP21.ARPT)
{
Name (_ADR, Zero) // _ADR: Address
OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
Field (PCIS, AnyAcc, NoLock, Preserve)
{
PVID, 16,
PDID, 16
}
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (GPRW (0x69, 0x04))
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Store (Package (0x0E)
{
"built-in",
Buffer (One)
{
0x00
},
"device-id",
Buffer (0x04)
{
0xBA, 0x43, 0x00, 0x00
},
"AAPL,slot-name",
Buffer (0x07)
{
"Slot-2"
},
"device_type",
Buffer (0x13)
{
"AirPort Controller"
},
"model",
Buffer (0x4A)
{
"OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
},
"compatible",
Buffer (0x0D)
{
"pci14e4,43ba"
},
"name",
Buffer (0x10)
{
"AirPort Extreme"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Name (_SB.PCI0.RP21.PXSX._STA, Zero) // _STA: Status
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
}
and here is what I use on the new one
On my new mobo the Wifi shows up on RP05 instead of RP21
Code:
DefinitionBlock ("", "SSDT", 1, "FSDO", "X299", 0x00000000)
{
External (_SB_.PCI0.RP05, DeviceObj) // (from opcode)
External (_SB_.PCI0.RP05.PXSX, DeviceObj) // (from opcode)
External (_SB_.PCI0.RP05.SLT5, DeviceObj) // (from opcode)
External (SLT5, DeviceObj) // (from opcode)
Scope (_SB.PCI0.RP05)
{
Scope (SLT5) // here we remove the SLT5 device name which allows us to define ARPT device
{
Name (_STA, Zero) // _STA: Status
}
Scope (PXSX) // here we remove the PXSX device name which causes SLT5 to show up as a name
{
Name (_STA, Zero) // _STA: Status
}
Device (ARPT) // here we define ARPT and insert _DSM method with all the data
{
Name (_ADR, Zero) // _ADR: Address
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Store (Package (0x0E)
{
"built-in",
Buffer (One)
{
0x00
},
"device-id",
Buffer (0x04)
{
0xBA, 0x43, 0x00, 0x00
},
"AAPL,slot-name",
Buffer (0x07)
{
"Slot-3"
},
"device_type",
Buffer (0x13)
{
"AirPort Controller"
},
"model",
Buffer (0x4A)
{
"OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
},
"compatible",
Buffer (0x0D)
{
"pci14e4,43a0"
},
"name",
Buffer (0x10)
{
"AirPort Extreme"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
}
I just now realised that in my new implementation I did not inject _PRW Method like in the old one.
That one missing might cause sleep issues (my machine right now never sleeps because it is running several VMs)
I don't recall what the field variables PVID and PDID were used for on the old mobo.
All the Best
Frank