Reverse-engineered from Maono Link 4.0.88 (DGM20_OLD.dll) and verified against a DGM20 (352f:0105, firmware 2.1.2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
79 lines
2.4 KiB
Markdown
79 lines
2.4 KiB
Markdown
# 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.
|
|
|
|

|
|
|
|
- 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
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
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
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
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](PROTOCOL.md) for
|
|
the packet format and register map. `dgm20ctl raw` gives direct register access if you want to
|
|
explore.
|
|
|
|
## Development
|
|
|
|
```sh
|
|
PYTHONPATH=src python3 -m unittest discover -s tests
|
|
PYTHONPATH=src python3 -m dgm20.web
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|