Mono allows you to run .NET applications natively on Linux, which means you'll see Linux device names instead of dealing with Windows COM port mapping.
sudo apt update
sudo apt install mono-complete
This gives you permission to access serial devices without needing sudo every time.
sudo usermod -a -G dialout $USER
Download the latest (tr)uSDX firmware from the official source:
Save the .hex file somewhere you can easily find it, like:
/home/yourusername/Downloads/
Download avrdudess from the official website:
You want version 2.20 or later. This will download as a .zip file.
You can extract it using your file manager (right-click → Extract Here) or from the command line:
cd ~/Downloads
unzip avrdudess-*.zip -d ~/avrdudess
This will create a folder at /home/yourusername/avrdudess/ containing the avrdudess.exe file and supporting files.
Run this command to see which port your radio is on:
ls /dev/ttyUSB*
You should see something like /dev/ttyUSB0 appear. This is your radio.
dmesg -w (press Ctrl+C to stop)To verify which device was just connected, run:
lsusb
Look for a line mentioning "CH340 serial converter" or similar USB-to-serial adapter.
Navigate to where you extracted avrdudess and run:
cd ~/avrdudess/
mono avrdudess.exe
When the program opens, you'll see Linux device names in the dropdown menus. Configure it as follows:
arduino (Arduino for bootloader using STK500 v1 protocol)/dev/ttyUSB0 (or whatever device appeared in Step 6)115200ATmega328P (for most (tr)uSDX radios)... button next to the Flash field/home/yourusername/Downloads/yourfirmware.hex)Z:\ - those are Wine paths and won't work with Mono.hex file that you downloaded in Step 3Key points:
/dev/ttyUSB0 (Linux device name, not COM1)/home/mark/trusdx/... (your path will start with /home/YOUR_USERNAME/...)arduinoATmega328P115200You should see progress messages in the terminal window at the bottom. When it's done, you'll see "Ready" at the bottom of the window.
You forgot to log out and back in after adding yourself to the dialout group (Step 2). Either:
sudo chmod 666 /dev/ttyUSB0 (temporary fix until you unplug the device)lsusb57600 instead of 115200wch_ch341 instead of arduinoYou're still using Wine paths. When running with Mono:
... button in the Flash section/home/ not Z:\This warning can be safely ignored - it's not needed for flashing firmware. If you want to eliminate the warning, install:
sudo apt install avr-libc gcc-avr binutils-avr
Add this to your ~/.bashrc file:
alias avrdudess='cd ~/avrdudess && mono avrdudess.exe'
Then you can just type avrdudess in any terminal to launch it.
Your radio will usually be /dev/ttyUSB0 if it's the only USB serial device connected. If you have multiple devices, they'll be numbered sequentially (/dev/ttyUSB1, /dev/ttyUSB2, etc.).
Many Windows radio programming tools are .NET applications. Try running them with Mono first:
mono yourprogram.exe
If it works, you'll have the same easy Linux device access without COM port mapping headaches!
The key advantages of using Mono instead of Wine for this task:
/dev/ttyUSB0)/home/...)Good luck with your firmware update, and 73!