AudioGNU/LinuxTechnology

Digidesign 002/003R/003R+ LINUX DRIVER!

digi002rack

003r+

003_Rack__31371_zoom

Linux_Logo

 

Digidesign Digi002, 003 Rack and 003 Rack+ now work in the Linux kernel using this driver.

 

Please consider donating a token amount for this work if you find it useful. ^^ See above donate page.

Get the driver code here on github.


sudo apt-get install build-essential linux-headers dkms
git clone git://git.zammit.org/snd-firewire-improve
sudo ln -s $(pwd)/snd-firewire-improve /usr/src/alsa-firewire-3.19
sudo dkms install alsa-firewire/3.19
sudo modprobe snd-digi00x

57 thoughts on “Digidesign 002/003R/003R+ LINUX DRIVER!

  1. Great to hear! Alltought I have 002 πŸ™
    Any idea how different that would be and what it needs to debug that?

  2. i have the 003 rack and just tried your instructions for installing above but nothing happened.
    this is what terminal told me:
    jane@jane-Macmini:~$ ‘/home/jane/Downloads/snd-003-1.0experimental/install003’
    tar (child): snd-003.tgz: Cannot open: No such file or directory
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    sudo: dkms: command not found
    sudo: dkms: command not found
    sudo: dkms: command not found
    /home/jane

    any suggestions? is there something else i have to have installed first?
    please, if you have some detailed instructions on how to do this i would very much like to know. I am planning on using the 003 rack with ardour but to be honest i am a little bit new at linux. Thank you so much.
    -Lucas

  3. Lucas: You need to change working directory to the place where you uncompressed the files. something like, cd /home/jane/Downloads/snd-003-1.0experimental && ./install003 but first make sure you installed the kernel headers and dkms: sudo apt-get install build-essential linux-headers dkms

    This is a basic linux problem not a problem with my driver.
    Cheers.

  4. Hi Damo,
    thank you so much for your quick reply. I am a beginner here and I am very happy you have made this so I can enter the world of open source software with my music creation. I have one more question for you. I entered what you wrote to install the kernel headers and dkms and it seemed to be going great and things were installing then I got the following:

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Package linux-headers is a virtual package provided by:
    (big long list of options….. e.g. linux-headers-3.2.0-56-lowlatency-pae 3.2.0-56.58 etc.)
    You should explicitly select one to install.

    E: Package ‘linux-headers’ has no installation candidate

    Do I pick one of the options in the big long list and does it matter which one? And how do I know which is appropriate? And do I simply replace the “linux-headers” part with the appropriate choice? Again, thank you for helping me out here.
    -Lucas

  5. Lucas: try this: sudo apt-get install linux-headers-`uname -r` This will automatically choose the one that matches your current running kernel.

  6. I did what you suggested in the previous post and all seemed to be going well. Then I installed your driver for the 003 rack and again everything seemed to be working great.
    At the end, however, I got this message:

    make KERNELRELEASE=3.8.0-33-generic…..(bad exit status: 2)
    ERROR (dkms apport): binary package for snd-003: 1.0 not found
    Error! Bad return status for module build on kernel: 3.8.0-33-generic (i686)
    Consult /var/lib/dkms/snd-003/1.0/build/make.log for more information.

    Do you have any suggestions? i can email you the above file if it would help. Thank you so much.
    -Lucas

  7. Lucas: I don’t know if kernel >=3.11 is available as a package in Ubuntu yet, but my driver only works with 3.11 or later kernels unfortunately. Try to find a ppa repository with a 3.11 kernel and then try my driver.

  8. Damo, Thank you so much.
    I updated to kernel 13 and i am getting audio. Jack recognizes the 003 rack using ALSA and Ardour can record and playback. I do have another question for you. Perhaps I haven’t configured things correctly but when I plug headphones into the front of the 003 Rack I can hear the sound being recorded but it crackles and hisses. Also, it comes out of only the left headphone. If I unplug the headphones half way then I only hear sound out of the right headphone. Could you either walk me through setting the 003 rack up with Jack and/or guide me into how to troubleshoot this problem? Thanks again.
    -Lucas

  9. Also, is there a way to configure the sound to use the 003 rack as my main computer I/O?
    meaning for movies and music?
    Thanks

  10. Lucas: Thats good news! You are the first person to try this out and it works! Unfortunately, there are extra commands that need to be written to configure the internal mixer of the 003 Rack to enable routing the audio internally from all channels to the headphones (I think) for ‘zero’ latency monitoring. I have figured out the commands but I am no longer actively developing this driver further. It is just too much work and no one is paying me to do it. I think by default if you record on channel 1 it will come out of the left headphone and if you record on channel 2 it will come out of the right headphone while recording. While this may be annoying, for now perhaps you can try using channels 3+4 instead and inside ardour, tell the playback channel to be 1+2 so you get sound in both ears while recording, (but you wont get the extra spill from having zero monitoring in 1+2). This is a workaround and does not mean you cannot use all channels, just that monitoring may be an issue for now.

    I knew there would be a slight hiss but there shouldn’t be any crackle… Check that you’re not getting any XRuns by setting the buffer size high enough in QjackCtl. (256 or 512 should be safe with 2 periods).

    damo

  11. If you want main sound to come out of 003, you need to be running JACK and set up a loopback sound device to make all your ALSA sound come through JACK. This is the best solution. I would steer away from trying to use pulseaudio/plain alsa, because the 003 needs time to initialise and JACK keeps the streams running. Otherwise you might lose some of the first second of audio every time you play a sound.

  12. Lucas: Can you confirm: Mac Mini running Linux with Digidesign 003 Rack works now? πŸ˜€
    Thats awesome!

  13. Hi Damo, Yes, i Currently have Ubuntu 12.04 running on a 2007 mac mini with a dual boot of osx.
    And for the most part the 003 Rack is working great. I did some troubleshooting and have discovered that the problem is playback channel 1. If I send all the audio through Playback channel 2 in Ardour then the sound is crystal clear. Of course then I am only hearing the sound through the right headphone speaker. When I engage channel 1 on the master channel strip as the output in order to get a stereo sound it hisses and crackles with each sound input. This occurs for live monitoring from any channel (1-4) and even with prerecorded sounds. Again, playback channel 2 works great but when playback channel 1 is activated I get hiss and crackle in both ears.
    is there some kind of interference occurring? Could it have anything to do with Ubuntu or is it a problem within the internal routing of jack/Ardour/003 driver?
    I am still figuring out how to configure a loopback sound device. Do you have any recommendations on a good walkthrough for this available online?
    Thank you again!
    -Lucas

  14. Just wanted to say “thank you” for this driver. it works great on my arch linux machine and i’m so happy about it. πŸ™‚
    thanks for the great work!

    greetings from austria.

  15. I installed the driver and removed once. When I installed it again, system with 18 channel won’t be appeared in Jack. I only see 2 channels for capture and playback.
    Could you advise how to re-install the driver successfully?
    The OS is Ubuntu Studio.

  16. TIDE: It sounds like your internal sound card is being selected in JACK instead of the 003, perhaps you need to select the correct hw:X device in the settings. Assuming you have the driver installed correctly, that is all I can suggest. Good luck.

  17. Any word on whether this will work for the 003 Console? I assume not but I figured I’d ask… Thanks!

  18. Damo. I too have a successful install thanks to your previous posts. I don’t yet have anything functional to report, but at least jumped over the first hurdle. I will document any further. Ubuntu Studio 14.04.1 freshly installed.

  19. I installed ubuntu studio 14:04
    I tried with Qjack (alsa driver, output hw: D003R) but does not work
    Have an idea?
    thank you

  20. Hi,

    I just tried on my DIGI002 and the latest driver works on it which is super! I never thought I would get it working on linux πŸ™‚

    I’m using Fedora 21 and compiled with those instructions (installed Fedora dkms etc. packages) and driver code cloned from github. When I found the right settings I was able to record and play (tried only one channel to test). There was some random static noise when playing but that might not be related to driver.
    Here are my settings on Qjaclctl:
    Driver: alsa
    Frames: 256
    Sample Rate: 44100
    Periods/Buffer: 3
    Channels I/O: 18 / 18
    Interface: hw:D002Rack

    If I change any of those settings like Sample Rate or Frames JACK wont start.

    Thanks a lot for your hard work!

  21. Keijo: Try Periods/Buffer = 2, and maybe 512 for frames

    Please checkout the latest code as I made changes today.

  22. It does run on Periods/Buffer: 2
    Frames/Period can also be set to 512 and then less xruns which occationally seems to happen on 256 but still happen like every 5 mins. I do have shitty Firewire on this machine if it matters.

    This is with version I downloaded yesterday but I can try to remove that driver, pull latest and build it again.

    Thanks!

  23. Hi! at last command terminal told me : Module snd-digi00x not found.
    I have to copy drive code? …i ve not idea where…Sorry i’m very beginner thanks very much

  24. This works great! I can play tracks through my monitors on Ubuntu Studio and they sound fantastic!

    Question! I am trying to use the SPDIF input on my Digi 002r. How do I activate the SPDIF inputs? In Pro Tools on Windows I have to select between ADAT / SPDIF. When I choose SPDIF, I can hear the SPDIF input through my monitors. I have sound coming into the SPDIF jack but they are not picked up by Ardour. I believe I need a way to “tell” the digi002 that I want SPDIF inputs?

  25. To use SPDIF you must use channels 9-10. You must also send the SPDIF flag to the onboard registers. You can use this with linux-firewire-utils (https://github.com/cladisch/linux-firewire-utils)

    ADAT:
    firewire-request /dev/fw0 write 0xffffe000011c 0x00000000

    SPDIF:
    sudo firewire-request /dev/fw0 write 0xffffe000011c 0x00000001

    Additionally, the author recommends using the newest version of the driver. Please follow these steps to get the updated driver installed:

    1. $ git clone https://github.com/takaswie/snd-firewire-improve.git
    2. $ cd snd-firewire-improve && git fetch
    3. $ get checkout amdtp-variants && cd ..
    4. $ ln -s $(pwd)/snd-firewire-improve/ /usr/src/alsa-firewire-3.11
    (superuser)
    5. $ dkms install alsa-firewire/3.11 (superuser)

    I am not sure if modprobe is truly necessary, but since this page says it is, to modprobe the new driver you will execute:

    6. $ modprobe snd-firewire-digi00x

    I have my Digi 002r working in vanilla Linux Mint with SPDIF working with Ardour 4.1. I am having slight crashes in Ardour, but I believe it is Ardour that is the problem and not the driver.

  26. Also to build the software I had to use “linux-headers-generic” as opposed to “linux-headers”.

    sudo apt-get install build-essential linux-headers-generic dkms

  27. Somebody asked about using the Digi00x as a way to play computer sounds (youtube, movies, etc). I found a simple and easy solution. Get an optical SPDIF cable and run it out of your computer soundcard into your Digi. Then monitor tracks 9 and 10 (send the SPDIF flag first) and voila — computer playback through your Digi. This is how I play my mp3 connection on my computer, in order to go through the Digi to reach my Solo 6BE monitors.

    Also, if anybody is interested in playing 96khz and 32 bit depth mp3s with this technique, I will happy to share a little bit of Linux config to configure pulseaudio to meet these specifications. Otherwise, you get nasty clicking (sample rates out-of-sync).

  28. Joseph: Its fine to use the latest driver, but if you use mine, you get the additional benefit of my alsamixer controls, which is something that is not going to be merged into kernel.

  29. Hi damo,

    I desperatly try to install your driver but I’m so newbie on linux it’s a catastrophe…

    When I try to select the good package in the list, it says ‘impossible to find the package’

    FYI it’s the

    linux-headers-3.13.0-61-lowlatency 3.13.0-61.100

    Plus, I’m french so I try to translate what’s told but I’m notsure it’s correct.

    Do I have to copy/paste all the command at once, or do I have to first sudo, then git, etc?

    Your help would be greatly appreciated πŸ™‚

    Cheers

  30. This used to be working for me, but now Arduor crashes frequently. Error message: “ALSA I/O Error”. Not sure what to do. I’ve tried Ubuntu Studio, Mint, Ubuntu, compiling Arduor 3 and 4 from source, using JACK 1 and JACK 2, the new driver the old driver. Just can’t get it stable.

  31. Joseph: I don’t recommend Ubuntu or Mint for pro audio, its much more difficult to get a stable system, Ubuntu ships with a buggy version of jack. Try Debian or AVLinux.

  32. @Joseph:

    Some errors in your commands, step 3 and 4:
    3. $ get checkout amdtp-variants && cd ..
    -> git checkout

    4. $ ln -s $(pwd)/snd-firewire-improve/ /usr/src/alsa-firewire-3.11
    (superuser)
    –> ln -s $(pwd)/snd-firewire-improve /usr/
    (excessive “/”)

    @french anonymous: ask linuxmao.org
    (I’m french too)

    @everyone:
    I’ve tried old and new drivers, with two different PC, with kxstudio12.04 and 14.04.
    Never works correctly, just got connexion for few seconds with device and then nothing. (never can re-connect)

    Any detail of system and hardware really working with digi 002 will be very much appreciated.

    Best,

  33. I don’t think the issue is JACK. Mint does not come with JACK installed. I have compiled JACK1 and JACK2 from source and used them. I still have crashes. I believe the problem is related to PulseAudio and JACK. Apparently, there can be problems running both at the same time?

    So… can I skip JACK entirely and just use Arduor with ALSA? I do not seem to have any particular need for JACK, but I am not exactly sure what it does.

  34. Hi again,

    I am trying to use the Digi 002 as a main playback device for my computer. Could you please explain how you might setup a loopback device?

    My approach of using the ALSA/PulseAudio and sending all the output out of my computer soundcard via SPDIF into the Digi 002 rack is not stable for some reason.

    “If you want main sound to come out of 003, you need to be running JACK and set up a loopback sound device to make all your ALSA sound come through JACK. This is the best solution. I would steer away from trying to use pulseaudio/plain alsa, because the 003 needs time to initialise and JACK keeps the streams running. Otherwise you might lose some of the first second of audio every time you play a sound.”

    Thank you!

  35. Joseph: Try using Cadence from KXStudio to set up the loopback with JACK and ALSA->JACK and get rid of pulseaudio.

  36. hi damo,
    I just managed successfully to install a digi 002r with your driver. thanks a lot. The only thing I am wondering about, is that Ardour or Jack is crashing after a while. Ardour freezes and tells me, that it is not able to reconnect to server. In qjackctl I disabled the dbus server and I tried to kill and restart jack but it refuses to work. the only thing I can do, is to restart my Laptop. Now I am wondering about deinstalling the Ffado repos, but I am not sure, if I am messing up the whole system. Maybe you can give me some advice.
    Greetz Tim

  37. Hi Tim, try the latest linux kernel, I think Takashi’s code has now been merged in kernel for that device, including the bits I put in.

  38. Hi Damo, I’m new here

    – In which version of the kernel is included Takashi’s code?
    – Do faders and knobs work in DIGI 002 console version?

    Thanks in advance, and sorry for may english

  39. Jatsu: Linux 4.4-rc3, its not actually in a proper stable release yet. I don’t think the knobs work but I might be wrong.

  40. I ididn’ succeed.
    I’m trying it in a laptop and I’ve got it connected via Texas Instruments PCI express/ firewire connector and DIGI 002’s IE1394 light doesn’t switch on, so there is not comunication between computer and DIGI002. I tried with the built-in Ricoh firewire port (the small one) too and neither did.
    May be I should wait to next release of ubuntu 16.04 that is supposed to include kernel 4.4

    Thanks for everything

  41. Hi! I am very grateful for this driver. One thing I’m wondering: is it possible to activate both the SPDIF and ADAT inputs on my Digi003?

    Earlier in this comment thread these commands are suggested:

    ADAT:
    firewire-request /dev/fw0 write 0xffffe000011c 0x00000000

    SPDIF:
    sudo firewire-request /dev/fw0 write 0xffffe000011c 0x00000001

    Seen as these two commands modify the same address, it seems that it’s either ADAT or SPDIF…

    I’ve searched for a list of these firewire commands elsewhere but couldn’t find one. Any help is greatly appreciated.

  42. @steven I believe that command is to set the clock source to sync to, not to enable the inputs. I think the SPDIF and ADAT are both working by default, you just need to route them internally to the headphone or main output so you can hear it…

  43. I think to route the SPDIF to 1/2 using internal mixer:
    sudo firewire-request /dev/fw0 write 0xffffe0000124 0x00000001 #enable mixer
    sudo firewire-request /dev/fw0 write 0xffffe0000340 0x20000000 #spdif left -> 1
    sudo firewire-request /dev/fw0 write 0xffffe000034c 0x20000000 #spdif right -> 2

    #define DG00X_MIX 0xffffe0000300ull
    #define DG00X_MIX_ANALOG_1L (0x00 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_1R (0x04 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_2L (0x08 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_2R (0x0c | DG00X_MIX)
    #define DG00X_MIX_ANALOG_3L (0x10 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_3R (0x14 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_4L (0x18 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_4R (0x1c | DG00X_MIX)
    #define DG00X_MIX_ANALOG_5L (0x20 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_5R (0x24 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_6L (0x28 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_6R (0x2c | DG00X_MIX)
    #define DG00X_MIX_ANALOG_7L (0x30 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_7R (0x34 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_8L (0x38 | DG00X_MIX)
    #define DG00X_MIX_ANALOG_8R (0x3c | DG00X_MIX)
    #define DG00X_MIX_SPDIF_1L (0x40 | DG00X_MIX)
    #define DG00X_MIX_SPDIF_1R (0x44 | DG00X_MIX)
    #define DG00X_MIX_SPDIF_2L (0x48 | DG00X_MIX)
    #define DG00X_MIX_SPDIF_2R (0x4c | DG00X_MIX)
    #define DG00X_MIX_ADAT_1L (0x50 | DG00X_MIX)
    #define DG00X_MIX_ADAT_1R (0x54 | DG00X_MIX)
    #define DG00X_MIX_ADAT_2L (0x58 | DG00X_MIX)
    #define DG00X_MIX_ADAT_2R (0x5c | DG00X_MIX)
    #define DG00X_MIX_ADAT_3L (0x60 | DG00X_MIX)
    #define DG00X_MIX_ADAT_3R (0x64 | DG00X_MIX)
    #define DG00X_MIX_ADAT_4L (0x68 | DG00X_MIX)
    #define DG00X_MIX_ADAT_4R (0x6c | DG00X_MIX)
    #define DG00X_MIX_ADAT_5L (0x70 | DG00X_MIX)
    #define DG00X_MIX_ADAT_5R (0x74 | DG00X_MIX)
    #define DG00X_MIX_ADAT_6L (0x78 | DG00X_MIX)
    #define DG00X_MIX_ADAT_6R (0x7c | DG00X_MIX)
    #define DG00X_MIX_ADAT_7L (0x80 | DG00X_MIX)
    #define DG00X_MIX_ADAT_7R (0x84 | DG00X_MIX)
    #define DG00X_MIX_ADAT_8L (0x88 | DG00X_MIX)
    #define DG00X_MIX_ADAT_8R (0x8c | DG00X_MIX)

    #define DG00X_MIX_NONE 0x00000000
    #define DG00X_MIX_1_TO_STEREO 0x18000000
    #define DG00X_MIX_1_TO_1 0x20000000

  44. When trying to download from git.zammit.org the is refused error. However I’m able to reach the files on github just fine. Problem is those are at 3.11, while yours (listed here) are at 3.19.

Leave a Reply

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