FAQ / Troubleshooting
Sometimes, the Stream Deck software fails to uninstall the plugin. When this happens, the plugin folder is left in an unusable (but not empty) state, causing subsequence installations to fail.
To fix the situation, you must manually delete what's left of the plugin folder.
- Quit Stream Deck.
- In Windows: Right-click the Stream Deck icon in the notification area and select "Quit Stream Deck".
- In macOS: Left-click the Stream Deck icon in the menu bar and select "Quit Stream Deck".
- Delete the plugin folder.
Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin"
macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin"
- Restart Stream Deck.
- Install the plugin.
Why is a "loading page" needed?

In my opinion, the Stream Deck software has a design flaw when loading a button. The issue is that the software shows the editor page for the button before the plugin has fully loaded. At that point, the information on the page is incomplete, and if you touch any field in the editor, all fields will be sent to the plugin once it starts. This can cause the button's parameters to become partially corrupted, as the incomplete parameters from the editor fields overwrite the existing ones. It is difficult to know when the plugin is loaded and it is safe to interact with the editor without risking damaging the button configuration.
To prevent the accidental loss of the button configuration, I added a "loading page" that appears during the plugin's loading process. The actual editor page stays hidden until the plugin is active and the editor has been updated with the correct values.
It may seem like the plugin takes longer to load, but it actually doesn't. The only difference is that it now shows a "loading page" while it’s loading, instead of an editor page that might contain inaccurate information.
If the plugin fails to start or crashes, the loading page remains visible to indicate a plugin failure. Previously, the editor page would display incorrect information when the plugin encountered issues, leading users to believe the button configuration was lost, even though it was not.
NO. I strongly recommend against doing that.
The plugin stores many settings in a separate repository called "global storage," which is separate from profiles. The configuration items in global storage include, for example, the Mackie ports, background scripts, and other plugin-wide parameters.
The Stream Deck software deletes this global storage when you uninstall the plugin. When reinstalling, the plugin attempts to recreate the global storage, but the success varies depending on the situation. Therefore, uninstalling the plugin always carries a risk of losing some settings.
Each plugin version has a version number that increases with each build. As long as the update's version number is higher than the currently installed one, the Stream Deck software allows you to perform an inline update without uninstalling the previous version. To my knowledge, the only difference between updating and uninstalling/reinstalling is that you lose the global settings if you uninstall and reinstall, so there's no benefit to doing that.
If you need to re-install the same plugin version or revert to an earlier version for any reason, you must uninstall the current version because the Stream Deck software does not allow such "updates." These are the only situations where you should perform a plugin uninstall and reinstall unless you encounter a file system error that damages the plugin folder or some other major failure.
First and foremost, you must have at least two midi ports: one for the connection from Stream Deck to your daw and another from your daw to Stream Deck. Using a single midi port as both input and output will create a midi feedback loop that breaks everything.
Second: If you plan to both remotely control your daw and record things on tracks (e.g., Notes or automation controllers), you need different ports for the different usages. The same commands may be used for different purposes, and if a Midi port is connected to the "wrong" endpoint, you will get all kinds of unintended effects.
Third: If you are using Mackie Control actions, these must have separate midi ports that are not used by anything else (than the target daw, of course). If you also use other Midi actions on Stream Deck, these must use other midi ports. If you have other devices using the Mackie Control protocol, they must have their own set of midi ports. Having multiple devices share the same Mackie Control midi ports will most certainly cause hard-to-diagnose erroneous behaviors.
You can name the midi ports however you like, but I recommend a naming scheme that clarifies the port's purpose. I tend to use the following names:
-
For Mackie Control actions:
-
Mackie2Daw for the connection from Stream Deck to the Mackie Control driver in your daw.
-
Daw2Mackie for the connection from the Mackie Control driver in your daw to Stream Deck.
-
-
For other actions intended for remote control:
-
StreamDeck2Daw for the connection from Stream Deck to the remote control driver in your daw.
-
Daw2StreamDeck for the connection from the remote control driver in your daw to Stream Deck.
-
-
For other actions intended for track use:
-
StreamDeck2DawTrack for the connection from Stream Deck to the track in your daw.
-
DawTrack2StreamDeck for the connection from the track in your daw to Stream Deck.
-
For remote control using the Generic Remote device, configure the port names dedicated to remote control.
For remote control using the Mackie Control protocol, configure the port names dedicated to Mackie Control. When adding a device for Mackie Control, select "Mackie Control", not anything with "HUI" in the name.
In the Midi Port setup, I recommend the following settings.
In the "All Midi Inputs" column, remove all (Stream Deck related) ports except the StreamDeck2DawTrack port; it's the only port with the purpose of reaching tracks. Other ports can be selected as input for a track, but you must explicitly select them; they will not accidentally be selected as part of "All Midi Inputs."
In the "Visible" column, remove the ports used for output from the input section and the ports used for input from the output section. Since output ports should never be used as inputs (and vice versa), you can avoid selecting the wrong port by mistake by making them invisible in the "wrong" role.
For remote control using the Mackie Control protocol, configure the port names dedicated to Mackie Control. Several different Mackie devices are available in Logic, and I don't know if there is any functional difference between them. I have selected "MCU Pro" since that is the version the plugin emulates, and it seems to work OK.
For remote control using the learn functions in Logic, do not use the Mackie Control device; instead, create another device that does not use the Mackie Control driver, e.g., the Korg nanoKONTROL2 device, and configure the port names dedicated to (non-Mackie) remote control.
VERY IMPORTANT
Remove ports used for output from the input list in Logic. If you do not, Logic will undoubtedly act exceptionally strangely.
It is probably essential to configure the MIDI Environment in Logic intelligently, but unfortunately, that is way beyond my knowledge of Logic. If some Logic Guru supplies me with guidelines, I will gladly publish them here.
For remote control using the Mackie Control protocol, add a "Mackie Control" device (not "Control Extender" or "HUI") and configure the port names dedicated to Mackie Control.
For remote control using a generic control, add a "New Control Surface" device and configure the port names dedicated to remote control.
For connection to tracks, add a "New Keyboard" device and configure the port names dedicated to track access.

