Skip to content

Loupedeck separated strip buttons v1.1.2

Choose a tag to compare

@ninoleto ninoleto released this 15 Jul 15:35
· 3 commits to main since this release

This is an unofficial Bitfocus Companion 5 surface module for the Loupedeck Live and Razer Stream Controller.

It is based on the official Bitfocus Loupedeck surface module v1.1.1 and adds an optional layout with separated 60 × 60 buttons on the two vertical touch strips.

Loupedeck v1.1.2 module with separated 60x60 strip buttons

Official v1.1.1 native 60 × 90 strip controls compared with the unofficial v1.1.2 separated 60 × 60 layout.


Why I made this version

Important

The main reason for this module is touch accuracy. The vertical strips are continuous touch surfaces with no physical dividers, so full 60 × 90 touch areas can make accidental presses more likely. The separated 60 × 60 mode adds visible, touch-inactive gaps between neighboring controls.

The official Companion 5 Loupedeck module renders each vertical-strip control natively across the complete 60 × 90 area.

That full-height layout provides more space for text, graphics, gradients and continuous designs. It is useful for people who want to use every available pixel of the strip display.

However, it does not work well for my personal workflow.

The controller’s central 4 × 3 grid contains twelve LCD buttons. Each button is physically separated from the neighboring buttons by a plastic frame. These physical dividers give the finger a clear boundary, so accidentally pressing two neighboring buttons is unlikely.

The two vertical touch strips are different. Each strip is one continuous touch surface containing three virtual controls, with no physical divider between them.

When the complete 60 × 90 area of every strip control is touch-active, I often touch the edge of the neighboring control or move into it while pressing. During live use, this can activate the wrong action and interrupt my workflow.

I also have muscle memory from my previous split-strip module, which used smaller square buttons. And honestly, as I get older, I prefer controls that provide a little more margin for error.

For me, reliable touch operation is more important than using every available pixel.

This module therefore keeps the Companion button artwork at 60 × 60 and provides two touch-area options.

Separated strip buttons enabled

  • The Companion artwork is displayed as a centered 60 × 60 button.
  • Only the central 60 × 60 area responds to touch.
  • The 15-pixel areas above and below the button are black and touch-inactive.
  • These gaps provide clear visual and touch separation between neighboring controls.
  • Text and icons remain square and are not stretched.
  • Accidental activation of adjacent strip controls is reduced.

Separated strip buttons disabled

  • The Companion artwork remains 60 × 60 and is not stretched.
  • The complete 60 × 90 strip cell responds to touch.
  • The button background or feedback color is extended into the surrounding area.
  • This provides a larger touch target while preserving the original proportions of the artwork.

This module does not replace the official native 60 × 90 rendering. It provides an alternative for users who prefer square artwork, visible separation and more predictable touch control.

Users who want native full-height artwork, gradients or continuous graphics may prefer the official module. Users who experience accidental presses on the continuous touch strips may find the separated 60 × 60 mode more practical.


What v1.1.2 adds

Version 1.1.2 adds:

  • Optional Separated strip buttons (60 × 60) setting.
  • Centered 60 × 60 strip-button artwork.
  • Black 15-pixel margins above and below each separated button.
  • Touch-inactive margins between adjacent controls.
  • Full 60 × 90 touch-area mode when separation is disabled.
  • Unstretched text and icons in both modes.
  • Correct touch-release handling when a finger moves before being lifted.
  • Independent rendering and touch handling for all six strip controls.

The setting is available in the Loupedeck surface integration when:

LCD strip mode: Split buttons

Six additional Companion controls

The two vertical touch strips are divided into six independently programmable Companion controls:

  • Three controls on the left strip.
  • Three controls on the right strip.
  • Six additional Companion controls in total.

The internal control IDs are:

  • strip-left-0
  • strip-left-1
  • strip-left-2
  • strip-right-0
  • strip-right-1
  • strip-right-2

Each strip control can:

  • Display its own Companion button graphic.
  • Display independent text, icons and colors.
  • Show different button and feedback states.
  • Use Companion variables.
  • Generate normal press and release events.
  • Run any Companion action assigned to it.

The main 4 × 3 button grid, rotary encoders and other controls retain the normal behavior of the official Bitfocus Loupedeck surface module.

Compatibility

Built and tested with:

  • Bitfocus Companion 5
  • Loupedeck Live
  • Razer Stream Controller

The Loupedeck Live and Razer Stream Controller are the same physical control surface sold under different branding.

This release is not intended for Companion 4.x.

Compatibility with later Companion releases is expected, but cannot be guaranteed if the Companion surface API changes.

Download

Download the following file from the Assets section:

companion-surface-loupedeck-separated-strips-v1.1.2.tgz

Do not extract the file when importing it through Companion.

This file is a complete installable Companion surface-module package. It is not:

  • A Windows executable.
  • A standalone Linux or macOS application.
  • A firmware update.
  • An update for the official Loupedeck or Razer software.

