DawnPro-GUI
DawnPro-GUI copied to clipboard
A tool for controlling the MoonDrop Dawn Pro DAC/AMP
DawnPro-Utils
DawnPro-Utils is a tool used to control the Moondrop Dawn Pro AMP/DAC.

Features
- Change the LED status (on, temp-off, off)
- Set the gain (low, high)
- Configure the filters:
- Fast-roll-off-low-latency
- Fast-roll-off-phase-compensated
- Slow-roll-off-low-latency
- Slow-roll-off-phase-compensated
- Non-oversampling
- Adjust the volume
- Fully configurable through JSON configuration file
Requirements
- Python 3.7 or higher
usbmodulePyGObject
Installation
From AUR (Arch Linux)
The package is available on the Arch User Repository (AUR). You can install it using your preferred AUR helper:
# Using yay
yay -S dawnpro-gui
# Using paru
paru -S dawnpro-gui
Or build it manually:
git clone https://aur.archlinux.org/dawnpro-gui.git
cd dawnpro-gui
makepkg -si
Manual Installation
To install pyusb, run:
pip install pyusb
To install PyGObject, it may depend on your distro or operating system:
https://pygobject.gnome.org/
Setup
Add the following rule to your udev rules (you may need to adjust the rule name based on existing rules in /etc/udev/rules.d/):
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2fc6", MODE="0666"' | sudo tee /etc/udev/rules.d/99-dawn-pro.rules
Then run:
sudo udevadm control --reload-rules
sudo udevadm trigger
Configuration
The application uses a configuration file located at ~/.config/dawnpro/config.json. If this file doesn't exist, the application will use default settings.
Setting Up Configuration
- Create the configuration directory:
mkdir -p ~/.config/dawnpro
- Copy the default configuration:
cp config.json ~/.config/dawnpro/config.json
Configuration Sections
The configuration file is divided into several sections:
-
device_constants: USB communication constants"device_constants": { "BM_REQUEST_TYPE_OUT": 67, "BM_REQUEST_TYPE_IN": 195, "B_REQUEST": 160, "B_REQUEST_GET": 161, "W_VALUE": 0, "W_INDEX": 2464, "VOLUME_REFRESH_DATA": [192, 165, 162], "DATA_LENGTH": 7, "LED_STATUS_ENABLED": 0, "LED_STATUS_TEMP_OFF": 1, "LED_STATUS_OFF": 2 } -
device_identifiers: Device vendor and product IDs"device_identifiers": { "MOONDROP_VID": 12230, "DAWN_PRO_PID": 61546, "VOLUME_MAX": 0, "VOLUME_MIN": 112 } -
default_settings: Default values for device settings"default_settings": { "DEFAULT_VOLUME": 50, "DEFAULT_LED_STATUS": "On", "DEFAULT_GAIN": "Low", "DEFAULT_FILTER": "Fast Roll-Off Low Latency" } -
ui_metrics: Window size and UI element spacing"ui_metrics": { "WINDOW_WIDTH": 400, "WINDOW_HEIGHT": 300, "MARGIN_TOP": 10, "MARGIN_BOTTOM": 20, "MARGIN_START": 10, "MARGIN_END": 10, "SPACING": 10 } -
logging: Logging configuration"logging": { "LOG_LEVEL": "INFO", "LOG_FORMAT": "%(asctime)s - %(levelname)s - %(message)s", "LOG_FILE": "~/.config/dawnpro/dawnpro.log" }
Example Custom Configuration
Here's an example of a custom configuration that changes some default values:
{
"default_settings": {
"DEFAULT_VOLUME": 75,
"DEFAULT_LED_STATUS": "Off",
"DEFAULT_GAIN": "High",
"DEFAULT_FILTER": "Fast Roll-Off Phase Compensated"
},
"ui_metrics": {
"WINDOW_WIDTH": 500,
"WINDOW_HEIGHT": 400,
"SPACING": 15
},
"logging": {
"LOG_LEVEL": "DEBUG",
"LOG_FILE": "~/.config/dawnpro/debug.log"
}
}
Usage
Ensure the DAC/AMP is plugged in before running the script.
To run the tool, execute the following command:
python main.py
Acknowledgments
Inspired by:
"mdrop" by frahz: https://github.com/frahz/mdrop/