pi400kb icon indicating copy to clipboard operation
pi400kb copied to clipboard

Raspberry Pi 500+

Open FuturityUK opened this issue 2 months ago • 4 comments

Hi,

The good news is that:

  • the Raspberry Pi 500+ can be powered from a "powered USB hub" attached to a PC without a power warning.
  • the mouse works and is passed through to the PC successfully.

The bad news is that:

  • even though the keystrokes appear in the Pi's terminal, they don't get passed through to the PC.

The keyboard device has changed so the cmake line now needs to be:

cmake .. -DKEYBOARD_VID=0x2e8a -DKEYBOARD_PID=0x0010 -DKEYBOARD_DEV=/dev/input/by-id/usb-Raspberry_Pi_Ltd_Pi_500+Keyboard__ISO-event-kbd

So is this a USB VIDs and PIDs problem now?

Does anyone have an suggestions how I could find the correct KEYBOARD VID / PID values?

Thanks

N

FuturityUK avatar Oct 11 '25 18:10 FuturityUK

I believe this would be a duplicate of

  • #50

sunjam avatar Oct 12 '25 22:10 sunjam

Thank you for your suggestion.

If you look at the "cmake" line above, I'm using the VID and PID from the solution for that issue, being that I would have thought that a RPi 500+ presents itself to the outside world as a RPi 5, but it didn't work.

I then noticed that the keyboard device name for the 500+ keyboard as its slightly different. So I've used the correct device name, but it still doesn't work.

This is why I've created a new issue, rather than it being a duplicate.

I have managed to get the RPi 500+ working as an emulated Bluetooth keyboard, but I'd much prefer a single USB cable USB keyboard solution so that it works with my KVM.

Thanks again for your suggestion though.

FuturityUK avatar Oct 13 '25 11:10 FuturityUK

Hi, I was able to compile the binary to work with RPi 500+ using the PID 0x0011:

cmake .. -DKEYBOARD_VID=0x2e8a -DKEYBOARD_PID=0x0011 -DKEYBOARD_DEV=/dev/input/by-id/usb-Raspberry_Pi_Ltd_Pi_500+Keyboard__ISO-event-kbd

I found this value with the command:

~ $ lsusb
Bus 004 Device 002: ID 2e8a:0011 Raspberry Pi Ltd Pi 500+ Keyboard (ANSI)

After compiling the binary I ran it per README instructions and all keystrokes were forwarded to my ipad which was powering the pi via usb c.

Hope this helps!

owen-gordon avatar Oct 27 '25 17:10 owen-gordon

lsusb
Bus 003 Device 002: ID 04f3:0635 Elan Microelectronics Corp.
Bus 003 Device 002: ID 2e8a:0011 Raspberry Pi Ltd Pi 500+ Keyboard (ANSI)
Bus 001 Device 003: ID 046d:c07e Logitech, Inc. G402 Gaming Mouse
Bus 001 Device 002: ID 1050:0010 Yubico.com Yubikey (v1 or v2)

A numpad and a yubikey - so, essentially I have two keyboards that won't be passed through. It should be possible to detect keyboards by capabilities rather than id, might have time to look into this later.

cmake .. -DKEYBOARD_VID=0x2e8a -DKEYBOARD_PID=0x0011 -DKEYBOARD_DEV=/dev/input/by-id/usb-Raspberry_Pi_Ltd_Pi_500+_Keyboard__ANSI_-event-kbd -DHOOK_PATH=/usr/local/hook.sh -DMOUSE_DEV=/dev/input/by-id/usb-Logitech_Gaming_Mouse_G402_497E27713132-mouse -DMOUSE_VID=0x046d -DMOUSE_PID=0xc07e
make
make install
chmod a+x /usr/local/hook.sh

/usr/local/hook.sh

#!/bin/bash
# Basic example pi400kb hook
# This script is given the argument 1 for grabbed, 0 for ungrabbed.
rpi-keyboard-config leds set --colour "0,0,64"
case $1 in
    0) # Ungrabbed
        ;;
    1) # Grabbed
        rpi-keyboard-config led set 75 --colour "170,255,64"
        ;;
esac

/dev/hidg0 missing - do I need to start up already connected to the host? testing.

/boot/firmware/config.txt line seems to be

dtoverlay=dwc2,dr_mode=peripheral

keyboard is working.... sort of. Input isn't caputured, boith devices are getting it. Mouse is not tracking correctly in os x "host", USB descriptor hard coded?

Input is being processed on the pi desktop when running. Very bad behavior. EVIOCGRAB not grabbing?

Sudrien avatar Nov 08 '25 06:11 Sudrien