Nice! With this applied the remote feels a lot more snugly. In the forum thread you talked about a toggle bit to distiguish new button presses from held down buttons. The packet send by the Xbox Remote includes how much time has passed since the last packet was sent. u16 last_press_ms = le16_to_cpup((__le16 *)(data + 4)); If the button was held down, this value will always be 64 or 65 ms, if the button was released in between, it will be higher than that. (If you leave the remote idle, it will count to 65535 and stop there) Maybe this is helpful, I'm not sure what's the right knob to turn with this information. Anyway, thank you a lot for the fix! Acked-by: Benjamin Valentin <benpicco@xxxxxxxxxxxxxx>