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