-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
keyNotFound(code: "CHWA") #49
Comments
I experience the same issue - just for the record. |
I'm also experiencing this issue |
same |
I have the same issue |
Ouch, not sure what we can do without it. Unless this was accidental, we'll just have to wait and see what replacement key (if there will be one) can do the same trick. Before, we learned about CHWA from the Asahi SMC driver so we'll see what findings they have soon I assume: https://github.com/AsahiLinux/linux/blob/asahi/drivers/power/supply/macsmc_power.c |
I updated my system to 15.1 beta 2 and encounter the same issue. |
same error message. using |
same with me. |
Asahi now seems to have changes for the latest firmware: AsahiLinux/linux@c6ccbdd |
@TimNN Good eye! I'll install Sequoia on another volume and test that out. |
Got this too on 15.1 I am using AlDente until it gets fixed, but will definitely switch back once it is fixed, because I prefer a more "native" solution. |
When trying to manually write to (or read from)
Disabling SIP didn't seem to help either... |
Getting the same error even just reading
Not really sure what entitlement I need to sign with to get access to this key. |
Ugh, this is very sad. I guess the only options are:
|
|
https://github.com/lslqtz/bclm_loop/tree/main Fork of BCLM called BCLM_Loop which I can confirm does work on Sequoia 15.0 release. It installs and can be enabled pretty much in the same fashion as the original BCLM. Under the hood it may not be as clean or elegant as the original BCLM as it runs in a loop as a background service (as opposed to writing to the SMC), but it still does the job 100% as far as I can tell so far with no impact on battery life when unplugged. Still hoping the original BCLM can be fixed though. |
@sibilus: Which value did you try to write? Based on the Asahi code, setting (The |
I'm getting the same error, after updating to macOS 15.0 |
This is great news if people are able to read/write |
@zackelia: The success report was for "macOS Sonoma 14.7", so I have very little hope that this is going to work on 15.0. I assume that 14.7 got the firmware update with On the 15.0 release ( |
@TimNN: I've tried |
I tried I'm turning on builtin "Optmized battery charging" and I'll see if they maybe improved it. |
macOS 15.0 |
Same issue on macOS 15.0. Using Al Dente for now, but would like to go back to bclm, which has been perfect since I started using it, and has definitely extended my battery life. |
hi i have one question how to install this fork ? because its not so easy like using brew. please help me because I have spend few hours to install this fork and I have no idea how to do this .. my Mac is with m1 procesor |
brew support has been added, but versions obtained through it may occasionally be out of date. BTW: It only supports Apple Silicon based Mac computers. (I don't have an Intel Mac to test)
And, macOS 15.1 beta 5 still does not provide the required permissions to write to CHLS.
|
@lslqtz I was deciding on bclm_loop and Battery-Toolkit, could you advise on the benefits of bclm_loop over Battery-Toolkit? for reference: I've asked the Battery-toolkit author mhaeuser/Battery-Toolkit#38 ideally the micro charging is as infrequent as possible when the laptop runs on power adapter. |
@ssh352 |
bclm_loop is an improvement on bclm [1]. It has no GUI and runs silently in the background. This means it does not occupy the menu bar, but is less flexible. In terms of energy consumption, although the two projects use different methods, there is almost no difference in actual use. In addition, since the code of bclm_loop is simpler, it is easier to make user-defined code modifications. In addition, bclm_loop, like bclm, (used to) support firmware-based charging control, and the current version of bclm_loop will still try to use firmware-based charging control on supported firmware. [1] The original purpose of bclm_loop was to provide MagSafe LED control capabilities based on bclm. (PR #39) If you need a GUI and the greater user flexibility it provides, there are other options, including this one or something like AIDente. |
thanks very helpful info. "Battery Toolkit uses the OS APIs to be notified of changes to the charging level and is idling most of the time. " Battery-toolkit appears not firmware based though. |
thx |
Thx very much for help |
I'm also hoping the original BCLM can be fixed, very helpful! |
Why should I prefer BCLM over batt? It seems batt gets the job done, isn't it? |
Main difference is that |
Which further means that I'm actually thinking of having both |
Forgive me, but this does not seem like a suitable place to discuss other battery tools. |
Is there any update plan for this project ? |
Hello, Unless Apple has since reverted the changes in a beta version of macOS 15.1, there's little the author can do. The bclm feature is solely dependent on a specific flag in the Mac's battery management hardware, which Apple has removed. The 80% limit is a hardware-handled feature. There are alternative ways to recreate the 80% limit using software (see the tools listed earlier). Since they're software-based, they may not be as optimal during sleep, but some implementations are still effective. I've switched to Battery-Toolkit, which appears to be the most advanced and stable option, utilizing events instead of loops, handling wake and sleep events, offering an optional GUI, and actively maintained. |
OK, thank you. I will try to use Battery-Toolkit as well. But I really hope Apple will restore this specific flag. |
same issue on macos 12.7.6 |
I took a look at this again now that macOS 15.1 is out, but still the same issue. With some more experimentation, I am highly confident that Like others in this issue mentioned for older versions of macOS, writing values such as |
hi there is new release from bclm_loop how can I update this version ? |
Just to double-check: are you saying that writing Reason I ask is because I'm willing to jump through the same hoops as you (disable SIP, dyld interposing) if it works. Want to confirm before going down the rabbit-hole though, since I'm currently unfamiliar with dyld interposing. Thanks for your experimentation and reporting the results! |
@zship This was me running on 15.1. I have the code that does the dyld interposing so really it's just turning off SIP to test it out. If people wanted to look more at the SMC values, I could put a branch up that's capable of that at least. |
I'd definitely be interested. Have some time to experiment, too. I have some (small) context here FWIW: implemented a basic "calibration" script which writes CH0I/CH0C values and I have some idea of how those (used to) interact with CHWA. If you manage to get some time to push your dyld interposing code, I'm sure that would be a great help! Even a gist or a separate work-in-progress/not-fully-working repo would likely be useful IMO, but whatever makes sense for you if/when you get time. Would be happy to take measurements and report findings, if useful. |
@zship and others - I pushed an experimental repo for SMC testing on Seqouia: https://github.com/zackelia/smc-interpose |
wait, so bclm will start working by following the experimental repo? or is it still not? |
Short answer: no, as it is now the experimental script does not prevent the battery from charging past the 80% threshold. Sorry, got busy again! I did manage to do one test run. The script appears to have set CHLS to A couple details of the test run I did on an M3 Macbook Pro, if helpful: # battery is charged to 70%
$ pmset -g batt
Now drawing from 'AC Power'
-InternalBattery-0 (id=21102691) 70%; AC attached; not charging present: true
# read CH0I and CH0C. CH0I=00 and CH0C=01 indicates "inhibit charging"
$ smc -k CH0I -r
CH0I [ui8 ] 0 (bytes 00)
$ smc -k CH0C -r
CH0C [hex_] (bytes 01)
# run zackelia's experimental script (sets CHLS to 150/"80%")
$ DYLD_INSERT_LIBRARIES=./build/libsmc.dylib systemstats -h
1 80
# set CH0I and CH0C to the default values, indicating "auto"/"charge if needed"
$ sudo smc -k CH0I -w 00
$ sudo smc -k CH0C -w 00
# poll the battery percentage every minute
$ while true; do pmset -g batt; sleep 60; done
# above while loop is simplified... I actually processed the output a bit.
# (Mode=auto indicates CH0I=00, CH0C=00)
[2024-11-13 10:13:10] Percentage=70% Mode=auto
[2024-11-13 10:14:10] Percentage=71% Mode=auto
[2024-11-13 10:15:10] Percentage=72% Mode=auto
[2024-11-13 10:16:10] Percentage=73% Mode=auto
[2024-11-13 10:17:10] Percentage=74% Mode=auto
[2024-11-13 10:18:10] Percentage=75% Mode=auto
[2024-11-13 10:19:11] Percentage=76% Mode=auto
# ... continued to increment ...
[2024-11-13 10:53:13] Percentage=100% Mode=auto
[2024-11-13 10:54:13] Percentage=100% Mode=auto
# ... kept monitoring for a while just in case ...
# still at 100% after 2 hours
[2024-11-13 12:51:22] Percentage=100% Mode=auto |
I have recently updated to MacOS 14.7.1 (from 14.5 (I think)) and experienced the “keyNotFound(code: "CHWA”): Searching that lead to me to this github thread.
My MacBook Pro (M3) only charges to 80%. However setting the value back to “0000”:
Seems to not revert the change (i.e. still stuck at max 80%). I also tried setting 0164 (thinking that might be for 100%) but that does not do anything either (stuck at 80%) |
Interesting, I'll have to look more at macOS 14.7 to mess with CHLS. Regarding your charge limit issues, rebooting should clear the SMC and fix your issue. |
So it seemed like my Macbook (after messing with the "CHLS" values) was not charging at all (i.e. when I unplugged it (at the 80% it was holding the charge at) it went down to ~68% and when I plugged it back in it just held at that 68% instead of charging. From what I recall with Sonoma 14.5 I had no issues, e.g. when I set CHWA to 01 it set the maximum charge at 80% and was charing fine when it was lower (although I did have to reset CHWA to 01 after every reboot - fortunately I did not reboot that often). And when I set it to 00 it charged to 100% without having to reboot. And if at 100% setting CHWA to 1 automatically discharged the battery until it reached 80%. Would be nice to have that behavior back. Certainly there seem to lots of knobs/switches that could affect the behavior... |
After updating the macOS 15.0 beta 5, bclm is not working well. Running
read
orwrite
will get an error (maybe) following.I know that using the beta version of macOS is my own risk. Creating this issue is just for a notice about this change.
The text was updated successfully, but these errors were encountered: