Jump to content

How to repair battery without EC in ssdt


3 posts in this topic

Recommended Posts

I use Surface Pro 7, cpu i7 1065G7
Currently trying to fix the battery problem, but EC is not found in dsdt. After creating a virtual EC using SSDTTime according to the OC official website, how to create a battery patch.
BAT can be searched in SSDT-1 (DptfTabl)
code show as below:
Scope (\_SB)
         Device (BAT1)
             Name (_HID, EisaId ("INT3532")) // _HID: Hardware ID
             Name (_UID, "BAT1") // _UID: Unique ID
             Name (_ADR, One) // _ADR: Address
             Name (_STR, Unicode ("Battery 1 Participant")) // _STR: Description String
             Name (PTYP, 0x0C)
             Name (_SUB, "MSHW0186") // _SUB: Subsystem ID
             Method (_STA, 0, NotSerialized) // _STA: Status
                 If ((\BATR == One))
                     Return (0x0F)

Hope someone can help me

Link to comment
Share on other sites

  • 11 months later...

The Surface Pro 7 has a weird implementation. The _SAN device has a _BIX method, so you may be able to create a custom battery device which calls that.
From what I remember though trying to help out someone else though, they use a custom solution which requires driver support within macOS.
I believe this is the linux module: https://github.com/torvalds/linux/tree/master/drivers/platform/surface

The battery specifically is handled under here (though probably requires a lot of other things in the module): https://github.com/torvalds/linux/blob/master/drivers/platform/surface/surface_acpi_notify.c


Looks like the driver installs an address space handler for whenever ACPI tries to access "SAN0" for a request. So yeah, requires writing a kext. Sorry

Edited by 1Revenger1
Link to comment
Share on other sites


  • Create New...