Skip to content

Instantly share code, notes, and snippets.

@vectorsigma
Created April 25, 2020 22:29
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vectorsigma/37c8e9993de29b25caef6c9c2686797b to your computer and use it in GitHub Desktop.
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

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.

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