Elgato StreamDeck and Zynthian OS

Hello Everybody

First thing first , I am French and I am 70 so excuse my poor English

I have the Zinthian OS running on a PI4

On the same PI4 I have installed OpenDeck wich is an app for the StreamDeck running on Linux

I also installed on the PI SLIM a display manager wich is able to run apps

On the StreamDeck I have

1 button UP that emulates the U key of a PC keyboard

1 button DOWN that emulates the D key of a PC keyboard

if I open a terminal and I press the UP or the down button I get U or D in the terminal window

So the OpenDeck app is OK

With the Zynthian Web Conf I have made the U key to send ARROW_UP and the D key to send ARROW_DOWN and

I run “Zynthian.sh” in the same terminal window and the Zynthian app is OK

If I type “U” or “D” on the Pi Keyboard I can go Up and Down in the menu

But if I press the UP or the DOWN button of the StreamDeck nothing happens

So I am wondering if someone know what is the problem

Thank You and heve great End of Year

Alain

1 Like

Hi @AL1-1956 and welcome to the gang! Going from your words, I surmise that you may have used the key-binding page of Webconf to link the pressure of keys on an external device to a set of Zynthian interface actions. In this case all you need to set is up-arrow for key pressure U and down-arrow for key pressure D, which you seem to have programmed on your StreamDeck controlling app.

I don’t have a StreamDeck, but (just guessing) this is where a key command association conflict might arise. I suggest connecting to the Pi either the Qwerty keyboard or the StreamDeck only, because in your setup they seem to have the same key-binding links.

Cheers.

Hi @AL1-1956! A very warm welcome to the community. Zynthian uses key press and key release events to trigger actions. This allows things like short, bold, long press detection. It may be that the stream deck isn’t sending one of these?

Thank You for answering , but maybe I did not explain my problem quite right.

The StreamDeck has two buttons one which sends “U” and one which sends “D”

With the Zinthian Web Conf tool i have made “U” a CUIA for ARROW_UP and “D” a CUIA for ARROW_DOWN (I deleted all other CUIAs)

so I expect something like

When I press the UP button on the StreamDeck it sends “U” , which it does

