Skip to content

Instantly share code, notes, and snippets.

@vectorsigma
Last active December 3, 2025 21:59
Show Gist options
  • Select an option

  • Save vectorsigma/37c8e9993de29b25caef6c9c2686797b to your computer and use it in GitHub Desktop.

Select an option

Save vectorsigma/37c8e9993de29b25caef6c9c2686797b to your computer and use it in GitHub Desktop.
How to upgrade the firmware of an old MBox 2 so it will work in Linux

Upgrading Avid (Nee digidesign) MBox2 Firmware

READ THIS FIRST

do this method instead. Thanks @halogeeni!

The back story

Found a free mbox 2 on craigslist. Picked it up, thinking it would unlock protools LE at least right? And maybe work on linux? Right??

Yeah, no, on both counts. What follows is the herculean effort I went through to get the firmware up from V 124 to V 138 (so at least the Linux sound driver would work).

This guy wrote the hack to snd-usb-pcm to make this card work, and also got me down the "upgrade your firmware!" path to help me figure out why it wasn't.

Reference Material

Other Useful Binaries

  • Pro Tools LE 6
    • the original version shipped with the MBox 2
    • might be helpful here if you want to just play with old pro tools?
  • Pro Tools LE 8
    • the last in the line for Pro Tools LE before PT9 with standalone device support.
    • will not be activated by the presence of the mbox 2, still needs a code.
  • A copy of the Firmware 1.43 Updater for Windows XP
    • it's basically broken, and at under 100KB, likely never contained a firmware image.
    • can't find any other versions either. Dunno why it doesn't work.

The Procedure

Required Binaries

  • Linux computer with hardware virtualization support and KVM installed
    • I did this in Fedora 30 using the virt-manager gui.
  • A Windows XP ISO image with at least SP2 slipstreamed in.
    • You might be able to hack a HyperV disk image out of the Windows XP Mode downloads.
  • The stable virt-io driver disk
    • this is to make XP usable in a virtualized environment, specifically:
    • working networking
    • video above 640x480
  • A copy of Pro Tools LE 7.0 for Windows XP
    • Yes, that specific version.
  • A copy of the Firmware 1.38 Updater for Windows XP

Steps

  1. Install XP SP2 ISO into your virtual machine
    1. recommend 2GB RAM and 10GB HDD
    2. Set network type from e1000 to virtio.
    3. yes you need a serial number, no I won't give you one.
  2. Once the VM boots for the first time after setup, install virtio drivers.
    1. switch the ISO in the VM from the boot image to the virtio iso
    2. open device manager
    3. choose 'update driver' for each yellow question mark.
      1. use the driver in D:\qxl\xp\x86\ for the video device
      2. use the dirver in D:\NetKVM\xp\x86\ for the ethernet device.
      3. use the driver in D:\viostor\xp\x86\ for the unknown pci device.
        1. this last one isn't necessary, and I may have it wrong.
  3. Create a folder: C:\Incoming
  4. Share it. (how is beyond the scope of this but don't forget to give write/modify perms!)
  5. Using whatever SMB client you have, copy over the Pro Tools 7 zip and both firmware zips to the shared folder.
  6. Unpack all 3 ZIPs in C:\Incoming (not in the extra directory XP assumes you need).
  7. Go into the Pro Tools 7 folder and run the installer.
  8. When it says "can't find digidesign hardware" or some shit, then:
    1. plug your mbox into the USB port of your real computer.
    2. wait 30 seconds or so for the device to settle in and be recognized by the kernel and libvirtd.
    3. redirect the MBox2 USB device to your XP VM.
  9. Back in pro tools, ignore any "installing new device" dialogs coming up.
  10. Click "yes" to retry the driver installation.
  11. Click "OK" and let the driver and pro tools finish installing.
  12. Click "Continue Anyway" on al of the hardware installation menus that pop up.
  13. Your lights should be on on the mbox2 now!
  14. power off your VM after pro tools finishes installing.
  15. Unplug the USB device from your real computer.
  16. Reboot the VM.
  17. Install the firmware 1.38 updater utility.
  18. When it also says "can't find the audio device", repeat step 8 above and continue.
  19. Once the installer completes, you need to navigate to C:\Program Files\Digidesign\Drivers
  20. Execute the mbx2dfu.exe binary to start the ugprade process.
  21. Use "Check firwmare" to see what you have installed.
  22. Click "Continue Anyway" on al of the hardware installation menus that pop up.
  23. it should go without saying, that if you see 1.43, you can stop here.
  24. if you see 1.38, you can also probably stop here, since that seems to be the minimum version that works in Linux.
    1. or, you can attempt to go 1.43, as the Linux driver author suggests!
  25. If it says 124 or something lower than 138, click "update firmware."
    1. continue to ignore the "this driver wasn't signed by msft!" errors and click "continue" past them.
  26. Show no fear.

At this point, your VM may uh, lag a little, and maybe even show a device disconnect from the USB stack and you'll have to restart libvirtd to get your console back. But, you'll find that if you repeat steps 17-19, it will have at least version 138 firmware.. :)

Now, unplug it, and plug it back in, and watch as Linux recognizes it for the first time!

Next Steps

The above appears to be the farthest you can get in a solely virtual environment. Attempting to upgrade to 1.43 results in fatal USB redirection errors at least at the time of this writing. Your next step is to recreate this work on some ancient (circa 2006) hardware and pray to the computer gods it doesn't fry your Mbox2.

update: I tried this on my old laptop running XP on bare metal. The firmware patcher itself is so small (70KB), that it can't possibly have the actual device firmware on it. The error message is "failed to download firmware."

Tried out some sysinternals tools to see if I could catch the URL it was looking for. Best I could find was it was looking somewhere (disk? network?) for a file called Firwmare.bin. I saw no network activity from that binary.

@MichaelDing313
Copy link

MichaelDing313 commented Jul 30, 2021

for what it's worth, i've maanged to update the box by installing xp on bare metal, install protools LE 8, reboot, then running the firmware update tool. firmware is packed in the exe? maybe it's part of protools installation. regardless upgrade to 143 worked

@Sequential-circuits
Copy link

I was able to update to version 1.43 by installing windows XP on a VMware Workstation Pro 15.5 and using the firmware updater downloaded from http://akmedia.digidesign.com/support/compressed/Mbox2firmware_v143_Win_33125.zip

The executable mbx2dfu.exe includes the firmware, as it is only 8 Kb (yes, it is that small): I was able to find that out by downloading the version for MAC which does include it as a different file called firmware.bin

And the message it says about being unable to download it has nothing to do with actually downloading the firmware from the internet, as the executable does not make any http call (I checked that with a network sniffer), it is a stupidly written message saying it was unable to send the file to the unit.

Ah! You NEED a USB 1.1 hub between the unit and the computer to make this work, otherwise the USB ports of modern computers (version 2 and 3) are just too fast for the update: they still sell then at ebay

@MichaelDing313
Copy link

MichaelDing313 commented Oct 12, 2021

Back in the day "download" just means loading firmware to MCU over any connection, the more modern "download" from the Internet became a thing after the internet became more of a thing.

Interesing comment around USB 1.1. USB 2 with a bare-metal machine running XP worked fine for me. If the OS is in a VM it's probably not too hard to tell the hypervisor to drop USB speed down to 1.1

@hmollercl
Copy link

Trying to do this apparently I ended up bricking the device. Any ideas on how to "unbrick" it? I've found that on the "pro" version (firewire) windows should re-flash the firmware. https://avid.secure.force.com/pkb/articles/en_US/troubleshooting/en207915

@AMelbye
Copy link

AMelbye commented Mar 3, 2022

Trying to do this apparently I ended up bricking the device. Any ideas on how to "unbrick" it? I've found that on the "pro" version (firewire) windows should re-flash the firmware. https://avid.secure.force.com/pkb/articles/en_US/troubleshooting/en207915

This happened to me as well - I just managed to unbrick the device doing the following procedure:

  1. First I opened the unit - there is a good youtube video on the subject - this unit is difficult to open, so I advice that you watch the instructions.
  2. Next I located the firmware chip and desoldered it. It's an 8 pin IC. On the board it's labeled U100, and the chip itself is a 24LC64. I desoldered the chip and removed it from the circuit board. This board is lead free and requires a soldering station capable of 400C - I managed to desolder it using my TS100 - I would not say it was easy.
  3. Download the newest firmware for OS X. decompress the DMG file using 7zip, then extract firmware.bin I could not find this file in the windows version.
  4. I first tried making an eeprom programmer using an arduino, but it kept failing to read the chip. I then ordered a CH341A Programmer from aliexpress. I had to try a couple different softwares before I found one that had this chip on the list of supported devices. Next I read the chip to verify that it worked (and it did), then wrote zeros to every sector before reflashing with the new updated firmware.
  5. Reassembly: I used stainless steel desoldering needles (aliexpress) to clear the holes, then inserted a socket into the circuit board in case the chip has to come out again, then inserted the reprogrammed and updated chip. Problem solved.

The 24LC64 is cheap and easy to find. Don't worry about destroying it while removing - you can just buy a new one and flash the updated firmware. If I have to do this again to a new device, I might just snip its legs off, remove the pins and don't bother with extracting the chip undamaged.

Before doing all of this I tried with a USB 1.1 hub, but the damage was already done by attempting to flash unsuccessfully too many times - I guess at some point it made it far enough to start erazing - then abort....

@hmollercl
Copy link

hmollercl commented Mar 4, 2022

wow!! amazing. Any link for the software you ended up using?
thanks!!

@AMelbye
Copy link

AMelbye commented Mar 5, 2022

@hmollercl
I don't remember where I downloaded the software, but the one I ended up using is called CH341A Programmer version 1.18 by SkyGz

Update:
After reassembling, I realized I have no audio. It seems like most of the front panel is not recieving power, since none of the switches cause leds to illuminate. Then I realized I had knocked two capacitors off the board. I replaced them with new ones, but still no audio. I believe something (probably a power regulator) got damaged from powering up the unit with the capacitors disconnected.

I believe my no audio problem is not firmware related. But I can't know for sure. The device powers up and seems to respond as normal otherwise. Next is finding a schematic for the unit (or perhaps just doing some measurements to find what voltages are missing). This turned into a larger project than I planned for.

@hmollercl
Copy link

hmollercl commented Mar 15, 2022

In case somone need software and instruction how to program the eeprom. I found a software and instructions to use the programmer here https://www.youtube.com/watch?v=L0ChYNwunUE

@AMelbye programmer arrived (but still not the socket) I could read the the eeprom and perhaps I found solution to your problem, it need to be erased with FF not with 00. Mine was like a 1.38 corrupted firmware and it had only FF not 00, from position 1ed8 till the end. FW 1.43 is larger, it reach position 1f08 (instead of 1ed7 from 1.38) this shoud have FF from 1f09 till the end. Hope this helps.

UPDATE: worked!!
I desoldered the U100 labeled chip (AT24C64 in my case) programmed with 1.43 firmware with an external CH341A programmer bought on aliexpress and the software and instructions from the youtube link above. I leave the "free space" with FF because that's teh way it was before (with the corrupted 1.38 firmware). Soldered a dip 8 socket and it worked ok.
Thanks @AMelbye

@AMelbye
Copy link

AMelbye commented Mar 15, 2022

@hmollercl Thanks! I'll try that and report back!

@jlobaugh
Copy link

jlobaugh commented Apr 25, 2022

I recently acquired an mbox 2. I spent countless hours trying to update the firmware to 1.43 as well. My firmware was at version 1.34. What finally worked for me was

  1. Oracle VM Virtual Box
  2. 32 bit (not 64 bit) Windows XP SP3. https://archive.org/details/en_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73974_201812
  3. Protools version 7 from Digidesign : pro_tools_le_setup_v74_41954.zip

I didn't have to use the separate firmware updater. Installing pro tools and simply attaching the device after rebooting just automatically updated it. You don't need an activation key. I can't recall but I don't think I even ran the software. I was able to check the version after update using the stand alone updater (Mbox2firmware_v143_Win_33125.zip).

I could not get the firmware updater to work by itself.

The key for me was to use 32 bit windows and the version of protools given above. Also I believe that Virtual Box emulates a 1.1 USB hub.

