Question about battery charging

I noticed lately that the battery is most of the time not charged over 93% (or 95%). At the levels, it keeps charging, but the number doesn’t always go to 100% (it did a couple time though).

I’m running Manjaro for about 1 month now, and when I was running Ubuntu, I didn’t have this issue.

I read through some posts regarding similar issues, and checked relevant info accordingly. One thing I found strange (to me) is under /sys/class/power_supply/BAT0, I have the following settings

➜ more charge_full                                          
6739000
➜ more charge_full_design                                   
6400000

Do these mean anything, or are they simply irrelevant and my issue due to something else?

sudo inxi --admin --verbosity=7 --filter --no-host --width
System:
  Kernel: 6.1.44-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.1-x86_64
    root=UUID=06f2f8c6-47ea-444a-97a1-44629f02874f rw quiet splash
    resume=UUID=0fc478b2-1d95-466e-bafd-6de6515a989b udev.log_priority=3
  Desktop: KDE Plasma v: 5.27.7 tk: Qt v: 5.15.10 wm: kwin_wayland dm: SDDM
    Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: Apple product: MacBookPro12,1 v: 1.0 serial: <filter>
    Chassis: type: 9 v: Mac-E43C1C25D4880AD6 serial: <filter>
  Mobo: Apple model: Mac-E43C1C25D4880AD6 v: MacBookPro12,1 serial: <filter>
    UEFI: Apple v: 430.140.3.0.0 date: 04/18/2022
Battery:
  ID-1: BAT0 charge: 73.1 Wh (95.9%) condition: 76.2/72.3 Wh (105.3%)
    volts: 12.3 min: 11.3 model: SMP bq20z451 type: Li-ion serial: N/A
    status: charging cycles: 7
Memory:
  System RAM: total: 8 GiB available: 7.66 GiB used: 3.63 GiB (47.3%)
    igpu: 64 MiB
  Array-1: capacity: 8 GiB slots: 2 modules: 2 EC: None
    max-module-size: 4 GiB note: est.
  Device-1: DIMM0 type: DDR3 detail: synchronous size: 4 GiB speed: 1867 MT/s
    volts: N/A width (bits): data: 64 total: 64 manufacturer: 0x80AD
    part-no: 0x483943434E4E4E424C54414C41522D4E5544 serial: <filter>
  Device-2: DIMM0 type: DDR3 detail: synchronous size: 4 GiB speed: 1867 MT/s
    volts: N/A width (bits): data: 64 total: 64 manufacturer: 0x80AD
    part-no: 0x483943434E4E4E424C54414C41522D4E5544 serial: <filter>
