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

Takashi Sakamoto o-takashi at sakamocchi.jp
Wed May 14 16:15:33 CEST 2014


Hi Stefan,

(May 14 2014 02:43), Stefan Richter wrote:
> Note, current mainline snd-firewire-speakers does _not_ support FireWave
> properly.

Oh...

> On one of the stereo channels, snd-firewire-speakers generates
> a high background hiss.

Do you know which combinations of channels/rate?

> Could be that Jay Fenlason had a solution for this which hadn't made it into the mainline still. Was it something
> about signedness of the PCM data?

I don't know exactly. So here I describe my guess.

As long as seeing responses from FireWave which you and Jay sent to me, 
FireWave has two stream format for the same sampling rate. They're:
  - 6 channels for Multi Bit Linear Audio
  - 2 channels for IEC 60958-3 Conformant data

[alsa-devel] Griffin FireWave stream format information
http://mailman.alsa-project.org/pipermail/alsa-devel/2014-February/073561.html


In detail,
 > - 6ch PCM at 32.0/44.1/48.0/96.0kHz
 > - 2ch IEC 60958-3 at 32.0/44.1/48.0kHz

[alsa-devel] PCM rules for FireWave in speaker.c
http://mailman.alsa-project.org/pipermail/alsa-devel/2014-February/073562.html


I guess that 6ch PCM mode is primary and 2ch IEC 60958-3 mode is 
secondary. So I think that 'firewire-speakers' driver was merged with 
wrong idea that FireWave is 'two playback-only' FireWire device.

ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver
http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/firewire/speakers.c?id=31ef9134eb52636d383a7d0626cbbd345cb94f2f


For the way to switch these two modes, we've already revealed to use 
'CONTROL' ctype of EXTENDED STREAM FORMAT INFORMATION' command with 
'SINGLE' subfunction in 'AV/C Stream Format Infomation Specification'.

But in this RFC, I don't implement this. As long as 'firewire-speakers' 
works fine, FireWave can detect mode automatically, typically by reading 
data block size in CIP headers.

...But if all of 2ch playbacks are failed, I should change codes to use 
this command...

...And current firewire-lib is not conformant to IEC 61883-6 data 
channel because firewire-lib transfers data with wrong AM824 label to 
this channel. I have two reasons for this implementation: one is 
Fireworks/BeBoB seems to ignore labels and eventually can handle data 
correctly, another is to keep the codes simply. If this issue is due to 
this implementation, I should do further work for firewire-lib...

Anyway, I wait for testers' report.


Regards

Takashi Sakamoto
o-takashi at sakamocchi.jp



More information about the Alsa-devel mailing list