Hi Takashi,
On 05.09.23 03:20, Takashi Sakamoto wrote:
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:
- Add support for all of models except for MA301 (need additional work to current MR to exclude MA301)
- implement the vendor dependent command to `firewire-dice-protocols` crate[2] with dependency on `ta1394_avc_general` crate[3]
- implement the control primitives to `firewire-dice-protocols` in the fasion of hard-code
- 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.
Yes, we agree that it's appropriate to hardcode the currently available controls.
In that case you will only be using the following vendor specific command to write parameter values [1][2]:
WEISS_CMD_ID_PARAM_OP: read/write to a parameter
[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.
Thank you, we would inform you of any changes. But I doubt that that will ever be necessary.
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.
Thank you Takashi, we highly appreciate your engagement.
Best regards, Rolf Anderegg
[1] https://github.com/weiss-engineering/snd-dice/blob/avc/dice-avc.c#L135 [2] https://github.com/weiss-engineering/snd-dice/blob/avc/dice-avc.c#L201
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