Payloads
MIA executes commands using DuckyScript syntax — the same language used by the USB Rubber Ducky and many other HID injection tools.
Sending a command
Any message on the shared Meshtastic channel prefixed with !mia: is treated as a command:
!mia: STRINGLN hello world
Multiple commands are separated by commas:
!mia: GUI r, DELAY 500, STRINGLN notepad, ENTER
DuckyScript reference
| Command | Description | Example |
|---|---|---|
STRING |
Type text without pressing Enter | STRING hello |
STRINGLN |
Type text and press Enter | STRINGLN hello |
ENTER |
Press Enter | ENTER |
DELAY |
Wait in milliseconds | DELAY 500 |
GUI |
Windows/Super key + key | GUI r |
CTRL |
Control + key | CTRL c |
ALT |
Alt + key | ALT F4 |
SHIFT |
Shift + key | SHIFT TAB |
TAB |
Tab key | TAB |
ESCAPE |
Escape key | ESCAPE |
BACKSPACE |
Backspace | BACKSPACE |
UP, DOWN, LEFT, RIGHT |
Arrow keys | DOWN |
Example payloads
Open a terminal (Windows):
!mia: GUI r, DELAY 300, STRINGLN cmd, DELAY 300
Open a terminal (Linux):
!mia: CTRL ALT t
Type a string:
!mia: STRINGLN the quick brown fox
Lock screen (Windows):
!mia: GUI l
Close window:
!mia: ALT F4
Saving payloads
Payloads can be saved in the web dashboard under Inject → Saved Payloads. Saved payloads are stored in browser localStorage and can be fired with one tap.
Payload files (.txt) can also be uploaded to the device via Inject → Upload — these are stored on the device's LittleFS filesystem and survive reboots.
Timing
Some payloads need delays between commands to allow applications time to open. Use DELAY generously — a 300–500ms delay after opening a window is usually enough.
If commands are executing too fast, add more delays:
!mia: GUI r, DELAY 500, STRINGLN notepad, DELAY 300, ENTER, DELAY 500, STRINGLN injected