Keyboard inputs inside the Touch Player Package

Hello everyone,

I’m having trouble getting the keyboard inputs to work. When i conncet a standard keyboard and mouse to the USB Ports on my Raspberry Pi 4B and try to press the buttons set in the Touch Player Package configuration, nothing seems to happen.

(I know Page 3 is empty at the moment, but when I testet it, the page wasn’t and i still didn’t work)

The other funktions (touch via the web interface box) work as far as I can tell.

Does someone know how to get it to work?

Kind Regards

Simon

I’m currently recieving help via Email. I will update this post once we have resolved the issue.

Hello everyone,

The issue has been resolved via email support. It seems there is a new revision of the PI 4B+ 4GB, which wasn’t yet supported, but is now (now in testing and probably in coming stable releases of info-beamer).

Thank you !

(If a moderator would like to have the whole thread deleted, they can feel free to do so. I don’t mind it staying online either though.)

Thanks for posting the update!

A bit of technical background of what has happened: the Pi4 has VL805 USB controller chip onboard. Those require their own firmware that also went through a few changes over the years (See listed vl805-* files in the EEPROM repository).

After the Linux kernel is started, the PCI bus is reset and the USB chip forgets its firmware data. It needs to be reloaded. Either from /sd/vl805.bin on the SD card, or for newer Pi 4 models, right from the EEPROM persisted on the Pi itself. The Pi4 has 512Kb space for storing such data directly on its hardware. The data stored in the EEPROM also has a file system like structure. I have tools written to inspect and modify that data and a listing of a Pi4 EEPROM shows the VL805 files:

$ pi-eeprom-ls pieeprom.bin 
eeprom version: 224877da 224877da90f82a72dbcc9db10bcf059259f54680, 2026-05-17 (pi4)
-----------------------------------
<ChunkBoot   : <bootcode>        73104 @ 0x00000000 /       0 all>
<ChunkFileLZ4: bootmain         212138 @ 0x00011e00 /   73216 all>
[. cut for brevity ..]
<ChunkFileCK : vl805hub.bin       7012 @ 0x0005ed60 /  388448 all>
<ChunkFileCK : vl805mcu.bin      60435 @ 0x000608e0 /  395488 all>
<ChunkFileLZ4: font.bin           7406 @ 0x0006f510 /  455952 all>

The files vl805hub.bin and vl805mcu.bin are relevant for the USB chip. These files are compressed. This is necessary as they otherwise wouldn’t even fit into 512Kb. For most of the Pi4’s lifetime, the compression format was called ‘CK’. Hristo Venev reverse engineered that format back in 2020. At some point last year support for the widely known LZ4 compression format was added. Now almost all files within the EEPROM are compressed using LZ4. Except those two vl805 files. They still use ‘CK’ compression.

Unfortunately another change was made to the firmware code in start4.elf. It runs alongside the normal ARM CPUs on the so called VPU: It lost the ability to decompress the ‘CK’ format. When the kernel boots, after a PCI reset, the following kernel code triggers the VPU to reload the VL805’s code. As it no longer knows how to decompress the data it now runs into a timeout. Here’s how that looks in the debug output:

[    0.942527] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    0.942539] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
[   17.834631] xhci_hcd 0000:01:00.0: can't setup: -110
[   17.834662] xhci_hcd 0000:01:00.0: USB bus 1 deregistered
[   17.834674] xhci_hcd 0000:01:00.0: init 0000:01:00.0 fail, -110
[   17.834694] xhci_hcd 0000:01:00.0: probe with driver xhci_hcd failed with error -110

After that USB was completely unusable. Connecting devices did nothing.

Debugging this wasn’t easy as it wasn’t really obvious why it wasn’t reproducible on earlier Pi4 models. Those loaded the data just fine. I’m still not 100% why, because the Pi4’s VPU processor cannot access the SD card directly. If someone knows, please let me now.

I discovered this seemingly unrelated bug report that also noted disabled USB. It turns this is the issue I’ve been seeing and it’s now fixed in this firmware release. The code in start4.elf can now decode ‘CK’ data again and the kernel can successfully trigger the firmware into loading and decompressing the VL805 data from the embedded EEPROM. USB now works again.

This is fixed in the latest testing release and a pending update to stable will also include this fix.