Hans Petter Selasky <hselasky@c2i.net> writes:

> On Thursday 15 November 2012 17:37:37 Jan Beich wrote:
>
>> Many linux games and wine provide support only for linux joystick.
>> emulators/joytran helps but some games do not even support more than one
>> keyboard player e.g., Shank.
>> 
>> As devel/linux-js is nowadays broken I've tried to comile webcamd with
>> CONFIG_INPUT_JOYDEV but it still fails to attach to my usb gamepad.
>> OTOH, webcamd has no trouble attaching to my wacom tablet. Any clue
>> what may be missing?
>> 
>> --
>> # ubuntu (laptop)
>> [   33.907951] usb 2-1.5: new low-speed USB device number 3 using ehci_hcd
>> [   34.097118] input: Mega World Thrustmaster dual analog 3.2 as
>> /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input15 [ 
>>  34.097409] generic-usb 0003:044F:B315.0001: input,hidraw0: USB HID v1.10
>> Gamepad [Mega World Thrustmaster dual analog 3.2] on
>> usb-0000:00:1d.0-1.5/input0 [   34.097427] usbcore: registered new
>> interface driver usbhid
>> [   34.097430] usbhid: USB HID core driver
>> 
>> # freebsd (foobox)
>> $ usbconfig -d 3.3 dump_curr_config_desc
>> ugen3.3: <Thrustmaster dual analog 3.2 Mega World> at usbus3, cfg=0 md=HOST
>> spd=LOW (1.5Mbps) pwr=ON
>> 
>> 
>>  Configuration index 0
>> 
>>     bLength = 0x0009
>>     bDescriptorType = 0x0002
>>     wTotalLength = 0x0022
>>     bNumInterfaces = 0x0001
>>     bConfigurationValue = 0x0001
>>     iConfiguration = 0x0000  <no string>
>>     bmAttributes = 0x00a0
>>     bMaxPower = 0x00af
>> 
>>     Interface 0
>>       bLength = 0x0009
>>       bDescriptorType = 0x0004
>>       bInterfaceNumber = 0x0000
>>       bAlternateSetting = 0x0000
>>       bNumEndpoints = 0x0001
>>       bInterfaceClass = 0x0003
>>       bInterfaceSubClass = 0x0000
>>       bInterfaceProtocol = 0x0000
>>       iInterface = 0x0000  <no string>
>> 
>>       Additional Descriptor
>> 
>>       bLength = 0x09
>>       bDescriptorType = 0x21
>>       bDescriptorSubType = 0x10
>>        RAW dump:
>>        0x00 | 0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x6c,
>>        0x08 | 0x00
>> 
>>      Endpoint 0
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0081  <IN>
>>         bmAttributes = 0x0003  <INTERRUPT>
>>         wMaxPacketSize = 0x0008
>>         bInterval = 0x000a
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>> 
>> $ webcamd -d 3.3
>> webcamd: Cannot find USB device
>
> Hi,
>
> How did you configure this?
>
> Did you install work/webcamd*/tools/linux_make ?
>
> And did you run "make -C work/webcamd* configure", after make extract patch?
>
> --HPS

I've added a proper do-configure and made sure joydev.o is actually built.

  $ nm =webcamd | fgrep joy
  0000000000408980 t joydev_cleanup
  0000000000407860 t joydev_connect
  0000000000407cd0 t joydev_disconnect
  0000000000407640 t joydev_event
  0000000000407630 t joydev_exit
  0000000000a0b190 d joydev_exit_p
  00000000004088d0 t joydev_fasync
  000000000069d960 r joydev_fops
  0000000000408a20 t joydev_free
  00000000009885a0 d joydev_handler
  000000000069d9e0 r joydev_ids
  0000000000407620 t joydev_init
  0000000000a09fd0 d joydev_init_p
  0000000000408140 t joydev_ioctl
  00000000004077f0 t joydev_match
  0000000000408750 t joydev_open
  00000000004080d0 t joydev_poll
  0000000000407d10 t joydev_read
  00000000004088e0 t joydev_release
  0000000000a104e0 b joydev_table
  0000000000988618 d joydev_table_mutex

I've also tried

  $ pkill devd
  $ kldunload uhid
  $ webcamd -d 3.2
  webcamd: Cannot find USB device

--
$ usbconfig -d 3.2 dump_device_desc
ugen3.2: <Thrustmaster dual analog 3.2 Mega World> at usbus3, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0110
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0008
  idVendor = 0x044f
  idProduct = 0xb315
  bcdDevice = 0x0101
  iManufacturer = 0x0001  <Mega World>
  iProduct = 0x0002  <Thrustmaster dual analog 3.2>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001

$ usbhidctl -f /dev/uhid0 -r
Report descriptor:
Collection type=Application page=Generic_Desktop usage=Game_Pad
Collection type=Physical page=Generic_Desktop usage=Pointer
Input   rid=0 size=1 count=1 page=Button usage=Button_1, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_2, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_3, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_4, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_5, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_6, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_7, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_8, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_9, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_10, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_11, logical range 0..1
Input   rid=0 size=1 count=1 page=Button usage=Button_12, logical range 0..1
Input   rid=0 size=4 count=1 page=Generic_Desktop usage=Hat_Switch, logical range 0..7, physical range 0..270, unit=0x40 exp=0
Input   rid=0 size=8 count=1 page=Generic_Desktop usage=X, logical range -128..127, physical range 0..255
Input   rid=0 size=8 count=1 page=Generic_Desktop usage=Y, logical range -128..127, physical range 0..255
Input   rid=0 size=8 count=1 page=Generic_Desktop usage=Rz, logical range -128..127, physical range 0..255
Input   rid=0 size=8 count=1 page=Generic_Desktop usage=Slider, logical range 0..255, physical range 0..255
Output  rid=0 size=8 count=1 page=Generic_Desktop usage=0x00bb, logical range 0..255, physical range 0..255
Output  rid=0 size=8 count=1 page=Generic_Desktop usage=0x00bb, logical range 0..255, physical range 0..255
Output  rid=0 size=8 count=1 page=Generic_Desktop usage=0x00bb, logical range 0..255, physical range 0..255
Output  rid=0 size=8 count=1 page=Generic_Desktop usage=0x00bb, logical range 0..255, physical range 0..255
End collection
End collection
Total   input size 7 bytes
Total  output size 4 bytes
Total feature size 0 bytes


And my patch for do-configure + build fix should follow
