Platform: elemi, tigerlake
Issue: by default, the uefi full rom firmware defaults to using modern standby:
[user@linux ~]$ cat /sys/power/mem_sleep
[s2idle] deep
Modern standby seems to be mostly working and is preferable due to improved wake up times. However I have encountered one bug, where the fan does not turn off when going to sleep, this is especially noticeable if you run ectool fanduty 100
and then sleep, the fans continue at full blast.
Issue can be mitigated in userspace with a systemd service:
[user@linux ~]$ cat /etc/systemd/system/chromebook-fan-control.service
[Unit]
Description=Turn off the fan before going to sleep
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/usr/local/bin/ectool fanduty 0
ExecStop=-/usr/local/bin/ectool autofanctrl
[Install]
WantedBy=sleep.target
However, I am under the impression that this should be handled by the firmware.
that means the device isn’t going into S0ix completely, you’re in low-power idle but not actually entering modern standby
That’s strange, it doesn’t seem to drain power much, I left it overnight at 100% and in the morning it was like 94%.
Here is my dmesg from going to sleep and waking up:
[catloaf@palomaII ~]$ sudo dmesg -C
[sudo] password for catloaf:
[catloaf@palomaII ~]$ sudo dmesg -W
[21566.013878] wlan0: deauthenticating from 18:31:bf:ae:54:94 by local choice (Reason: 3=DEAUTH_LEAVING)
[21566.589451] PM: suspend entry (s2idle)
[21566.615100] Filesystems sync: 0.025 seconds
[21566.622938] Freezing user space processes
[21566.624942] Freezing user space processes completed (elapsed 0.001 seconds)
[21566.624947] OOM killer disabled.
[21566.624949] Freezing remaining freezable tasks
[21566.626481] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[21566.626489] printk: Suspending console(s) (use no_console_suspend to debug)
[21567.091130] ACPI: EC: interrupt blocked
[21576.717178] ACPI: EC: interrupt unblocked
[21576.814040] nvme nvme0: 8/0/0 default/read/poll queues
[21576.823025] max98373 i2c-MX98373:00: Reset completed (retry:0)
[21576.823333] max98373 i2c-MX98373:01: Reset completed (retry:0)
[21577.133606] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[21577.134041] OOM killer enabled.
[21577.134044] Restarting tasks ... done.
[21577.135014] random: crng reseeded on system resumption
[21577.135231] mei_pxp 0000:00:16.0-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:00:02.0 (ops i915_pxp_tee_component_ops [i915])
[21577.138397] PM: suspend exit
[21580.293006] wlan0: authenticate with 18:31:bf:ae:54:94 (local address=e8:f4:08:e6:93:53)
[21580.295102] wlan0: send auth to 18:31:bf:ae:54:94 (try 1/3)
[21580.323440] wlan0: authenticated
[21580.324135] wlan0: associate with 18:31:bf:ae:54:94 (try 1/3)
[21580.325251] wlan0: RX AssocResp from 18:31:bf:ae:54:94 (capab=0x1011 status=0 aid=3)
[21580.367500] wlan0: associated
I also tried it on a different board (lars) and it worked as expected, also the power led blinked orange instead of staying blue like on voxel.
Small correction: the device / board this effects is voxel, not elemi. (I actually don’t have my elemi anymore so I can’t test it.
Also ran s0ix-selftest-tool.sh from intel GitHub - intel/S0ixSelftestTool: S0ix Selftest Tool is designed to do the initial debugging for the S2idle path CPU Package C-state and S0ix failures in Linux OS for Intel® Client platforms, it also supports the basic runtime PC10 status check.
[catloaf@palomaII S0ixSelftestTool]$ sudo ./s0ix-selftest-tool.sh -s
---Check S2idle path S0ix Residency---:
The system OS Kernel version is:
Linux palomaII 6.14.6-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 09 May 2025 17:36:18 +0000 x86_64 GNU/Linux
---Check whether your system supports S0ix or not---:
Low Power S0 Idle is:1
Your system supports low power S0 idle capability.
---Check whether intel_pmc_core sysfs files exit---:
The pmc_core debug sysfs files are OK on your system.
---Judge PC10, S0ix residency available status---:
Test system supports S0ix.y substate
S0ix substate before S2idle:
S0i2.0 S0i3.0 S0i2.1 S0i3.1
S0ix substate residency before S2idle:
7109123 0 0 0
Turbostat output:
14.990731 sec
CPU%c1 CPU%c6 CPU%c7 Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc8 Pk%pc10 SYS%LPI
0.43 0.00 99.35 1.09 2.80 0.00 0.02 93.81 0.00
0.59 0.00 98.91 1.09 2.80 0.00 0.02 93.82 0.00
0.59
0.26 0.00 99.73
0.26
0.56 0.00 99.31
0.56
0.29 0.00 99.46
0.29
CPU Core C7 residency after S2idle is: 99.35
CPU Package C-state 2 residency after S2idle is: 1.09
CPU Package C-state 3 residency after S2idle is: 2.80
CPU Package C-state 8 residency after S2idle is: 0.02
CPU Package C-state 10 residency after S2idle is: 93.81
S0ix residency after S2idle is: 0.00
Your system supports S0ix substates, but did not achieve the shallowest s0i2.0
Here is the S0ix substates status:
Substate Residency
S0i2.0 7109123
S0i3.0 0
S0i2.1 0
S0i3.1 0
---Debug s0i2.0 substate failure scenario---:
---Begin S0ix Substate Debug by substate_requirements---:
Clear lpm_latch_mode is Done
Set c10 to lpm_latch_mode is Done
Need to run once S2idle, please wait for 15 seconds...
substate_requirements file shows:
Element S0i2.0 Live Status
pmc0: USB2PLL_OFF_STS Required
pmc0: PCIe/USB3.1_Gen2PLL_OFF_STS Required Yes
pmc0: PCIe_Gen3PLL_OFF_STS Required Yes
pmc0: OPIOPLL_OFF_STS Required
pmc0: OCPLL_OFF_STS Required Yes
pmc0: MainPLL_OFF_STS
pmc0: MIPIPLL_OFF_STS Required Yes
pmc0: Fast_XTAL_Osc_OFF_STS
pmc0: AC_Ring_Osc_OFF_STS Required
pmc0: SATAPLL_OFF_STS Required Yes
pmc0: XTAL_USB2PLL_OFF_STS
pmc0: CSME_PG_STS Required Yes
pmc0: SATA_PG_STS Required Yes
pmc0: xHCI_PG_STS Required
pmc0: UFSX2_PG_STS Required Yes
pmc0: OTG_PG_STS Required Yes
pmc0: SPA_PG_STS Required Yes
pmc0: SPB_PG_STS Required Yes
pmc0: SPC_PG_STS Required Yes
pmc0: LSX_PG_STS Yes
pmc0: P2SB_PG_STS Yes
pmc0: PSF_PG_STS
pmc0: SBR_PG_STS
pmc0: OPIDMI_PG_STS
pmc0: THC0_PG_STS Required Yes
pmc0: THC1_PG_STS Required Yes
pmc0: GBETSN_PG_STS Required Yes
pmc0: GBE_PG_STS Required Yes
pmc0: LPSS_PG_STS Required Yes
pmc0: ADSP_D3_STS
pmc0: SATA_D3_STS Yes
pmc0: xHCI0_D3_STS Required
pmc0: xDCI1_D3_STS Required Yes
pmc0: IS_D3_STS Required Yes
pmc0: THC0_D3_STS Yes
pmc0: THC1_D3_STS Yes
pmc0: GBE_TSN_D3_STS Required Yes
pmc0: CPU_C10_REQ_STS_0 Required
pmc0: PCIe_LPM_En_REQ_STS_3
pmc0: CNVI_REQ_STS_6
pmc0: ISH_REQ_STS_7 Yes
pmc0: MPHY_Core_DL_REQ_STS_16 Required Yes
pmc0: Break-even_En_REQ_STS_17 Required Yes
pmc0: Auto-demo_En_REQ_STS_18 Required Yes
Below are the deeper S0ix substate required IPs did not show YES:
pmc0: USB2PLL_OFF_STS Required
pmc0: OPIOPLL_OFF_STS Required
pmc0: AC_Ring_Osc_OFF_STS Required
pmc0: xHCI_PG_STS Required
pmc0: xHCI0_D3_STS Required
pmc0: CPU_C10_REQ_STS_0 Required
Your system south port controller did not meet S0ix requirement: SPC
PMC0:PCH IP: 6 - SPC State: On
---Trying S0ix workaround: setting No ACPI DSM Callback---:
./s0ix-selftest-tool.sh: line 1237: /sys/module/acpi/parameters/sleep_no_lps0: Permission denied
Setting no ACPI DSM callback is not helpful to the S0ix residency.
./s0ix-selftest-tool.sh: line 1256: /sys/module/acpi/parameters/sleep_no_lps0: Permission denied
---Debug PCIeport D states and link PM states---
Checking PCI Devices D3 States:
[ 502.506842] sof-audio-pci-intel-tgl 0000:00:1f.3: PCI PM: Suspend power state: D3hot
[ 502.506909] i915 0000:00:02.0: PCI PM: Suspend power state: D3hot
[ 502.514885] nvme 0000:58:00.0: PCI PM: Suspend power state: D3hot
[ 502.514922] intel-lpss 0000:00:19.1: PCI PM: Suspend power state: D3hot
[ 502.515230] rtsx_pci 0000:57:00.0: PCI PM: Suspend power state: D3hot
[ 502.515523] intel-lpss 0000:00:1e.3: PCI PM: Suspend power state: D3hot
[ 502.515828] intel-lpss 0000:00:1e.0: PCI PM: Suspend power state: D3hot
[ 502.515837] intel-lpss 0000:00:15.1: PCI PM: Suspend power state: D3hot
[ 502.515848] mei_me 0000:00:16.0: PCI PM: Suspend power state: D3hot
[ 502.516896] intel-lpss 0000:00:15.0: PCI PM: Suspend power state: D3hot
[ 502.516949] intel-lpss 0000:00:1e.2: PCI PM: Suspend power state: D3hot
[ 502.518088] proc_thermal 0000:00:04.0: PCI PM: Suspend power state: D3hot
[ 502.518332] xhci_hcd 0000:00:0d.0: PCI PM: Suspend power state: D3cold
[ 502.518489] xhci_hcd 0000:00:14.0: PCI PM: Suspend power state: D3hot
[ 502.518563] iwlwifi 0000:00:14.3: PCI PM: Suspend power state: D3hot
[ 502.520059] thunderbolt 0000:00:0d.2: PCI PM: Suspend power state: D3cold
[ 502.531248] pcieport 0000:00:1c.0: PCI PM: Suspend power state: D3hot
[ 502.591643] pcieport 0000:00:1d.0: PCI PM: Suspend power state: D3hot
Checking PCI Devices tree diagram:
-[0000:00]-+-00.0 Intel Corporation Tiger Lake-UP3/H35 4 cores Host Bridge/DRAM Registers
+-02.0 Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics]
+-04.0 Intel Corporation TigerLake-LP Dynamic Tuning Processor Participant
+-07.0-[01-2b]--
+-07.1-[2c-56]--
+-08.0 Intel Corporation GNA Scoring Accelerator module
+-0d.0 Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller
+-0d.2 Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0
+-14.0 Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller
+-14.2 Intel Corporation Tiger Lake-LP Shared SRAM
+-14.3 Intel Corporation Wi-Fi 6 AX201
+-15.0 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #0
+-15.1 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #1
+-15.2 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #2
+-15.3 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #3
+-16.0 Intel Corporation Tiger Lake-LP Management Engine Interface
+-19.0 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #4
+-19.1 Intel Corporation Tiger Lake-LP Serial IO I2C Controller #5
+-1c.0-[57]----00.0 Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader
+-1d.0-[58]----00.0 Sandisk Corp SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD
+-1e.0 Intel Corporation Tiger Lake-LP Serial IO UART Controller #0
+-1e.2 Intel Corporation Device a0aa
+-1e.3 Intel Corporation Tiger Lake-LP Serial IO SPI Controller #1
+-1f.0 Intel Corporation Tiger Lake-LP LPC Controller
+-1f.3 Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller
\-1f.5 Intel Corporation Tiger Lake-LP SPI Controller
Pcieport is not in D3cold:
0000:00:1c.0
0000:00:1d.0
Available bridge device: 0000:00:07.0 0000:00:07.1 0000:00:1c.0 0000:00:1d.0
0000:00:07.0 Link is in Detect
The link power management state of PCIe bridge: 0000:00:07.0 is OK.
0000:00:07.1 Link is in Detect
The link power management state of PCIe bridge: 0000:00:07.1 is OK.
0000:00:1c.0 Link is in L1.2
The link power management state of PCIe bridge: 0000:00:1c.0 is OK.
0000:00:1d.0 Link is in L1.2
The link power management state of PCIe bridge: 0000:00:1d.0 is OK.
Your system default pcie_aspm policy setting is OK.
if the LED isn’t blinking, you’re not fully in S0ix. Or at least the EC isn’t
Yes, the ec is definitely not going into s0ix. That said, power draw is very low, and the dmesg output between voxel and lars is very similar, making me think that the kernel is doing everything it should. So it seems like the system might be going into s0ix but the ec is not?
sounds that way, but no idea offhand why that would be unfortunately
Me neither. One interesting thing I found is that the led and fan behavior works correctly (indicating proper EC function) is you go into deep sleep once and then switch back to s2ide. I will keep testing but as long as power draw stays low with my current fix I won’t worry about it.
Also, iirc this issue also happened on elemi (it had a white LED, which would blink in S3 but remain solid upon attempting to enter S0ix). So this issue may effect at least all volteer boards.