miliuco Posted September 30 Share Posted September 30 (edited) My system (Z390 Aorus Elite + i9-9900K + RX 6600 XT) running macOS 15 Sequoia doesn't always go to sleep as expected. Sometimes it does, turning off lights and fans, but other times it stays awake, even with the screen on. This happens with the same settings I use on macOS 14 Sonoma and macOS 13 Ventura where the system goes to sleep normally. There are 2 situations that can cause this behavior: 1.- System Information >> Power >> Wake Events: sleep usually fails when there are Scheduled Events that can be generated by different processes com.apple.alarm dependent (they are Wake Type). These events can be deleted with the command sudo pmset schedule cancelall 2.- apsd process (Apple Push Notification Services Daemon): when active, sleep usually fails. This process seems to be related to notifications from various applications and services. It can be stopped with one of these commands: sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist sudo launchctl bootout -w /System/Library/LaunchDaemons/com.apple.apsd.plist In my case, scheduled events seem to affect sleep more than apsd process. Sleep frequently fails when there are scheduled events but usually works fine without disabling apsd. However, there are comments on this and other forums from users who do not fix this problem until they act on apsd. Therefore, my recommendation is to cancel scheduled events first, test if the system enters and exits sleep as it should and disable apsd only as a secondary resource if sleep continues to fail. Adding to this, cancellation of scheduled events can be done without modifying the SIP value but disabling apsd forces you to work with SIP partially disabled. The launchd process macOS uses launchd to manage daemons and agents (tasks, processes or resident programs that run in the background without user interaction), and you can use it to run shell scripts. You cannot interact with launchd directly; you must use the launchctl command to start and stop daemons and agents. During boot, launchd is the first process that the kernel runs. Here are the places where macOS stores the configuration files for these background processes: /System/Library/LaunchDaemons: System daemons installed by Apple, protected folder /System/Library/LaunchAgents: Agents installed by Apple, protected folder /Library/LaunchDaemons: System daemons added by other applications /Library/LaunchAgents: Agents added by other applications ~/Library/LaunchAgents: Agents added by other applications that apply only to the logged in user. It is possible to create launchctl controlled tasks with plist files located in the /Library/LaunchAgents, /Library/LaunchDaemons or ~/Library/LaunchAgents folders. One important difference is that tasks existing in /Library/LaunchDaemons can be run as root but those in the LaunchAgents folders are run as the logged in user. I have created a task that is launched every so often by running the 2 commands mentioned above (clear scheduled events and stop apsd). Since both commands require sudo, the plist file has to be placed in /Library/LaunchDaemons. The following is a guide on how I did it. There is a lot of information about this on the Internet, I will limit myself to describing my personal experience as it applies to sleep mode on macOS Sequoia. 1.- Cancel scheduled events Create a shell script and save it as nosched.sh: #!/bin/zsh sudo pmset schedule cancelall #sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist Copy it to /usr/local/bin: sudo cp /Users/yo/Desktop/LaunchDaemons/nosched.sh /usr/local/bin Make root the owner of the file: sudo chown root:wheel /usr/local/bin/nosched.sh Create a plist file and save it as com.user.nosched.plist: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.nosched</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/nosched.sh</string> </array> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>300</integer> <key>KeepAlive</key> <true/> </dict> </plist> In this file we have: Label: label that must match the file name without the .plist extension ProgramArguments: the command or file to be executed RunAtLoad: activate from boot StartInterval: time interval in seconds between executions KeepAlive: keep alive. Copy it to /Library/LaunchDaemons. It has already been mentioned that the plist files in the /Library/LaunchDaemons folder can be executed as root but those in the /Library/LaunchAgents folder are executed as the active user. sudo cp /Users/yo/Desktop/LaunchDaemons/com.user.nosched.plist /Library/LaunchDaemons Make root the owner of the file: sudo chown root:wheel /Library/LaunchDaemons/com.user.nosched.plist 2.- Deactivating apsd process Remember to do this only if method 1 is not enough and/or you verify that, with apsd inactive, sleep works fine. Regarding the apsd process, /System/Library/LaunchDaemons/com.apple.apsd.plist already exists but the /System folder is protected and macOS does not allow to modify it or act on it, so in order to stop apsd it is necessary to run SIP (partially) disabled. You can use the SIP settings required by OCLP root-patch, csr-active-config=03080000 (0x803 in Clover) in OpenCore's config.plist. This setting returns Unknown state when running csrutil status in Terminal and the security variables it disables are: CSR_ALLOW_UNTRUSTED_KEXTS - 0x1 (1) CSR_ALLOW_UNRESTRICTED_FS - 0x2 (2) CSR_ALLOW_UNAUTHENTICATED_ROOT - 0x800 (2,048). The nosched.sh file must be modified to uncomment the command that disables apsd: #!/bin/zsh sudo pmset schedule cancelall sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist 3.- Starting the task Regarding scheduled events, you can start the task to run in the background with one of these commands (in my case both seem to work well): sudo launchctl load /Library/LaunchDaemons/com.user.nosched.plist sudo launchctl start /Library/LaunchDaemons/com.user.nosched.plist Regarding apsd, after rebooting (with the relaxed SIP value) the apsd process stops interfering with sleep. If running load gives you this error: Load failed: 5: Input/output error Try running launchctl bootstrap as root for richer errors. Use bootstrap to get detailed information about the reason for the error: sudo launchctl bootstrap /Library/LaunchDaemons/com.user.nosched.plist To see if the task is started (com.user.nosched must be present): sudo launchctl list | grep com.user.nosched - 0 com.user.nosched To see if apsd is no longer active (the command returns nothing if com.apple.apsd is stopped):: sudo launchctl list | grep com.apple.apsd You can now configure Power Saver with the pmset command. Example: sudo pmset displaysleep 1;sudo pmset disksleep 2;sudo pmset sleep 6 The shell script appears in Startup Items (System Settings >> General). Spoiler Edited October 12 by miliuco Scheduled events as main 7 1 Link to comment Share on other sites More sharing options...
Max.1974 Posted September 30 Share Posted September 30 @miliuco Hello great master Emílio, as always, your posts are very detailed and helpful. Greatly passionate about Hackintosh and eager to help people. I got a bash script from the internet that helped me a lot, and I put it in an Xcode script to make it easier, it solved a lot about sleep in my Hacks and especially in Sequoia. If you want to add to your knowledge, and I believe you already know, but it installs the sleep watcher and fixes the sleep return, of course you need to be up to date with the other PRW, GPRW, UPRW parameters. So, here is the script that helps a lot. Just Double Click on kext blue icon. Thanks. USBFIX_SLEEP.zip Credits by @syscl: https://github.com/syscl/Fix-usb-sleep/blob/master/fixUSB.sh 3 Link to comment Share on other sites More sharing options...
miliuco Posted September 30 Author Share Posted September 30 @Max.1974 Dear friend, I was already looking at this script a few days ago when you first uploaded it. It is interesting because, from a single script, it creates the configuration plist file for launchd and performs the actions that we would normally do by hand. But I lack the knowledge (or dedication) to create a script like this that does what I mention in my post. Anyway, thanks and I will study it again to see if I am able to do something like this for sleep in Sequoia. 1 1 Link to comment Share on other sites More sharing options...
naiclub Posted September 30 Share Posted September 30 @miliuco Hello, I use USBWakeFixup.kext and it works very well. I got it from Master Maldol. I sleep soundly and wake up immediately when I wake up. 2 Link to comment Share on other sites More sharing options...
Max.1974 Posted September 30 Share Posted September 30 2 horas atrás, miliuco disse: @Max.1974 Caro amigo, eu já estava olhando para este roteiro há alguns dias, quando você o carregou pela primeira vez. É interessante porque, a partir de um único script, ele cria o arquivo de configuração plist para o launchd e executa as ações que normalmente faríamos manualmente. Mas me falta o conhecimento (ou dedicação) para criar um roteiro como este que faça o que menciono no meu post. De qualquer forma, obrigado e vou estudá-lo novamente para ver se sou capaz de fazer algo assim para dormir em Sequoia. Hi my @Miliuco dear sorry if i uploaded before, my mind after 50 years its not the same hehehe!! Enjoy it and if you need some help about scripting, we have many practices and free solutions with some "blank" bash script, just insert in and save. 1 1 Link to comment Share on other sites More sharing options...
miliuco Posted September 30 Author Share Posted September 30 @naiclub Thanks. I know about USBWakeFixup, I used it in the past with my previous hack that didn't wake up with a single keyboard or mouse tap and needed 2 taps. But this problem is different and it's not fixed with this kext. I have it with Sequoia. Ventura and Sonoma all work fine. But on Sequoia sleep is erratic, sometimes yes and sometimes no. With the trick I posted, Sequoia goes to sleep properly. I'm still looking for unwanted side effects just in case there are any, to discuss them here. 2 Link to comment Share on other sites More sharing options...
miliuco Posted October 12 Author Share Posted October 12 I've found that on my system it's enough to cancel scheduled events and I don't need to disable apsd to fix sleep. This has the added advantage that it's not mandatory to relax SIP. But this may be different for other users. In fact, there have been comments on the forum that disabling apsd improves sleep on systems where it doesn't work well. Modified the first post accordingly. 2 1 Link to comment Share on other sites More sharing options...
Irish_Man Posted October 13 Share Posted October 13 I've had a sleep issues and these are commands that I use to try to "fix" them. Maybe it helps someone. For checking things: pmset -g pmset -g log pmset -g assertions pmset -g log | grep sleep | tail -n 1 To fix things: sudo pmset -a autopoweroff 0 sudo pmset -a powernap 0 sudo pmset -a standby 0 sudo pmset -a proximitywake 0 sudo pmset -a tcpkeepalive 0 sudo pmset -a ttyskeepawake 0 sudo pmset -a womp 0 sudo pmset hibernatemode 0 If the EFI firmware does not read sleepimage correctly, errors can occur so I use these: sudo rm /var/vm/sleepimage sudo touch /var/vm/sleepimage sudo chflags uchg /var/vm/sleepimage 3 Link to comment Share on other sites More sharing options...
chris1111 Posted October 13 Share Posted October 13 on my HP Probook 650 G1 I dont have sleep issue the only thing is I lost Bluetooth after wake up, only in sequoia; thats never happend on any other macos version. 3 Link to comment Share on other sites More sharing options...
miliuco Posted October 13 Author Share Posted October 13 @Irish_Man My settings are the same. No difference. Also tried: defaults write com.apple.loginwindow PowerButtonSleepsSystem -bool yes -> macOS goes to sleep when pressing power button defaults write com.apple.loginwindow PowerButtonSleepsSystem -bool no -> macOS displays a dialog (sleep, restart, shutdown) as in real Macs. It's something happening in Sequoia, in older macOS I haven't had sleep issues for a long time. @chris1111 Yes, I see that there are systems sleeping fine but others don't. Not a long time ago @eSaF and others commented about deactivating apsd to have proper sleep. 3 Link to comment Share on other sites More sharing options...
eSaF Posted October 13 Share Posted October 13 1 hour ago, miliuco said: Not a long time ago @eSaF and others commented about deactivating apsd to have proper sleep. Yes Bro although the script I posted worked perfectly, there was caveat whereas it could affect iMessage function as reported by some. Hence the reason the script was accompanied by an 'Undo' choice. I had a problem with Sleep/Wake where the machine would not Sleep and used that script to remedy the problem. It worked perfectly, but to be honest I did not noticed any problems with iMessage, not to say there wasn't. My Sleep/Wake problem was solved by the following Sequoia Beta Update so I discarded the script. At this moment Sleep/Wake is working as should on my machine without a problem. Sorry to hear others are having this problem. 3 Link to comment Share on other sites More sharing options...
Max.1974 Posted October 13 Share Posted October 13 Hi guys, tested the script that I implemented and Works fine too with i5-9600k / Aorus B360-M Gaming 3 / AMD Radeon RX 64 Vega 8Gb Clover & Opencore Spoiler 2 Link to comment Share on other sites More sharing options...
miliuco Posted October 13 Author Share Posted October 13 (edited) @Max.1974 This script works fine and does what it is supposed to do but it is different from what I have proposed. Sleepwatcher is a great tool to run commands or tasks when the system goes to sleep and when it wakes up. I have a different issue, the system does not go to sleep, in this case sleepwatcher is not useful. But I have the project to use sleepwatcher to disable Bluetooth on sleep and re-enable it on wake up on systems with Wi-Fi and Bluetooth Intel that lose sleep and have instant wake after sleep when using the required extensions for Bluetooth. This happens to me and other users. It is something I will find time to work on. Do you have this issue, instant wake after sleep when using Intel Bluetooth? (I guess this is OT 🤫 ). Edited October 13 by miliuco Fix typo 4 Link to comment Share on other sites More sharing options...
chris1111 Posted October 13 Share Posted October 13 31 minutes ago, miliuco said: @Max.1974 This script works fine and does what it is supposed to do but it is different from what I have proposed. Sleepwatcher is a great tool to run commands or tasks when the system goes to sleep and when it wakes up. I have a different issue, the system does not go to sleep, in this case sleepwatcher is not useful. But I have the project to use sleepwatcher to disable Bluetooth on sleep and re-enable it on wake up on systems with Wi-Fi and Bluetooth Intel that lose sleep and have instant wake after sleep when using the required extensions for Bluetooth. This happens to me and other users. It is something I will find time to work on. Do you have this issue, instant wake after sleep when using Intel Bluetooth? (I guess this is OT 🤫 ). @miliuco create one sleepwatcher for user have issue loosing bluetooth after wake 3 Link to comment Share on other sites More sharing options...
Irish_Man Posted October 13 Share Posted October 13 @eSaF yes, unfortunately I was one of those. When I used the script, sleep was fixed but my iMessage was broken. It took me some time to figure out what went wrong. @miliuco I checked my "System Information >> Power >> Wake Events" and there is always some "Scheduled Event: but it doesnt affect my Sleep/Wake. (Check pics) The issue I have that I can't fix is after wake up. I always get that "Disk Not Ejected Properly" error. I mapped my USB ports ( triple checked) and I can't get rid of that error. Spoiler 2 Link to comment Share on other sites More sharing options...
miliuco Posted October 14 Author Share Posted October 14 (edited) @Irish_Man Then the script posted by @Max.1974 can help you. https://github.com/syscl/Fix-usb-sleep Edited October 14 by miliuco Fix typo 2 Link to comment Share on other sites More sharing options...
Max.1974 Posted October 14 Share Posted October 14 (edited) 18 hours ago, chris1111 said: @miliucocrie um sleepwatcher para o usuário ter problema de perder o bluetooth após o despertar Hi my masters @Chris1111 and @Miliuco If someone have been issues to wake Bluetooth after sleep, run this tool installer: Is a tool to install "Home Brew" and Sleep bluetooth tool from brew install "sleepwatcher blueutil" Thanks again @miliuco !! I think I fix that old patcher Home Brew & SleepBTWatcher installer.zip Sources: ## Install homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ## IMPORTANT: Once the install finishes run the two commands displayed in the terminal window echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" ## Install the bluetooth util and sleepwatcher brew install sleepwatcher blueutil ## This creates a file which switches bluetooth off when the macbook lid is closed echo "$(which blueutil) -p 0" > ~/.sleep ## This creates a file which switches on bluetooth when the lid is open echo "$(which blueutil) -p 1" > ~/.wakeup ## This makes both the files runable chmod 755 ~/.sleep ~/.wakeup ## Finally restart the sleepwatcher service (to pickup the new files) brew services restart sleepwatcher And for the ended with Gold Key, run at the final in Terminal: sudo pkill bluetoothd Its for reset your Bluetooth configs Good Lucky Edited October 14 by Max.1974 2 Link to comment Share on other sites More sharing options...
Max.1974 Posted October 14 Share Posted October 14 (edited) Hi @Irish_Man if you edit correctly your SSDTS and patchers to wake and sleep, for exemple checking your DSDT I think is PCI00 need fix SMBUS and PRW, RTCAWAC, RHUB devices (USB mapping) etc... I make this with my hacks and no more issues. ACPI Pacthes (you need check what is necessary for your hardware): ACPI plist patchers 1-7 8-13 To fix issues about RHUB Ports my video detailed Compile your SSDT-RHUB to better performance USB 3.0 in MacOs and Hackintosh build. Hot Patch Guide from GitHub https://github.com/jsassu20/OpenCore-HotPatching-Guide Good Lucky Edited October 14 by Max.1974 1 Link to comment Share on other sites More sharing options...
miliuco Posted October 14 Author Share Posted October 14 (edited) @Max.1974 Excellent! SleepBTWatcher script is a good starting point to me. It has all that I need to try (stop BT on sleep and start on wake, when using Intel BT). Thanks. One thing to mention is that the daemon name blued has been changed in modern macOS to bluetoothd. So the commands where blued exists must be changed. E.g. sudo launchctl stop com.apple.blued Must be sudo launchctl stop com.apple.bluetoothd This is the fixed script, it can be saved as SleepBTWatcher.sh, no need of an application: #!/bin/bash # Docs I read # https://gist.github.com/nicolasembleton/afc19940da26716f8e90 # https://gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f # https://github.com/max-lobur/dotfiles/blob/master/sh/bt.sh # Things I had to do beforehand #brew install blueutil #brew install sleepwatcher #sudo mkdir -p /usr/local/sbin #sudo chown -R $(whoami):staff /usr/local/sbin/ #brew link sleepwatcher #/usr/local/sbin/sleepwatcher --verbose -w ~/.local/bin/restart-bluetooth #brew services start sleepwatcher # Stop all the bluetooth stuff sudo kill -9 $(pgrep bluetoothd) /usr/local/bin/blueutil -p 0 sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport sudo kextunload -b com.apple.iokit.IOBluetoothHostControllerUARTTransport sudo launchctl stop com.apple.bluetoothd # Start enough of the bluetooth stuff /usr/local/bin/blueutil -p 1 sudo launchctl start com.apple.bluetoothd sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport Note that the script requires Homebrew. And I think the scripts ~/.sleep and ~/.wakeup are missing with the commands to be run when entering sleep and when waking up. Edited October 14 by miliuco Fix typo 1 1 Link to comment Share on other sites More sharing options...
Irish_Man Posted October 14 Share Posted October 14 Dang @Max.1974, thats way above my league😂 I watched the video and i didn't realize i don't speak Portuguese (joke) I used to know how to “convert” my Usb mapped kext to acpi but i forgot how i did it. 1 Link to comment Share on other sites More sharing options...
Max.1974 Posted October 14 Share Posted October 14 Hi my friend @miliuco thanks to tell us about this issue, I try fix that with new patcher re-uploaded above. I hope now fix that, and is a home brew installer too. 11 minutos atrás, Irish_Man disse: Dang @Max.1974, thats way above my league😂 Eu assisti ao vídeo e não percebi que não falo português (piada) Eu costumava saber como “converter” meu usb mapeado kext para acpi, mas esqueci como fiz isso. Hi my friend, post here your "virgin" RHUB and I you tru fix it for you! 1 Link to comment Share on other sites More sharing options...
Max.1974 Posted October 14 Share Posted October 14 (edited) 19 hours ago, miliuco said: @Max.1974 This script works fine and does what it is supposed to do but it is different from what I have proposed. Sleepwatcher is a great tool to run commands or tasks when the system goes to sleep and when it wakes up. I have a different issue, the system does not go to sleep, in this case sleepwatcher is not useful. But I have the project to use sleepwatcher to disable Bluetooth on sleep and re-enable it on wake up on systems with Wi-Fi and Bluetooth Intel that lose sleep and have instant wake after sleep when using the required extensions for Bluetooth. This happens to me and other users. It is something I will find time to work on. Do you have this issue, instant wake after sleep when using Intel Bluetooth? (I guess this is OT 🤫 ). Hi @miliuco my dear friend, Emílio, If you have a wireless Pcie card with USB bluetooth you may be able to map it with the modified RHUB SSDT which I believe is necessary from the z490 cards onwards up to the z790. I made a video explaining it. The tools I implemented work for many who don't have all SSDTs packers like me. I didn't have the bluetooth intervals issue, this may be due to the fact that I compile my kexts and use Clover, which in terms of power management does not have SMC modules but FakeSMC, but I tested it on Opencore and didn't see differences. In fact, here in Sequoia 15.0.1 I no longer needed these tools, it goes to sleep and wakes up calmly. It was fix for betas. And a developer friend mine @Hnanoto created two kexts naturally originating from Apple configurations, and I use them well, and they may be responsible for improving bluetooth I hope it helps my friend, as I don't use any Bluetooth kext or firmware or data for Broadcomns cards, except that I mention, and which in my opinion, BlueToolFixup causes this. So I removed it. But I know not all of them are native friendly. I hope I could have helped you. My kexts that I use Spoiler Try use this two kexts: AirPortUtility.kext and BluetoothFileExchange.kext AirPortUtility.kext.zip https://github.com/hnanoto/AirPort-Utility/releases/tag/1.0.1 BluetoothFileExchange.kext.zip https://github.com/hnanoto/Bluetooth-File-Exchange/releases/tag/1.0.1 By @Hnanoto Source: Edited October 14 by Max.1974 2 Link to comment Share on other sites More sharing options...
miliuco Posted October 14 Author Share Posted October 14 @Irish_Man I don't think that ACPI USB mapping is better than the kext method. But if you want to try, this is the better guide (afaik): USB port mapping via ACPI (macOS 11.3+) by @cankiulascmnfye 2 Link to comment Share on other sites More sharing options...
miliuco Posted October 14 Author Share Posted October 14 @Max.1974 "Home Brew & SleepBTWatcher installer script" (seven posts above) is okay, it installs all required things, creates both ~/.sleep (disables BT ) and ~/.wakeup (enables BT) files and at the end kills bluetoothd process to start all the new settings (it is reactivated in a few seconds). I have to try it. The question I have is if in the files ~/.sleep and ~/.wakeup it will be enough with these single line commands: $(which blueutil) -p 0 (~/.sleep) $(which blueutil) -p 1 (~/.wakeup) Or if it will be necessary to complete them with more commands as in the other script you have uploaded: ~/.sleep sudo kill -9 $(pgrep bluetoothd) $(which blueutil) -p 0 sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport sudo kextunload -b com.apple.iokit.IOBluetoothHostControllerUARTTransport sudo launchctl stop com.apple.bluetoothd ~/.wakeup $(which blueutil) -p 1 sudo launchctl start com.apple.bluetoothd sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport I'll try both ways. Did you try both also? hanks. 2 Link to comment Share on other sites More sharing options...
Irish_Man Posted October 14 Share Posted October 14 3 hours ago, Max.1974 said: Hi my friend, post here your "virgin" RHUB and I you tru fix it for you! @Max.1974 thank you very much my friend, I hope this is the one you looking for? I added my USBkext just in case you need it. RHUB+Kext.zip 1 Link to comment Share on other sites More sharing options...
Recommended Posts