Normal users do not need Node.js, Yarn, Git, Visual Studio or a compiler.

Recommended installation for Companion 5

1. Download the package

Download:

companion-surface-loupedeck-separated-strips-v1.1.2.tgz

Do not extract the file.

2. Open the Companion Admin interface

Start Companion and open its Admin interface in a browser.

For a local Companion installation, the address is normally:

http://127.0.0.1:8000

For Companion running on another computer, use its hostname or local IP address:

http://COMPANION-IP:8000

3. Import the module package

In the Companion Admin interface:

  1. Open the Modules page.
  2. Click Import module package.
  3. Select companion-surface-loupedeck-separated-strips-v1.1.2.tgz.
  4. Confirm the import.

Use Import module package.

Do not choose Import offline module bundle. An offline module bundle is a different type of archive containing multiple modules.

4. Add or update the Loupedeck surface integration

Open the Surfaces page.

If the right-hand settings panel is not visible, click Show Settings.

In the Surface Integrations section:

  1. Click Add Surface Integration.
  2. Click All Available if it is not already selected.
  3. Search for Loupedeck.
  4. Select the Loupedeck surface integration.
  5. Select module version 1.1.2 if Companion asks which installed version to use.
  6. Add or enable the integration.

If a Loupedeck surface integration already exists, open its settings and confirm that it is using version 1.1.2.

If Companion does not allow the existing integration to switch versions, remove that surface integration and add it again after importing version 1.1.2.

5. Enable the separated strip layout

Open the settings for the Loupedeck surface integration.

Set:

LCD strip mode: Split buttons

Then enable:

Separated strip buttons (60 × 60)

When enabled, the black margins between the strip buttons do not respond to touch.

When disabled, the complete 60 × 90 area of each strip control remains touch-active.

6. Close the official controller software

Completely close the official Loupedeck or Razer Stream Controller software before using the controller with Companion.

The official application may keep control of the USB device and prevent Companion from opening it.

Check that the application is not still running in the background or system tray.

7. Connect and detect the controller

Connect the Loupedeck Live or Razer Stream Controller directly to the computer running Companion.

Open the Surfaces page and click:

Rescan USB

The controller should appear in the configured surfaces list.

8. Restart if necessary

If version 1.1.2 does not appear immediately:

  1. Completely stop Companion.
  2. Start Companion again.
  3. Open the Modules page and confirm that version 1.1.2 is installed.
  4. Open the Surfaces page and confirm that the Loupedeck integration uses version 1.1.2.
  5. Click Rescan USB.

Updating from an older version

  1. Download companion-surface-loupedeck-separated-strips-v1.1.2.tgz.
  2. Open Companion’s Modules page.
  3. Click Import module package.
  4. Select the new package.
  5. Confirm the import.
  6. Open the Surfaces page.
  7. Open the Loupedeck surface integration.
  8. Select module version 1.1.2.
  9. Restart Companion if necessary.
  10. Click Rescan USB.

Do not keep multiple development copies of companion-surface-loupedeck inside the same developer-module directory.

Troubleshooting

The package will not import

Confirm that you selected:

companion-surface-loupedeck-separated-strips-v1.1.2.tgz

Do not extract the package before importing it.

Use:

Import module package

Do not use:

Import offline module bundle

The separated-button setting does not appear

Confirm that:

  • Companion 5 is running.
  • Module version 1.1.2 is installed.
  • The active Loupedeck surface integration uses version 1.1.2.
  • The LCD strip mode is set to Split buttons.
  • An older development copy is not overriding the imported package.
  • Companion was restarted after changing the active version.

The controller does not appear

  • Close the official Loupedeck or Razer Stream Controller software.
  • Check background processes and system-tray applications.
  • Disconnect and reconnect the controller.
  • Try a direct USB port instead of a hub.
  • Open the Surfaces page.
  • Click Rescan USB.
  • Check Companion’s log.
  • On Linux, check the generated udev rules.
  • Restart Companion.

Companion loads the wrong Loupedeck module

  • Remove duplicate local copies.
  • Check all configured developer-module directories.
  • Confirm that the Loupedeck surface integration uses version 1.1.2.
  • Restart Companion.

It works on Windows but not Linux

The most likely cause is missing or outdated Linux udev rules.

Enable the Loupedeck surface integration first, install the newly generated rules, reload udev, reconnect the controller and click Rescan USB.

Important information

  • This is an unofficial custom Bitfocus Companion surface module.
  • It is not currently part of the standard Bitfocus Companion distribution.
  • It uses the existing Loupedeck surface-module identity.
  • It does not modify the controller firmware.
  • It does not modify the official Loupedeck or Razer software.
  • It changes only how Companion displays and handles the two vertical touch strips.
  • Back up your Companion configuration before installing custom modules.
  • Use at your own risk.

This project is based on the official open-source Bitfocus Companion Loupedeck surface module.

The module is used daily by its developer and has been tested extensively in a real Companion 5 production environment.

Development and documentation were created with assistance from ChatGPT.

Released under the MIT License.