[alsa-devel] [RFC][PATCH 00/15 v4] OXFW driver, a succesor to firewire-speakers

Stefan Richter stefanr at s5r6.in-berlin.de
Sun Oct 26 13:00:32 CET 2014


On May 13 Takashi Sakamoto wrote:
[...]
> Currently, in ALSA, 'firewire-speakers' driver supports OXFW970/971 chipset
> which Oxford Semiconductor produced. But this driver has some restrictions:
>  - Don't support MIDI substreams
>  - Don't support substreams for PCM/MIDI capturing
> There are several devices which are based on OXFW970/971. Especially, devices
> which Behringer and Mackie produced support playback/capture PCM samples/MIDI
> messages. So firewire-speakers needs re-work to support these devices.
> 
> This patchset renames 'firewire-speakers' to 'oxfw'. Maintainers already
> agreed to rename firewire-speakers to suitable name, in my first RFC in Jan
> 2014.
> 
> 
> == Supported devices
> Currently these devices are supported:
>  * Griffin Firewave
>  * LaCie Firewire Speakers
>  * Behringer F-Control Audio 202
>  * Mackie(Loud) Onyx-i series (former models)
>  * Mackie(Loud) Onyx Satellite
>  * Mackie(Loud) Tapco Link.Firewire
[...]
> == Features
>  - Capturing/Playbacking PCM samples/MIDI messages at supported sampling
>    rates via ALSA PCM/MIDI interfaces
>  - Retrieving firewire node information via ALSA hwdep interface
>  - Locking/Unlocking kernel streaming via ALSA hwdep interface
>  - Receiving notification at starting/stopping kernel streaming via ALSA
>    hwdep interface
[...]

Hi,

here is a test report with the devices
  - LaCie FireWire Speakers,
  - Griffin FireWave
and the software
  - alsamixer,
  - audacious (using ALSA backend or Jack backend),
  - mplayer   (using ALSA backend or Jack backend),
  - jack
on top of kernel 3.17(.1).  I tested playback of stereo audio only (44.1 kHz
PCM sources; a few symphonic, rock, and electronic music pieces; stereo only).
I did not test pulseaudio, as I do not have it yet installed on my test box.
So far I ran jack only with 44.1 kHz sample rate.  The FireWave was connected
to L/R line-in of a stereo amplifier.  To test the upper channels of the
FireWave, I simply replugged the cable between FireWave's L/R, C/S, and LS/RS
ports.

First I re-tested with stock 3.17.1 because I haven't used these two devices
in a while.  After that, I pulled the following patches from
https://github.com/takaswie/sound master branch, applied them on top of 3.17.1,
and repeated the tests.
    f7c9bc4c15ea ALSA: oxfw: Add hwdep interface
    787e571d3197 ALSA: oxfw: Add support for capture/playback MIDI messages
    1868471597e6 ALSA: oxfw: Add support AMDTP in-stream and PCM capture
    42483f846ff5 ALSA: oxfw: Add support for Behringer/Mackie devices
    51fadf6db12e ALSA: oxfw: Change the way to start stream
    54a1b23d6eba ALSA: oxfw: Add proc interface for debugging purpose
    f56001836575 ALSA: oxfw: Change the way to make PCM rules/constraints
    2d07cd88a870 ALSA: oxfw: Add support for AV/C stream format command to get/set supported stream formation
    b213d30cd408 ALSA: oxfw: Change the way to name card
    4255f0663f83 ALSA: oxfw: Split control functionality to a new file
    ed98704ccad7 ALSA: oxfw: Split PCM functionality to a new file
    646b7c0dfedd ALSA: oxfw: Split stream functionality to a new file and add a header file
    b09fa32b4063 ALSA: oxfw: Move to its own directory
    3479e7136ccb ALSA: speakers: Rename to oxfw and rename some members
Later I also switched back and forth between drivers without and with the
patches, with consistent results as described below.


Results with LaCie FireWire Speakers:
-------------------------------------

The only difference in behavior between 3.17.1 and 3.17.1 plus patches is
that alsamixer displays the speakers' card and chip name differently.
Stock, i.e. snd-firewire-speakers:     Patched, i.e. snd-oxfw:
    Card: FireWire Speakers                Card: FWSpeakers
    Chip: OXFW970                          Chip: FWSpeakers
I am not familiar enough with ALSA and its applications to tell whether
this change is good or bad or immaterial; for me it does not matter.

Otherwise, I noticed no difference between stock and patched; i.e.
alsamixer shows the same single PCM volume control, the two playback
applications times two backends behave the same, and the sound files sound
the same.


Results with Griffin FireWave:
------------------------------

With snd-firewire-speakers, only the blue "FireWire" LED lights up.
With snd-oxfw, the blue LED lights up, and as soon as the card is opened by
audacious' or mplayer's ALSA backend for the first time, the red "Dolby D+PL
II" LED lights up too and stays lit until power-off or until jackd is
started.

Alsamixer displays different chip names.
Stock, i.e. snd-firewire-speakers:     Patched, i.e. snd-oxfw:
    Card: FireWave                         Card: FireWave
    Chip: OXFW970                          Chip: FireWave

Playback with snd-firewire-speakers, using ALSA:

    Channel 1 (L) is subjectively correct.

    There is distortion on channel 2 (R) channel.  The type of distortion
    depends on the audio which is played back.  It can be pops, buzzing,
    or a high continuous hissing tone (I guess a 22.05 kHz tone).   This is
    the same behavior as I remember it from the time when
    snd-firewire-speakers was merged into the mainline in 2.6.39.

    Channels 3..6 (C, S, LS, RS) are mute.
    (As mentioned above, I only tested stereo sound sources.)

Playback with snd-oxfw, using ALSA:

    Subjectively correct stereo sound on channels 1-2 (L, R), mute on
    channel 3 (C), quiet bass sound on channel 4 (S), mute on channels 5-6
    (LS, RS).

    In other words, the patches fix ALSA stereo playback on FireWave.

Playback with snd-firewire-speakers, using Jack on the first 2 channels only
(i.e. I connected out_0 with playback 1, out_1 with playback_2, and left
playback_[3-6] unconnected):

    Subjectively correct stereo sound on channels 1-2 (L, R), mute on
    channel 3 (C), quiet bass sound on channel 4 (S), mute on channels 5-6
    (LS, RS).

Playback with snd-oxfw, Jack on the first 2 channels only:

   Same as snd-firewire-speakers.

Playback with snd-firewire-speakers, using Jack on all channels (I connected
out_0 to playback_[1,3,5] and out_1 with playback_[2,4,6]):

   The first three channels (L, R, C) are alright, the next channel (S) is
   distorted in the same manner as was channel 2 (R) with ALSA 2-channel
   playback, and the last channels (LS, RS) are alright.

Playback with snd-oxfw, using Jack on all channels:

   Same as snd-firewire-speakers.


Conclusion:
-----------

In my tests, the patch set does not regress with LaCie FireWire Speakers,
does not regress with Griffin FireWave + Jack, and it fixes FireWave for
stereo playback through ALSA client applications.  Therefore and for the
much extended device support and features (which I could not test myself
due to lack of hardware), I would be glad if these patches were to be
queued up for mainline merge and am offering a

Tested-by: Stefan Richter <stefanr at s5r6.in-berlin.de> (Speakers, FireWave)

tag. Thank you,
-- 
Stefan Richter
-=====-====- =-=- ==-=-
http://arcgraph.de/sr/


More information about the Alsa-devel mailing list