{"id":20289964,"url":"https://github.com/alsa-project/snd-firewire-ctl-services","last_synced_at":"2025-04-05T18:07:01.381Z","repository":{"id":39717211,"uuid":"226685066","full_name":"alsa-project/snd-firewire-ctl-services","owner":"alsa-project","description":"A set of server programs for audio and music units on IEEE 1394 bus supported by Linux sound subsystem a.k.a. ALSA.","archived":false,"fork":false,"pushed_at":"2025-02-24T01:07:08.000Z","size":6240,"stargazers_count":40,"open_issues_count":7,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T17:07:34.541Z","etag":null,"topics":["alsa","ieee1394","linux","server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alsa-project.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-08T15:03:00.000Z","updated_at":"2025-02-24T01:07:11.000Z","dependencies_parsed_at":"2023-10-12T23:10:44.445Z","dependency_job_id":"ab7ebd57-285c-40ba-b9d6-85ac32dc4c6b","html_url":"https://github.com/alsa-project/snd-firewire-ctl-services","commit_stats":{"total_commits":2650,"total_committers":2,"mean_commits":1325.0,"dds":0.0007547169811320531,"last_synced_commit":"89bf774ffa9823413a02b09b10f659a1a9309043"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsa-project%2Fsnd-firewire-ctl-services","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsa-project%2Fsnd-firewire-ctl-services/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsa-project%2Fsnd-firewire-ctl-services/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsa-project%2Fsnd-firewire-ctl-services/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alsa-project","download_url":"https://codeload.github.com/alsa-project/snd-firewire-ctl-services/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378141,"owners_count":20929296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alsa","ieee1394","linux","server"],"created_at":"2024-11-14T15:05:42.144Z","updated_at":"2025-04-05T18:07:01.364Z","avatar_url":"https://github.com/alsa-project.png","language":"Rust","readme":"========================\nsnd-firewire-ctl-services\n========================\n\n2024/10/07\nTakashi Sakamoto\n\nIntroduction\n============\n\nThis project is a sub-project within Advanced Linux Sound Architecture a.k.a ALSA, aimed to provide\nuser space service programs for Audio and Music units connected to IEEE 1394 bus, supported by\ndrivers in ALSA firewire stack.\n\nThe latest release is\n`version 0.2.0 \u003chttps://github.com/alsa-project/snd-firewire-ctl-services/releases/tag/snd-firewire-ctl-services%2Fv0.2.0\u003e`_.\n\nThe service programs are designed to operate digital signal processing function in the audio and\nmusic units connected to IEEE 1394 bus. The service programs work as\n`message broker \u003chttps://en.wikipedia.org/wiki/Message_broker\u003e`_. ALSA control and sequencer\napplications are available as an end to communicate to the service programs. The audio and music\nunits in IEEE 1394 bus is the opposite end. The service programs receives messages from both\nends, then translates and convert the messages to send to the opposite end. The internal design of\nthe programs are illustrated in ``Design note`` section.\n\nExecutables for service programs\n================================\n\nThe project provides the following service programs in the form of Rust binary crates:\n\nsnd-firewire-digi00x-ctl-service\n   For sound card bound to ALSA firewire-digi00x driver (snd-firewire-digi00x)\nsnd-firewire-tascam-ctl-service\n   For sound card bound to ALSA firewire-tascam driver (snd-firewire-tascam), or TASCAM FE-8.\nsnd-fireworks-ctl-service\n   For sound card bound to ALSA fireworks driver (snd-fireworks)\nsnd-firewire-motu-ctl-service\n   For sound card bound to ALSA firewire-motu driver (snd-firewire-motu)\nsnd-oxfw-ctl-service\n   For sound card bound to ALSA oxfw driver (snd-oxfw)\nsnd-bebob-ctl-service\n   For sound card bound to ALSA bebob driver (snd-bebob)\nsnd-dice-ctl-service\n   For sound card bound to ALSA dice driver (snd-dice)\nsnd-fireface-ctl-service\n   For sound card bound to ALSA fireface driver (snd-fireface)\n\nDisclaimer\n==========\n\nThe project provides neither GUI programs nor end-user interfaces against expectation of users,\n\nThe main motivation of project is to preserve the way (protocol) to operate the audio and music\nunits in IEEE 1394 bus, which was defined by several vendors.\n\nSupported devices\n=================\n\nCurrently below devices are supported. If you would like to add support for your device, please\ncontact to developer.\n\n* snd-firewire-digi00x-ctl-service\n\n  * Digi 002\n  * Digi 002 Rack\n  * Digi 003\n  * Digi 003 Rack\n  * Digi 003 Rack+\n\n* snd-firewire-tascam-ctl-service\n\n  * Tascam FW-1884\n  * Tascam FW-1082\n  * Tascam FW-1804\n  * Tascam FE-8 (work without ALSA firewire-tascam driver)\n\n* snd-fireworks-ctl-service\n\n  * Mackie (Loud) Onyx 1200F\n  * Mackie (Loud) Onyx 400F\n  * Echo Audio Audiofire 12 (till Jul 2009)\n  * Echo Audio Audiofire 8 (till Jul 2009)\n  * Echo Audio Audiofire 12 (since Jul 2009)\n  * Echo Audio Audiofire 8 (since Jul 2009)\n  * Echo Audio Audiofire 2\n  * Echo Audio Audiofire 4\n  * Echo Audio Audiofire Pre8\n  * Gibson Robot Interface Pack (RIP) for Robot Guitar series\n\n* snd-firewire-motu-ctl-service\n\n  * Version 1 models\n\n    * MOTU 828\n    * MOTU 896\n\n  * Register DSP models\n\n    * MOTU Traveler\n    * MOTU 828mkII\n    * MOTU 896HD\n    * MOTU UltraLite\n    * MOTU 8pre\n    * MOTU 4pre\n    * MOTU AudioExpress\n\n  * Command DSP models\n\n    * MOTU 828mk3 (FireWire only)\n    * MOTU 828mk3 (Hybrid)\n    * MOTU 896mk3 (FireWire only)\n    * MOTU 896mk3 (Hybrid)\n    * MOTU UltraLite mk3 (FireWire only)\n    * MOTU UltraLite mk3 (Hybrid)\n    * MOTU Traveler mk3\n    * MOTU Track 16\n\n* snd-oxfw-ctl-service\n\n  * Tascam FireOne\n  * Apogee Duet FireWire\n  * Griffin FireWave\n  * Lacie FireWire Speakers\n  * Mackie Tapco Link.FireWire 4x6\n  * For the others, common controls are available.\n\n* snd-bebob-ctl-service\n\n  * Apogee Ensemble\n  * Behringer Firepower FCA610\n  * Digidesign Mbox 2 Pro\n  * Ego Systems Quatafire 610\n  * Focusrite Saffire\n  * Focusrite Saffire LE\n  * Focusrite Saffire Pro 10 i/o\n  * Focusrite Saffire Pro 26 i/o\n  * Icon Firexon\n  * M-Audio FireWire Solo\n  * M-Audio FireWire Audiophile\n  * M-Audio FireWire 410\n  * M-Audio FireWire 1814\n  * M-Audio Ozonic\n  * M-Audio ProFire LightBridge\n  * M-Audio ProjectMix I/O\n  * PreSonus Firebox\n  * PreSonus Firepod/FP10\n  * PreSonus Inspire 1394\n  * Roland Edirol FA-66\n  * Roland Edirol FA-101\n  * Stanton ScratchAmp in Final Scratch version 2\n  * TerraTec Aureon 7.1 FW\n  * TerraTec Phase 24 FW\n  * TerraTec Phase X24 FW\n  * TerraTec Phase 88 FW\n  * Yamaha Go 44\n  * Yamaha Go 46\n\n* snd-dice-ctl-service\n\n  * M-Audio ProFire 2626\n  * M-Audio ProFire 610\n  * Avid Mbox 3 Pro\n  * TC Electronic Konnekt 24d\n  * TC Electronic Konnekt 8\n  * TC Electronic Studio Konnekt 48\n  * TC Electronic Konnekt Live\n  * TC Electronic Desktop Konnekt 6\n  * TC Electronic Impact Twin\n  * TC Electronic Digital Konnekt x32\n  * Alesis MultiMix 8/12/16 FireWire\n  * Alesis iO 14\n  * Alesis iO 26\n  * Alesis MasterControl\n  * Lexicon I-ONIX FW810s\n  * Focusrite Saffire Pro 40\n  * Focusrite Liquid Saffire 56\n  * Focusrite Saffire Pro 24\n  * Focusrite Saffire Pro 24 DSP\n  * Focusrite Saffire Pro 14\n  * Focusrite Saffire Pro 26\n  * PreSonus FireStudio\n  * PreSonus FireStudio Project\n  * PreSonus FireStudio Tube\n  * PreSonus FireStudio Mobile\n  * Weiss Engineering ADC2\n  * Weiss Engineering Vesta\n  * Weiss Engineering DAC2, Minerva\n  * Weiss Engineering AFI1\n  * Weiss Engineering INT202, INT203, DAC1 FireWire option card\n  * Weiss Engineering DAC202, Maya\n  * Weiss Engineering MAN301\n  * For the others, common controls are available. If supported, control extension is also available.\n\n* snd-fireface-ctl-service\n\n  * Former models\n\n    * Fireface 800\n    * Fireface 400\n\n  * Latter models\n\n    * Fireface UCX\n    * Fireface 802\n\nRestrictions\n============\n\nDue to a lack of information about the target devices, certain restrictions are unavoidable.\nHowever, we welcome any assistance that can enhance the project.\n\n* snd-bebob-ctl-service\n\n  * The most of compressor, equalizer, and reverb controls are not available for Focusrite Saffire.\n  * No control is available for un-coded devices. For example, PrismSound Orpheus is the case.\n\n* snd-fireworks-ctl-service\n\n  * Some control is not available for Gibson Robot Interface Pack.\n\n* snd-dice-ctl-service\n\n  * The most of equalizer controls are not available for Focusrite Saffire Pro 24 DSP.\n  * The most of monitor parameters may not work for Alesis iO 14/26 FireWire. This may come from\n    firmware version.\n  * The channel strip dynamics, equalizer, and reverb are not available for Lexicon I-ONIX 810s.\n  * No control is available for Focusrite Saffire Pro 40 (TCD3070 ASIC).\n  * No control is available for Solid State Logic Duende Classic and Mini.\n\n* snd-firewire-digi00x-ctl-service\n\n  * Due to hardware design, the function of DSP can not be configured unless an ALSA PCM\n    application initiates isochronous communication.\n\n* snd-firewire-tascam-ctl-service\n\n  * Due to hardware design, most controls are not synchronized to hardware expectedly unless an\n    ALSA PCM application initiates isochronous communication.\n  * For console models, any event in control surface is available via port of ALSA Sequencer. The\n    event is converted to controller event with channel 0 which has the consecutive number as param\n    and event value. At present, the consecutive number is fixed and not configurable.\n\n* snd-firewire-motu-ctl-service\n\n  * For Command DSP models, the monitor functions (the talkback switch, the listenback switch, the\n    talkback volume, the listenback volume, the channel focus, the return assignment) are not\n    operable yet. (The developer completely forgot to implement them.)\n  * Due to hardware design, most controls, including hardware metering, are not synchronized to\n    hardware expectedly for Register DSP models unless an ALSA PCM application initiates isochronous\n    communication.\n  * Due to hardware design, hardware metering may not work properly for Command DSP models unless an\n    ALSA PCM application initiates isochronous communication.\n  * The channel positions available in the hardware meter is not adequate in all Command DSP\n    models.\n  * Sometimes, there may be an issue with initializing Command DSP models for communication. In such\n    case, the workaround is to simply restart the service program.\n  * Due to hardware quirk of Audio Express, asynchronous communication often fails with\n    ``unsolicited response`` system message.\n  * Due to asynchronous transaction failure (busy), for Command DSP models, the port assignments, the\n    phone assignments, the configuration for word clock output, and the configuration of programmable\n    level meter are not synchronized expectedly to any action in hardware surface.\n\n* snd-fireface-ctl-service\n\n  * The controls of latter models are not synchronized to any operation by the Remote Control or\n    the Advanced Remote Control.\n\nSupport\n=======\n\n* If finding any issue, please file it to\n  `github repository \u003chttps://github.com/alsa-project/snd-firewire-ctl-services\u003e`_.\n\nLicense\n=======\n\n* Some library crates are released under MIT license. They are available in `\u003ccrates.io\u003e`_\n  as well.\n\n  * `alsa-ctl-tlv-codec \u003chttps://crates.io/crates/alsa-ctl-tlv-codec\u003e`_\n  * `ieee1212-config-rom \u003chttps://crates.io/crates/ieee1212-config-rom\u003e`_\n  * `ta1394-avc-general \u003chttps://crates.io/crates/ta1394-avc-general\u003e`_\n  * `ta1394-avc-audio \u003chttps://crates.io/crates/ta1394-avc-audio\u003e`_\n  * `ta1394-avc-stream-format \u003chttps://crates.io/crates/ta1394-avc-stream-format\u003e`_\n  * `ta1394-avc-ccm \u003chttps://crates.io/crates/ta1394-avc-ccm\u003e`_\n\n* Some library crates for protocol implementation are released under GNU Lesser General\n  Public License v3.0 or later with respect to clause for reverse engineering. They are\n  available in `\u003ccrates.io\u003e`_ as well.\n\n  * `firewire-bebob-protocols \u003chttps://crates.io/crates/firewire-bebob-protocols\u003e`_\n  * `firewire-fireworks-protocols \u003chttps://crates.io/crates/firewire-fireworks-protocols\u003e`_\n  * `firewire-oxfw-protocols \u003chttps://crates.io/crates/firewire-oxfw-protocols\u003e`_\n  * `firewire-dice-protocols \u003chttps://crates.io/crates/firewire-dice-protocols\u003e`_\n  * `firewire-digi00x-protocols \u003chttps://crates.io/crates/firewire-digi00x-protocols\u003e`_\n  * `firewire-tascam-protocols \u003chttps://crates.io/crates/firewire-tascam-protocols\u003e`_\n  * `firewire-motu-protocols \u003chttps://crates.io/crates/firewire-motu-protocols\u003e`_\n  * `firewire-fireface-protocols \u003chttps://crates.io/crates/firewire-fireface-protocols\u003e`_\n\n* The other crates are for runtime and released under GNU General Public License Version 3.\n\nDependencies\n============\n\n* Rust programming language `\u003chttps://www.rust-lang.org/\u003e`_ v1.70 or later.\n* Cargo\n* glib `\u003chttps://developer.gnome.org/glib/\u003e`_\n* libhinawa v4.0 or later `\u003chttps://git.kernel.org/pub/scm/libs/ieee1394/libhinawa.git/\u003e`_\n* libhitaki v0.2 or later `\u003chttps://github.com/alsa-project/libhitaki\u003e`_\n* alsa-gobject v0.3 or later `\u003chttps://github.com/alsa-project/alsa-gobject/\u003e`_\n\n* The library crates enumerated in `License` section are downloaded from `\u003ccrates.io\u003e`_ when\n  building by configurations of `Cargo.toml`.\n\nIn Debian and its derived distributions such as Ubuntu\n--------------------------------------------------------\n\nIn Debian 13.0 (trixie) or later, some packages are available in the repositories instead of the\nmanual installation of dependent libraries.\n\n* `libhinawa source package \u003chttps://tracker.debian.org/pkg/libhinawa\u003e`_\n\n  * `libhinawa4`\n  * `libhinawa-dev`\n  * `gir1.2-hinawa-4.0`\n\n* `libhitaki source package \u003chttps://tracker.debian.org/pkg/libhitaki\u003e`_\n\n  * `libhitaki0`\n  * `libhitaki-dev`\n  * `gir1.2-hitaki-0.0`\n\nIn Ubuntu 24.04 LTS (Noble Numbat) or later, the packages are also available by Debian import\nmechanism.\n\nHow to build\n============\n\nBuild ::\n\n    $ cargo build\n\nExecute temporarily ::\n\n    \u0026 cargo run --bin (the executable name) -- (the arguments of executable)\n\nAll of executables can print help when either ``--help`` or ``-h`` is given as an argument of\ncommand line. In the most executables, the first positional argument is the numeric identifier of\nsound card in Linux sound subsystem. For further information, please refer to ``Runtime debugging``\nclause.\n\nOnce the service program runs, it remains to dispatch events until receiving SIGTERM signal (e.g.\npress Ctrl + C) or detecting disconnection of the device.\n\nInstall executables ::\n\n    $ cargo install --path (path to binary crate)\n\nThe runtime crates which provide the executables are listed below:\n\nsnd-firewire-digi00x-ctl-service\n    ``snd-firewire-digi00x-ctl-service`` crate locates in ``runtime/digi00x``\nsnd-firewire-tascam-ctl-service\n    ``snd-firewire-tascam-ctl-service`` crate locates in ``runtime/tascam``\nsnd-fireworks-ctl-service\n    ``snd-fireworks-ctl-service`` crate locates in ``runtime/fireworks``\nsnd-firewire-motu-ctl-service\n    ``snd-firewire-motu-ctl-service`` crate locates in ``runtime/motu``\nsnd-oxfw-ctl-service\n    ``snd-oxfw-ctl-service`` crate locates in ``runtime/oxfw``\nsnd-bebob-ctl-service\n    ``snd-bebob-ctl-service`` crate locates in ``runtime/bebob``\nsnd-dice-ctl-service\n    ``snd-dice-ctl-service`` crate locates in ``runtime/dice``\nsnd-fireface-ctl-service\n    ``snd-fireface-ctl-service`` crate locates in ``runtime/fireface``\n\nThe executable is usually installed under ``~/.cargo/bin``, while it's possible to choose the path.\nIn detail, please refer to\n`manual of cargo install \u003chttps://doc.rust-lang.org/cargo/commands/cargo-install.html\u003e`_.\n\nUninstall executables ::\n\n    $ cargo uninstall -p (name of runtime crate)\n\nRuntime debugging\n=================\n\nAll executables support an option for log level for debugging. When either ``-l`` or\n``--log-level`` is given with log level, they prints verbose logs to standard output.\nAt present, ``debug`` is just supported for the log level.\n\nThis function is implemented by `tracing \u003chttps://crates.io/crates/tracing\u003e`_ and\n`tracing-subscriber \u003chttps://crates.io/crates/tracing-subscriber\u003e`_ crates.\n\nSupported protocols\n===================\n\n* IEEE 1212:2001 - IEEE Standard for a Control and Status Registers (CSR) Architecture for Microcomputer Buses `\u003chttps://ieeexplore.ieee.org/servlet/opac?punumber=8030\u003e`_\n* Protocols defined by 1394 Trading Association `\u003chttps://web.archive.org/web/20210216003030/http://1394ta.org/specifications/\u003e`_\n   * Configuration ROM for AV/C Devices 1.0 (Dec. 2000, 1394 Trade Association)\n   * AV/C Digital Interface Command Set General Specification Version 4.2 (September 1, 2004. TA Document 2004006)\n   * Audio and Music Data Transmission Protocol 2.3 (April 24, 2012. Document 2009013)\n   * AV/C Connection and Compatibility Management Specification 1.1 (March 19, 2003. TA Document 2002010)\n   * AV/C Audio Subunit Specification 1.0 (October 24, 2000. TA Document 1999008)\n   * AV/C Stream Format Information Specification 1.0 (May 24, 2002, TA Document 2001002)\n   * AV/C Stream Format Information Specification 1.1 rev.5 (April 15, 2005. TA Document 2004008)\n* Vendor specific protocols\n   * Protocol for Digi 002/003 family of Digidesign\n   * Protocol for FireWire series of TASCAM (TEAC)\n   * Protocol for Fireworks board module of Echo Digital Audio\n   * Protocol for Mark of the Unicorn (MOTU) FireWire series\n   * Protocol for Oxford Semiconductor OXFW970/OXFW971 ASIC\n   * Protocol for DM1000/DM1100/DM1500 ASIC in BridgeCo. Enhanced BreakOut Box (BeBoB)\n   * Protocol for DiceII ASIC in Digital Interface Communication Engine (DICE)\n   * Protocol extension for TCD2210/TCD2220 ASIC in Digital Interface Communication Engine (DICE)\n   * Protocol for former models of Fireface series of RME GmbH\n   * Protocol for latter models of Fireface series of RME GmbH\n\nDesign note\n===========\n\nControl model\n-------------\n\n.. image:: docs/control-model.png\n   :alt: control model\n\nMeasure model\n-------------\n\n.. image:: docs/measure-model.png\n   :alt: measure model\n\nNotify model (with help of drivers in ALSA firewire stack)\n-------------------------------------------------------------------\n\n.. image:: docs/notify-model-a.png\n   :alt: notify-a-model\n\nNotify model (without any help of drivers in ALSA firewire stack)\n-------------------------------------------------------------------\n\n.. image:: docs/notify-model-b.png\n   :alt: notify-b-model\n\nMulti threading\n---------------\n\n.. image:: docs/overview.png\n   :alt: overview\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsa-project%2Fsnd-firewire-ctl-services","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falsa-project%2Fsnd-firewire-ctl-services","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsa-project%2Fsnd-firewire-ctl-services/lists"}