diff --git a/sys/dev/usb/uatp.c b/sys/dev/usb/uatp.c
index a9db72e539af..f9d53d600abd 100644
--- a/sys/dev/usb/uatp.c
+++ b/sys/dev/usb/uatp.c
@@ -1416,6 +1416,19 @@ uatp_intr(struct uhidev *addr, void *ibuf, unsigned int len)
 		    (sc->sc_input_index + len));
 		sc->sc_input_index = 0;
 		return;
+	} else if (sc->sc_input_size == 81 && len == 17 &&
+	    sc->sc_input_index != 64) {
+		/*
+		 * Quirk of Fountain and Geyser 1 devices: a 17-byte
+		 * packet seems to mean the last one, but sometimes we
+		 * get desynchronized, so drop this one and start over
+		 * if we see a 17-byte packet that's not at the end.
+		 */
+		aprint_error_dev(uatp_dev(sc),
+		    "discarding 17-byte nonterminal input at %u\n",
+		    sc->sc_input_index);
+		sc->sc_input_index = 0;
+		return;
 	}
 
 #if UATP_DEBUG