ENXIOing non-present battery

John Baldwin jhb at freebsd.org
Thu Dec 11 20:56:00 UTC 2014


On Sunday, December 07, 2014 2:53:37 am Colin Percival wrote:
> Hi ACPI people,
> 
> On my Dell Latitude E7440 laptop, the ACPI reports two batteries: First
> the battery which exists; and second, a "Not Present" battery with zeroed
> statistics.  FreeBSD, not realizing that this second battery is a complete
> myth -- the E7440 only has one battery, and there is nowhere to add another
> -- faithfully reports the data from ACPI to userland.
> 
> Unfortunately it causes some problems there; in particular, KDE interprets
> it as meaning that the system should have two batteries, and when it sees
> that the "second" battery has 0% power remaining it kicks off the "battery
> is low, turn the laptop off" code.  If that code is disabled, it still
> displays the wrong battery-charge-remaining status icons.
> 
> For dealing with such broken ACPIs, it seems like not attaching a non-present
> battery would be a good idea.  This shouldn't be the default behaviour, since
> there are plenty of systems where a non-present battery might be inserted at
> a later time; but I see nothing wrong with adding an option.
> 
> The attached patch adds a acpi.cmbat.hide_not_present loader tunable which,
> as the name suggests, hides non-present batteries; this is done in the probe
> code by returning ENXIO if the tunable is set to a nonzero value and
> acpi_BatteryIsPresent returns zero.  With this patch and the tunable set my
> laptop behaves appropriately; and (aside from wasting a few bytes of memory)
> there should be no effect on systems where the tunable is not set.
> 
> Any objections to me committing this?

Does setting hint.battery.1.disabled=1 work for you?

-- 
John Baldwin


More information about the freebsd-acpi mailing list