#firewire #protocols #alsa

bin+lib firewire-fireface-protocols

RME GmbH 为其 Fireface 系列定义的协议的实现

2 个不稳定版本

0.2.0 2023 年 4 月 18 日
0.1.1 2022 年 8 月 5 日

#1238硬件支持

LGPL-3.0-or-later

290KB
6.5K SLoC

该库包含 IEEE 1394 总线连接的 RME Fireface 系列型号的协议实现。

Fireface 系列

RME GmbH 于 2004 年推出 Fireface 800 作为其在 IEEE 1394 总线上的第一款音频和音乐单元产品。它归类为早期型号,以及 2007 年推出的 Fireface 400,它们具有相似的协议,该协议简单地使用异步写入事务来配置内部功能。

后一种型号包括 Fireface UFX(2011 年推出)、Fireface UCX(2012 年推出)和 Fireface 802(2014 年推出)。后一种型号采用 4 字节命令机制来配置内部 DSP 功能。

后一种型号还支持通用串行总线 (USB),因此假设在连接到 USB 时,4 字节命令可以通过 USB 控制数据包传输。此外,该包支持 IEEE 1394 总线作为后端。

ALSA fireface 驱动程序

Linux 声音子系统,即 ALSA,提供可加载的内核模块(snd-fireface)作为设备的驱动程序。驱动程序维护音频帧和 MIDI 消息的等时数据包流,因为其他内部功能,如数字信号处理,可以直接由用户空间应用程序操作。

该包是对运行时程序的补充实现,以满足其目的。

依赖项

这是依赖项列表。

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

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

支持的型号

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

  • Fireface 800
  • Fireface 400
  • Fireface UCX
  • Fireface 802

欢迎为

  • Fireface UFX

该包的状态

该库由 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' 目录下。

ff-config-rom-parser.rs

该程序解析 RME 定制的配置 ROM 内容,并打印信息。

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

$ cargo run --bin ff-config-rom-parser
Usage:
  ff-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.

请使用 firewire 字符设备参数运行。

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

依赖关系

约 7MB
约 152K SLoC