Skip to content
HumblemonkPublic

About

A terminal UI configurator for Shure audio interfaces and mics. Replaces the Windows/Mac-only ShurePlus MOTIV Desktop app

Topics

Resources

Contributing

Stars

44 stars

Watchers

1 watching

Forks

Repository files navigation

shurectl

An open-source terminal UI for configuring Shure USB microphones and audio interfaces on Linux, macOS, and Windows. A lightweight alternative to the ShurePlus MOTIV desktop app.

Project Example Screenshot

Supported devices: MVX2U Gen 1, MVX2U Gen 2, MV6, MV6 Gen 2, MV7, MV7+

  • Gain, mute, Auto Level / Manual mode, and monitor mix
  • EQ, compressor, limiter, high-pass filter, denoiser, and popper stopper, where the device has them
  • Reverb and LED settings on the models that support them
  • Real-time level meter with peak hold
  • Gain check: speak for 10 seconds and shurectl suggests a gain for your voice
  • 4 preset slots, saved as editable TOML files
  • Mute, load a preset, change gain, mode or monitor levels, or read the state as JSON from the command line without opening the TUI

Which controls each model has is listed under Device support.

Install

Before using shurectl, update your device's firmware with Shure's MOTIV mobile app.

Arch Linux (AUR) — includes the udev rules; replug the device after installing.

paru -S shurectl        # or: yay -S shurectl

Homebrew (macOS / Linux) — builds from source, so the first install takes a minute or two.

brew install humblemonk/shurectl/shurectl

Cargo

cargo install --git https://github.com/Humblemonk/shurectl.git

On Linux this needs libasound2-dev and libudev-dev (Debian/Ubuntu names). On Windows it needs the MSVC build tools.

Upgrading? What changed in each release lists new features and fixes, and says when a release needs you to do something after upgrading.

Linux: allow access without root

Skip this if you installed from the AUR. Otherwise install the udev rules and replug the device:

sudo curl -fsSLo /etc/udev/rules.d/62-shure.rules \
  https://raw.githubusercontent.com/Humblemonk/shurectl/master/62-shure.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

macOS and Windows need no setup.

Usage

shurectl                  # Open the TUI; with several devices connected, pick one first
shurectl --list           # List detected Shure devices
shurectl --device <path>  # Connect to a specific device from --list, by path or serial
shurectl --demo mv7plus   # Try the UI without a device: mvx2u, mvx2u-gen2, mv6, mv6-gen2, mv7, mv7plus
shurectl --mute           # Toggle mute without launching the TUI (or --mute on / --mute off)
shurectl --mute status    # Print "on" or "off", e.g. for a status bar
shurectl --preset 2       # Load preset slot 2 (1-4) without launching the TUI
shurectl --gain +1        # Change gain, mode or a monitor level, or print JSON (see Scripting)
Key Action
Tab / Shift+Tab Switch section
↑ / k Focus previous control
↓ / j Focus next control
← / h Decrease value
→ / l Increase value
Enter / Space Toggle boolean / cycle option
f Flatten EQ (zero all bands) — EQ tab, MVX2U Gen 1 and Gen 2 in Manual, and MV6 Gen 2 in Advanced tone
g Gain check (Main tab, Manual mode), as Enter on the Level meter does; Esc closes it
r Refresh state from device (reconnects right away if it was unplugged and plugged back in)
s Save preset (on Presets tab, focused slot)
d / Delete Delete preset (on Presets tab, actions row of the focused slot)
? Toggle help overlay
q / Ctrl+C Quit

The mouse works too: click a tab to switch to it, click a control to select it and click it again to toggle it, or scroll over a slider to adjust it. Factory Reset still needs Enter to confirm. Most terminals let you hold Shift to select text while the mouse is captured.

The TUI needs a terminal of at least 80×24. In a smaller one it shows the size it needs, and only q and Ctrl+C work (Ctrl+C alone while a name is being edited).

Presets

