Rust library and companion software to allow Raspberry Pi devices to show up as a Streamdeck over USB to another computer.
Timeline.1.mp4
- Stream Deck Mini
- Stream Deck Mk2
- Stream Deck XL
- Stream Deck Pedal
- Stream Deck Plus
- Stream Deck Neo
The rust library and core of both programs. It uses FunctionFS to emulate a Stream Deck device.
Emulate a streamdeck on a PI device that has a touchscreen. Renders directly to the framebuffer without a desktop environemnt.
Emulate a streamdeck on a PI device and allow it to be accessable in a web browser.
Install Raspberry Pi OS lite (no desktop) (Raspberry pi imager makes this easy https://www.raspberrypi.com/software/)
Use the image to configure your device and configure wifi and setup ssh credentials.
Plug in the device to the second usb port (not the power one) and plug that into the computer running the streamdeck software.
SSH into the device once it connects to wifi.
sudo vi /boot/firmware/config.txt
Add dtoverlay=dwc2 to the bottom of the file and reboot
Caution
The below command runs a web server with root permissions this is dangerous. There is a config script and systemd configs coming soon to work around this
sudo ./gadgetdeck-server --device mk2
Visit the local address of the pi on port 3000 from another machine ex: http://10.0.0.10:3000
I'm currently using a Pi 5 and this waveshare touchscreen https://www.waveshare.com/wiki/9.3inch_1600x600_LCD
Install Raspberry Pi OS lite (no desktop) (Raspberry pi imager makes this easy https://www.raspberrypi.com/software/)
Use the image to configure your device and configure wifi and setup ssh credentials.
Plug in the device to the main usbc port and plug that into the computer running the streamdeck software.
SSH into the device once it connects to wifi.
sudo vi /boot/firmware/config.txt
Add dtoverlay=dwc2 to the bottom of the file and reboot
sudo ./gadgetdeck-display --device plus
The device should show up on your display and respond to touch events.
This was the one I grabbed: https://www.amazon.com/dp/B0DY5BVGNH
sudo apt install libgles2 libegl1 libgbm1 libdrm2
sudo tee /etc/systemd/system/tft-symlink.service << 'EOF'
[Unit]
Description=Create TFT DRM symlink
After=systemd-udev-settle.service
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'mkdir -p /dev/dri/by-path && for card in /dev/dri/card*; do if grep -q ili9486 /sys/class/drm/$(basename $card)/device/uevent 2>/dev/null; then ln -sf $card /dev/dri/by-path/platform-gpu-card; break; fi; done'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl restart tft-symlink.service
sudo vim /boot/firmware/config.txt
Add:
dtoverlay=dwc2
dtoverlay=piscreen,drm,speed=32000000,invy
Reboot
sudo ./gadgetdeck-display -W 480 -H 320 -d mini
5V USB-C Dual Supply
Allows you to power a Raspberry PI with a USB C cable while splitting the data off into another cable to hook up to your dev computer.
https://www.tindie.com/products/8086net/5v-usb-c-dual-supply-dual-ideal-diodes/
