#firewire #protocols #alsa

bin+lib firewire-dice-protocols

实现了TC Applied Technologies为数字接口通信引擎(DICE)的ASIC以及硬件供应商定义的协议

6个版本

0.3.1 2024年3月1日
0.3.0 2024年2月25日
0.2.1 2023年10月29日
0.2.0 2023年4月18日
0.1.2 2022年8月29日

76硬件支持

Download history 14/week @ 2024-07-02

每月 164 次下载

LGPL-3.0-or-later

1MB
17K SLoC

该库crate包括数字接口通信引擎(DICE)解决方案和应用设备以及连接到IEEE 1394总线的设备的协议实现

数字接口通信引擎(DICE)

TC Applied Technologies(TCAT)于2003年成立,作为TC集团数字音频微电子和软件技术部门拆分的结果。首款产品是DICE II ASIC,作为单芯片IEEE 1394音频解决方案,适用于专业和消费级应用。DICE II ASIC由WaveFront Semiconductor(原名Alesis Semiconductor)独家制造和分销。DICE Jr(TCD2200 ASIC)和DICE Mini(TCD2210 ASIC)似乎于2005年左右发布。2014年推出的DICE III(TCD3070 ASIC)比之前的性能更好。

DICE似乎表示包括在ASIC中的硬件抽象层和软件堆栈,可以通过公共应用程序编程接口操作。

当音乐集团于2015年收购TC集团时,TCAT的所有权也转移了。该集团旗下的公司之一CoolAudio International分销TCAT ASIC以及WaveFront IC。2017年,音乐集团将其名称更改为Music Tribe。

TCAT协议

TCAT为两种类型的协议提供了软件堆栈选项;TCAT协议和mLAN(音乐局域网)/OGT(开放通用传输器)协议。DICE II ASIC被用于雅马哈的第三代mLAN;2007年推出的Yamaha n8/n12,2008年推出的Steinberg MR816X/MR816CSX。

该crate仅支持TCAT协议,因为mLAN/OGT协议是封闭的。该协议分为两部分;公共和扩展。所有基于DICE的设备都支持公共协议,而扩展仅由DICE Jr和DICE mini支持。

该协议的显著特点是管理节点内存空间的部分。部分的内容表示节点的配置。当节点自愿更改配置或通过写入事务更改其他节点的配置时,节点会生成包含对应于该部分的位标志的四元组通知。

TC Electronic对其Konnekt系列进行了协议设计的模拟,而一些厂商则基于简单的异步事务实现了自己的协议。

ALSA dice驱动程序

Linux声音子系统,即ALSA,提供了可加载的内核模块(snd-dice)作为单元的驱动程序。驱动程序维护音频帧和MIDI消息的同步数据包流,以及通过异步事务进行的通知机制,因为ASIC的其他内部功能,如数字信号处理,可以直接由用户空间应用程序操作。

驱动程序允许应用程序通过执行系统调用来读取通知。为此,hitaki库SndDice GObject类,而该包仍然独立于库,以便将读取通知消息的任务委托给应用程序程序。

该包是运行时程序的补充实现,用于操作除同步数据包流之外的内联函数。

依赖项

这是依赖项列表。

glib和hinawa包需要一些底层系统库

Linux FireWire子系统的功能通过hinawa包和库调用,以与IEEE 1394总线上的节点通信,因此该包不可移植。

支持的型号

这是目前支持的型号列表。

  • M-Audio ProFire 2626
  • M-Audio ProFire 610
  • Avid Mbox 3 Pro
  • TC Electronic Konnekt 24d
  • TC Electronic Konnekt 8
  • TC Electronic Studio Konnekt 48
  • TC Electronic Konnekt Live
  • TC Electronic Desktop Konnekt 6
  • TC Electronic Impact Twin
  • TC Electronic Digital Konnekt x32
  • Alesis MultiMix 8/12/16 FireWire
  • Alesis iO 14
  • Alesis iO 26
  • Alesis MasterControl
  • Lexicon I-ONIX FW810s
  • Focusrite Saffire Pro 40
  • Focusrite Liquid Saffire 56
  • Focusrite Saffire Pro 24
  • Focusrite Saffire Pro 24 DSP
  • Focusrite Saffire Pro 14
  • Focusrite Saffire Pro 26
  • PreSonus FireStudio
  • PreSonus FireStudio Project
  • PreSonus FireStudio Tube
  • PreSonus FireStudio Mobile
  • Weiss Engineering ADC2
  • Weiss Engineering Vesta
  • Weiss Engineering DAC2, Minerva
  • Weiss Engineering AFI1
  • Weiss Engineering INT202, INT203, DAC1 FireWire选项卡
  • Weiss Engineering DAC202, Maya
  • Weiss Engineering MAN301

对于其他型号,提供了通用和扩展协议的实现,而不考虑厂商的定制。

包的状态

该包由ALSA GObject Introspection团队snd-firewire-ctl-services项目开发和维护,目前尚不稳定。包含的Rust元素可能会更改,不具有向后兼容性。

许可证

根据反向工程条款,该包在GNU Lesser General Public License v3.0或更高版本下发布。

支持

如果发现问题,请在https://github.com/alsa-project/snd-firewire-ctl-services/中提交。

免责声明

协议的实现是通过逆向工程开发的;通过嗅探目标设备连接的IEEE 1394总线,以及分析硬件供应商提供的设备与驱动程序之间的通信。由于开发人员使用的是黑盒,因此很自然地无法与您的设备一起工作。

实用程序

一些程序在'src/bin'目录下可用。

tcat-general-parser.rs

该程序根据通用协议从目标设备的节点检索信息,然后打印信息。

如果没有命令行参数,则打印帮助信息并退出。

$ cargo run --bin tcat-general-parser
Usage:
  tcat-general-parser CDEV

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

请用参数运行以启动火线字符设备。

$ cargo run --bin tcat-general-parser /dev/fw1
...

tcat-extension-parser.rs

该程序根据协议扩展从目标设备节点检索信息,然后打印信息。

如果没有命令行参数,则打印帮助信息并退出。

$ cargo run --bin tcat-extension-parser
Usage:
  tcat-extension-parser CDEV

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

请用参数运行以启动火线字符设备。

$ cargo run --bin tcat-extension-parser /dev/fw1
...

tcat-config-rom-parser.rs

该程序解析配置ROM的内容,然后打印其中的信息。

如果没有命令行参数,则打印帮助信息并退出。

$ cargo run --bin tcat-config-rom-parser
Usage:
  tcat-config-rom-parser CDEV | "-"

  where:
    CDEV:       the path to special file of firewire character device, typically '/dev/fw1'.
    "-"         use STDIN for the content of configuration ROM to parse. It should be aligned to big endian.

请用参数运行以启动火线字符设备。

$ cargo run --bin tcat-config-rom-parser -- /dev/fw1
...

或通过STDIN提供配置ROM的内容

$ cat /sys/bus/firewire/devices/fw0/config_rom  | cargo run --bin tcat-config-rom-parser -- -
...

在上面的情况下,内容应对齐为大端顺序。

依赖关系

~6.5MB
~135K SLoC