On the Presets tab, s saves the current settings into the focused slot, Enter on its actions row loads it onto the device (leaving mute as it is), and Enter on its name renames it. Each slot is a hand-editable file, preset_1.toml through preset_4.toml, in:

Platform Location
Linux ~/.config/shurectl/presets/
macOS ~/Library/Application Support/shurectl/presets/
Windows %APPDATA%\shurectl\presets\

Scripting

For scripts, hotkeys and Stream Deck buttons, each of these opens the device, does one thing and exits:

shurectl --mute toggle                   # Or on / off; status prints "on" or "off"
shurectl --preset 2                      # Load preset slot 2
shurectl --mode toggle                   # Or auto / manual
shurectl --gain 24                       # dB, rounded down to the model's step; +1 / -1 steps
shurectl --monitor-mix 40                # 0-100, or +5 / -5
shurectl --playback-mix 40               # 0-100, or +5 / -5, where the model has it
shurectl --json                          # The device's state as one line of JSON
shurectl --mode manual --gain 24 --json  # Several changes, then the JSON

A change the TUI wouldn't make right now, such as gain in Auto Level mode, is refused with the reason, and a failure exits with status 1 (--json prints {"error": "..."}). With two mics, pick one by the serial --list shows: --device 3EK26001276. If the TUI is open, press r there after loading a preset from the command line, and avoid running commands while recording, since both then talk to the device at once. shurectl --help explains each option.

Troubleshooting

"Cannot open device" — device not found or a permissions issue. Run shurectl --list to check detection. On Linux, try sudo shurectl to confirm it's a udev permissions issue. On macOS and Windows, ensure no other software (e.g. ShurePlus MOTIV) has exclusive access to the device.

Header stays [DISCONNECTED] with the device plugged in — shurectl can see the device but cannot open it. Check the status bar for the reason, then follow "Cannot open device" above. With two identical devices that report no USB serial number, restart shurectl with --device.

"Couldn't read a setting" in the status bar — the device didn't answer a query, or answered with a setting shurectl doesn't know, often after a firmware update. shurectl sends no changes until a full read succeeds; press r to retry. If it keeps happening, please open an issue with the message and your firmware version.

No gain slider in Auto Level mode — This is correct hardware behaviour; the device sets its own gain in Auto Level mode, so the slider is hidden. Switch to Manual mode first.

Gain won't change — On the MVX2U Gen 2, MV6 and MV6 Gen 2, check that Gain Lock is off.

MV7: MOTIV stops showing the mic's settings — The MV7 has a single command channel that MOTIV and shurectl share. Quit MOTIV before using shurectl with an MV7; if MOTIV already lost the mic, quit it, replug the mic, and reopen it.

PipeWire/PulseAudio volume vs. device gain — This tool controls the hardware DSP gain on the device itself, not the OS capture volume level. Both can be set independently.

Device support

Controls available on each model

✓ = available · Manual / Auto = only in that mode · — = not on this device

