How can I adjust soundcard specific parameters?

In an another thread I asked for setting the sample rate and that’s solved. Now I’ve had a lokk on the rme9652 driver for my RME Digi9636 soundcard. I found so much defines especially RME9652_PRO to set the consumer/professional bit of the spdif functionality of this soundcard.

My general question is how can I adjust these parameter. Is there a tool to do this?

The card still does a IEC958 quality “consumer” although I changed the mode professional with iecset. Nothing I set with iecset seems to effect the cards spdif settings.

I found a tool called rmectrl/xrmectrl but I am not sure about compiling and integrity of the code. Look here:

I also thought about trying out a selfmodified version of rmedigicontrol but I never programmed in C.

Any hints are appreciated

Best regards

I played around a bit and tried QasHCtl ( It seems, that a change of the digital format needs to have a simple mixer control. So when I look at my alsactl output (have a look here:, the IEC958 Configuration is a PCM control, where only ‘IEC958 Playback Default’ is read/writable but I can’t change it.

All mixer controls (iface mixer) could be changed and they take effect on the output of /proc/asound/card0/rme9652

So is it possible just to create a new mixer control in the config file for alsactl? Or better: How do I create a new mixer control to change the spdif mode?


@dtk: this is a driver-code level issue. I wrote the original ALSA driver for the 9652, but I have no recollection of the status of the IEC contol other than some vague recollection that it worked differently than other IEC-compatible devices. You cannot fix or change this from user space (i.e. configuration files or whatever). Someone comfortable with ALSA device driver code would need to review the driver and try to understand what is (not) happening.

@paul: Thanks, that you wrote the driver. :slight_smile: And I wish I was comfortable with alsa driver code. Is there a ressource to learn it? My experience is PHP-based and about 7 years old. :wink:

I’ve had a short look at rme9652.c and the lines responsible for the output of the proc interface are these:
if (rme9652->control_register & RME9652_PRO) {
snd_iprintf(buffer, “IEC958 quality: Professional\n”);
} else {
snd_iprintf(buffer, “IEC958 quality: Consumer\n”);

In my eyes the control register bit RME9652_PRO seems to be responsible for the desired setting.

It’s suspicious to me that I only can change controls of the mixer interface. The controls of the pcm interface could not be changed although there is only two of four controls writable (‘IEC958 Playback Default’ and inactive ‘IEC958 Playback PCM Stream’). But changing the value of IEC958 Playback Default to the value of IEC958 Playback Pro Mask doesn’t take effect.

That can’t be so tricky to change the mode. Does it make sense to define addional mixer controls like the pcm controls?