I don't know. 😢
Use the guidelines from the "Which Midi ports do I need" section. Use different midi ports for different purposes. If the daw has multiple Mackie devices to choose from, select "MCU Pro" or "Mackie Control," not Mackie Extender, and definitely not anything with "HUI" in the name.
I cannot stress enough the following two statements:
Don't connect anything else to the midi ports used by the Stream Deck Mackie Control buttons and the Mackie Control driver in your daw. No other kind of Stream Deck buttons, no other external devices, no keyboards, no other devices using the Mackie Control protocol, no other daw functions, no tracks. Nothing.
Don't let the daw listen to itself; the commands sent by the Mackie driver in your daw must not be routed to the midi port it is listening to. This is especially important in Logic, where this happens automatically unless you explicitly remove the output ports from also being input ports.
The Mackie Control protocol isn't magic; it's standard Midi messages like Note On/Off, velocity, aftertouch, control change, pitch bend, and sysex. But in the Mackie Control protocol, the meaning of these messages is changed for remote control purposes. When, e.g., the Play button on a Mackie Control is pressed, the device will send an A#6 Note On message. The Mackie Control driver in your daw will, of course, presume that the connected device is a Mackie Control and will interpret the Note On message according to the Mackie protocol (i.e., as the "Play" command).
Now, imagine connecting something that is not using the Mackie protocol to those ports. Whatever that something is sending, the Mackie driver will interpret it as coming from a Mackie device and act accordingly. If that something is sending an A#6 Note On command, the daw will start to play, probably to your big surprise. Please note that this is the simplest of cases to highlight the problem. That "something" will most probably send many messages, all being interpreted and acted upon by the Mackie driver, probably with the result of seemingly random actions all over the place.
The case where the daw listens to itself is equally destructive. If messages sent to the Mackie device are also received by the Mackie driver in the daw, it will act upon them as if they came from the device. You will probably get Mackie Control protocol loops where things flash, and the daw will go nuts.
The Mackie protocol spec is pretty straightforward for multiple Mackie Control devices in the system: "Each Mackie Control unit should be installed on a separate MIDI port." Suppose you have multiple devices using the same ports. In that case, you will either get a situation where everything goes nuts or have one of the devices act as an Extender (in this regard, Stream Deck is "one device", regardless of the number of Mackie Control buttons or physical Stream decks). If Stream Deck is assigned the extender role, it will not control the eight indicated channels in the daw but the eight following channels, which may confuse.
So, to avoid potential problems, please:
Don't connect anything else to the Mackie Control ports.
Don't let the daw listen to itself.
Please check the "Which Midi ports do I need" item in the FAQ list for recommended port names that clearly state the purpose of the ports.
The Mackie Control device type can be edited using the Mackie tab in a Global Settings button.

