Re: ALSA: dice: improve support for Weiss devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Rolf,

On Mon, Sep 04, 2023 at 06:00:24PM +0200, Rolf Anderegg wrote:
> Hi Takashi,
> 
> Glad that we could be of help.
> We checked this on the firmware side and yes, we can confirm that the
> Weiss MAN301 is the only device with AV/C protocol (using vendor dependent
> commands).
 
OK. It is good firmware design to make snd-dice-ctl-service simpler.

> We are deploying a small set of commands in order to probe and control
> the parameters on the MAN301:
> 
> WEISS_CMD_ID_DEV_CONST:
> 	probe the number of parameters
> 
> WEISS_CMD_ID_PARAM_OP:
> 	read/write to a parameter
> 
> WEISS_CMD_ID_PARAM_INFO:
> 	read parameter info (index, type, iface type, name)
> 
> WEISS_CMD_ID_ENUM_ITEM_INFO:
> 	read parameter enum type info
> 
> This allows us to populate and control snd-control instances that represent
> the device's featured parameters [1].
> 
> How would you like to proceed for `snd-firewire-ctl-services`?
> We can start by giving you the output of `amixer contents` for the MAN301,
> so you see all the controls and their possible values (see below).
 
Great. In my current plan for snd-dice-ctl-service, action items would
be enumerated in below:

1. Add support for all of models except for MA301 (need additional work to
   current MR to exclude MA301)
2. implement the vendor dependent command to `firewire-dice-protocols`
   crate[2] with dependency on `ta1394_avc_general` crate[3]
3. implement the control primitives to `firewire-dice-protocols` in the
   fasion of hard-code
4. Add support for MA301

The reason of hard-code against your implementation in dice-avc.c is
to express hardware specification in code. FireWire audio devices are 
nowadays not updated anymore, and I think the explicit control primitives
is helpful to remaining users.

[1] https://github.com/alsa-project/snd-firewire-ctl-services/pull/175
[2] https://crates.io/crates/firewire-dice-protocols
[3] https://docs.rs/ta1394-avc-general/latest/ta1394_avc_general/

> Let us know if there's any additional information we can provide.

If the control primitives have been changed (newly added or abandoned)
between several firmware versions, I would like you to inform it to me.

> Kind regards,
> Rolf Anderegg
> 
> 
> [1] https://github.com/weiss-engineering/snd-dice/blob/avc/dice-avc.c
 
Thanks for your delivery of useful information for Weiss models. It is
my pleasure to maintain Linux systems to use them for 6 more years.


Regards

Takashi Sakamoto

> --
> $ amixer contents
> numid=3,iface=CARD,name='Dual Wire Mode Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=off
> numid=4,iface=CARD,name='Dual Wire Word Clock Half Rate Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=off
> numid=1,iface=CARD,name='Sync source'
>   ; type=ENUMERATED,access=rw------,values=1,items=13
>   ; Item #0 'AES1'
>   ; Item #1 'AES2'
>   ; Item #2 'AES3'
>   ; Item #3 'AES4'
>   ; Item #4 'AES'
>   ; Item #5 'ADAT'
>   ; Item #6 'TDIF'
>   ; Item #7 'Wordclock'
>   ; Item #8 'ARX1'
>   ; Item #9 'ARX2'
>   ; Item #10 'ARX3'
>   ; Item #11 'ARX4'
>   ; Item #12 'Internal'
>   : values=2
> numid=10,iface=MIXER,name='DAC::Analog Output Level'
>   ; type=ENUMERATED,access=rw------,values=1,items=4
>   ; Item #0 '0 dB'
>   ; Item #1 '-10 dB'
>   ; Item #2 '-20 dB'
>   ; Item #3 '-30 dB'
>   : values=1
> numid=8,iface=MIXER,name='DAC::DAC Filter Type'
>   ; type=ENUMERATED,access=rw------,values=1,items=2
>   ; Item #0 'A'
>   ; Item #1 'B'
>   : values=0
> numid=9,iface=MIXER,name='DAC::DAC Output Playback Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=on
> numid=7,iface=MIXER,name='DAC::DAC Polarity Inversion Playback Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=off
> numid=2,iface=MIXER,name='Digital Input Capture Route'
>   ; type=ENUMERATED,access=rw------,values=1,items=3
>   ; Item #0 'AES/EBU (XLR)'
>   ; Item #1 'S/PDIF (RCA)'
>   ; Item #2 'S/PDIF (TOS)'
>   : values=2
> numid=6,iface=MIXER,name='RCA::RCA Output Playback Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=on
> numid=5,iface=MIXER,name='XLR::XLR Output Playback Switch'
>   ; type=BOOLEAN,access=rw------,values=1
>   : values=on
> 
> On 31.08.23 15:28, Takashi Sakamoto wrote:
> > Hi Michele,
> > 
> > Thanks for your contribution of configuration ROM for Weiss models[1].
> > I'm sorry for my little reaction but currently I'm working for Debian ITP
> > to linux-firewire-utils package[2][3].
> > 
> > As a quick glance, all of configuration ROMs except for Weiss MAN301
> > include single unit directory, while the exception includes two unit
> > directories; 1394TA AV/C protocol and TCAT protocol. It means that
> > the vendor-dependent AV/C command[4] is implemented in MAN301, but not
> > in the others. Then I would like to figure out whether it is correct or
> > not. If it is unique for MAN301, the implementation of control service
> > can be simpler to support the command just for MAN301.
> > 
> > [1] https://github.com/takaswie/am-config-roms/pull/5
> > [2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050551
> > [3] https://mentors.debian.net/package/linux-firewire-utils/
> > [4] https://github.com/weiss-engineering/snd-dice/blob/avc/dice-avc.c
> > 
> > 
> > Regards
> > 
> > Takashi Sakamoto



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux