Skip to content

Instantly share code, notes, and snippets.

@vectorsigma
Created April 25, 2020 22:29
Show Gist options
  • 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.

@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