dcaf6123

By: Ammar <ammar.nanjiani@gmail.com>

fix(steammachine): keep the Bluetooth radio out of USB autosuspend

An external controller (Switch Pro Controller) dropped and re-paired every
few minutes. The kernel log showed the link being torn down mid-traffic:

  Bluetooth: hci0: ACL packet for unknown connection handle 2
  nintendo 0005:057E:2009.00XX: joycon_enforce_subcmd_rate: exceeded max attempts

Cause: the Bluetooth radio is an integrated Valve USB device (28de:1401)
and btusb enables USB autosuspend by default. The adapter really does
sleep — one boot showed runtime_suspended_time 3,238,298 ms against
runtime_active_time 4,053,263 ms. Waking it drops the radio link.

The Steam Controller's own puck arrives with power/control already set to
"on", which is why that controller was never affected. No udev rule sets
that, so the protection is incidental; pin the Bluetooth radio explicitly
rather than depend on the same accident.

Verified at runtime before making it declarative: writing "on" to
/sys/bus/usb/devices/1-5/power/control stopped the drops.

Scoped to idProduct 1401 so it cannot affect the Steam Controller puck or
any other Valve device.

Total

1m37s

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 1s 44s 44s 46s 0s
Build 46s 2m12s 51s 1m38s 0s
Suite 0s 2m58s 1m37s 1m38s 0s

Timeline

Config Eval Build
0s10s20s30s40s50s1m1m10s1m20s1m30s