Contribute
Register

Help Surface Pro 5(Surface Pro 2017)-Battery does not work

Status
Not open for further replies.
This ioreg shows battery fully charged. Look at BAT1->AppleSmartBatteryManager->AppleSmartBattery.
Note that CurrentCapacity is same as MaxCapacity (0x1752).
Indicates full charge. You should expect battery status to show 100% in the full charge scenario.

As far as "on battery" when it is not, it means your AC adapter code is likely broken.
Check into/debug your _PSR method.

I'm working on the same for the surface book 2 since a few days and found out that the same mechanism is found within the DSDT for the Surface Pro 2017, Book 2 and Laptop. They are all missing EC within the DSDT and the RQST get handled through SAN. There is a project on GitHub, where they added drivers for _SAN if it comes to Linux (Discussion: link Solution: link), but I wasn't able to find any indicator to make it working for macOS.

Further there is a DSDT where the creator did add patches to catch up the values and store them within UDB1 (at least this is what I see, but I'm only a beginner if it comes to DSDTs). Tried to implement the same to my DSDT, but without success as well. link

As I'm at the end with ideas and only found a lot of threads without success, may I ask if there is someone who could help to adjust the DSDT patches with the help of the information above?

Attached a clean DSDT extract without any patches to analyze if needed. Let me know if there are other stuff I should / could provide.
 

Attachments

  • DSDT.aml
    100.4 KB · Views: 172
Surface Laptop also is missing embeddedcontroller. Stuck at 100% with the acpibaterry.kext. The ioreg shows the battery is not communicating the data properly. I'll try reading what Josh Kaufman did with his DSDT and see if I can apply it to mine.
 
Josh Kaufman's DSDT is a default one for the Surface Book 2. There are no answers there. The issue I believe is that the _SAN device is UART and there is not currently a way for the messaging to reach the _PSR _BST and _BIX methods etc. IF you add debug messaging you will see the functions always return the default values which are not plugged in and invalid percentage of power left.

I looked at this python script (https://gist.github.com/qzed/01a93568efb863f1b7887f0f375c03fc) which prints the status out maybe thinking I could write a custom status meter but I am not sure what port to bind to or if it would even be mapped to /dev .

I think I read that voodooi2c can handle UART so maybe something could be extracted from that project. I have googled a bit looking for other systems that use UART for status but have not come up with anything definitive so if anyone knows of a system that uses the same pattern that might help. Surface Book 2, Surface Pro 5 and 6, and Surface Laptop all appear to be the same in this regard.

I plan on taking another dive on this after I am done trying to update the old Avastar BlueTooth injector to use the USBHost kit and then seeing if I can nudge the wireless device enough that the device appears in IOReg.
 
I looked at the debug log. In kernel_log.txt, there is such an error:
kernel: (kernel) ACPIBatteryManager: Error: Permanent Battery Failure (0)
But I don't know how to fix it.
Has the problem been solved
 
Status
Not open for further replies.
Back
Top