CPU:
  Info: model: Intel Core i5-5257U socket: BGA1168 (U3E1) note: check bits: 64
    type: MT MCP arch: Broadwell gen: core 5 level: v3 note: check built: 2015-18
    process: Intel 14nm family: 6 model-id: 0x3D (61) stepping: 4
    microcode: 0x2F
  Topology: cpus: 1x cores: 2 tpc: 2 threads: 4 smt: enabled cache:
    L1: 128 KiB desc: d-2x32 KiB; i-2x32 KiB L2: 512 KiB desc: 2x256 KiB
    L3: 3 MiB desc: 1x3 MiB
  Speed (MHz): avg: 575 high: 800 min/max: 500/3100 base/boost: 3100/2700
    scaling: driver: intel_cpufreq governor: schedutil volts: 1.1 V
    ext-clock: 25 MHz cores: 1: 500 2: 500 3: 500 4: 800 bogomips: 21608
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat arch_perfmon
    avx avx2 bmi1 bmi2 bts clflush cmov constant_tsc cpuid cpuid_fault cx16
    cx8 de ds_cpl dtes64 dtherm dts epb ept ept_ad erms est f16c flexpriority
    flush_l1d fma fpu fsgsbase fxsr ht ibpb ibrs ida intel_pt invpcid
    invpcid_single lahf_lm lm mca mce md_clear mmx monitor movbe msr mtrr
    nonstop_tsc nopl nx pae pat pbe pcid pclmulqdq pdcm pdpe1gb pebs pge pln
    pni popcnt pse pse36 pti pts rdrand rdseed rdtscp rep_good sdbg sep smap
    smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm tm2 tpr_shadow
    tsc tsc_adjust tsc_deadline_timer vme vmx vnmi vpid x2apic xsave xsaveopt
    xtopology xtpr
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: itlb_multihit status: KVM: VMX disabled
  Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT
    vulnerable
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable
  Type: meltdown mitigation: PTI
  Type: mmio_stale_data status: Unknown: No mitigations
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
    STIBP: conditional, RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds mitigation: Microcode
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel Iris Graphics 6100 vendor: Apple driver: i915 v: kernel
    arch: Gen-8 process: Intel 14nm built: 2014-15 ports: active: eDP-1
    empty: DP-1, DP-2, HDMI-A-1, HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:162b
    class-ID: 0300
  Display: server: X.Org v: 23.1.2 with: Xwayland v: 23.1.2
    compositor: kwin_wayland driver: X: loaded: modesetting alternate: fbdev,vesa
    dri: iris gpu: i915 display-ID: :1 screens: 1
  Screen-1: 0 s-res: 2560x1600 s-dpi: 96 s-size: 677x423mm (26.65x16.65")
    s-diag: 798mm (31.43") monitors: <missing: xrandr>
  Monitor-1: eDP-1 model: Apple Color LCD built: 2013 res: 2560x1600 dpi: 227
    gamma: 1.2 size: 286x179mm (11.26x7.05") diag: 337mm (13.3") ratio: 16:10
    modes: 2560x1600
  API: OpenGL v: 4.6 Mesa 23.1.5 renderer: Mesa Intel Iris Graphics 6100
    (BDW GT3) direct-render: Yes
Audio:
  Device-1: Intel Broadwell-U Audio vendor: Apple driver: snd_hda_intel
    v: kernel bus-ID: 00:03.0 chip-ID: 8086:160c class-ID: 0403
  Device-2: Intel Wildcat Point-LP High Definition Audio
    driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:9ca0
    class-ID: 0403
  Device-3: Broadcom 720p FaceTime HD Camera driver: N/A pcie: gen: 2
    speed: 5 GT/s lanes: 1 bus-ID: 02:00.0 chip-ID: 14e4:1570 class-ID: 0480
  API: ALSA v: k6.1.44-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 0.3.77 status: n/a (root, process) with: wireplumber
    status: active tools: pw-cli,wpctl
  Server-3: PulseAudio v: 16.1 status: active (root, process)
    with: pulseaudio-alsa type: plugin tools: pacat,pactl
Network:
  Device-1: Broadcom BCM43602 802.11ac Wireless LAN SoC vendor: Apple
    driver: brcmfmac v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    bus-ID: 03:00.0 chip-ID: 14e4:43ba class-ID: 0280
  IF: wlp3s0 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: noprefixroute scope: link
  WAN IP: <filter>
Bluetooth:
  Device-1: Apple Bluetooth Host Controller driver: btusb,hid-generic,usbhid
    type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-3:2
    chip-ID: 05ac:8290 class-ID: fe01
  Report: rfkill ID: hci0 rfk-id: 0 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: see --recommends
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 233.76 GiB used: 88.09 GiB (37.7%)
  ID-1: /dev/sda maj-min: 8:0 vendor: Apple model: SSD SM0256G
    family: SD/SM/TS...E/F/G SSDs size: 233.76 GiB block-size: physical: 4096 B
    logical: 512 B sata: 3.0 speed: 6.0 Gb/s tech: SSD serial: <filter>
    fw-rev: PA0Q temp: 42 C scheme: GPT
  SMART: yes state: enabled health: PASSED on: 1y 195d 18h cycles: 39846
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 48.83 GiB size: 47.76 GiB (97.81%) used: 20.34 GiB (42.6%)
    fs: ext4 block-size: 4096 B dev: /dev/sda3 maj-min: 8:3 label: N/A
    uuid: 06f2f8c6-47ea-444a-97a1-44629f02874f
  ID-2: /boot/efi raw-size: 1001 MiB size: 999 MiB (99.80%)
    used: 288 KiB (0.0%) fs: vfat block-size: 512 B dev: /dev/sda1 maj-min: 8:1
    label: N/A uuid: C52E-DD5A
  ID-3: /home raw-size: 174.19 GiB size: 170.4 GiB (97.82%)
    used: 66.54 GiB (39.1%) fs: ext4 block-size: 4096 B dev: /dev/sda4
    maj-min: 8:4 label: N/A uuid: 3c05e9c8-a423-467e-b26c-b3e64d78c4b5
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: partition size: 9.77 GiB used: 1.21 GiB (12.4%)
    priority: -2 dev: /dev/sda2 maj-min: 8:2 label: N/A
    uuid: 0fc478b2-1d95-466e-bafd-6de6515a989b
Unmounted:
  Message: No unmounted partitions found.
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 11 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Device-1: 1-3:2 info: Apple Bluetooth Host Controller
    type: keyboard,mouse,bluetooth driver: btusb,hid-generic,usbhid interfaces: 6
    rev: 2.0 speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 chip-ID: 05ac:8290
    class-ID: fe01
  Device-2: 1-5:3 info: Apple Internal Keyboard/Trackpad (ISO)
    type: HID,keyboard,mouse driver: apple,bcm5974,usbhid interfaces: 5 rev: 2.0
    speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 power: 500mA
    chip-ID: 05ac:0273 class-ID: 0300 serial: <filter>
  Hub-2: 2-0:1 info: super-speed hub ports: 4 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 chip-ID: 1d6b:0003
    class-ID: 0900
Sensors:
  System Temperatures: cpu: 60.0 C pch: 61.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Processes: 217 Uptime: 2d 10h 0m wakeups: 5 Init: systemd v: 253
  default: graphical tool: systemctl Compilers: gcc: 13.2.1 clang: 15.0.7
  Packages: pm: pacman pkgs: 1386 libs: 376 tools: pamac,yay pm: flatpak
  pkgs: 0 Shell: Sudo (sudo) v: 1.9.14p3 default: Bash v: 5.1.16
  running-in: konsole inxi: 3.3.29

How did you obtain these values/this output?

My interpretation of these is:
the system sees a design charge of the battery of 6400000 while the design full charge is reported as 6739000

This, to me, looks like a contradiction.

Apple hardware is tricky, apparently.

more is like less, more or less :stuck_out_tongue_winking_eye:

And it corresponds to files:

/sys/class/power_supply/BAT0/charge_full
/sys/class/power_supply/BAT0/charge_full_design

What it appears to me … is as regular degradation. Ex:

image

What does appear contradictory … is it coupled with some other output:

:grin:

I asked because on my system, I don’t have these.

I see this:

ls -l /sys/class/power_supply/BAT0/
total 0
-rw-r--r-- 1 root root 4096 Aug 19 21:18 alarm
-r--r--r-- 1 root root 4096 Aug 18 22:32 capacity
-r--r--r-- 1 root root 4096 Aug 19 21:18 capacity_level
-r--r--r-- 1 root root 4096 Aug 18 22:32 cycle_count
lrwxrwxrwx 1 root root    0 Aug 18 22:31 device -> ../../../PNP0C0A:00
-r--r--r-- 1 root root 4096 Aug 18 22:32 energy_full
-r--r--r-- 1 root root 4096 Aug 18 22:32 energy_full_design
-r--r--r-- 1 root root 4096 Aug 18 22:32 energy_now
drwxr-xr-x 3 root root    0 Aug 18 22:30 hwmon2
-r--r--r-- 1 root root 4096 Aug 18 22:32 manufacturer
-r--r--r-- 1 root root 4096 Aug 18 22:32 model_name
drwxr-xr-x 2 root root    0 Aug 19 21:18 power
-r--r--r-- 1 root root 4096 Aug 18 22:32 power_now
-r--r--r-- 1 root root 4096 Aug 18 22:32 present
-r--r--r-- 1 root root 4096 Aug 18 22:32 serial_number
-r--r--r-- 1 root root 4096 Aug 18 22:32 status
lrwxrwxrwx 1 root root    0 Aug 18 22:30 subsystem -> ../../../../../../class/power_supply
-r--r--r-- 1 root root 4096 Aug 18 22:32 technology
-r--r--r-- 1 root root 4096 Aug 18 22:32 type
-rw-r--r-- 1 root root 4096 Aug 18 22:30 uevent
-r--r--r-- 1 root root 4096 Aug 18 22:32 voltage_min_design
-r--r--r-- 1 root root 4096 Aug 18 22:32 voltage_now

Well … its hardware dependent. I dont even have BAT0;

$ ls -l /sys/class/power_supply/BAT1/
total 0
-rw-r--r-- 1 root root 4096 Aug 19 13:30 alarm
-r--r--r-- 1 root root 4096 Aug 19 04:28 capacity
-r--r--r-- 1 root root 4096 Aug 19 13:30 capacity_level
-rw-r--r-- 1 root root 4096 Aug 19 04:28 charge_control_end_threshold
-rw-r--r-- 1 root root 4096 Aug 19 04:28 charge_control_start_threshold
-r--r--r-- 1 root root 4096 Aug 19 04:28 charge_full
-r--r--r-- 1 root root 4096 Aug 19 04:28 charge_full_design
-r--r--r-- 1 root root 4096 Aug 19 04:28 charge_now
-r--r--r-- 1 root root 4096 Aug 19 04:28 current_now
-r--r--r-- 1 root root 4096 Aug 19 04:28 cycle_count
lrwxrwxrwx 1 root root    0 Aug 19 04:28 device -> ../../../PNP0C0A:00
drwxr-xr-x 3 root root    0 Aug 19 04:28 hwmon1
-r--r--r-- 1 root root 4096 Aug 19 04:28 manufacturer
-r--r--r-- 1 root root 4096 Aug 19 04:28 model_name
drwxr-xr-x 2 root root    0 Aug 19 13:23 power
-r--r--r-- 1 root root 4096 Aug 19 04:28 present
-r--r--r-- 1 root root 4096 Aug 19 04:28 serial_number
-r--r--r-- 1 root root 4096 Aug 19 04:28 status
lrwxrwxrwx 1 root root    0 Aug 19 04:28 subsystem -> ../../../../../../class/power_supply
-r--r--r-- 1 root root 4096 Aug 19 04:28 technology
-r--r--r-- 1 root root 4096 Aug 19 04:28 type
-rw-r--r-- 1 root root 4096 Aug 19 04:28 uevent
-r--r--r-- 1 root root 4096 Aug 19 04:28 voltage_min_design
-r--r--r-- 1 root root 4096 Aug 19 04:28 voltage_now

(notice though any number of other differences)

I would interpret it the way. Don’t know why it’s like that on my system. These numbers are obtained by some firmware of Manjaro, right? How could it get them like that?

BTW, I had the battery changed last year at an Apple-authorized shop. And through all the time running Ubuntu, I didn’t see charge irregularities.

there are packages like “applesmc” in the aur to support the battery-handling of an apple-macbook.
keep care before installing. open the related sites of the packages, read and follow the instructions carefully. apple-systems are not designed to run nor support third-party-systems in any way and do have hinges that can drive you mad.

This looks familiar, the new battery has a slightly higher capacity than the original one.
I changed the battery of my mbp myself, the supplier is Nu-Tech or Newer-Tech. The pre-charged replacement comes with a manual for the calibration of the mbs power system after the swap:
How To Calibrate a Mac Laptop's Power System - NewerTech .
I suggest you go through that to re-calibrate.

Thanks, that sounds like a good thing to do. Just wonder if the steps would still be valid now that I no longer have MacOS installed on the MBP,

I’d think so. Those batteries have their own electronics inside that manage/provide battery info to the system. Going through the calibration process most likely resets them and allows systems to set correct limits and trigger values for eg ‘power down at 5%’ events.
When I changed my battery my mbp’s OSX was long gone and I was on manjaro too. Still works great.

1 Like