Control MVX2U Gen 1 MVX2U Gen 2 MV6 MV6 Gen 2 MV7 MV7+
Main tab
Mode (Auto Level / Manual) ✓ ✓ ✓ ✓ ✓ ✓
Mute ✓ ✓ ✓ ✓ ✓ ✓
Gain Manual, 0–60 dB Manual, 0–60 dB Manual, 0–36 dB Manual, 0–36 dB Manual, 0–36 dB Manual, 0–36 dB
Gain Lock — Manual Manual Manual — —
Monitor Mix (0–100%) ✓ Mic + Playback Level Mic + Playback Level Mic + Playback Level ✓ Mic + Playback Level
Phantom Power (48V) ✓ ✓ — — — —
Config Lock ✓ — — — ✓ —
Mic Position (Near / Far) Auto — — — Auto —
Auto Tone (Dark / Natural / Bright) Auto — — — Auto —
Target Level (Low / Med / High) Auto — — Auto — —
Adaptation Rate (Slow / Fast) — — — Auto — —
Mic Preset (Speech / Singing / Instrument) — — — ✓ — —
EQ tab
5-band Parametric EQ (−8 to +6 dB) Manual, 2 dB steps Manual, 0.5 dB steps — Advanced tone, 2 dB steps — —
Tone (Dark ↔ Natural ↔ Bright slider, 10% steps) — Auto ✓ Simple tone — ✓
EQ Preset (Flat / High Pass / Presence Boost / both) — — — — Manual —
Dynamics tab
Limiter Manual Manual — — Manual ✓
Compressor (Off / Light / Medium / Heavy) Manual Manual — — Manual ✓
High-Pass Filter (Off / 75 Hz / 150 Hz) Manual ✓ ✓ ✓ — ✓
Denoiser — ✓ ✓ ✓, level 1–100% — ✓
Popper Stopper — ✓ ✓ ✓ — ✓
Mute Button (Works / Ignored) — — ✓ ✓ — ✓, firmware 1.4.0+
Other tabs
Reverb (Plate / Hall / Studio, intensity 0–100%, output and monitor on/off) — — — — — ✓
LED Panel — — — — Live Meter, Night Mode Behavior, Brightness, Theme, custom RGB
Rename device (Info tab) ✓ ✓ ✓ ✓ — ✓
Factory Reset (Info tab) — ✓ — ✓ — ✓
Firmware update check (Info tab) — ✓ ✓ ✓ — ✓

Every model also has the level meter, the gain check, presets, an Info tab (serial number, device name, firmware version), --demo, and the command-line options under Scripting (--playback-mix where the model has a Playback Level).

  • On the MV6 Gen 2, Tone Mode at the top of the EQ tab picks the Tone slider (Simple) or the 5-band EQ (Advanced), as in MOTIV.
  • Monitor Mix balances mic against playback in your headphones. On the MVX2U Gen 2, MV6, MV6 Gen 2 and MV7+ it has separate Mic Level and Playback Level sliders, as in MOTIV.
  • The level meter reads your system's default input, so set the Shure as the default input (at 100% input volume) for it to match the device.
  • Gain check: in Manual mode, select the Level meter on the Main tab and press Enter, then speak normally for 10 seconds. The Summary makes way for the result: your loudest peak and a gain to try, aiming for peaks around -12 dBFS. Set the gain with ←/→, then check again. It listens through the level meter, so it needs the Shure as your default input.
  • Gain moves in 1 dB steps, except on the MV7, which uses the hardware's own 1.5 dB step.
  • On the MVX2U Gen 1 and MV7, the device manages EQ and Dynamics itself in Auto Level mode, so those tabs are locked until you switch to Manual.
  • On the MVX2U Gen 1, the EQ also has a master enable and a per-band enable.
  • Factory Reset asks for confirmation, and the mic disconnects afterwards.

Building from source

Build and install steps
git clone https://github.com/Humblemonk/shurectl.git
cd shurectl
cargo build --release
install -m 755 target/release/shurectl ~/.local/bin/          # for your user
sudo install -m 755 target/release/shurectl /usr/local/bin/   # or system-wide

On Linux, install libasound2-dev and libudev-dev first.

On Windows, install Microsoft C++ Build Tools with the "Desktop development with C++" workload, then make MSVC your active toolchain:

rustup default stable-x86_64-pc-windows-msvc

Credits and legal

Initial protocol reverse-engineering credit goes to PennRobotics and the shux project (Apache 2.0), without which this tool would not exist. If you find shurectl useful, consider starring their repository. The protocol implementation is based on their published USB HID packet captures and the author's own usbmon captures.

shurectl does not update device firmware. The firmware-update commands are intentionally left out of its protocol implementation, and it never sends them. To update firmware, use ShurePlus MOTIV; the Info tab shows the firmware version your device is running and, at startup, checks Shure's online firmware archive for a newer one.

shurectl is not affiliated with or endorsed by Shure Incorporated.

About

A terminal UI configurator for Shure audio interfaces and mics. Replaces the Windows/Mac-only ShurePlus MOTIV Desktop app

Topics

Resources

Contributing

Stars

44 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages