Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 1 | Guide to using M-Audio Audiophile USB with ALSA and Jack v1.5 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 2 | ======================================================== |
| 3 | |
| 4 | Thibault Le Meur <Thibault.LeMeur@supelec.fr> |
| 5 | |
| 6 | This document is a guide to using the M-Audio Audiophile USB (tm) device with |
| 7 | ALSA and JACK. |
| 8 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 9 | History |
| 10 | ======= |
| 11 | * v1.4 - Thibault Le Meur (2007-07-11) |
| 12 | - Added Low Endianness nature of 16bits-modes |
| 13 | found by Hakan Lennestal <Hakan.Lennestal@brfsodrahamn.se> |
| 14 | - Modifying document structure |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 15 | * v1.5 - Thibault Le Meur (2007-07-12) |
| 16 | - Added AC3/DTS passthru info |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 17 | |
| 18 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 19 | 1 - Audiophile USB Specs and correct usage |
| 20 | ========================================== |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 21 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 22 | This part is a reminder of important facts about the functions and limitations |
| 23 | of the device. |
| 24 | |
| 25 | The device has 4 audio interfaces, and 2 MIDI ports: |
| 26 | * Analog Stereo Input (Ai) |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 27 | - This port supports 2 pairs of line-level audio inputs (1/4" TS and RCA) |
| 28 | - When the 1/4" TS (jack) connectors are connected, the RCA connectors |
| 29 | are disabled |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 30 | * Analog Stereo Output (Ao) |
| 31 | * Digital Stereo Input (Di) |
| 32 | * Digital Stereo Output (Do) |
| 33 | * Midi In (Mi) |
| 34 | * Midi Out (Mo) |
| 35 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 36 | The internal DAC/ADC has the following characteristics: |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 37 | * sample depth of 16 or 24 bits |
| 38 | * sample rate from 8kHz to 96kHz |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 39 | * Two interfaces can't use different sample depths at the same time. |
| 40 | Moreover, the Audiophile USB documentation gives the following Warning: |
| 41 | "Please exit any audio application running before switching between bit depths" |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 42 | |
| 43 | Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be |
| 44 | activated at the same time depending on the audio mode selected: |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 45 | * 16-bit/48kHz ==> 4 channels in + 4 channels out |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 46 | - Ai+Ao+Di+Do |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 47 | * 24-bit/48kHz ==> 4 channels in + 2 channels out, |
| 48 | or 2 channels in + 4 channels out |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 49 | - Ai+Ao+Do or Ai+Di+Ao or Ai+Di+Do or Di+Ao+Do |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 50 | * 24-bit/96kHz ==> 2 channels in _or_ 2 channels out (half duplex only) |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 51 | - Ai or Ao or Di or Do |
| 52 | |
| 53 | Important facts about the Digital interface: |
| 54 | -------------------------------------------- |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 55 | * The Do port additionally supports surround-encoded AC-3 and DTS passthrough, |
| 56 | though I haven't tested it under Linux |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 57 | - Note that in this setup only the Do interface can be enabled |
| 58 | * Apart from recording an audio digital stream, enabling the Di port is a way |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 59 | to synchronize the device to an external sample clock |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 60 | - As a consequence, the Di port must be enable only if an active Digital |
| 61 | source is connected |
| 62 | - Enabling Di when no digital source is connected can result in a |
| 63 | synchronization error (for instance sound played at an odd sample rate) |
| 64 | |
| 65 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 66 | 2 - Audiophile USB MIDI support in ALSA |
| 67 | ======================================= |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 68 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 69 | The Audiophile USB MIDI ports will be automatically supported once the |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 70 | following modules have been loaded: |
| 71 | * snd-usb-audio |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 72 | * snd-seq-midi |
| 73 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 74 | No additional setting is required. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 75 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 76 | |
| 77 | 3 - Audiophile USB Audio support in ALSA |
| 78 | ======================================== |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 79 | |
| 80 | Audio functions of the Audiophile USB device are handled by the snd-usb-audio |
| 81 | module. This module can work in a default mode (without any device-specific |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 82 | parameter), or in an "advanced" mode with the device-specific parameter called |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 83 | "device_setup". |
| 84 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 85 | 3.1 - Default Alsa driver mode |
| 86 | ------------------------------ |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 87 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 88 | The default behavior of the snd-usb-audio driver is to list the device |
| 89 | capabilities at startup and activate the required mode when required |
| 90 | by the applications: for instance if the user is recording in a |
| 91 | 24bit-depth-mode and immediately after wants to switch to a 16bit-depth mode, |
| 92 | the snd-usb-audio module will reconfigure the device on the fly. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 93 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 94 | This approach has the advantage to let the driver automatically switch from sample |
| 95 | rates/depths automatically according to the user's needs. However, those who |
| 96 | are using the device under windows know that this is not how the device is meant to |
| 97 | work: under windows applications must be closed before using the m-audio control |
| 98 | panel to switch the device working mode. Thus as we'll see in next section, this |
| 99 | Default Alsa driver mode can lead to device misconfigurations. |
| 100 | |
| 101 | Let's get back to the Default Alsa driver mode for now. In this case the |
| 102 | Audiophile interfaces are mapped to alsa pcm devices in the following |
| 103 | way (I suppose the device's index is 1): |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 104 | * hw:1,0 is Ao in playback and Di in capture |
| 105 | * hw:1,1 is Do in playback and Ai in capture |
| 106 | * hw:1,2 is Do in AC3/DTS passthrough mode |
| 107 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 108 | In this mode, the device uses Big Endian byte-encoding so that |
| 109 | supported audio format are S16_BE for 16-bit depth modes and S24_3BE for |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 110 | 24-bits depth mode. |
| 111 | |
| 112 | One exception is the hw:1,2 port which was reported to be Little Endian |
| 113 | compliant (supposedly supporting S16_LE) but processes in fact only S16_BE streams. |
| 114 | This has been fixed in kernel 2.6.23 and above and now the hw:1,2 interface |
| 115 | is reported to be big endian in this default driver mode. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 116 | |
| 117 | Examples: |
| 118 | * playing a S24_3BE encoded raw file to the Ao port |
| 119 | % aplay -D hw:1,0 -c2 -t raw -r48000 -fS24_3BE test.raw |
| 120 | * recording a S24_3BE encoded raw file from the Ai port |
| 121 | % arecord -D hw:1,1 -c2 -t raw -r48000 -fS24_3BE test.raw |
| 122 | * playing a S16_BE encoded raw file to the Do port |
| 123 | % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_BE test.raw |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 124 | * playing an ac3 sample file to the Do port |
| 125 | % aplay -D hw:1,2 --channels=6 ac3_S16_BE_encoded_file.raw |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 126 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 127 | If you're happy with the default Alsa driver mode and don't experience any |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 128 | issue with this mode, then you can skip the following chapter. |
| 129 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 130 | 3.2 - Advanced module setup |
| 131 | --------------------------- |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 132 | |
| 133 | Due to the hardware constraints described above, the device initialization made |
| 134 | by the Alsa driver in default mode may result in a corrupted state of the |
| 135 | device. For instance, a particularly annoying issue is that the sound captured |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 136 | from the Ai interface sounds distorted (as if boosted with an excessive high |
| 137 | volume gain). |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 138 | |
| 139 | For people having this problem, the snd-usb-audio module has a new module |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 140 | parameter called "device_setup" (this parameter was introduced in kernel |
| 141 | release 2.6.17) |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 142 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 143 | 3.2.1 - Initializing the working mode of the Audiophile USB |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 144 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 145 | As far as the Audiophile USB device is concerned, this value let the user |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 146 | specify: |
| 147 | * the sample depth |
| 148 | * the sample rate |
| 149 | * whether the Di port is used or not |
| 150 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 151 | When initialized with "device_setup=0x00", the snd-usb-audio module has |
| 152 | the same behaviour as when the parameter is omitted (see paragraph "Default |
| 153 | Alsa driver mode" above) |
| 154 | |
| 155 | Others modes are described in the following subsections. |
| 156 | |
| 157 | 3.2.1.1 - 16-bit modes |
| 158 | |
| 159 | The two supported modes are: |
| 160 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 161 | * device_setup=0x01 |
| 162 | - 16bits 48kHz mode with Di disabled |
| 163 | - Ai,Ao,Do can be used at the same time |
| 164 | - hw:1,0 is not available in capture mode |
| 165 | - hw:1,2 is not available |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 166 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 167 | * device_setup=0x11 |
| 168 | - 16bits 48kHz mode with Di enabled |
| 169 | - Ai,Ao,Di,Do can be used at the same time |
| 170 | - hw:1,0 is available in capture mode |
| 171 | - hw:1,2 is not available |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 172 | |
| 173 | In this modes the device operates only at 16bits-modes. Before kernel 2.6.23, |
| 174 | the devices where reported to be Big-Endian when in fact they were Little-Endian |
| 175 | so that playing a file was a matter of using: |
| 176 | % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_BE test_S16_LE.raw |
| 177 | where "test_S16_LE.raw" was in fact a little-endian sample file. |
| 178 | |
| 179 | Thanks to Hakan Lennestal (who discovered the Little-Endiannes of the device in |
| 180 | these modes) a fix has been committed (expected in kernel 2.6.23) and |
| 181 | Alsa now reports Little-Endian interfaces. Thus playing a file now is as simple as |
| 182 | using: |
| 183 | % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_LE test_S16_LE.raw |
| 184 | |
| 185 | 3.2.1.2 - 24-bit modes |
| 186 | |
| 187 | The three supported modes are: |
| 188 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 189 | * device_setup=0x09 |
| 190 | - 24bits 48kHz mode with Di disabled |
| 191 | - Ai,Ao,Do can be used at the same time |
| 192 | - hw:1,0 is not available in capture mode |
| 193 | - hw:1,2 is not available |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 194 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 195 | * device_setup=0x19 |
| 196 | - 24bits 48kHz mode with Di enabled |
| 197 | - 3 ports from {Ai,Ao,Di,Do} can be used at the same time |
| 198 | - hw:1,0 is available in capture mode and an active digital source must be |
| 199 | connected to Di |
| 200 | - hw:1,2 is not available |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 201 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 202 | * device_setup=0x0D or 0x10 |
| 203 | - 24bits 96kHz mode |
| 204 | - Di is enabled by default for this mode but does not need to be connected |
| 205 | to an active source |
| 206 | - Only 1 port from {Ai,Ao,Di,Do} can be used at the same time |
| 207 | - hw:1,0 is available in captured mode |
| 208 | - hw:1,2 is not available |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 209 | |
| 210 | In these modes the device is only Big-Endian compliant (see "Default Alsa driver |
| 211 | mode" above for an aplay command example) |
| 212 | |
| 213 | 3.2.1.3 - AC3 w/ DTS passthru mode |
| 214 | |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 215 | Thanks to Hakan Lennestal, I now have a report saying that this mode works. |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 216 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 217 | * device_setup=0x03 |
| 218 | - 16bits 48kHz mode with only the Do port enabled |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 219 | - AC3 with DTS passthru |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 220 | - Caution with this setup the Do port is mapped to the pcm device hw:1,0 |
| 221 | |
Thibault Le Meur | cac19c3 | 2007-07-13 11:50:23 +0200 | [diff] [blame] | 222 | The command line used to playback the AC3/DTS encoded .wav-files in this mode: |
| 223 | % aplay -D hw:1,0 --channels=6 ac3_S16_LE_encoded_file.raw |
| 224 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 225 | 3.2.2 - How to use the device_setup parameter |
| 226 | ---------------------------------------------- |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 227 | |
| 228 | The parameter can be given: |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 229 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 230 | * By manually probing the device (as root): |
| 231 | # modprobe -r snd-usb-audio |
| 232 | # modprobe snd-usb-audio index=1 device_setup=0x09 |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 233 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 234 | * Or while configuring the modules options in your modules configuration file |
Lucas De Marchi | 970e248 | 2012-03-30 13:37:16 -0700 | [diff] [blame] | 235 | (tipically a .conf file in /etc/modprobe.d/ directory: |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 236 | alias snd-card-1 snd-usb-audio |
| 237 | options snd-usb-audio index=1 device_setup=0x09 |
| 238 | |
Matt LaPlante | d919588 | 2008-07-25 19:45:33 -0700 | [diff] [blame] | 239 | CAUTION when initializing the device |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 240 | ------------------------------------- |
| 241 | |
| 242 | * Correct initialization on the device requires that device_setup is given to |
| 243 | the module BEFORE the device is turned on. So, if you use the "manual probing" |
| 244 | method described above, take care to power-on the device AFTER this initialization. |
| 245 | |
Matt LaPlante | d919588 | 2008-07-25 19:45:33 -0700 | [diff] [blame] | 246 | * Failing to respect this will lead to a misconfiguration of the device. In this case |
| 247 | turn off the device, unprobe the snd-usb-audio module, then probe it again with |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 248 | correct device_setup parameter and then (and only then) turn on the device again. |
| 249 | |
| 250 | * If you've correctly initialized the device in a valid mode and then want to switch |
| 251 | to another mode (possibly with another sample-depth), please use also the following |
| 252 | procedure: |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 253 | - first turn off the device |
| 254 | - de-register the snd-usb-audio module (modprobe -r) |
| 255 | - change the device_setup parameter by changing the device_setup |
Lucas De Marchi | 970e248 | 2012-03-30 13:37:16 -0700 | [diff] [blame] | 256 | option in /etc/modprobe.d/*.conf |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 257 | - turn on the device |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 258 | * A workaround for this last issue has been applied to kernel 2.6.23, but it may not |
| 259 | be enough to ensure the 'stability' of the device initialization. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 260 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 261 | 3.2.3 - Technical details for hackers |
| 262 | ------------------------------------- |
| 263 | This section is for hackers, wanting to understand details about the device |
| 264 | internals and how Alsa supports it. |
| 265 | |
| 266 | 3.2.3.1 - Audiophile USB's device_setup structure |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 267 | |
| 268 | If you want to understand the device_setup magic numbers for the Audiophile |
| 269 | USB, you need some very basic understanding of binary computation. However, |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 270 | this is not required to use the parameter and you may skip this section. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 271 | |
| 272 | The device_setup is one byte long and its structure is the following: |
| 273 | |
| 274 | +---+---+---+---+---+---+---+---+ |
| 275 | | b7| b6| b5| b4| b3| b2| b1| b0| |
| 276 | +---+---+---+---+---+---+---+---+ |
| 277 | | 0 | 0 | 0 | Di|24B|96K|DTS|SET| |
| 278 | +---+---+---+---+---+---+---+---+ |
| 279 | |
| 280 | Where: |
| 281 | * b0 is the "SET" bit |
| 282 | - it MUST be set if device_setup is initialized |
| 283 | * b1 is the "DTS" bit |
| 284 | - it is set only for Digital output with DTS/AC3 |
| 285 | - this setup is not tested |
| 286 | * b2 is the Rate selection flag |
| 287 | - When set to "1" the rate range is 48.1-96kHz |
| 288 | - Otherwise the sample rate range is 8-48kHz |
| 289 | * b3 is the bit depth selection flag |
| 290 | - When set to "1" samples are 24bits long |
| 291 | - Otherwise they are 16bits long |
| 292 | - Note that b2 implies b3 as the 96kHz mode is only supported for 24 bits |
| 293 | samples |
| 294 | * b4 is the Digital input flag |
| 295 | - When set to "1" the device assumes that an active digital source is |
| 296 | connected |
| 297 | - You shouldn't enable Di if no source is seen on the port (this leads to |
| 298 | synchronization issues) |
| 299 | - b4 is implied by b2 (since only one port is enabled at a time no synch |
| 300 | error can occur) |
| 301 | * b5 to b7 are reserved for future uses, and must be set to "0" |
| 302 | - might become Ao, Do, Ai, for b7, b6, b4 respectively |
| 303 | |
| 304 | Caution: |
| 305 | * there is no check on the value you will give to device_setup |
| 306 | - for instance choosing 0x05 (16bits 96kHz) will fail back to 0x09 since |
| 307 | b2 implies b3. But _there_will_be_no_warning_ in /var/log/messages |
| 308 | * Hardware constraints due to the USB bus limitation aren't checked |
| 309 | - choosing b2 will prepare all interfaces for 24bits/96kHz but you'll |
| 310 | only be able to use one at the same time |
| 311 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 312 | 3.2.3.2 - USB implementation details for this device |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 313 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 314 | You may safely skip this section if you're not interested in driver |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 315 | hacking. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 316 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 317 | This section describes some internal aspects of the device and summarizes the |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 318 | data I got by usb-snooping the windows and Linux drivers. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 319 | |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 320 | The M-Audio Audiophile USB has 7 USB Interfaces: |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 321 | a "USB interface": |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 322 | * USB Interface nb.0 |
| 323 | * USB Interface nb.1 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 324 | - Audio Control function |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 325 | * USB Interface nb.2 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 326 | - Analog Output |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 327 | * USB Interface nb.3 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 328 | - Digital Output |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 329 | * USB Interface nb.4 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 330 | - Analog Input |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 331 | * USB Interface nb.5 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 332 | - Digital Input |
Thibault LE MEUR | 19739fe | 2006-03-21 11:06:40 +0100 | [diff] [blame] | 333 | * USB Interface nb.6 |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 334 | - MIDI interface compliant with the MIDIMAN quirk |
| 335 | |
| 336 | Each interface has 5 altsettings (AltSet 1,2,3,4,5) except: |
| 337 | * Interface 3 (Digital Out) has an extra Alset nb.6 |
| 338 | * Interface 5 (Digital In) does not have Alset nb.3 and 5 |
| 339 | |
| 340 | Here is a short description of the AltSettings capabilities: |
| 341 | * AltSettings 1 corresponds to |
| 342 | - 24-bit depth, 48.1-96kHz sample mode |
| 343 | - Adaptive playback (Ao and Do), Synch capture (Ai), or Asynch capture (Di) |
| 344 | * AltSettings 2 corresponds to |
| 345 | - 24-bit depth, 8-48kHz sample mode |
| 346 | - Asynch capture and playback (Ao,Ai,Do,Di) |
| 347 | * AltSettings 3 corresponds to |
| 348 | - 24-bit depth, 8-48kHz sample mode |
| 349 | - Synch capture (Ai) and Adaptive playback (Ao,Do) |
| 350 | * AltSettings 4 corresponds to |
| 351 | - 16-bit depth, 8-48kHz sample mode |
| 352 | - Asynch capture and playback (Ao,Ai,Do,Di) |
| 353 | * AltSettings 5 corresponds to |
| 354 | - 16-bit depth, 8-48kHz sample mode |
| 355 | - Synch capture (Ai) and Adaptive playback (Ao,Do) |
| 356 | * AltSettings 6 corresponds to |
| 357 | - 16-bit depth, 8-48kHz sample mode |
| 358 | - Synch playback (Do), audio format type III IEC1937_AC-3 |
| 359 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 360 | In order to ensure a correct initialization of the device, the driver |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 361 | _must_know_ how the device will be used: |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 362 | * if DTS is chosen, only Interface 2 with AltSet nb.6 must be |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 363 | registered |
| 364 | * if 96KHz only AltSets nb.1 of each interface must be selected |
| 365 | * if samples are using 24bits/48KHz then AltSet 2 must me used if |
| 366 | Digital input is connected, and only AltSet nb.3 if Digital input |
| 367 | is not connected |
| 368 | * if samples are using 16bits/48KHz then AltSet 4 must me used if |
| 369 | Digital input is connected, and only AltSet nb.5 if Digital input |
| 370 | is not connected |
| 371 | |
| 372 | When device_setup is given as a parameter to the snd-usb-audio module, the |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 373 | parse_audio_endpoints function uses a quirk called |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 374 | "audiophile_skip_setting_quirk" in order to prevent AltSettings not |
| 375 | corresponding to device_setup from being registered in the driver. |
| 376 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 377 | 4 - Audiophile USB and Jack support |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 378 | =================================== |
| 379 | |
| 380 | This section deals with support of the Audiophile USB device in Jack. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 381 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 382 | There are 2 main potential issues when using Jackd with the device: |
| 383 | * support for Big-Endian devices in 24-bit modes |
| 384 | * support for 4-in / 4-out channels |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 385 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 386 | 4.1 - Direct support in Jackd |
| 387 | ----------------------------- |
| 388 | |
| 389 | Jack supports big endian devices only in recent versions (thanks to |
| 390 | Andreas Steinmetz for his first big-endian patch). I can't remember |
Matt LaPlante | d919588 | 2008-07-25 19:45:33 -0700 | [diff] [blame] | 391 | exactly when this support was released into jackd, let's just say that |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 392 | with jackd version 0.103.0 it's almost ok (just a small bug is affecting |
Matt LaPlante | d919588 | 2008-07-25 19:45:33 -0700 | [diff] [blame] | 393 | 16bits Big-Endian devices, but since you've read carefully the above |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 394 | paragraphs, you're now using kernel >= 2.6.23 and your 16bits devices |
| 395 | are now Little Endians ;-) ). |
| 396 | |
| 397 | You can run jackd with the following command for playback with Ao and |
| 398 | record with Ai: |
| 399 | % jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1 |
| 400 | |
| 401 | 4.2 - Using Alsa plughw |
| 402 | ----------------------- |
| 403 | If you don't have a recent Jackd installed, you can downgrade to using |
| 404 | the Alsa "plug" converter. |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 405 | |
| 406 | For instance here is one way to run Jack with 2 playback channels on Ao and 2 |
| 407 | capture channels from Ai: |
| 408 | % jackd -R -dalsa -dplughw:1 -r48000 -p256 -n2 -D -Cplughw:1,1 |
| 409 | |
Thibault LE MEUR | e311334 | 2006-03-14 11:44:53 +0100 | [diff] [blame] | 410 | However you may see the following warning message: |
| 411 | "You appear to be using the ALSA software "plug" layer, probably a result of |
| 412 | using the "default" ALSA device. This is less efficient than it could be. |
| 413 | Consider using a hardware device instead rather than using the plug layer." |
| 414 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 415 | 4.3 - Getting 2 input and/or output interfaces in Jack |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 416 | ------------------------------------------------------ |
| 417 | |
| 418 | As you can see, starting the Jack server this way will only enable 1 stereo |
| 419 | input (Di or Ai) and 1 stereo output (Ao or Do). |
| 420 | |
| 421 | This is due to the following restrictions: |
| 422 | * Jack can only open one capture device and one playback device at a time |
| 423 | * The Audiophile USB is seen as 2 (or three) Alsa devices: hw:1,0, hw:1,1 |
| 424 | (and optionally hw:1,2) |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 425 | |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 426 | If you want to get Ai+Di and/or Ao+Do support with Jack, you would need to |
| 427 | combine the Alsa devices into one logical "complex" device. |
| 428 | |
| 429 | If you want to give it a try, I recommend reading the information from |
| 430 | this page: http://www.sound-man.co.uk/linuxaudio/ice1712multi.html |
| 431 | It is related to another device (ice1712) but can be adapted to suit |
| 432 | the Audiophile USB. |
| 433 | |
| 434 | Enabling multiple Audiophile USB interfaces for Jackd will certainly require: |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 435 | * Making sure your Jackd version has the MMAP_COMPLEX patch (see the ice1712 page) |
| 436 | * (maybe) patching the alsa-lib/src/pcm/pcm_multi.c file (see the ice1712 page) |
Charis Kouzinopoulos | 5732e7a | 2006-04-18 15:42:29 +0200 | [diff] [blame] | 437 | * define a multi device (combination of hw:1,0 and hw:1,1) in your .asoundrc |
| 438 | file |
| 439 | * start jackd with this device |
| 440 | |
Thibault Le Meur | f8c78b8 | 2007-07-12 11:26:35 +0200 | [diff] [blame] | 441 | I had no success in testing this for now, if you have any success with this kind |
| 442 | of setup, please drop me an email. |