Subject: Re: kern/30554: The ParaParaParadise USB controller needs special handling in uhid(4)
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Dave Sainty <dave@dtsp.co.nz>
List: netbsd-bugs
Date: 07/02/2005 08:31:03
The following reply was made to PR kern/30554; it has been noted by GNATS.

From: Dave Sainty <dave@dtsp.co.nz>
To: gnats-bugs@netbsd.org, augustss@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
	netbsd-bugs@netbsd.org, dave@dtsp.co.nz
Subject: Re: kern/30554: The ParaParaParadise USB controller needs special handling in uhid(4) 
Date: Sat, 02 Jul 2005 20:30:53 +1200

 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
 
 ???