[alsa-devel] Status of ALSA firewire stack at Linux v4.12 development period
Hi,
We are now in the last week of development period for Linux v4.12. All of my patches were already merged into 'for-next' branch on maintainer's repository. This is a digest for the subject.
## New drivers Two drivers were newly added to sound subsystem: * A driver for MOTU FireWire series (snd-firewire-motu) * http://mailman.alsa-project.org/pipermail/alsa-devel/2017-March/119055.html * A driver for RME Fireface series (snd-fireface) * http://mailman.alsa-project.org/pipermail/alsa-devel/2017-March/119360.html
Although both drivers support a part of units on each series, I won't work for the other units by my self anymore. I wish users are going to work for enhancement of support for more units.
## Changes for existent drivers Additionally, below drivers were widely changed: * A driver for Digidesign Digi00x series (snd-firewire-dg00x) * http://mailman.alsa-project.org/pipermail/alsa-devel/2017-April/119397.html * A driver for TASCAM FireWire series (snd-firewire-tascam) * http://mailman.alsa-project.org/pipermail/alsa-devel/2017-April/119748.html
Purpose of the changes is mainly for maintenance. Especially, digi00x driver now got a proper support for its console models. Correspondingly, some feature of firewire-lib move to firewire-tascam driver.
## Additional Tracepoints Furthermore, ALSA firewire stack newly supports additional tracepoints: * snd_firewire_lib subsystem * in_packet_without_header/out_packet_without_header * snd_firewire_motu subsystem * in_data_block_sph/out_data_block_sph * in_data_block_message/out_data_block_mesasge
These tracepoints are available to debug behaviours of drivers newly added in this development period. Of cource, below tracepoints are still available for existent drivers:
* snd_firewire_lib subsystem * in_packet/out_packet
These tracepoints are available via tracefs or perf_event_open(2). Please refer to proper documentation.
## Known issues As known issues of IEC 61883-1/6 engine on ALSA firewire stack, the engine takes target units to generate sound with periodical short noise. This can be observed except for units based on BeBoB or Fireface series, and this can not be observed every time of packet streaming.
The tracepoints declare that the cause does _not_ come from packet queueing timing and throughput of the amount of data blocks. Thus, It comes from protocol implementation itself. When consider about a fact that this depends on the timing to start packet streaming, the cause is that each unit has a strong demand about sequence of the number of data blocks in a packet. It might tight on actual isochronous cycle and the other time clock somehow.
Additionally, as I have reported, some of units based on Dice don't transfer/receive exactly the same number of total data block as sampling transmission frequency. In detail, seee: http://mailman.alsa-project.org/pipermail/alsa-devel/2016-May/107715.html
## Useful stuffs For Linux kernel 4.4 or later, backported code is available in my github repository: https://github.com/takaswie/snd-firewire-improve
Drivers in ALSA firewire stack support ALSA HwDep interface. There's a sample implementation for user space; libhinawa: https://github.com/takaswie/libhinawa
In detail, please refer to documentation of the library.
Some functionalities of supported units are controllable by tools in hinawa-utils. This is a sample application of the libhinawa with GOject Introspection support: https://github.com/takaswie/hinawa-utils
Currently, they're maintained to assist my work for ALSA firewire stack. Although it can not satisfy all demands from usual users, I'm welcome to receive PRs to integrate the tools.
$ git diff --shortstat v4.11-rc1.. sound/firewire/ 43 files changed, 5791 insertions(+), 502 deletions(-)
Regards
Takashi Sakamoto
participants (1)
-
Takashi Sakamoto