Crate firewire_bebob_protocols

Source
Expand description

The library crate includes implementation of protocol for BridgeCo. Enhanced Break Out Box (BeBoB) solution and application devices connected to IEEE 1394 bus.

§BridgeCo. Enhanced Break Out Box (BeBoB) solution

BridgeCo. AG was founded in 2000 and seems to be reorganized around in 2005. The subsidiary for professional audio was sold in 2009 and formed ArchWave AG. BridgeCo itself was acquired by SMSC in 2011. Archwave AG was acquired by Riedel Communications GmbH in 2018.

BridgeCo (and ArchWave) provided DM1000 (launched in 2002), DM1000E (launched in 2004), DM1100 (launched in 2005), and DM1500 (launched in 2005) ASICs with software development kit (SDK) for audio and music units in IEEE 1394 bus, as total solution called as “BridgeCo Enhanced Break Out Box (BeBoB)”. The unit allows the other nodes in IEEE 1394 bus to configure itself by operations defined by IEC 61883-1/6, some AV/C general commands as well as extensible vendor unique commands.

The solution was widely applied by hardware vendors for their products to record/playback audio as well as receive/transmit MIDI messages.

§ALSA bebob driver

Linux sound subsystem, a.k.a ALSA, provides loadable kernel module (snd-bebob) as driver for the units. The driver maintains isochronous packet streams for audio frames and MIDI messages since the other ASIC functions such as digital signal processing can be operated by user space application directly. The crate is supplemental implementation for runtime program to satisfy the purpose.

§Dependency

This is the list of dependent crates.

The glib and hinawa crates require some underlying system libraries

The functions of Linux FireWire subsystem is called via hinawa crate and library to communicate with node in IEEE 1394 bus, thus the crate is not portable.

§Supported models

This is the list of models currently supported.

  • Apogee Ensemble
  • Behringer Firepower FCA610
  • Digidesign Mbox 2 Pro
  • Ego Systems Quatafire 610
  • Focusrite Saffire
  • Focusrite Saffire LE
  • Focusrite Saffire Pro 10 i/o
  • Focusrite Saffire Pro 26 i/o
  • Icon Firexon
  • M-Audio FireWire Solo
  • M-Audio FireWire Audiophile
  • M-Audio FireWire 410
  • M-Audio FireWire 1814
  • M-Audio Ozonic
  • M-Audio ProFire LightBridge
  • M-Audio ProjectMix I/O
  • PreSonus Firebox
  • PreSonus Firepod/FP10
  • PreSonus Inspire 1394
  • Roland Edirol FA-66
  • Roland Edirol FA-101
  • Stanton ScratchAmp in Final Scratch version 2
  • TerraTec Aureon 7.1 FW
  • TerraTec Phase 24 FW
  • TerraTec Phase X24 FW
  • TerraTec Phase 88 FW
  • Yamaha Go 44
  • Yamaha Go 46

§Status of the crate

The crate is developed and maintained by ALSA GObject Introspection team for snd-firewire-ctl-services project, and not stable yet. The included Rust elements are likely changed without backward compatibility.

§License

The crate is released under GNU Lesser General Public License v3.0 or later with respect to clause for reverse engineering.

§Support

If finding issue, please file it in https://github.com/alsa-project/snd-firewire-ctl-services/.

§Disclaimer

The implementation of protocol is developed by the way of reverse engineering; sniffing IEEE 1394 bus to which target device is connected, and analysis of the communication between the device and driver provided by hardware vendor. It’s natural not to work with your device since developer worked with blackbox.

§Utilities

Some programs are available under ‘src/bin’ directory.

§bco-bootloader-info.rs

This program retrieves information from node of target device by protocol defined by BridgeCo, then print the information.

Without any command line argument, it prints help message and exit.

$ cargo run --bin bco-bootloader-info
Usage:
  bco-bootloader-info CDEV

  where:
    CDEV:       The path to special file of firewire character device, typically '/dev/fw1'.

Please run with an argument for firewire character device:

$ cargo run --bin bco-bootloader-info /dev/fw1
...

Modules§

apogee
Protocol implementation for Apogee Electronics FireWire models.
behringer
Protocol implementation for Behringer Firepower series.
bridgeco
Protocol implementation defined by BridgeCo. AG for its BridgeCo. Enhanced Break Out Box (BeBoB) solution.
digidesign
Protocol implementation for Digidesign Mbox 2 Pro.
esi
Protocol implementation for ESI Quatafire series.
focusrite
Protocol implementation for Focusrite Saffire series based on BeBoB solution.
icon
Protocol implementation for models of Icon Digital International.
maudio
Protocol implementation for M-Audio FireWire series.
presonus
Protocol implementation for some PreSonus models.
roland
Protocol implementation for Roland Edirol FA series.
stanton
Protocol implementation for Stanton Magnetics Final Scratch 2 ScratchAmp.
terratec
Protocol implementation for some Terratec models.
yamaha_terratec
Protocol implementation for Yamaha Go and Terratec Phase 24 FW series.

Structs§

AvcLevelParameters
The parameters of signal level. The Default trait should be implemented to call AvcLevelOperation::create_level_parameters().
AvcLrBalanceParameters
The parameters of L/R balance. The Default trait should be implemented to call AvcLrBalanceOperation::create_lr_balance_parameters().
AvcMuteParameters
The parameters of mute. The Default trait should be implemented to call AvcMuteOperation::create_mute_parameters().
AvcSelectorParameters
The parameter of selectors. The Default trait should be implemented to call AvcSelectorOperation::create_selector_parameters().
BebobAvc
The implementation of AV/C transaction with quirks specific to BeBoB solution.
MediaClockParameters
The parameters of media clock.
SamplingClockParameters
The parameters of sampling clock.

Traits§

AvcAudioFeatureSpecification
The specification of Feature Function Blocks of AV/C Audio subunit.
AvcLevelOperation
The trait of level operation for audio function blocks by AV/C transaction.
AvcLrBalanceOperation
The trait of LR balance operation for audio function blocks.
AvcMuteOperation
The trait of mute operation for audio function blocks.
AvcSelectorOperation
The trait of select operation for audio function block.
MediaClockFrequencyOperation
The trait of frequency operation for media clock.
SamplingClockSourceOperation
The trait of source operation for sampling clock.