-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Link to Log excerpts: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b
Hi @takaswie,
Very pleased to see how good is firewire alsa device controls. Now that they are integrated into latest kernel. (and am running 6.5 / 6.6 here)...
Most things works pretty well and with sudo alsactl store to save the state (between reboots).
So 1st set my saffire pro 40 interface into 96khz mode:
# 1. use cget / cset to set hardware config = '3' == 96khz
$ amixer -c0 cget iface=CARD,name=clock-rate
numid=11,iface=CARD,name='clock-rate'
; type=ENUMERATED,access=rw----W-,values=1,items=4
; Item #0 '44100'
; Item #1 '48000'
; Item #2 '88200'
; Item #3 '96000'
: values=3
# 2. remove any old (or broken) alsa settings
$ sudo rm /var/lib/alsa/asound.state
# 3. persist card settings across restarts
$ sudo alsactl storeUnfortunately when pipewire daemon starts, it goes through all of it's plugins stack loading and probing to alsa. With Tim's libspa ? Or what is the alsa apis. And then inside of pipewire, the object properties onto any hardware streams still maxes out to only the default 48khz. So the hardware alsa setting rate up to 96k does not get noticed? Or perhaps (if not a bug or other problem)... then there is some other tricks needed for this?
Here we can see in the pw-dump the object properties onto the hardware's node objects PipeWire:Interface:Node, we can see here:
"params": {
"EnumFormat": [
{
"mediaType": "audio",
"mediaSubtype": "raw",
"format": "S32LE",
"rate": {
"default": 48000,
"min": 44100,
"max": 48000
},And of course, that the reported "max" rate is 48000 --> pipewire plays the streams at 48k
Link: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b#file-pw-top-c-L7
So looking into the alsa kernel sources, I can indeed see that for snd_dice kernel module... we have those different modes depending upon the hardware etc... that is the array of snd_dice_rates
However when i query the kernel module, there is not any kernel params to set (no options) to configure the modes, for to try and force the rates.
So I was wondering @takaswie what can I try next about forcing the 96khz rate? For example, should I try to force pipewire to override the pipewire properties? And then see what might happen.
Or is there some other hardware setting / modes to configure in the alsa hardware interface... some more cset commands to bring the hardware into 96khz mode setting?