[alsa-devel] Unable to find an usable access for 'default'
I'm developing a new ASOC driver, and I get this error message:
ALSA lib pcm_plug.c:729:(snd_pcm_plug_hw_refine_schange) Unable to find an usable access for 'default'
Can someone tell me what this means?
FYI, I'm in the early stages of testing my driver, and before I started I knew nothing about ALSA. This is on an embedded system, so I don't know if my ALSA installation is correct. Am I missing some kind of configuration file?
Timur Tabi wrote:
I'm developing a new ASOC driver, and I get this error message:
ALSA lib pcm_plug.c:729:(snd_pcm_plug_hw_refine_schange) Unable to find an usable access for 'default'
Can someone tell me what this means?
It means that the plug plugin (that the ALSA lib uses to automatically convert between sample formats) was not able to find any combination of format/rate/channels/access that would work with your hardware.
It is possible that some entries in the snd_pcm_hardware struct are set in an inconsistent way. Please show the code of the driver.
This is on an embedded system, so I don't know if my ALSA installation is correct. Am I missing some kind of configuration file?
No, when the plug plugin being executed means that the configuration files for this have been found.
Regards, Clemens
Clemens Ladisch wrote:
It means that the plug plugin (that the ALSA lib uses to automatically convert between sample formats) was not able to find any combination of format/rate/channels/access that would work with your hardware.
Yes, I'm currently debugging that code, so that makes sense. When you say "access", what do you mean by that?
It is possible that some entries in the snd_pcm_hardware struct are set in an inconsistent way. Please show the code of the driver.
I'd like to show the code, but the project is unannounced, so I can't yet. Can you give me a suggestion as to what I should be looking for to resolve this?
Timur Tabi wrote:
Clemens Ladisch wrote:
It means that the plug plugin (that the ALSA lib uses to automatically convert between sample formats) was not able to find any combination of format/rate/channels/access that would work with your hardware.
... When you say "access", what do you mean by that?
ALSA-lib's access type specifies whether to use mmap or not, and whether the sample are interleaved or not. (The SNDRV_PCM_INFO_*INTERLEAVED and SNDRV_PCM_INFO_MMAP* flags specify the capabilities of the device.)
It is possible that some entries in the snd_pcm_hardware struct are set in an inconsistent way. Please show the code of the driver.
I'd like to show the code, but the project is unannounced, so I can't yet. Can you give me a suggestion as to what I should be looking for to resolve this?
Look at the values in the snd_pcm_hardware structure and at the constraints the driver adds manually, if there are any.
HTH Clemens
Clemens Ladisch wrote:
ALSA-lib's access type specifies whether to use mmap or not, and whether the sample are interleaved or not. (The SNDRV_PCM_INFO_*INTERLEAVED and SNDRV_PCM_INFO_MMAP* flags specify the capabilities of the device.)
Is mmap support ever required? I don't have that support turned on in my PCM driver, so could that cause some ALSA applications to fail to match?
Look at the values in the snd_pcm_hardware structure and at the constraints the driver adds manually, if there are any.
Ok, I think I fixed some issues there, but I'm still having problems.
I think part of the problem is that I'm telling ALSA that I only support these sample rates: 192000, 96000, 64000, 48000, 32000, and 16000. For playback, I'm using alsaplayer to play an MP3. Could it be that alsaplayer is picking a sample rate like 44100 and since it doesn't find a match, it's failing? I thought ALSA always did sample rate conversion. Is that not true?
Timur Tabi wrote:
Clemens Ladisch wrote:
ALSA-lib's access type specifies whether to use mmap or not, and whether the sample are interleaved or not. (The SNDRV_PCM_INFO_*INTERLEAVED and SNDRV_PCM_INFO_MMAP* flags specify the capabilities of the device.)
Is mmap support ever required?
No, but the ALSA framework does all mmap stuff for you if it knows what type of memory you're using for the buffer, i.e., when you're using the snd_pcm_lib_* memory management functions.
Look at the values in the snd_pcm_hardware structure and at the constraints the driver adds manually, if there are any.
Ok, I think I fixed some issues there, but I'm still having problems.
I think part of the problem is that I'm telling ALSA that I only support these sample rates: 192000, 96000, 64000, 48000, 32000, and 16000. For playback, I'm using alsaplayer to play an MP3. Could it be that alsaplayer is picking a sample rate like 44100 and since it doesn't find a match, it's failing?
This is possible. Try using aplay with a .wav file that uses a sample format supported by the hardware.
I thought ALSA always did sample rate conversion.
It does when using the "default" device, but it's possible that alsaplayer tries to use some "hw" device that does not.
HTH Clemens
Clemens Ladisch wrote:
This is possible. Try using aplay with a .wav file that uses a sample format supported by the hardware.
I tried that, and I'm still having problems. Here's the output with rule debugging turned on. I can't make sense of this, so could you interpret this for me?
mpc86xx_i2s_startup name=subdevice #0 mpc86xx_pcm_open mpc86xx_machine_startup cs4270_set_dai_sysclk: clk_id=0 freq=12288000 dir=0 cs4270_set_dai_sysclk: found rate 192000 cs4270_set_dai_sysclk: found rate 96000 cs4270_set_dai_sysclk: found rate 64000 cs4270_set_dai_sysclk: found rate 48000 cs4270_set_dai_sysclk: found rate 32000 cs4270_set_dai_sysclk: found rate 16000 cs4270_set_dai_sysclk: min=16000 max=192000 rates=15a8 asoc: CS4270 <-> mpc86xx info: asoc: rate mask 0xa8 asoc: min ch 1 max ch 2 asoc: min rate 16000 max rate 48000 ACCESS = 00000000ffffffffffffffff -> 0000000000000009 FORMAT = 00000000ffffffffffffffff -> 0000000000000080 SUBFORMAT = 00000000ffffffffffffffff -> 0000000000000001 SAMPLE_BITS = [0 4294967295] -> [0 4294967295] FRAME_BITS = [0 4294967295] -> [0 4294967295] CHANNELS = [0 4294967295] -> [1 2] RATE = [0 4294967295] -> [16000 48000] PERIOD_TIME = [0 4294967295] -> [0 4294967295] PERIOD_SIZE = [0 4294967295] -> [0 4294967295] PERIOD_BYTES = [0 4294967295] -> [32 4294967295] PERIODS = [0 4294967295] -> [2 4294967295] BUFFER_TIME = [0 4294967295] -> [0 4294967295] BUFFER_SIZE = [0 4294967295] -> [0 4294967295] BUFFER_BYTES = [0 4294967295] -> [32 4294967295] TICK_TIME = [0 4294967295] -> [1000 1000] Rule 0 [c01b4c2c]: FORMAT = 80 -> 80 Rule 1 [c01b4884]: SAMPLE_BITS = [0 4294967295] -> [32 32] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [0 4294967295] -> [32 64] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 6 [c01b4a14]: CHANNELS = [1 2] -> [1 2] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 4294967295] -> [2 4294967295] Rule 10 [c01b4a14]: PERIOD_SIZE = [0 4294967295] -> [0 2147483647] Rule 11 [c01b4b1c]: PERIOD_SIZE = [0 2147483647] -> [4 1073741823] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 1073741823] -> [4 206158430] Rule 13 [c01b4a98]: BUFFER_SIZE = [0 4294967295] -> [8 4294967295] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 4294967295] -> [8 1073741823] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 1073741823] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 4294967295] -> [32 1649267440] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 4294967295] -> [32 1649267440] Rule 18 [c01b4b1c]: PERIOD_TIME = [0 4294967295] -> (83 4294967295] Rule 19 [c01b4b1c]: BUFFER_TIME = [0 4294967295] -> (166 4294967295] Rule 20 [c01b4968]: BUFFER_BYTES = [32 1649267440] -> [32 1649267440] Rule 21 [c01b49c8]: RATE = [16000 48000] -> [16000 48000] Rule 0 [c01b4c2c]: FORMAT = 80 -> 80 Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 4294967295] -> [2 51539607] Rule 10 [c01b4a14]: PERIOD_SIZE = [4 206158430] -> [4 103079215] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 1649267440] -> [32 824633720] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (83 4294967295] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 51539607] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] RATE = [16000 16000] -> [16000 16000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 68719476] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 549755808] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [32 549755808] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> [250 4294967250] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> [500 4294967250] Rule 20 [c01b4968]: BUFFER_BYTES = [32 549755808] -> [32 549755808] Rule 21 [c01b49c8]: RATE = [16000 16000] -> [16000 16000] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 8 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 17179869] Rule 10 [c01b4a14]: PERIOD_SIZE = [4 68719476] -> [4 34359738] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 549755808] -> [32 274877904] Rule 18 [c01b4b1c]: PERIOD_TIME = [250 4294967250] -> [250 2147483625] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 17179869] -> [2 17179869] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (83 2147483646) Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (166 4294967292) Rule 21 [c01b49c8]: RATE = [48000 48000] -> [48000 48000] Rule 7 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 8 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] CHANNELS = [1 4294967295] -> [1 2] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [32 64] CHANNELS = [1 1] -> [1 1] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [32 32] Rule 6 [c01b4a14]: CHANNELS = [1 1] -> [1 1] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 412316860] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [64 824633720] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (166 4294967295] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (333 4294967295] Rule 20 [c01b4968]: BUFFER_BYTES = [64 824633720] -> [64 824633720] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 4 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 5 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 25769803] Rule 10 [c01b4a14]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 11 [c01b4b1c]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 12 [c01b4ba4]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [16 206158430] -> [16 206158430] CHANNELS = [2 2] -> [2 2] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [64 64] Rule 6 [c01b4a14]: CHANNELS = [2 2] -> [2 2] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 824633720] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [64 1649267440] Rule 20 [c01b4968]: BUFFER_BYTES = [64 1649267440] -> [64 1649267440] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 5 [c01b4b1c]: FRAME_BITS = [64 64] -> [64 64] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] RATE = [16000 16000] -> [16000 16000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 68719476] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 549755808] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [32 549755808] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> [250 4294967250] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> [500 4294967250] Rule 20 [c01b4968]: BUFFER_BYTES = [32 549755808] -> [32 549755808] Rule 21 [c01b49c8]: RATE = [16000 16000] -> [16000 16000] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 8 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 17179869] Rule 10 [c01b4a14]: PERIOD_SIZE = [4 68719476] -> [4 34359738] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 549755808] -> [32 274877904] Rule 18 [c01b4b1c]: PERIOD_TIME = [250 4294967250] -> [250 2147483625] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 17179869] -> [2 17179869] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (83 2147483646) Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (166 4294967292) Rule 21 [c01b49c8]: RATE = [48000 48000] -> [48000 48000] Rule 7 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 8 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] CHANNELS = [1 1] -> [1 1] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [32 32] Rule 6 [c01b4a14]: CHANNELS = [1 1] -> [1 1] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 412316860] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [64 824633720] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (166 4294967295] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (333 4294967295] Rule 20 [c01b4968]: BUFFER_BYTES = [64 824633720] -> [64 824633720] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 4 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 5 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 25769803] Rule 10 [c01b4a14]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 11 [c01b4b1c]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 12 [c01b4ba4]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [16 206158430] -> [16 206158430] CHANNELS = [2 2] -> [2 2] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [64 64] Rule 6 [c01b4a14]: CHANNELS = [2 2] -> [2 2] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 824633720] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [64 1649267440] Rule 20 [c01b4968]: BUFFER_BYTES = [64 1649267440] -> [64 1649267440] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 5 [c01b4b1c]: FRAME_BITS = [64 64] -> [64 64] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] PERIOD_TIME = (83 4294967295) -> (83 4294967295) Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] ACCESS = 00000000ffffffffffffffff -> 0000000000000009 FORMAT = 00000000ffffffffffffffff -> 0000000000000080 SUBFORMAT = 00000000ffffffffffffffff -> 0000000000000001 SAMPLE_BITS = [0 4294967295] -> [0 4294967295] FRAME_BITS = [0 4294967295] -> [0 4294967295] CHANNELS = [0 4294967295] -> [1 2] RATE = [0 4294967295] -> [16000 48000] PERIOD_TIME = [0 4294967295] -> [0 4294967295] PERIOD_SIZE = [0 4294967295] -> [0 4294967295] PERIOD_BYTES = [0 4294967295] -> [32 4294967295] PERIODS = [0 4294967295] -> [2 4294967295] BUFFER_TIME = [0 4294967295] -> [0 4294967295] BUFFER_SIZE = [0 4294967295] -> [0 4294967295] BUFFER_BYTES = [0 4294967295] -> [32 4294967295] TICK_TIME = [0 4294967295] -> [1000 1000] Rule 0 [c01b4c2c]: FORMAT = 80 -> 80 Rule 1 [c01b4884]: SAMPLE_BITS = [0 4294967295] -> [32 32] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [0 4294967295] -> [32 64] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 6 [c01b4a14]: CHANNELS = [1 2] -> [1 2] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 4294967295] -> [2 4294967295] Rule 10 [c01b4a14]: PERIOD_SIZE = [0 4294967295] -> [0 2147483647] Rule 11 [c01b4b1c]: PERIOD_SIZE = [0 2147483647] -> [4 1073741823] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 1073741823] -> [4 206158430] Rule 13 [c01b4a98]: BUFFER_SIZE = [0 4294967295] -> [8 4294967295] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 4294967295] -> [8 1073741823] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 1073741823] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 4294967295] -> [32 1649267440] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 4294967295] -> [32 1649267440] Rule 18 [c01b4b1c]: PERIOD_TIME = [0 4294967295] -> (83 4294967295] Rule 19 [c01b4b1c]: BUFFER_TIME = [0 4294967295] -> (166 4294967295] Rule 20 [c01b4968]: BUFFER_BYTES = [32 1649267440] -> [32 1649267440] Rule 21 [c01b49c8]: RATE = [16000 48000] -> [16000 48000] Rule 0 [c01b4c2c]: FORMAT = 80 -> 80 Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 4294967295] -> [2 51539607] Rule 10 [c01b4a14]: PERIOD_SIZE = [4 206158430] -> [4 103079215] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 1649267440] -> [32 824633720] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (83 4294967295] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 51539607] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [4 103079215] RATE = [16000 16000] -> [16000 16000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 68719476] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 549755808] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [32 549755808] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> [250 4294967250] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> [500 4294967250] Rule 20 [c01b4968]: BUFFER_BYTES = [32 549755808] -> [32 549755808] Rule 21 [c01b49c8]: RATE = [16000 16000] -> [16000 16000] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 5 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 8 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 17179869] Rule 10 [c01b4a14]: PERIOD_SIZE = [4 68719476] -> [4 34359738] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 14 [c01b4b1c]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 68719476] -> [8 68719476] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 549755808] -> [32 274877904] Rule 18 [c01b4b1c]: PERIOD_TIME = [250 4294967250] -> [250 2147483625] Rule 4 [c01b4b1c]: FRAME_BITS = [32 64] -> [32 64] Rule 7 [c01b4b1c]: RATE = [16000 16000] -> [16000 16000] Rule 9 [c01b4a14]: PERIODS = [2 17179869] -> [2 17179869] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 34359738] -> [4 34359738] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 34359738] -> [4 34359738] RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (83 2147483646) Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (166 4294967292) Rule 21 [c01b49c8]: RATE = [48000 48000] -> [48000 48000] Rule 7 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 8 [c01b4b1c]: RATE = [48000 48000] -> [48000 48000] Rule 12 [c01b4ba4]: PERIOD_SIZE = [4 103079215] -> [4 103079215] Rule 15 [c01b4ba4]: BUFFER_SIZE = [8 206158430] -> [8 206158430] CHANNELS = [1 1] -> [1 1] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 3 [c01b4a98]: FRAME_BITS = [32 64] -> [32 32] Rule 6 [c01b4a14]: CHANNELS = [1 1] -> [1 1] Rule 11 [c01b4b1c]: PERIOD_SIZE = [4 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [8 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 16 [c01b4ba4]: PERIOD_BYTES = [32 824633720] -> [32 412316860] Rule 17 [c01b4ba4]: BUFFER_BYTES = [32 1649267440] -> [64 824633720] Rule 18 [c01b4b1c]: PERIOD_TIME = (83 4294967295] -> (166 4294967295] Rule 19 [c01b4b1c]: BUFFER_TIME = (166 4294967295] -> (333 4294967295] Rule 20 [c01b4968]: BUFFER_BYTES = [64 824633720] -> [64 824633720] Rule 2 [c01b4a14]: SAMPLE_BITS = [32 32] -> [32 32] Rule 4 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 5 [c01b4b1c]: FRAME_BITS = [32 32] -> [32 32] Rule 7 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 8 [c01b4b1c]: RATE = [16000 48000] -> [16000 48000] Rule 9 [c01b4a14]: PERIODS = [2 51539607] -> [2 25769803] Rule 10 [c01b4a14]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 11 [c01b4b1c]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 12 [c01b4ba4]: PERIOD_SIZE = [8 103079215] -> [8 103079215] Rule 13 [c01b4a98]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 14 [c01b4b1c]: BUFFER_SIZE = [16 206158430] -> [16 206158430] Rule 15 [c01b4ba4]: BUFFER_SIZE = [16 206158430] -> [16 206158430]
At this point, my driver is closed and
Timur Tabi wrote:
Clemens Ladisch wrote:
This is possible. Try using aplay with a .wav file that uses a sample format supported by the hardware.
I tried that, and I'm still having problems. Here's the output with rule debugging turned on. I can't make sense of this, so could you interpret this for me?
The output shows that the application tries to set several parameters, but never sets all parameters.
Please play to the "hw" device instead of the "default" one so that alsa-lib doesn't try other sample formats.
It would help to tell me what the sample format of the file actually is.
And please show at least the struct snd_pcm_hardware definition of your driver, together with any code that changes its filed and all calls to snd_pcm_hw_constraint_*, if any.
Regards, Clemens
participants (2)
-
Clemens Ladisch
-
Timur Tabi