Subject: Re: kern/30554: The ParaParaParadise USB controller needs special
To: None <gnats-bugs@netbsd.org>
From: Lennart Augustsson <lennart@augustsson.net>
List: netbsd-bugs
Date: 07/04/2005 03:31:51
Yes, I think you're right.  It's going out again!


Dave Sainty wrote:
> 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
>  
>  ???
>  
>