Things that I tried that didn't work

  • Three different versions of 64 bit Windows XP
  • Using a 1.1 hub (bought one off of ebay).
  • Stand alone updater Mbox2firmware_v143_Win_33125.zip <- this doesn't work at all unless you copy over mfc71.dll, MFC71u.dll mfc71.dll into the same directory. It will tell you the version of firmware that you have but it will not update. You get the "download" failure message described above. You can get these DLLs by installing a version of protools 7.X.
  • Stand alone updater mbox2firmware138_25965.zip

Good luck! HTH

John

@FelixWurm
Copy link

Thanks @AMelbye for the suggestion with the.bin File, i was able to update the firmware from version 1.24 to 1.43 by desoldering the EEprom an uploading the Firmware. However because i had no EEprom programmer on hand, i wrote a small Arduino program to flash the firmware, and i had no issues. However it is noteworthy that the 24LC64 is not really a I2C chip, it only supports some sort of two wire interfaces. There are some libraries available.

@vectorsigma
Copy link
Author

Wow, I never expected to get so much attention on this topic!! thank you everyone for your contributions. I'm going to see if I can cobble together the 1.43 upgrade for my MBox2 as well using your suggestions. 🙌

@hmollercl
Copy link

Has anyone being able to capture through S/PDIF in linux with the mbox2? . I know that the linux driver doesn't support it but as per comment https://www.zamaudio.com/?p=97&cpage=5#comment-8026 but maybe someone knows how to patch it.

@halogeeni
Copy link

halogeeni commented Feb 16, 2025

Looks like VM or bare metal XP are not needed these days and flashing can be done straight from Linux with fwduptool.
This worked for me. I flashed four Mbox 2 units successfully this way, but obviously do this at your own risk!

Download v1.43 firmware updater for Mac, then extract the dmg:

7z x Mbox2firmware_v143_Intel_33123.dmg

The firmware binary is within the package, in path Mbox 2 Firmware Updater1.43_INTEL.app/Contents/MacOS/firmware.bin.

Connect Mbox 2, wait for it to initialize and you can then flash the device:

sudo fwupdtool install-blob firmware.bin

Select correct device in the listing the tool outputs, it's pretty self explanatory.
A scary error might be shown that device did not reconnect properly, but it seems to just take a bit longer than the tool expects.

The interface works fine as soon as it reconnects, and you can verify from dmesg that it's updated to v1.43:

New USB device found, idVendor=0dba, idProduct=3000, bcdDevice= 1.43

@AddisonG
Copy link

@halogeeni - Thanks so much, that worked perfectly.

Very scary, but we updated from an ANCIENT version to 1.43 and it worked perfectly. Thanks!

@vectorsigma
Copy link
Author

Looks like VM or bare metal XP are not needed these days and flashing can be done straight from Linux with fwduptool. This worked for me. I flashed four Mbox 2 units successfully this way, but obviously do this at your own risk!

Download v1.43 firmware updater for Mac, then extract the dmg:

7z x Mbox2firmware_v143_Intel_33123.dmg

The firmware binary is within the package, in path Mbox 2 Firmware Updater1.43_INTEL.app/Contents/MacOS/firmware.bin.

Connect Mbox 2, wait for it to initialize and you can then flash the device:

sudo fwupdtool install-blob firmware.bin

Select correct device in the listing the tool outputs, it's pretty self explanatory. A scary error might be shown that device did not reconnect properly, but it seems to just take a bit longer than the tool expects.

The interface works fine as soon as it reconnects, and you can verify from dmesg that it's updated to v1.43:

New USB device found, idVendor=0dba, idProduct=3000, bcdDevice= 1.43

FWIW, I tried this method in Fedora 42. The error I got was:

01:28:42.062 FuEngine             failed to update-cleanup after failed update: failed to get device before update cleanup: failed to wait for device: device d787669ee4a103fe0b361fe31c10ea037c72f27c did not come back

I don't know how long it's supposed to take, but a few minutes on, and it's still at 1.38:

$ sudo dmesg | grep -F idVendor=0dba
[ 7724.113427] usb 1-1: New USB device found, idVendor=0dba, idProduct=3000, bcdDevice= 1.38
[ 7818.818330] usb 1-1: New USB device found, idVendor=0dba, idProduct=3001, bcdDevice= 1.38

