Subject: Microsoft USB devices
To: None <current-users@netbsd.org>
From: Werner Backes <werner@bit-1.de>
List: current-users
Date: 11/26/2003 21:00:32
Hi,
can anyone confirm that the following devices are properly 
working/non-working
in NetBSD:

- Microsoft SideEinder ForceFeedback 2 Joystick
- Microsoft Force Feedback Wheel

I'm currently focussing on the joystick. dmesg reports:

uhidev0 at uhub2 port 2 configuration 1 interface 0
uhidev0: Microsoft SideWinder Force Feedback 2 Joystick, rev 1.10/a.00, 
addr 3, iclass 3/0
uhidev0: 14 report ids
uhid0 at uhidev0 reportid 1: input=12, output=15, feature=3
uhid1 at uhidev0 reportid 2: input=2, output=7, feature=4
uhid2 at uhidev0 reportid 3: input=0, output=8, feature=4
uhid3 at uhidev0 reportid 4: input=0, output=6, feature=0
uhid4 at uhidev0 reportid 5: input=0, output=3, feature=0
uhid5 at uhidev0 reportid 6: input=0, output=3, feature=0
uhid6 at uhidev0 reportid 7: input=0, output=15, feature=0
uhid7 at uhidev0 reportid 8: input=0, output=2, feature=0
uhid8 at uhidev0 reportid 10: input=0, output=3, feature=0
uhid9 at uhidev0 reportid 11: input=0, output=1, feature=0
uhid10 at uhidev0 reportid 12: input=0, output=1, feature=0
uhid11 at uhidev0 reportid 13: input=0, output=1, feature=0
uhid12 at uhidev0 reportid 14: input=0, output=4, feature=0

uhidctl reports:

# usbhidctl -f /dev/uhid0  -l -a
Joystick.Pointer.X=0
Joystick.Pointer.Y=32
Joystick.Pointer.Rz=0
Joystick.Slider=0
Joystick.Hat_Switch=2
Joystick.Button_1=1
Joystick.Button_2=0
Joystick.Button_3=0
Joystick.Button_4=0
Joystick.Button_5=0
Joystick.Button_6=1
Joystick.Button_7=0
Joystick.Button_8=0

usbhidctl: Unexpected response length: 1 != 11

The values for X/Y seem to be o.k. and change when I move the stick
but the other values don't have random values.

uhidctl -r shows some strangeness, look at the 3. "Input" line:
"Input   size=0 count=1 ......" because "size=0"
Anyone has any idea what could be done to fix this?


# usbhidctl -f /dev/uhid0 -r  

Report descriptor:
Collection page=Generic_Desktop usage=Joystick
Collection page=Generic_Desktop usage=Pointer
Input   size=10 count=1 page=Generic_Desktop usage=X, logical range 
-512..511, physical range 0..1023
Input   size=10 count=1 page=Generic_Desktop usage=Y, logical range 
-512..511, physical range 0..1023
Input   size=0 count=1 page=Generic_Desktop usage=Rz, logical range 
-32..31, physical range 0..63, unit=0x14 exp=0
End collection
Input   size=7 count=1 page=Generic_Desktop usage=Slider, logical range 
0..127, physical range 0..127
Input   size=4 count=1 page=Generic_Desktop usage=Hat_Switch, logical 
range 0..7, physical range 0..315, unit=0x14 exp=0
Input   size=1 count=1 page=Button usage=Button_1, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_2, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_3, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_4, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_5, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_6, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_7, logical range 0..1, 
physical range 0..1
Input   size=1 count=1 page=Button usage=Button_8, logical range 0..1, 
physical range 0..1
Collection page=Physical_Interface_Device usage=0x0021
Output  size=8 count=1 page=Physical_Interface_Device usage=0x0022, 
logical range 1..40, physical range 0..40
Output  size=8 count=1 Array page=Physical_Interface_Device 
usage=0x0028, logical range 1..12, physical range 0..12
Collection page=Physical_Interface_Device usage=0x0025
Output  size=16 count=1 page=Physical_Interface_Device usage=0x0026, 
logical range 0..32767, physical range 0..32767, unit=0x1003
 exp=253
Output  size=16 count=1 page=Physical_Interface_Device usage=0x0027, 
logical range 0..32767, physical range 0..32767, unit=0x1003
 exp=253
Output  size=16 count=1 page=Physical_Interface_Device usage=0x0030, 
logical range 0..32767, physical range 0..32767, unit=0x1003
 exp=253
Output  size=8 count=1 page=Physical_Interface_Device usage=0x0052, 
logical range 0..255, physical range 0..10000
Output  size=8 count=1 page=Physical_Interface_Device usage=0x0053, 
logical range 1..8, physical range 0..8
Collection page=Physical_Interface_Device usage=0x0055
Output  size=1 count=1 page=Generic_Desktop usage=X, logical range 0..1, 
physical range 0..8
Output  size=1 count=1 page=Generic_Desktop usage=Y, logical range 0..1, 
physical range 0..8
End collection
Output  size=0 count=1 page=Physical_Interface_Device usage=0x0056, 
logical range 0..1, physical range 0..8
Collection page=Physical_Interface_Device usage=0x0057
Output  size=8 count=1 page=Physical_Interface_Device usage=0x0001, 
logical range 0..255, physical range 0..36000
Output  size=8 count=1 page=Physical_Interface_Device usage=0x0002, 
logical range 0..255, physical range 0..36000
End collection
Output  size=16 count=1 page=Physical_Interface_Device usage=0x00a7, 
logical range 0..32767, physical range 0..32767, unit=0x1003
 exp=253
End collection
Total   input size 11 bytes
Total  output size 15 bytes
Total feature size 0 bytes




      Werner