2009
08.22

This is my unofficial Digidesign Mbox 2 driver for linux.

Please consider donating $5 for further development of open source drivers for Digidesign hardware. Every little bit counts.

PayPal - Donate to ZamAudio

Mbox2

Linux_Logo

For those of you who want the raw driver source, here it is as a kernel module [63kB]. It can be compiled
for the current running kernel as follows:

Make sure you have the kernel headers downloaded and installed correctly.
Then do the following: (extract the tarball to ANY directory then “make” it, install it and modprobe the new driver as follows:)
tar jxf mbox2-kernel-20121213.tar.bz2
cd mbox2-kernel
make
sudo make install
sudo rmmod snd-usb-audio # ignore errors
sudo rmmod snd-usbmidi-lib # ignore errors
sudo modprobe snd-usb-audio

UPDATE!!!
Mbox2 patch now accepted into ALSA:
That’s right folks, if you install a kernel later than 3.8-rc2, your Mbox2 will work right out of the box with Linux!

For those of you who don’t want to upgrade your distro kernel to a very new vanilla one, I have a git repository of “alsa-driver” with the changes merged in, so you can grab this one and install it for any modern kernel:

Make sure you install kernel headers first then do:

git clone https://github.com/zamaudio/alsa-driver.git
cd alsa-driver
git checkout mbox2
cd alsa
./gitcompile
sudo make install

Reboot, then enjoy!

UPDATE Sept 2013:
None of the above instructions are relevant anymore because the Mbox2 driver stuff is part of Linux kernel after 3.8! Just plug in your device, lights come on and it works. Any config issues with JACK, make sure you are using the ALSA backend and 2 ins and 2 outs, >256 buffer size and 3 periods.
:)

227 comments so far

Add Your Comment
  1. damo

    Daniel: Since you are using a kernel later than 3.8 you don’t need to install anything from my website here, it should already be part of Linux. Actually you didn’t have the right tools installed anyway so the installation failed, but that should be okay. When you plug in the Mbox2Mini do you get any lights coming on? You should be able to use it with JACK right away.

  2. damo

    Alex Barrett: Unfortunately, I don’t have time at the moment to fix the Mbox1 capture and it is also difficult because I do not have access to the hardware myself. I believe it is a matter of altering the “quirk” for this particular device for the snd-usb-audio driver manually and recompiling the kernel module. Keep in mind that pretty much all the usb audio drivers are bundled into one driver and my Mbox2 code was a patch for the existing codebase. Therefore to enable the Mbox1 capture, another patch will be required.

  3. No problem and thanks for getting back to me, ill just live with using onboard sound for the moment in linux and dual boot with windows if i decide i want to use it.

    I need to update the firmware to v22 which should hopefully fix the bursts of white noise when i can get a hold of a mac.

    If i can help in anyway then just give me a shout

  4. Work like a charm on a 3.11 kernel. No more drivers install and/or real-time configuration.

    $ uname -a
    Linux io5 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    $ jack –version
    This is jack 3.1.1

    Thank’s for the great job !

  5. Hello, so sorry to trouble you with this issues, but when trying to compile, I get this error:

    hellmenda@hellmenda-desktop:~/Desktop/mbox2-kernel$ make
    make -C /lib/modules/3.11.0-13-generic/build M=/home/hellmenda/Desktop/mbox2-kernel modules
    make[1]: Entering directory `/usr/src/linux-headers-3.11.0-13-generic’
    CC [M] /home/hellmenda/Desktop/mbox2-kernel/urb.o
    /home/hellmenda/Desktop/mbox2-kernel/urb.c: In function ‘retire_capture_urb’:
    /home/hellmenda/Desktop/mbox2-kernel/urb.c:475:8: error: ‘oldbytes’ undeclared (first use in this function)
    oldbytes, bytes);
    ^
    /home/hellmenda/Desktop/mbox2-kernel/urb.c:475:8: note: each undeclared identifier is reported only once for each function it appears in
    make[2]: *** [/home/hellmenda/Desktop/mbox2-kernel/urb.o] Error 1
    make[1]: *** [_module_/home/hellmenda/Desktop/mbox2-kernel] Error 2
    make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-13-generic’
    make: *** [all] Error 2

    I reinstalled everything because the last ubuntu kernel is supposed to work fine with mbox2, but it doesn’t:

    Linux hellmenda-desktop 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

    That’s why I’m trying to compile the driver again. Could you please help me out?

    Best regards.

  6. damo

    Hey hellmenda,
    Try upgrading the firmware of your mbox2 using the official Avid update. Your mbox2 should work with linux after that.

  7. hello !
    a question : do you think that can be work with other product of digidesign to ? like TDM card digidisign HD system .. ?( 8 in & 8 out )

    sorry for my english , and thank you :)
    david

  8. damo

    david: No, sorry. I believe that is a PCI card, not a USB interface. Also, I am not a magician. ;)

  9. hello, what about mbox 1? is there any driver for linux around? mbox usb audio device is shown in system’s sound setting for the output only not for the input.
    any hint?

  10. damo

    MetZen: I would like to make the mbox 1 work too, I believe it needs a new quirk patch to enable capture. Unfortunately I don’t have one of these devices myself so it’s a bit tricky to do this without the hardware attached to my linux box. If someone is willing to lend me one or buy me a second hand one, I could get the driver working in a few days or so.

  11. damo

    MetZen: See http://zamaudio.com/?p=953

  12. oh that is so great! thank you very much for your nice work!

  13. Hi all,

    I know this thread hasn’t seen any action in awhile, but am getting this in dmesg when I plug in the MBox 2 Mini:

    [26491.146158] usb 2-1.2: new full-speed USB device number 9 using ehci_hcd
    [26491.271485] usb 2-1.2: config 1 interface 2 has no altsetting 1
    [26491.271490] usb 2-1.2: config 1 interface 3 has no altsetting 1
    [26491.271493] usb 2-1.2: config 1 interface 4 has no altsetting 1
    [26491.271496] usb 2-1.2: config 1 interface 5 has no altsetting 1
    [26491.277289] ALSA quirks.c:573 usb-audio: Sending Digidesign Mbox 2 boot sequence…
    [26491.778083] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26492.281871] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26492.785654] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26493.289432] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26493.793246] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26494.297006] ALSA quirks.c:584 usb-audio: device not ready, resending boot sequence…
    [26495.803284] ALSA quirks.c:609 >usb-audio: Digidesign Mbox 2: 24bit 48kHz

    The ‘usb 2-1.2: config 1 interface 2 has no altsetting 1′ lines at the beginning seem to be my problem and for hours, days, I have been trying to fix.

    I have crystal clear audio when I plug guitar and headphones into the Mini, my computer sees it fine, but nothing can use it and it has no controls. For instance, alsamixer sees it but reports ‘this device has no controls’, pulseaudio sees it but the slider does nothing, Audacity sees it, but none can actually access it.

    There is more detail in my thread here:

    http://ubuntuforums.org/showthread.php?t=2200411

    I’m using Xubuntu 12.04 LTS. I started by testing it on my testing install of 14.04, but gave up on that as it appears the driver there is not working yet (I can get no audio via the MBox at all and different dmesg). The saga of that is here:

    http://ubuntuforums.org/showthread.php?t=2199061

    TIA.

  14. damo

    Bucky: The following line in your debug messages indicates that the driver is fully operational:

    [26495.803284] ALSA quirks.c:609 >usb-audio: Digidesign Mbox 2: 24bit 48kHz

    The thing is, it has a fixed format which is unusual, therefore it is a better idea to run JACK as your sound server which will convert all sound into the right format for the Mbox mini.

    There are no mixer controls because it has a hardware mixer built in with knobs.

    I am 99.99% sure that altsetting 1 is irrelevant, it was just part of the initialisation sequence that it tries different altsettings until it eventually works. The fact you get lights on and the final message verifies that the mbox 2 mini sent a response code back to the driver so its fully working. You just need to configure your sound server correctly, as in use JACK.
    Good luck.

  15. Looking forward to being able to record using the original mbox using linux. (Made donation).

  16. Hi, hope this thread is still somewhat active, and someone might be able to help me. I have a Didgidesign Mbox 2 Mini, which I have use plenty in pd-extended on Windows. I want to use it on my Debian laptop. I’m running wheezy (stable). I tried going to testing (jessie) and indeed the Mbox 2 lit up, so there was some kind of driver in the kernel there I guess. But I had so much trouble with that Debian release I reverted to stable (wheezy for now). I should be able to backport the package from 3.12 (latest testing AFAIR), but I’m afraid I have no idea which package to look for. Can anyone give me a lead?
    /Paul

  17. damo

    Paul: Since wheezy kernel is < 3.8 it is actually the alsa driver built into the kernel that is outdated. You can build my updated driver from my github mentioned above. I use wheezy all the time.

  18. Hi Damo.
    I did that, and the Mbox2 “came to life”, that is the light comes on, so that’s a huge step forward, thanks. However, I can’t get it to work in pd-extended or audacity. The Mbox2 shows up an audio I/O option, but doesn’t get any signal in. For example, pd is showing me
    ALSA input error (_pcm_hw_params_set_format): Invalid argument
    ALSA output error (_pcm_hw_params_set_format): Invalid argument

    ALSA output error (restart failed): Broken pipe
    tried but couldn’t sync A/D/A
    ALSA input error (_pcm_hw_params_set_format): Invalid argument
    ALSA output error (_pcm_hw_params_set_format): Invalid argument
    ALSA input error (_pcm_hw_params_set_format): Invalid argument
    ALSA output error (_pcm_hw_params_set_format): Invalid argument

    When I run the audio test in pd I hear the test tone but overlaid by a huge amount of noise

    Any suggestions welcome.

    Cheers

  19. damo

    Paul: I only use the mbox with JACK sound server, I haven’t really tried running it without JACK. Maybe you can get a JACK aware client for pd and audacity and run it with JACK?

  20. Hi Damo. Well pd offers the option of connecting via JACK, have JACK installed and try to run the server but get
    Could not connect to JACK server as client.
    - Overall operation failed.
    - Unable to connect to server.
    Please check the messages window for more info.

    and the window says

    23:05:08.242 JACK was started with PID=4765.
    no message buffer overruns
    no message buffer overruns
    no message buffer overruns
    jackdmp 1.9.9
    Copyright 2001-2005 Paul Davis and others.
    Copyright 2004-2012 Grame.
    jackdmp comes with ABSOLUTELY NO WARRANTY
    This is free software, and you are welcome to redistribute it
    under certain conditions; see the file COPYING for details
    JACK server starting in realtime mode with priority 10
    control device hw:0
    control device hw:0
    audio_reservation_init
    Acquire audio card Audio0
    creating alsa driver … plughw:0|plughw:0|1024|2|48000|2|2|nomon|swmeter|-|32bit
    control device hw:0
    ALSA: Cannot open PCM device alsa_pcm for playback. Falling back to capture-only mode
    Cannot initialize driver
    JackServer::Open failed with -1
    Failed to open server
    23:05:09.019 JACK was stopped with exit status=255.
    23:05:10.307 Could not connect to JACK server as client. – Overall operation failed. – Unable to connect to server. Please check the messages window for more info.
    Cannot connect to server socket err = No such file or directory
    Cannot connect to server request channel
    jack server is not running or cannot be started

    so for the time being I am stumped.

  21. damo

    Paul: It sounds like you are running another sound server which is hogging the Mbox such as PulseAudio. You might need to remove or disable pulse so you can get it working with JACK. I dislike pulseaudio altogether so I removed it, but that is personal preference.

  22. Hi Damo. Tried stopping pulseaudio, nonetheless I cannot get JACK to use the Mbox2, it shows as a possible device, but connection fails. I use qjackctl.
    You have it working I presume, can you tell me any setup parameters I should be looking at?
    /Paul

  23. damo

    Paul: Pulseaudio is tricky, it can restart itself automatically even after you kill the process. That said, you can try 2 inputs and 2 outputs, 256 buffer and 3 periods, in duplex mode.

  24. Damo, I know about pulseaudio, I preempt its urge to respawn, so that’s not it. Will fiddle some more in a bit. Thanks.
    /Paul

  25. Hi, I’ve made the mbox2 work on ubuntu lucid with your kernel patch, but now I have a really strange problem I hope you can help me to figure out:
    I switched to AVLinux (debian squeezy based), kernel 3.10.27avl2-pae and I can not get the mbox to work as a “regular” soundcard. I was hoping that since that kernel included your driver the mbox would work “out of the box”.
    The lights are on, and aplay -l shows:

    **** List of PLAYBACK Hardware Devices ****
    card 0: ICH5 [Intel ICH5], device 0: Intel ICH [Intel ICH5]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 0: ICH5 [Intel ICH5], device 4: Intel ICH – IEC958 [Intel ICH5 - IEC958]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 1: M2 [Mbox 2], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    So, It works as expected using jack (I can listen and record with ardour and audacity), but oddly the Audio Mixer doesn’t recognise the Mbox.
    If I run the alsamixer I get
    “Card: Mbox 2 ” and “This sound device does not have any controls. ”

    In case it helps: cat /dev/sndstat gives:
    Sound Driver:3.8.1a-980706 (ALSA emulation code)
    Kernel: Linux marta 3.10.27avl2-pae #5 SMP PREEMPT Sun Jan 19 21:18:51 EST 2014 i686
    Config options: 0

    Installed drivers:
    Type 10: ALSA emulation

    Card config:
    Intel ICH5 with CMI9761A+ at irq 17
    Digidesign Mbox 2 at usb-0000:00:1d.1-2, full speed
    Loopback 1

    Audio devices: NOT ENABLED IN CONFIG

    Synth devices: NOT ENABLED IN CONFIG

    Midi devices:
    1: Mbox 2

    Timers:
    31: system timer

    Mixers: NOT ENABLED IN CONFIG
    —-
    Is there something I’m am missing? maybe some alsa configuration?

    Thanks in advance,

    m

  26. damo

    Sounds like a pulseaudio problem, definitely not related to my driver.

  27. Hi, thanks for your quick answer! As far as I know pulseaudio is not installed.

    dpkg-query -l | grep pulse
    ii ir-lv2 1.3avlinux-2 TAP Impulse Reverb LV2 Plugin
    ii libpulse-mainloop-glib0 0.9.21-3+squeeze1 PulseAudio client libraries (glib support)
    ii libpulse0 0.9.21-3+squeeze1 PulseAudio client libraries
    ii libsox-fmt-pulse 14.3.1-1 SoX PulseAudio format I/O library

    Is there anything else I can check?