I tried a different A to B cable with the same result.

Full command output here:

$ sudo fwupdtool install-blob ./firmware.bin 
Loading…                 [******                                 ]
*skipped a bunch of errors here that were related to disks without upgradable firwmare*
Loading…                 [*******                                ]
Writing…                 [************                           ]
0.      Cancel
*snip*
5.      d787669ee4a103fe0b361fe31c10ea037c72f27c (Mbox 2)
*snip*
Choose device [0-14]: 5
Restarting device…       [************                           ]01:33:39.631 FuPluginDfu          truncated DFU interface data, no bcdDFUVersion
01:33:39.631 FuPluginDfu          unable to guess initial device state from interface 0
Writing…                 [************                           ]01:33:49.883 FuEngine             failed to update-cleanup after failed update: failed to get device before update cleanup: failed to wait for device: device d787669ee4a103fe0b361fe31c10ea037c72f27c did not come back

failed to write-firmware: no bytes or chunks found in firmware

Tried it on an old laptop with only USB2 ports, same problem.

@AddisonG
Copy link

It only took maybe 30 seconds for me. Ubuntu 24.04. I think I might have even used usb 3.0, so it probably wasn't that.

I was upgrading from about 1.24 or 1.28 or something around there, so it should work for you.

You definitely extracted the right .bin file?

Can you connect the device to Linux and use it to play sound? It should be able to due to the Linux kernel quirk for it that was committed like 2012. If not, the device might be broken? Try checking it on Windows? Otherwise, all I can suggest is to try Ubuntu instead?

@AddisonG
Copy link

Or the guy above commented:

Ah! You NEED a USB 1.1 hub between the unit and the computer to make this work, otherwise the USB ports of modern computers (version 2 and 3) are just too fast for the update: they still sell then at ebay

@vectorsigma
Copy link
Author

So there's definitely some combination of factors of kernel version, fwupdtool versions, and the USB hubs in hardware that affect things. I have some hardware with honest to goodness USB1 ports on them. But the slightly out of date Fedora 40 install for some reason couldn't see the mbox2 using fwupdtool get-devices. I upgraded it to Fedora 42, fully patched, and then it saw the device. I tried to update it's firmware, and though it definitely took a few seconds longer than it did when connected to a USB3 port, it still resulted in the same error, and the firmware still reports 1.38 when I reconnect it. The device still works just fine, so I'm likely going to not muss with it further. I've tried multiple USB A to B cables, I've tried bare metal and virtual, I've tried USB 1, 2 and 3 ports, all with the same error at the end. This might just be a hardware problem at this point in my case, so until I can put together a device to in-circuit flash the EERPOM with the firmware binary, I'm going to leave well enough alone.

@bones-was-here
Copy link

!WARNING fwupdtool ACHTUNG!

fwupdtool can easily brick devices!

Do NOT run sudo fwupdtool install-blob firmware.bin as suggested above! If the mbox2 isn't detected for some reason there may be only one updatable device, in which case it immediately tries to flash firmware.bin to that device (which might be your SSD) without any confirmation prompt! Applies to at least versions 2.0.3, 2.0.8.
Instead first run sudo fwupdtool get-devices, copy the mbox2 "Device ID", then flash that specific device sudo fwupdtool install-blob firmware.bin 123456789abcdef123456789abcdef123456789a.

Versions 2.0.3 and 2.0.8 failed to flash my mbox2 but didn't harm it. Version 1.8.12 bricked it (dmesg now just logs errors "unable to enumerate USB device").

@filipethiago
Copy link

Can someone share the firmware.bin? Tehe official links are all broken, and i cant remove the binary from the windows updater.exe

@AddisonG
Copy link

AddisonG commented Jul 7, 2025

@filipethiago - This one should do it:

https://akmedia.digidesign.com/support/compressed/Mbox2firmware_v143_Intel_33123.dmg

Or, just in case we ever lose it, here's firmware.bin as base64, in a gist. Just decode it, and it's good to use.

https://gist.github.com/AddisonG/7b0b07f59bc54cd30f54c9636d093493

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment