Version 27 (modified by mocchi, 10 years ago) |
---|
M-Audio produces some sound devices. Some of them are based on BridgeCo DM1000 and BeBoB firmware. This page is the information for developing.
the list of devices
[Group0]
- Firewire Solo
- Firewire Audiophile
- Ozonic
- Firewire 410
[Group1]
- Firewire 1814
- !Projectmix I/O
[Group2]
- NRV10
- Profire Lightbridge
...
Firmware version
The latest version of firmware for all models seems to be included 'Installer: 6.0.1 - Driver: 5.10.0.5058' as of Nov 14, 2009. But there is a new one for several models, Installer 6.0.4_Driver 5.10.0.5061.exe, as of June 2, 2012.
Boot up
Just after powering on, the boot loader is loaded. Then the bootloader load firmware. There is three behaviour. One is loading from ROM automatically. The other is loading from ROM by cue sent by system. The rest is downloading from system.
The cue is 0x010000000000110100000000 to address 0xFFFFC8021000. This command must be transmitted one time.
Control Command
The control commands for devices which belong to Group0 is based on the specification of "AV/C Audio Subunit Specification 1.0 (TA Document 1999008)". This specification is "Audio Subunit" version of "AV/C Digital Interface Command Set General Specification, version 3 (TA Document April 1999)". Please see BebobAvc.
The devices belong to Group1 have its own commands. There is no public specification.
- MaudioBebob/Firewire1814
- upper information can be also applied to ProjectMix I/O
Streaming
Its streaming is based on IEC 61883-1 and -6. Additionally BeBoB firmware utilize its own command to identify the information of stream.
The basic process to start streaming: 1. establish CMP connection for both of Output/Input (0xfffff0000904/0xfffff0000984) 2. send Input Plug Signal Command and Output Plug Signal Command to set sampling rate 3. keep isochronous resource for transmitting (from device) stream 4. start transmitting
FFADO can transmit and receive streams to/from the devices belong to Group0. Group1 devices use its own way to identify the information of stream. The streamings from/to devices Gruop2 devices are a bit strange. The device starts transmitting stream by receiving Input/Output Plug Signal Format command again.
Metering
To get hardware metering, send asynchronous transaction of READ to address 0xffc700600000. Then the device send its current meter values. The size to read is different between devices.
The structure:
Firewire 1814 and ProjectMix I/O
SWITCH_0, SWITCH_1, ANA_IN_1, ANA_IN_2, ANA_IN_3, ANA_IN_4, ANA_IN_5, ANA_IN_6, ANA_IN_7, ANA_IN_8, DIG_IN_1, DIG_IN_2, (S/PDIF) DIG_IN_1, DIG_IN_2, DIG_IN_3, DIG_IN_4, DIG_IN_5, DIG_IN_6, DIG_IN_7, DIG_IN_8, (ADAT) ANA_OUT_1, ANA_OUT_2, ANA_OUT_3, ANA_OUT_4, DIG_OUT_1, DIG_OUT_2, (S/PDIF) DIG_OUT_1, DIG_OUT_2, DIG_OUT_3, DIG_OUT_4, DIG_OUT_5, DIG_OUT_6, DIG_OUT_7, DIG_OUT_8, (ADAT) HP_OUT_1, HP_OUT_2, HP_OUT_3, HP_OUT_4, AUX_OUT_1, AUX_OUT_2 CLOCK_INFO_1, CLOCK_INFO_2
Each data has 16bit. Then totally 84bytes.
SWITCH0: 0X 0Y (X: A/B switch, Y: Headphone 1) SWITCH1: 0X 0Y (X: Headphone 2, Y: Level Controller)
CLOCK_INFO_1: unknown CLOCK_INFO_2: XX YY (XX: SFC in current stream, YY: unknown)
Firewire410
ANA_IN_1, ANA_IN_2, DIG_IN_1, DIG_IN_2, ANA_OUT_1, ANA_OUT_2, ANA_OUT_3, ANA_OUT_4, ANA_OUT_5, ANA_OUT_6, ANA_OUT_7, ANA_OUT_8, DIG_OUT_1, DIG_OUT_2, HP_OUT_1, HP_OUT_2 CLOCK_INFO
Each data has 32bit. Then totally 68bytes.
CLOCK_INFO includes: 00 0X YY ZZ (X: Level Controller, YY: SFC in current stream, ZZ: unknown)
Firewire Audiophile
ANA_IN_1, ANA_IN_2, DIG_IN_1, DIG_IN_2, ANA_OUT_1, ANA_OUT_2, ANA_OUT_3, ANA_OUT_4, DIG_OUT_1, DIG_OUT_2, HP_OUT_1, HP_OUT_2 AUX_OUT_1, AUX_OUT_2 CLOCK_INFO
Each data has 32bit. Then totally 60bytes.
CLOCK_INFO includes: X0 0Y ZZ WW (X: A/B switch, Y: Level Controller, ZZ: SFC in current stream, WW: unknown)
Firewire Solo
ANA_IN_1, ANA_IN_2, DIG_IN_1, DIG_IN_2, STM_IN_1, STM_IN_2, STM_IN_3, STM_IN_4, ANA_OUT_1, ANA_OUT_2, DIG_OUT_1, DIG_OUT_2, CLOCK_INFO
Each data has 32bit. Then totally 52bytes.
Ozonic
ANA_IN_1, ANA_IN_2, ANA_IN_3, ANA_IN_4, STM_IN_1, STM_IN_2, STM_IN_3, STM_IN_4, ANA_OUT_1, ANA_OUT_2, ANA_OUT_3, ANA_OUT_4,
Each data has 32bit. Then totally 48bytes.
NRV10
unknown but assume that
ANA_IN_1, ANA_IN_2, ANA_IN_3, ANA_IN_4, ANA_IN_5, ANA_IN_6, ANA_IN_7, ANA_IN_8, ANA_IN_9, ANA_IN_10, ANA_OUT_1, ANA_OUT_2, ANA_OUT_3, ANA_OUT_4, ANA_OUT_5, ANA_OUT_6, ANA_OUT_7, ANA_OUT_8, ANA_OUT_9, ANA_OUT_10,
If each data has 32 bit, totally 80bytes.
Working Sample for ffado-mixer
Firewire 1814/ProjectMix I/O
Firewire 410
Firewire Audiophile
Firewire Solo
Ozonic (re-work)
Resources
Attachments
- audiophile_aux.png (50.5 kB) - added by mocchi on 09/29/13 03:19:56.
- audiophile_in.png (55.8 kB) - added by mocchi on 09/29/13 03:20:18.
- audiophile_mix.png (65.5 kB) - added by mocchi on 09/29/13 03:20:24.
- audiophile_out.png (51.5 kB) - added by mocchi on 09/29/13 03:20:28.
- fw410_aux.png (49.9 kB) - added by mocchi on 09/29/13 03:20:33.
- fw410_in.png (58.2 kB) - added by mocchi on 09/29/13 03:20:37.
- fw410_mix.png (74.9 kB) - added by mocchi on 09/29/13 03:20:42.
- fw410_out.png (55.6 kB) - added by mocchi on 09/29/13 03:20:47.
- ozonic_in.png (47.9 kB) - added by mocchi on 09/29/13 03:20:53.
- ozonic_mix.png (49.9 kB) - added by mocchi on 09/29/13 03:20:56.
- ozonic_out.png (39.3 kB) - added by mocchi on 09/29/13 03:21:00.
- solo_in.png (49.4 kB) - added by mocchi on 09/29/13 03:21:04.
- solo_mix.png (50.0 kB) - added by mocchi on 09/29/13 03:21:08.
- solo_out.png (41.5 kB) - added by mocchi on 09/29/13 03:21:13.
- fw1814_aux.png (90.5 kB) - added by mocchi on 10/21/13 05:40:03.
- fw1814_in.png (104.7 kB) - added by mocchi on 10/21/13 05:40:16.
- fw1814_in.2.png (104.7 kB) - added by mocchi on 10/21/13 05:40:20.
- fw1814_mix.png (143.9 kB) - added by mocchi on 10/21/13 05:40:28.
- fw1814_out.png (102.0 kB) - added by mocchi on 10/21/13 05:40:38.