[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#664068: USB MIDI keyboard fails to initialize



tags 664068 + upstream patch moreinfo
# regression
severity 664068 important
quit

David Banks wrote:

> Olivier Matz's solution is working for me.  I did not realize that
> this was an interaction with laptop-mode, but indeed the keyboard only
> fails when the AC adapter is not plugged in and the laptop is running
> on battery.  It works every time when the laptop is plugged into the
> AC adapter.  I can confirm that the following line in
> /etc/laptop-mode/conf.d/usb-autosuspend.conf makes the keyboard
> reliably work in all circumstances:
>
> AUTOSUSPEND_USBID_BLACKLIST="0763:2027"

Thanks to both of you for the detective work.  Please test the
attached patch series against a 3.2.y kernel, for example following
the instructions from [1].

Hope that helps,
Jonathan

[1] http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s4.2.2
or the corresponding page from the debian-kernel-handbook package
From: Steffen Müller <steffen.mueller@radio-frei.de>
Date: Mon, 30 Apr 2012 13:05:34 +0200
Subject: usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es

commit 166cb70e97bd83d7ae9bbec6ae59a178fd9bb823 upstream.

Tested-by: Steffen Müller <steffen.mueller@radio-frei.de>
Signed-off-by: Steffen Müller <steffen.mueller@radio-frei.de>
Signed-off-by: Stefan Seyfried <seife+kernel@b1-systems.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 drivers/usb/core/quirks.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 4c65eb6a867a..32d3adc315f5 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -123,6 +123,9 @@ static const struct usb_device_id usb_quirk_list[] = {
 	/* Guillemot Webcam Hercules Dualpix Exchange*/
 	{ USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
 
+	/* Midiman M-Audio Keystation 88es */
+	{ USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
+
 	/* M-Systems Flash Disk Pioneers */
 	{ USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
 
-- 
1.7.10.1

From: Jonathan Nieder <jrnieder@gmail.com>
Date: Tue, 8 May 2012 13:06:41 -0500
Subject: usb: add USB_QUIRK_RESET_RESUME for M-Audio 49

Some USB MIDI keyboards fail to operate after a USB autosuspend.  The
device is recognized by ALSA, but no events are received and the
device goes quiet.

	$ amidi -l
	Dir Device    Name
	IO  hw:1,0,0  Oxygen 49 MIDI 1
	$ amidi -p hw:1,0,0 -d
	<... play some notes ...>
	^C
	0 bytes read

A workaround is to disable USB autosuspend for these devices by
putting AUTOSUSPEND_USBID_BLACKLIST="0763:2027" in
/etc/laptop-mode/conf.d/usb-autosuspend.conf.  In the spirit of commit
166cb70e97bd ("usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es"),
reset the device on resume so this workaround is not needed any more.

Addresses http://bugs.debian.org/664068

Reported-by: David Banks <amoebae@gmail.com>
Reported-by: Olivier MATZ <zer0@droids-corp.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 drivers/usb/core/quirks.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 32d3adc315f5..c3ad7ba9e675 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -126,6 +126,9 @@ static const struct usb_device_id usb_quirk_list[] = {
 	/* Midiman M-Audio Keystation 88es */
 	{ USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
 
+	/* Midiman M-Audio Oxygen 49 */
+	{ USB_DEVICE(0x0763, 0x2027), .driver_info = USB_QUIRK_RESET_RESUME },
+
 	/* M-Systems Flash Disk Pioneers */
 	{ USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
 
-- 
1.7.10.1


Reply to: