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.
This commit is contained in:
Alex P 2025-11-17 23:18:58 +02:00
parent 9f0d9c4689
commit df76cd0a3e
1 changed files with 11 additions and 1 deletions

12
usb.go
View File

@ -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()