Bug 222691

Summary: Thinkpad t440p - lid sysctl gets confused
Product: Base System Reporter: Andy <bsd>
Component: miscAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Only Me CC: tm
Priority: --- Keywords: patch
Version: CURRENT   
Hardware: amd64   
OS: Any   
Attachments:
Description Flags
AC adapter state change script to put the notebook into sleep on ac disconnect, but only if the lid is closed. none

Description Andy 2017-09-29 16:23:14 UTC
Created attachment 186804 [details]
AC adapter state change script to put the notebook into sleep on ac disconnect, but only if the lid is closed.

I have created a small acpi script (attached) to monitor the ac line and suspend the machine if the ac line is removed while the lid is closed.  This script complements the lid script that suspends the machine if the lid is closed on battery.

I have found, however, that the value of the lid sysctl changes without a hardware state change.  My guess is that there is some condition where the lid is closed or opened that the sysctl doesn't update.

For example, my log shows:
 ACLINE Event.  acline devd value:\'0x01\', lid sysctl:\'0\'.
 AC Power inserted when lid was closed. No need for sleep.

However, the lid was open.  Typically ``sysctl -n dev.acpi_lid.0.state'' is 0 for closed lid, 1 for open.  I actually don't care what the value is, as long as it remains consistent, I guess the devd side of things stays constant (which is even more confusing) - the event 0x01 = open event, 0x00 = close event.
Comment 1 Thomas Merkel 2019-09-12 09:07:58 UTC
I've the same issue, steps to reproduce:

1. LID open 'sysctl -n dev.acpi_lid.0.state = 1'
2. LID closed 'sysctl -n dev.acpi_lid.0.state = 0'
3. Sending device to suspend
4. LID open (device resume from suspend automatically) 'sysctl -n dev.acpi_lid.0.state = 0'

Expected:

On LID open after resume the value should be 1.