The trick is to define multiple Mackie Control devices in your DAW and the plugin. The setup in your DAW depends on which DAW you are using. In the plugin, you "define a Mackie Control device" by selecting the device in any Mackie Control button and assigning MIDI ports to it. You don't need to have any active Stream Deck buttons for each device; once you have defined MIDI ports for a device, it will be active in the background, and the MIDI port will be monitored for messages.
Selected channel buttons can be assigned to any Mackie device; regardless of which device they are assigned to, they will cover all channels of the defined Mackie devices.
Important! Two Mackie devices cannot share the same MIDI ports; this is a restriction in the Mackie Control protocol. When selecting MIDI ports for one device in the plugin, any ports used by other Mackie devices (within the plugin) are shown in red and are disabled in the dropdown list, making it impossible to assign the same MIDI ports to two Mackie devices. When configuring your DAW, ensure that no two Mackie devices are assigned the same ports.
Tip: Active Mackie devices (i.e., with defined MIDI ports) will attempt to connect to the MIDI ports, monitor incoming messages, and track the status of all buttons, faders, pots, and LCDs for that device. This uses system resources on your computer; it's negligible but still unnecessary if not needed. If you have defined a Mackie device in the plugin that is no longer required, you can disable it by selecting "No MIDI Input/No MIDI Output" for that device.
Two Mackie devices cannot share the same MIDI ports; this is a limitation of the Mackie Control protocol. When selecting MIDI ports for one device in the plugin, any ports used by other Mackie devices (in the plugin) appear in red and are disabled in the dropdown list, making it impossible to assign the same MIDI ports to two Mackie devices.
If you need to assign a disabled MIDI port to a specific Mackie Control device, please unassign it from the current Mackie Control device (in the plugin) that has it assigned.
When using multiple Mackie devices, the plugin expects the devices to handle channels numerically. For example, device 1 manages the first eight channels, device 2 manages the next eight, and so on. When switching from, say, channel 8 to channel 9 (with two Mackie devices in the plugin), the plugin transitions by moving from the last channel on device 1 to the first channel on device 2.
If your Mackie devices don't handle channels in numerical order, you need to arrange the Mackie devices the same way as in the DAW; otherwise, channel switches will be incorrect when moving from one device to another.
To change the device order in the plugin, open the Mackie tab in a Global Settings button. The Mackie devices can be rearranged by drag-and-drop; click and hold a section header for a Mackie device, then drag and drop it to the desired location.
loopMidi in Windows has feedback detection that shuts down the port if it detects traffic indicating a midi feedback loop. The Mackie Control protocol is very chatty, and I have, on a few occasions, had the port disabled due to a suspected feedback loop. In these cases, it's a false detection because there is no loop; it's just the protocol sending a lot of data.
When this occurs, the port becomes muted and displays in red text in loopMidi. You can unmute the port by clicking the indicated button (with the port selected).
If this is an ongoing issue, you can adjust the detection settings on the Advanced tab or turn off feedback detection completely.
Contrary to when you are using the Generic Remote in Cubase, you need to configure the Stream Deck profile first, and then create buttons in the MIDI Remote and learn the commands used by the Stream Deck buttons. The button types in the MIDI Remote map very well to the button types in the plugin (button/knob/fader)
Some notes:
-
If you have multiple Stream Deck buttons using the same command (e.g., fader buttons), you should only have one button in the MIDI Remote configuration. It is impossible to have multiple MIDI Remote buttons listening to the same command; the important thing is to map the incoming command to a Cubase command, which is done using a single MIDI Remote button.
-
You need to mark the MIDI Remote button (in Cubase) as "Toggle: Off" regardless of whether it should toggle. Set all MIDI Remote buttons to Toggle Off and configure the Stream Deck button to the required behavior.

