[PATCH] ALSA: usb-audio: Fix "cannot set freq 48000 to ep 0x3" msgs
On some USB speaker devices(Jabra/Logitech) we see above error msg when connecting device to computer and kernel is probing the device.
Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes the error go away.
Signed-off-by: Joakim Tjernlund joakim.tjernlund@infinera.com Cc: stable@vger.kernel.org --- sound/usb/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index f10f4e6d3fb8..d9ac8663a48b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, /* try to set the interface... */ usb_set_interface(chip->dev, iface_no, 0); snd_usb_init_pitch(chip, fp); - snd_usb_init_sample_rate(chip, fp, fp->rate_max); usb_set_interface(chip->dev, iface_no, altno); + snd_usb_init_sample_rate(chip, fp, fp->rate_max); } return 0; }
Adding Michael Ralston michael@ralston.id.au
He did have problems with his behringer UMC404HD device when this whole seq. was removed. Ralston, can you try if the below change affects your device?
Jocke
On Thu, 2023-06-01 at 15:11 +0200, Joakim Tjernlund wrote:
On some USB speaker devices(Jabra/Logitech) we see above error msg when connecting device to computer and kernel is probing the device.
Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes the error go away.
Signed-off-by: Joakim Tjernlund joakim.tjernlund@infinera.com Cc: stable@vger.kernel.org
sound/usb/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index f10f4e6d3fb8..d9ac8663a48b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, /* try to set the interface... */ usb_set_interface(chip->dev, iface_no, 0); snd_usb_init_pitch(chip, fp);
usb_set_interface(chip->dev, iface_no, altno);snd_usb_init_sample_rate(chip, fp, fp->rate_max);
} return 0;snd_usb_init_sample_rate(chip, fp, fp->rate_max);
}
On Thu, 01 Jun 2023 16:28:05 +0200, Joakim Tjernlund wrote:
Adding Michael Ralston michael@ralston.id.au
He did have problems with his behringer UMC404HD device when this whole seq. was removed. Ralston, can you try if the below change affects your device?
Sorry for the late reaction, as I've been off in the last weeks.
The code sequence there seems pretty sensitive, and swapping or dropping the call might break things easily on certain devices, unfortunately. So, I guess we can't take the patch as is. If any, we need to fiddle the call order depending on the device quirk or such. I guess we may try to fit with the existing quirk flag. Let me check it later.
thanks,
Takashi
Jocke
On Thu, 2023-06-01 at 15:11 +0200, Joakim Tjernlund wrote:
On some USB speaker devices(Jabra/Logitech) we see above error msg when connecting device to computer and kernel is probing the device.
Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes the error go away.
Signed-off-by: Joakim Tjernlund joakim.tjernlund@infinera.com Cc: stable@vger.kernel.org
sound/usb/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index f10f4e6d3fb8..d9ac8663a48b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, /* try to set the interface... */ usb_set_interface(chip->dev, iface_no, 0); snd_usb_init_pitch(chip, fp);
usb_set_interface(chip->dev, iface_no, altno);snd_usb_init_sample_rate(chip, fp, fp->rate_max);
} return 0;snd_usb_init_sample_rate(chip, fp, fp->rate_max);
}
On Mon, 2023-06-05 at 09:39 +0200, Takashi Iwai wrote:
On Thu, 01 Jun 2023 16:28:05 +0200, Joakim Tjernlund wrote:
Adding Michael Ralston michael@ralston.id.au
He did have problems with his behringer UMC404HD device when this whole seq. was removed. Ralston, can you try if the below change affects your device?
Sorry for the late reaction, as I've been off in the last weeks.
NP.
The code sequence there seems pretty sensitive, and swapping or dropping the call might break things easily on certain devices, unfortunately. So, I guess we can't take the patch as is. If any, we need to fiddle the call order depending on the device quirk or such. I guess we may try to fit with the existing quirk flag. Let me check it later.
yes, this is tricky. To me it look like this code will always set 48000 sample rate and not all devices support that on all EPs. Maybe one can get away with not setting sample rate at all? Just guessing though.
Jocke
thanks,
Takashi
Jocke
On Thu, 2023-06-01 at 15:11 +0200, Joakim Tjernlund wrote:
On some USB speaker devices(Jabra/Logitech) we see above error msg when connecting device to computer and kernel is probing the device.
Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes the error go away.
Signed-off-by: Joakim Tjernlund joakim.tjernlund@infinera.com Cc: stable@vger.kernel.org
sound/usb/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index f10f4e6d3fb8..d9ac8663a48b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, /* try to set the interface... */ usb_set_interface(chip->dev, iface_no, 0); snd_usb_init_pitch(chip, fp);
usb_set_interface(chip->dev, iface_no, altno);snd_usb_init_sample_rate(chip, fp, fp->rate_max);
} return 0;snd_usb_init_sample_rate(chip, fp, fp->rate_max);
}
On Mon, 05 Jun 2023 15:21:51 +0200, Joakim Tjernlund wrote:
On Mon, 2023-06-05 at 09:39 +0200, Takashi Iwai wrote:
On Thu, 01 Jun 2023 16:28:05 +0200, Joakim Tjernlund wrote:
Adding Michael Ralston michael@ralston.id.au
He did have problems with his behringer UMC404HD device when this whole seq. was removed. Ralston, can you try if the below change affects your device?
Sorry for the late reaction, as I've been off in the last weeks.
NP.
The code sequence there seems pretty sensitive, and swapping or dropping the call might break things easily on certain devices, unfortunately. So, I guess we can't take the patch as is. If any, we need to fiddle the call order depending on the device quirk or such. I guess we may try to fit with the existing quirk flag. Let me check it later.
yes, this is tricky. To me it look like this code will always set 48000 sample rate and not all devices support that on all EPs. Maybe one can get away with not setting sample rate at all? Just guessing though.
I guess it should work without setting the rate explicitly, but as already mentioned, some devices (firmware) might need it. Who knows.
The vendors apparently test only with Windows and/or MacOS, and issuing unexpected commands (or missing the expected command) can screw up firmware...
Takashi
Jocke
thanks,
Takashi
Jocke
On Thu, 2023-06-01 at 15:11 +0200, Joakim Tjernlund wrote:
On some USB speaker devices(Jabra/Logitech) we see above error msg when connecting device to computer and kernel is probing the device.
Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes the error go away.
Signed-off-by: Joakim Tjernlund joakim.tjernlund@infinera.com Cc: stable@vger.kernel.org
sound/usb/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index f10f4e6d3fb8..d9ac8663a48b 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, /* try to set the interface... */ usb_set_interface(chip->dev, iface_no, 0); snd_usb_init_pitch(chip, fp);
usb_set_interface(chip->dev, iface_no, altno);snd_usb_init_sample_rate(chip, fp, fp->rate_max);
} return 0;snd_usb_init_sample_rate(chip, fp, fp->rate_max);
}
participants (2)
-
Joakim Tjernlund
-
Takashi Iwai