Dell XPS 9500 / Precision 5550 fully working (including S4 Sleep) on Sonoma/Ventura

Dell XPS 9500 / Precision 5550 fully working (including S4 Sleep) on Sonoma/Ventura

Ventura 13.6 running on XPS 9500 with OpenCore 0.9.5

Over the festive period I’ve managed to find some quiet time to document the effort required to get a fully working (including sleep) and power-optimised configuration for the Dell XPS 9500 and Precision 5550 (which share the same chassis and (most) components). There’s some additional research and testing that’s currently being done in the areas of S3 sleep (more below), but this should serve as a relatively exhaustive guide for anyone wishing to have similar performance (actually better) than Windows or even Linux.

CPU: i9-10885H - Using the Precision’s i9 motherboard, not the XPS’s as for some reason the latter’s i9 board comes with an incompatible Qualcomm Wi-Fi chipset (why, Dell?). XPS 9500s with the i7 or i5 chipset (and all Precision 5550s afaik) have the standard Intel AX1650 chipset, which works fine under macOS using Airportltwm. Tested also on an i7-10750h and i7-10875h, and both working.

GPU: UHD620. Given that S3 sleep isn’t working yet, no github/public config I’ve seen out there had to worry about the display properly working when resuming from sleep. Hence, I had to experiment with various platform-id and device-id configurations (=923E0000) until sleep/resume was steadily working on both FHD and 4K screens.

dGPU: GTX1060Ti/T2000 are both fully disabled on sleep+wake via OC-Little’s advanced transition-to-sleep ACPI tables. Most traditional dGPU _OFF or _PS3 methods only work on the first boot for this machine, and actually, when resuming from hibernation, they power on again, causing excess power consumption. Disable them properly using the transition to sleep (TTS) model as documented here: here

eGPU: tested successfully on the RX580 and RX 6950 XT (latter with device-id spoofing). Also works properly on resuming from hibernation. However thunderbolt is not working in hot-plug mode yet, see below.

HDMI/DP out - works too, once you add agdpmod=vit9696 to boot-args, as it forces the Board-ID to match the expected configuration.

RAM: 32GB DDR4 2933MHz

Audio Codec: Realtek ALC3281 (basically a rebranded ALC289), works with AppleALC

Ethernet Card: Not sure, but it works with AppleRTL815XEthernet110.kext

Wifi/BT Card: Intel AX1650, works perfectly with Airportltwm. If you're using the XPS's i9 motherboard you'll need a USB or M2 WiFi card as the Qualcomm chipset is incompatible (for now).

Touchpad and touch display devices:

I2C devices fully working in GPIO/APIC mode. Most of the setups out there use polling mode, which is expensive for power consumption. So had to create a new TPXX device and experiment with the exact pincode (0x1b) to enable GPIO mode, and also had to disable the existing device to make it work properly. Big thanks to Alessio for showing me a fundamental trick how to turn off devices in ACPI.

BIOS revision: 1.10.1 - 1.23.1. Warning: I don’t recommend later versions of the BIOS in case undervolting is disabled. In the unfortunate event that it is and it’s not possible to downgrade, there <is> another working way to do so, but the process could brick your machine (see one of my other posts on this topic).

As has been documented elsewhere, to get power consumption working properly and also enable undervaluing, you’ll need to set a few variables using the UEFI EFI shell and setup_var. The config below works for both the 9500 and the 5550 across all currently known BIOS versions (but to be safe please do dump your own specific BIOS EFI variable map as documented elsewhere on the interweb.

setup_var PchSetup 0x16 00 (RTC Memory Lock ->Disabled)

setup_var CpuSetup 0x3E 00 (CFG Lock ->Disabled)

setup_var CpuSetup 0xDA 00 (Overclocking Lock ->Disabled)

Which of the guides on the sidebar I used:

Started out with Dortania’s but quickly realised they weren’t going to work for sleep and/or power optimisation, had to create my own ACPI tables and change OpenCore configuration (see below).

What's working, and what isn't working.

Everything is working, including hibernation and resume. Some little niggles persist, which I’ll explain hereunder

Any changes that were specific to your build that were a little (or a lot) different than what you found in the guide, or anything that would be helpful to others with a similar build be sure to talk about that. More detail is always better.

From my experience building an EFI for the XPS 9520 (an even more complicated beast), if you never have enough spare time on your hands (like me), it really doesn’t make sense to build everything from scratch, at least not for me anyway.

As a result I had to use a few working EFIs I found on public repos and then spent the majority of my spare time optimising them for power and efficiency but especially with new functionality such as sleep.

A few additional tips/hints/tricks I found out along the way:

  1. To enable working hibernation on this machine, there is a hardware quirk on the XPS 9500 that stores incorrect variables in the RTC map, resulting in CMOS errors on resume. To prevent this, you need to limit the RTC bank to 1, unlock RTC memory in UEFI, and force hibernation in OpenCore and macOS (pmset -a hibernatemode 25). You also need to set DiscardHibernateMap to True as the BIOS completely scrambles the stored variables.
  2. One additional benefit of OpenCore is that you can enable PowerNap to correctly wake/sleep regularly, by setting the picker to bypass the menu if a hibernation state is found, or set the macOS volume to boot by default. I’ve set the machine to wakes/hibernate once every hour for powernap when plugged into power, and none when on battery.
  3. Undervolting works very well with voltageshift; with the i9 I can get -100mV across CPU/GPU and Cache, saving about 2W of CPU power.
  4. I’ve additionally tweaked most of the devices to use ASPM L1 power, it seems to get an additional 0.5W-1W power saving. You can do this by setting pci-aspm-default to 02000000 for each respective device in DeviceProperties. Use Hackintool (or lspci) to identify the path for each device.
  5. The addition of igfxfw=2 in boot-args will increase power consumption by about 1W and increase iGPU performance by about 10-15%. It’s up to you and your specific configuration whether to include it or not. I use an eGPU anyway for graphics intensive tasks, so happy to leave this out.

Current work-in-progress / suggestions

  1. There’s a minor quirk (on my FHD setup at least) where resuming from hibernation after powernapping the display switches on briefly then switches off, and the only way to reactivate it is to close the lid for 10 seconds and then open it again. It doesnt happen if there’s no powernap, which leads me to think it’s a quick fix, and will get round to sorting it out if/when anyone else has this issue.
  2. HDMI/DP audio out is intermittent, I believe the framebuffer needs to be patched and/or the display device-id needs to be changed, it’s a minor issue for my setup as I use bluetooth when on HDMI (which works flawlessly).
  3. Thunderbolt works correctly on boot up and sleep/resume but hot-plugging doesn’t seem to work for now. Haven’t spent time to investigate why, but it should be a quick fix given that the 9300 and 9700 work on similar TB hardware.
  4. There should be a way to map brightness keys to F6/F7 (such as I have on the 9300) instead of the current FnS/FnB combo. Not sure if it’s a BRT6->BRTX ACPI rename or something more sophisticated.
  5. Have enabled CPUFriendDataProvider as I’ve forced the LFM frequency to 800MHz and this significantly reduces idle power consumption. That said, always on the lookout for any suggestions that improve power efficiency and can also increase burst power.
  6. As everyone who owns this machine knows, Dell broke S3 sleep at an ACPI level, which means that it’s currently not working on any OS. However there seems to be a way to fix it by patching the transition to sleep and wake functions in ACPI, something which is suggested by OC-Little in the link above. Right now it’s not a priority as hibernate/resume works fine for me, but will get round to looking at it once all the other niggles are sorted.

Hopefully some or all the above is useful for setting up your own XPS 9500 / Precision 5550 or provides some answers in case you’re struggling on another (Dell or otherwise) machine!

Due to the regulations here I am not going to post the link to my configuration but for those who are time-limited (like myself) it is easily locatable under my username on GitHub.

submitted by /u/jkbuha
[link] [comments]