I’m having a peculiar issue with my setup. I have a Caldigit TS4 dock connected (which also powers the laptop). At the end of the day, my routine is:
- Hibernate (suspend-to-disk) the laptop (
systemctl hibernate
) - Wait until it is really off
- Power off the dock (I’m using a switched outlet to cut 230V to the dock).
- The laptop powers up again
Of course, having the laptop power up again in this situation is counterproductive, and I’d like to avoid it.
Here’s some things I tested:
- This issue occurs even when “Power up on AC” (or whatever it’s called exactly) in the BIOS is disabled, so seems to be unrelated to that.
- This issue also occurs when I unplug the TB cable instead of powering down the dock, so I think this mean it cannot really be specific to this particular dock (at least it cannot be some message sent by the dock on powerdown).
- This issue does not occur on a regular shutdown, so I think this means that when hibernating, the OS leaves some component in a different state than when powering down, maybe with instructions to power up again on some change.
- This issue also occurs when nothing is attached to the dock, so it’s not that e.g. a USB keyboard is configured to wake up the laptop or so.
- The issue does not occur with the Framework power adapter (so it’s not just that power is removed).
- The issue does not occur with a plain powered USB2 hub connected (tried connecting it to a USB-A port and USB-C port using an adapter cable).
- The issue does not occur when the dock is connected using USB3 or USB2 rather than TB (tested by inserting some non-TB-capable adapters into the uplink cable). This seems to suggest it is not caused by some USB device inside the dock, but it is the TB link itself, or maybe the PCIe-connected ethernet chip?
- The issue still occurs when removing the
igc
kernel module (for the PCIe ethernet module in the dock). - The issue does not occur when removing the
thunderbolt
kernel module, so there is definitely something there. Also, as a workaround, I could remove this module before hibernate, maybe (does not seem to affect dock operation directly, so USB4 is still running without this module).
Does anyone recognize this behavior? Got any hints on where to look to fix this? I assume that the OS is involved somehow, but who ultimately decides to power on again? The EC? Or is there some other controller still running after hibernate? I’m not actually sure how hibernate works at all, even, whether this is a fully OS-managed suspend (user-space suspend?), or there is some ACPI-configured platform driver involved? Anyone know?
Edit: Added a few more test results above