My audio interface has ssh enabled by default

💥 Discover this trending post from Hacker News 📖

📂 **Category**:

✅ **What You’ll Learn**:

last year i bought a Rodecaster Duo to solve some audio woes to allow myself and my girlfriend to have microphones to our respective computers when gaming together and talking on discord in the same room without any echo, and to be able to swap that to my work pc easily. the rodecaster is really nice, it’s pretty effortless to use and works great for our home. I would gladly recommend it to anyone looking for a similar solution.

A home desk setup tucked under a sloped ceiling. Two monitors sit side by side — the left one dark, the right one displaying a document next to a Spotify 'Liked Songs' playlist — with a Rode podcast microphone on a boom arm and a rectangular key light mounted above. A Lego WALL-E set is stacked on boxes to the right of the center monitor. The right side of the desk holds a pink mechanical keyboard, black headphones, and a glowing cat-shaped lamp, with warm fairy lights draped across the wooden desktop. A wire wall shelf in the upper right is packed with colorful plush toys and Sonny Angel figures.

as is usual for any device in my house, i try to ensure when it’s time to update the firmwate I have enough tooling in place to capture how firmware updates work, or to at a minimum capture a firmware blob to try and reverse engineer it and poke around for fun and/or to see the often horrific reality that is the industry we work in.

fw update

I was feeling pretty lazy and assumed that rode would dump the firmware somewhere on my computer before flashing the device, so i set up Instruments on macos to capture disk activity, and found where the fw was dumped, and surprisingly it was just a gzipped tarball. The device I did this update on happened to have the ability to write to USB disks disabled, so the update actually failed.

Poking around a bit, i found the binaries of the stuff that actually runs on the device, as well as a shell script that handles the updates themselves. there are two partitions on the disk, so that if you brick one it boots from the other. It also doesn’t have any signature checks or anything on the incoming firmware. I’m used to many vendors of this style of device requiring signed firmwares or something nowadays, kind of nice to actually own a device I can modify. I also noticed that ssh seemed to be enabled by default, and plugged in an ethernet cable and saw that ssh indeed is enabled w/ pubkey auth only. Here are the keys that are added by default:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCX/bCFTDgViuPvdFL/VMMVRrw9b5S8HcDQk17qoCEYwmI+IIG8rEAsLiaeCOwyhf9IN+8/LRaN0Z5ZfU3WMbmsKEg8zd1Yvqq74nFbhO47vbtzmCi9S4ucIKkBEVOyvyN5lt9hWf5t5nZSmlfldZK3Pem5y8wHM5A+K/gSnzp4gwQ1QYfFb068uQ+ciIdOhb8SkUs8CwzotglIbp19I6ZmXmsNj/TmpbUf5rMfUAf1gysZ5j1UdRWrvWVh5daqvZRsBBPbXEeJfDU3Nr3HR14XYt9mgexrz/5oyKSj/lQYLmh9cDfsxvkGNIQ8fF9l+n2L1KZM4lLgiGk4KFBjQHaIBZx9OebCiiZCO4NTJUBDk9a+SZpiDiipADV07s7vTInYyFA6GrmKtnq3M6upT4WJBvVuL/BMnK5yY1RZtoqox2/pcCg2rH5S1GIy0v0HFJisl7kWInlaG2mdsaCx19wAjCFe/qT9LyxjQ6+0rArI55/JJFDkNeMjrewRQwNdASjCox8vqXCBfjvsR9qv70/ywcymgsnLAnq2LuYg5FYwMMDYOvVnhACC+BYTdNDTn5oeMIjQCUenY/DPCHpJkf4YOf3YCMUTEU9tExhtwW/X+m21hS3+STLtTfqbUeg9CeuPQZgfl9vc65n3tMxAdlEGEDoTaNMAgr2TzJv92Ka9iQ==
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaNyzPfIcEeQsfzyQs/wyX6mX52kiS+4eNHfCaxFlgj

since our update failed, i swapped to a windows pc and set up wireshark with USBPcap and then ran the update thru the rodecaster app. I roughly glanced at the pcap file and looked at where the update started, since it was a lot of traffic as I was also using it for audio on another computer. I wrote down the packet numbers I thought were interesting and threw them to claude code to dig thru the pcap while I was doing other stuff.

A bit later (cc only took 10 minutes or so but I was busy for a while) I came back to a breakdown of the structure, and a python script to manually update a device. The RODECaster App sends some HID control stuff to the device, one command to enter the update mode (the ‘M’ command), and then another (the U command) to trigger the update. Both are just single ASCII characters sent over HID report 1.

I am but a yaml-writing slave and sometimes a below-average ghidra user, and don’t often interact with hardware devices, so getting some help from CC in discovery was useful, as well as pointing me to resources to actually learn more about hid devices.

The structure was pretty simple, you send the m command, and then copy archive.tar.gz and archive.md5 (obviously just with md5sum of the archive) onto the newly exposed disk. then you send the U command to trigger the flashing itself.

so the flow is:

  1. plug in the rodecaster and power it on (or vice versa)
  2. send the ‘M’ command
  3. mount the disk and copy archive.tar.gz and archive.md5 to it
  4. chmod 777 both of them because i dont care to figure out how to do it properly
  5. unmount the disk
  6. send the ‘U’ command
  7. wait for the thing to reboot into your new firmware

custom firmware

I was still working from my mac, and wanted to create some cfw to be able to ssh into the device, so i just used a container to enable password authentication for ssh (don’t shoot me) as well as add my own pubkey to the authorized keys, and dump out an archive for me to flash. you don’t really need much to actually flash the device, see here (example of the functions its not really much to add the rest.)

run your script to flash the thing and bingo bongo you can ssh to it

A terminal window showing an SSH session to root@192.168.2.2. After logging in, `uname -a` is run and returns: 'Linux rodecaster-pro-ii-mini 5.10.17-rt32-yocto-preempt-rt-rode+ #1 SMP PREEMPT_RT Tue Oct 28 06:52:56 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux', confirming a root shell on the Rodecaster device.

rodecaster-top

conclusion

I was really surprised that I could actually flash firmware so easily to this, and it is really nice to own a device. It’s a really nice piece of kit and just kinda blends into the background and I never have to think about it. I don’t really know why ssh was enabled, or why it had this key added by default, but I submitted a ticket to RODE for this as I could not find an obvious security email to report to. I did not hear back, but I will watch to see if future firmware updates change anything.

It’s been a few months since i’ve done anything with this, and I am trying to just dump out my thoughts into a notepad and only very lightly edit it and then just poast. I really love all of the RODE stuff I have, and yet again just want to buy more gear.

if you want to ask me questions about this or have any questions, you can reach me with the primary letter of this domain, at this domain.

thanks computer, until next time

⚡ **What’s your take?**
Share your thoughts in the comments below!

#️⃣ **#audio #interface #ssh #enabled #default**

🕒 **Posted on**: 1777060646

🌟 **Want more?** Click here for more info! 🌟

By

Leave a Reply

Your email address will not be published. Required fields are marked *