From df76cd0a3e5745836891bfde05e37f97741261d4 Mon Sep 17 00:00:00 2001 From: Alex P Date: Mon, 17 Nov 2025 23:18:58 +0200 Subject: [PATCH] Fix: reopen HID files on USB state transitions to prevent stale handles When USB state transitions to "configured" (after reconnection or state changes), automatically close and reopen HID file handles to ensure they remain valid. --- usb.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/usb.go b/usb.go index af57692f..debb96af 100644 --- a/usb.go +++ b/usb.go @@ -109,8 +109,18 @@ func checkUSBState() { return } + oldState := usbState usbState = newState - usbLogger.Info().Str("from", usbState).Str("to", newState).Msg("USB state changed") + usbLogger.Info().Str("from", oldState).Str("to", newState).Msg("USB state changed") + + if newState == "configured" && oldState != "configured" { + usbLogger.Info().Msg("USB configured, reopening HID files") + gadget.CloseHidFiles() + gadget.PreOpenHidFiles() + if err := gadget.OpenKeyboardHidFile(); err != nil { + usbLogger.Error().Err(err).Msg("failed to reopen keyboard hid file") + } + } requestDisplayUpdate(true, "usb_state_changed") triggerUSBStateUpdate()