dgm20-linux

Control the Maono DGM20 USB microphone on Linux. Maono Link only runs on Windows and macOS; this covers the same settings with a local web page and a command-line tool.

The control page

  • Noise cancellation on/off and strength
  • Vocal enhancement
  • Hear yourself (headphone monitoring)
  • Mute, kept in sync with the mic's touch pad
  • RGB ring brightness
  • Factory reset

Pure Python 3.9+, no dependencies. Nothing leaves your machine: the page is served from localhost and loads no external fonts or scripts.

Unofficial. Not affiliated with or endorsed by Maono. Tested on a DGM20 with USB ID 352f:0105, firmware 2.1.2. Newer DGM20 revisions (352f:0112) and the DGM20G/DGM20W use different firmware and are not supported yet.

Install

pipx install git+https://git.reiners.dev/ReinersCloudConsulting/dgm20-linux.git
# or, from a checkout
pipx install .

Let your user reach the mic without root, then unplug and replug it:

sudo cp udev/70-maono-dgm20.rules /etc/udev/rules.d/
sudo udevadm control --reload && sudo udevadm trigger

The rule grants access to the logged-in desktop user (uaccess) and to the wheel group, which covers ssh sessions. Change the group if your distro uses a different one.

Use

dgm20-web --open          # control page at http://localhost:8720
dgm20ctl                  # show settings
dgm20ctl set nc on nc-level 80 enhance off
dgm20ctl watch            # print changes made on the mic itself
dgm20ctl factory-reset --yes

To keep the page running in the background:

cp contrib/dgm20-web.service ~/.config/systemd/user/
systemctl --user enable --now dgm20-web

dgm20-web only listens on localhost. --host 0.0.0.0 makes it reachable from your network, and anyone on that network can then change your mic settings, because there is no login.

Input gain and headphone volume are standard USB audio controls. Set them in your desktop's sound settings, pavucontrol or alsamixer. The mic does not expose them on its control channel.

How it works

The settings were found by reading Maono Link's DGM20 plugin. See PROTOCOL.md for the packet format and register map. dgm20ctl raw gives direct register access if you want to explore.

Development

PYTHONPATH=src python3 -m unittest discover -s tests
PYTHONPATH=src python3 -m dgm20.web

License

MIT

S
Description
Control the Maono DGM20 USB microphone on Linux: noise cancellation, monitoring, vocal enhancement, mute and RGB brightness, from a local web page or the command line.
Readme MIT
224 KiB
Languages
Python 48.8%
HTML 30.3%
Shell 20.9%