I have created a MIDI Remote Controller Surface for Cubase 12 and an accompanying Stream Deck profile. You can use these as templates for controlling the new MIDI Remote with the Stream Deck Midi plugin.
You can download the template files from here.
Plugin folder
- Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin"
- macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin"
Plugin log file
- Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin\pluginlog.txt"
- macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin/pluginlog.txt"
Stream Deck log file
Stream Deck 6.x:
- Windows: "%appdata%\Elgato\StreamDeck\logs\StreamDeck0.log"
- macOS: "~/Library/Logs/ElgatoStreamDeck/StreamDeck0.log"
Stream Deck 7.x:
- Windows: "%appdata%\Elgato\StreamDeck\logs\StreamDeck.log"
- macOS: "~/Library/Logs/ElgatoStreamDeck/StreamDeck.log"
For any button using the Midi plugin in the editor, scroll down to the end and click the little arrow left of the Help and logging text. In the section that opens up, mark the Enable extended logging checkbox. Logging is global for all buttons using the plugin; you can turn logging on/off on any button.
With the buttons, you can view, clear, and upload log files to the Trevliga Spel server.
- The View button opens the plugin log file in a text editor.
- The Clear button clears the plugin log file.
- The Upload button sends both the plugin log file and the Stream Deck log file to the Trevliga Spel server. An ID is assigned to each upload, which is displayed below the buttons. If you have uploaded files previously, the ID from the last upload will appear in the Log ID field.
If the plugin has crashed, that checkbox will not work (even though it might look like it), so you need to do it the hard way: Create an empty file EnableLogging.txt in the plugin folder.
- Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin\EnableLogging.txt"
- macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin/EnableLogging.txt"
The recommended process for creating a log file is:
-
Clear the log file.
-
Enable extended logging.
-
Quit Stream Deck. (this is important; there are many things I need to see that are only happening when the plugin starts)
-
In Windows: Right-click the Stream Deck icon in the notification area and select "Quit Stream Deck".
-
In macOS: Left-click the Stream Deck icon in the menu bar and select "Quit Stream Deck".
-
-
Start Stream Deck again.
-
Trigger the error situation (...but don't do much else to keep the log file focused on the case).
-
Disable extended logging.
-
Upload the log file.
-
Send a description of the problem and the log file ID (important!) either by email or on the forum.
Information in log files
The Stream Deck log file shows which plugins are loaded, but it does not include any personal information, passwords or plugin configuration details.
The plugin log file may include your username on your local computer (as it appears in the path to your Documents folder), along with path details for file references, available Stream Deck devices, and Midi ports. The log records plugin configurations and actions, which is its main purpose. No passwords or other personal information are included unless you have added such data in plugin scripts, which I see no reason for.
Uploaded files are only accessible to Trevliga Spel Admin; they are not available online.