(and I can check that it does in the terminal window on the PI which writes a “U” character

in the same terminal window I type “zinthian.sh” and the Zinthian app runs

Now I press the UP button on the StreamDeck which sends a “U”

this “U” should send ARROW_UP to the Zynthian OS , but it does not.

I do not know if there is somewhere in the Zynthian app a place where I can check if the “U” is received by the Zynthian or not

And by the way if I disconnect the keyboard of the PI I can no longer log in the SLIM display manager.

Hi, your setup is not completely clear to me: are you maybe running Oram on Pi4 headless? That is, are you viewing the Zynthian interface remotely, without a physical screen connected to the Raspberry?

If the workings of the Stream Deck depend on Linux applications loaded on an external master computer, I am not sure that its keys can work independently, as a controlling tool for another computer.
The fact that you can see the log of keys data on a terminal, i.e. a concurrent but separated system layer, does not guarantee that the Zynthian OS receives and processes them as expected.

My only experience with CUIA-linked keypads is with certain interesting models available on AliExpress, which can be flashed on Mac/PC with the required key associations, and then used freely with whatever other computer accepts USB keyboard data, including the Pi.

Regards.

Okay , let me try to be clear

I have a Pi4 and a PI400

At the moment i use the PI400 (which is a PI4 in a keyboard)

The StreamDeck is connected to the PI400

There is a 7 inch HDMI display connected to the PI400

I have installed on a SD Card the Zynthian software and on the same SD Card I have installed the OpenDeck software and SLIM which is a Display Manager for Linux

I have deactivated the auto-boot of the Zynthian software so now the PI400 at boot runs the SLIM app in which I can run a terminal window

So everything is run in the PI.

The only use of the PC is for making the CUIAs action via Web Conf

With the terminal I can run the OpenDeck soft in which I have set 2 buttons one “UP” and one “DOWN”

The “UP” button send an “U” and the down button sends an “D”

when I push these buttons I have “U” or “D” wich appears in the terminal window like so

“UUUUDDDDUUUUDDDD” for example , so I know that the OpenDeck software is working

With the Web Conf on my PC I have made 2 CUIAs and deleted all others

“U” for ARROW_UP and “D” for ARROW_DOWN

now back to the PI

In the same terminal window ,while the OpenDeck app is running, I type “Zynthian.sh” and the Zynthian application appears on the 7 inches HDMI display.

I type “U” or “D” on the keyboard of the PI400 and I can go up and down in the main menu of the Zynthian app so my CUIAs are OK

But if I press the “UP” or the “DOWN” button of the StreamDeck connected to the PI400 nothing happens

So I am wondering if the Zythian OS receives actually the “U” and the “D” send by the StreamDeck

and if there is a way to “spy” the process in the Zynthian app.

Thank You for reading

Alain

Hi Alain,

I’m definitely no CLI or Linux wizard, but I try to offer my advice on your case, based on gathered bits of experience.

With SLIM, you are using Zynthian as a desktop app, but Zynthian is an embedded system. You’ve put in the middle a display manager that takes the input: that’s why the keys are visible in the terminal but don’t reach CUIA. As far as I know, Zynthian is not designed to be launched from a Linux user session with a display manager active. In that configuration, the keyboard input is intercepted before Zynthian can hook it, so CUIA bindings are visible in the terminal but don’t reach the Zynthian system. SLIM does not actually disable autostart: it replaces it completely, changing the environment execution model in a way which probably ZynthianOS is not meant for.

Just my two cents (and I might well be wrong)…

Regards :slight_smile:

1 Like

Okay I understand what you say.

But something bothers me.

Zynthian is not an OS by itself it is a layer over the Linux OS and OpenDeck is also a Linux application so there must be a way to have both of them interact on the Linux layer

I have seen in the Zynthian Wiki that it is possible to have logs so I will try to explore that lead

Anyway Thank You for your kindness.

Alain

1 Like

OKay So now I have connected to the PI400 an USB wireless Numeric KeyPad

and I have added 2 new CUIAs one for numeric 8 ARROW_UP and one for numeric 2 ARROW_DOWN

And I can use both the PI400 Keyboard or the Numeric Keypad to have menu up and down

So Zynthian can “see” input for 2 USB devices at the same time.

But Why not the StreamDeck is a mistery..

How do you connect the StreamDeck to the RPi? Is an USB connection? Is it registered as a HID device? Or does the OpenDeck app use Xtest (or something like that) to send the events? You can use xev to test the events and see if they are “faked”. Note that some apps or frameworks (GLFW for instance) plainly ignore faked events, specially from the keyboard.

Hello and thank you for reading

This is a message I got from the OpenDeck dev

“I’d try using just startx, then opening OpenDeck from the terminal there. Then launch Zynthian and try using the Input Simulation.

However because this (Raspberry Pi, Zynthian, etc) is not really in our field of knowledge, maybe ask the Zynthian developers.

You can tell them that OpenDeck is capable of simulating keypresses in an X11 environment, and they should be able to help you.”

The StreamDeck is connected on one USB port of the PI

Alain

Hi @AL1-1956, while the feedback from Elgato may prove to be useful, and is by any means a testimony of courtesy and attention to the customer, I suspect that the most straightforward line of action would be to skip the Linux display manager altogether, hooking the Stream Deck directly, in the purview of a standard Zynthian self-started installation.

If Zynthian sees it as an HID device sending key presses - which can be easily ascertained on the webconf terminal or via ssh - then the Stream Deck is probably usable on the Zynth, once configured on Linux or PC/Mac. If, conversely, you need to have a Stream Deck management app running on the background of ZynthianOS, I’m afraid that this might interfere with the Zynthian system architecture.

All best regards :slight_smile:

That’s the key, they send simulated events using Xorg, so if Zynthian reads directly from the device (using /dev/inputX), then no simulated event will be received. That’s something that @jofemodo or @riban could confirm.

I have installed Streamdeck for Linux and made some tests: It works! You kann add CUIA commands and use nice icons for your buttons.

Tested with my Streamdeck XL.

Please note:

  1. You need Python <= 3.12 (which works with vangelis (Python 3.11)) but on my desktop with brand new software (Python 3.14), the installation fails :frowning:
  2. You need to make /tmp temporary bigger (>= 250MB) for installation. You can do this by editing /etc/fstab, reboot, install, revoke changes to fstab and reboot again (if there is a need for explaing this in more detail, please let me know!)

Is there an icon set for the buttons of a Zynthian v5 already made? So I can create a configuration for the streamdeck-softwaqre and a complete installation manual.

Okay

First of all GREAT THANKS for your answer

I am French and nearly 70 yo so my English is a little rusty

I have sussesfully (I think) installed the StreamDeck for Linux app

I used this script streamdeck-linux-gui/scripts/ubuntu_install.sh at main · streamdeck-linux-gui/streamdeck-linux-gui · GitHub

and I got these warnings

WARNING: The script filetype is installed in ‘/root/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The scripts pyside6-android-deploy, pyside6-assistant, pyside6-balsam, pyside6-balsamui, pyside6-deploy, pyside6-designer, pyside6-genpyi, pyside6-linguist, pyside6-lrelease, pyside6-lupdate, pyside6-metaobjectdump, pyside6-project, pyside6-qml, pyside6-qmlcachegen, pyside6-qmlformat, pyside6-qmlimportscanner, pyside6-qmllint, pyside6-qmlls, pyside6-qmltyperegistrar, pyside6-qsb, pyside6-qtpy2cpp, pyside6-rcc, pyside6-svgtoqml and pyside6-uic are installed in ‘/root/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script cairosvg is installed in ‘/root/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The scripts streamdeck and streamdeckc are installed in ‘/root/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

[notice] A new release of pip is available: 24.2 → 25.3
[notice] To update, run: pip install --upgrade pipecho ‘If the installation was successful, run ‘‘‘streamdeck’’’ to start.’

If the installation was successful, run ‘streamdeck’ to start

(venv) root@zynthian:~# streamdeck
-bash: streamdeck : commande introuvable

So now I am wondering how I can run the Stramdeck app

Is it a linux exe or a shell ??

I think I can solve your problems. Give me some hours, because I currently have no Zynthian in reach.

Okay Thank You

I have added the required paths in /etc/profile and now I can run “sreamdeck”

but I get these errors

(venv) root@zynthian:~# streamdeck
qt.core.qobject.connect: QObject::connect: No such signal QPlatformNativeInterface::systemTrayWindowChanged(QScreen*)
This plugin does not support propagateSizeHints()
This plugin does not support propagateSizeHints()
^CReceived signal 2 <frame at 0x7fb1acaa80, file ‘/root/.local/lib/python3.11/site-packages/streamdeck_ui/gui.py’, line 1292, code streamdeck_cpu_changed>

Thanks

Ok, it seems that streamdeck-linux.gui does not install a callable script. What I found out was:

cd /root/.local/lib/python3.11/site-packages/streamdeck_ui
python gui.py

That works for me, but is not very comfortable. So I created a simple wrapper script for this:

echo << EOF > /root/.local/bin/streamdeck
pwd=$(pwd)
cd /root/.local/lib/python3.11/site-packages/streamdeck_ui
python gui.py
cd ${pwd}
EOF

chmod 700 /root/.local/bin/streamdeck

Hope that helps!

What streamdeck are you using?

Hello

I have 2 of them the StreamDeck XL (with 32 buttons) and the StreamDeck+ (with 8 buttons and 4 knobs)

At the moment I had to make a fresh install of Zynthian OS (stable(oram 2511.3) on my RPI4 (not an official KIT)

because I had at boot an error in the Oram Picture Screen (segmentation error)

So I hope that it is not the script that I used (ubuntu_install.sh) that made that mess

The script is this one

#!/bin/bash -xe
echo “Installing libraries”
sudo apt install python3-pip libhidapi-libusb0 libxcb-xinerama0

echo “Adding udev rules and reloading”
sudo tee /etc/udev/rules.d/70-streamdeck.rules << EOF
SUBSYSTEM==“usb”, ATTRS{idVendor}==“0fd9”, TAG+=“uaccess”
KERNEL==“uinput”, SUBSYSTEM==“misc”, TAG+=“uaccess”
EOF
sudo udevadm trigger

pip3 install --user streamdeck-linux-gui
echo “If the installation was successful, run ‘streamdeck’ to start.”

Do you think it is safe to use it again ??

Thanks a lot

Alain

No, I don’t think so…

Currently this works fine for me but I was testing on vangelis branch.

I started to create a V5-like Konfiguration - not ready so far. But
zynthian.json (30.0 KB)
is my current work until now (I think only the arrow buttons are working).