Subject: Re: kern/30554: The ParaParaParadise USB controller needs special handling in uhid(4)
To: None <gnats-bugs@netbsd.org, augustss@netbsd.org>
From: Dave Sainty <dave@dtsp.co.nz>
List: netbsd-bugs
Date: 07/02/2005 20:30:53
svs+pr@grep.ru writes:
> >Number: 30554
> >Category: kern
> >Synopsis: The ParaParaParadise USB controller needs special handling in uhid(4)
> >Confidential: no
> >Severity: non-critical
> >Priority: low
> >Responsible: kern-bug-people
> >State: open
> >Class: change-request
> >Submitter-Id: net
> >Arrival-Date: Sun Jun 19 01:50:00 +0000 2005
> >Originator: Sergey Svishchev
> >Release: 3.99.3
> >Organization:
> >Environment:
> >Description:
> The ParaParaParadise controller is a perfectly normal USB HID device with just one quirk -- it needs to be 'woken up' before it will send input reports. It was sold with Konami game for PlayStation2 and the game; there are at least two game simulators out there (pydance and stepmania) that could use this controller, too. Before now, the wake-up method was not known -- see, e.g., http://icculus.org/pyddr/manual.php#install.mat.ppp; it was really easy to discover, though ("usbhidctl -r" shows a feature report with really intriguing name of "LEDs:On-Line" :-)
> >How-To-Repeat:
>
> >Fix:
> --- sys/dev/usb/uhidev.c 27 Feb 2005 00:27:51 -0000 1.24
> +++ sys/dev/usb/uhidev.c 16 Jun 2005 17:45:34 -0000
> @@ -211,6 +211,19 @@
> USB_ATTACH_ERROR_RETURN;
> }
>
> + if (uaa->vendor == USB_VENDOR_HOSIDEN &&
> + uaa->product == USB_PRODUCT_HOSIDEN_PPP) {
> + static uByte reportbuf[] = {1};
> + /*
> + * This device was sold by Konami with its ParaParaParadise
> + * game for PlayStation2. It needs to be "turned on"
> + * before it will send any reports.
> + */
> +
> + usbd_set_report(uaa->iface, UHID_FEATURE_REPORT, 0,
> + &reportbuf, sizeof reportbuf);
> + }
> +
> sc->sc_repdesc = desc;
> sc->sc_repdesc_size = size;
Is this really necessary? Couldn't you just do this from userland
with something like:
usbhidctl -f /dev/uhidXXX -w LEDs:On-Line=1
???