Jump to content

Can't get battery status to work (OpenCore, Thinkpad X250)

3 posts in this topic

Recommended Posts

So far I have succeeded in installing Catalina using OpenCore 0.6.0 on my Lenovo Thinkpad X250 following the Dortania guide. Now I am trying to enable battery monitoring , but I can't get it to work. Am I doing something wrong? Any help would be greatly appreciated!


This is what I did:


  • I copied `SMCBatteryManager.kext` to my `Kexts` folder and added it to `config.plist`.
  • I extracted `DSDT.aml` using SSDTtime on linux during install.
  • I decompiled it on MacOS to get a `DSDT.dsl`:
    • iasl -da -dl DSDT.aml
    • Result
  • I tried patching it using Rehabmans guide. It caught my attention that this process was very similar to these patches (for Thinkpad X230 and others), except for:
    • My embedded controller is called `EC0`, while the example patches a situation where it is called `EC`
    • There is an extra ocurrence of `HWAC`, which I patched as well.
    • Result (or diff)
    • Now the DSDT compiles using MacIASLI compiled the DSDT as ASL by chosing 'Save as...' in MacIASL, and saved it as `DSDT.asl` in `/EFI/OC/ACPI`.
  • I added `DSDT.aml` as a first entry in the `ACPI`-block in `config.plist`

Now, this does not work. I don't get a battery indicator. When I go to 'energy saver' settings in MacOS. It says the battery is at 0%, and when I click the checkmark to add battery state to the menu bar, it briefly flashes an icon there, but immediately turns off the setting again.


While booting; i am seeing this message:


SMCBatteryManager      smcbus: @ BatteryManager probe failure
SMCBatteryManager        bmgr: @ failed to find batteries or adapters!


(Can I view this logs somewhere after booting? It is not in the `opencore-{timestamp}.txt` files which are generated at every boot )


Some things I tried:


  • I tried using `SSDT-BATT.aml` from the apparently succesful installation on a X250 found here.  - When I decompiled the SDST, it refers to `EC`, while my DSDT has a `EC0`. It also calls the OperationRegion `BRAM`, while I see it being called `ECOR`. I tried editing and recompiling it (by opening it in MacIASL and saving again), but no luck.
  • I tried this `SSDT-BATT.dsl` because it is referenced in this X250 Clover guide. Again, it refers to a `EC`, so I tried editing it to `EC0`.
  • My computer has dual batteries, so I tried adding `SSDT-BATC.aml`:
    • I tried the one found in `SMCBatteryManager.kext/Contents/Resources`
    • I tried an (edited) `SSDT-BATC.aml` from the previous source on a sucessful X250 install.
    • I tried adding `SSDT-NTFY.aml` to fix the `Notify ( ...BAT{0,1}... )` from this repository on the Thinkpad T460s, a similar machine.
    • (Is it actually necessary to fix the dual-battery stuff at once, or can I try to handle it later, separately from getting battery monitoring working at all?)
  • I have a `SSDT-EC.aml` generated by `SSDTTime` to create a fake-EC (?). And I have this block 'rename EC to EC0' in `config.plist` (I think also from SSDTTime?). I tried disabling the SSDT, turning the rename around (to create 'rename EC0 to EC'), and using an SSDT that referes `EC`


Does somebody have any advice on what I might be doing wrong? Would mean a lot to me!

Edited by Nrkms
Share this post

On 9/12/2020 at 6:16 PM, Nrkms said:

saved it as `DSDT.asl` in `/EFI/OC/ACPI`.

Typo. .asl instead .aml. Perhaps this is your problem.

Edited by karacho
Share this post