oh man I got COMPLETELY nerdsniped by this and went down a few paths haha, let me share:
Core idea: There's a WebHID API in browsers. If you look at caniuse (https://caniuse.com/?search=webhid) it looks a little grim, but I thought, "Most Kiosks in the wild are probably running Windows, and therefore very likely to be running either Chrome or Edge, both of which are where support is quite good!". I figured if you can get through via USB with the HID trick in the first place, then the same kiosk is likely to allow the browser API too.
Three benefits: much higher bandwidth becomes possible, it's a bit more discrete (someone looking over your shoulder wouldn't see a bunch of QR codes. Not a huge deal but just something to note), and the consuming device doens't need a camera anymore either.
Now, because of conditional WebHID support, and quite frankly because the standard QR mode is WAY cooler, the thought was just to provide this as an optional mode to activate via the web page, especially since you need to approve the web page permission dialog for the WebHID anyway.
Got that working on Chrome for my Linux laptop (Chromium from snap didn't play well, but that's not really the target here). Couldn't help myself as I got into the optimziation flow, and got to a point where it was delivering ~300 Kbps goodput, basically bottlenecked by BLE instead.
I saw 300Kbps on a 1M PHY and figured "yeah that's probably near the reaosnable limit". I was about to get that wrapped up and then report back here.... but another thought popped into my head that I couldn't push out:
"Wait, if bluetooth is the bottleneck, couldn't we switch to running this as a WiFi AP? Same 2.4 band, should work great. With any luck, the USB will become the new bottleneck". esp32-s3 is full-speed USB which IIRC is like 10 Mbps PHY but practically probably 4-6Mbps, still a huge step function. Or, worst case, WebHID will have some througput limit and that's our hard ceiling. Worth the test.
I'm assuming something key: In a situation where you'd be doing this anyway, your wifi is probably not being used (if you had a valid AP to connect to with internet connectivity, you'd just use that instead of doing all this). So it seems very well aligned.
AFter sleeping on it, also realized, "maybe Wifi AP would be a really nice convenience factor even in the standard QR mode. We could just connect to our own sovereign little AP, which might make it even more accessible (no desktop BLE client, just a tcp connection). Might be a nice bonus regardless of the fast mode stuff".
Alas, it was indeed WebHID as the hard ceiling, but WiFi AP mode can still get roughly 1.5x the goodput up to that ceiling, which is ~450Kbps
Gonna stop here for now or I'll end up losing weeks to this lmao, but this was such a fun exploration! I'll be sending over a PR, probably later today. If this is just purely antithetical to the project, by all means you can toss it all, no worries. But still wanted to give you that option.
Similar AI Disclosure as you: I'm also a dev by trade, similar YoE, and also used AI tooling throughout this.
PS: I could probably swing a lil dedicated server to run the backend side for the community to tinker with too, if you want. Just let me know!
tl;dr: Two new modes. For the transport mode, standrd qr or fast. For the user-side link, BLE or WiFi AP. ~~300 Kbps goodput in fast + BLE, ~~450 Kbps in fast + WiFiAP. Preparing PR and expect to have it submitted at some point today. Screenshot of using it on my machine: https://i.postimg.cc/0jKvB1f4/Screenshot-from-2026-05-23-13-16-21.png