Raspberry Pi Touch Screen Controller Script

Job ID: 39619128

Budget: $30 – $250 USD

I need a two-part script for a Raspberry Pi 4B.

The first script will set up the Raspberry Pi as a touch screen controller. The second script will send x,y coordinates to generate clicks on the host. The touch input needs to exactly match mitm dump.

Requirements:
- Experience with Raspberry Pi and Raspberry Pi OS
- Proficiency in scripting, preferably in Python, Bash, C
- Familiarity with touch screen interfaces and handling x,y coordinate inputs
- Ability to ensure precision in input matching

The ideal candidate should have a background in embedded systems and networking.

Project details:

I have attached mitm dump of the controller, it has recorded 3 point calibration and additional two clicks at the bottom of the screen. The screen is 16:9 in portrait mode, after calibration only the bottom 3rd is active.

The dump was created using usb-proxy and raw-gadget, both available on GitHub. It demonstrates that it is possible to achieve what I need with Raspberry Pi 4B.

Emulated HID device with 6 byte report - works more or less, but is not what I need. In this case the the host expects calibration data to be stored in the controller and calculate points X1, Y1 to bottom 3rd of the screen. The dump shows that if the controller is directly attached to the host, it uses custom device class and 11 byte report, it does not change X,Y coordinates on the controller and the host does the calculation on its own.

raw-gadget has API and may be a way of doing it. Bash script works with 6 byte reports, but I couldn't get it to initialise the touch screen with device descriptor from the dump. I don't mind in what language it's done, as long as it works.

The host is a locked down linux kiosk, with no access apart from the screen.

I can provide you with access to Raspberry Pi connected to the kiosk and the touch screen, so you can do your own capture (if needed), stream of the kiosk screen with clicks forwarded to the raspberry pi. Remote hands if needed.