Revision: 03.01.2014
Drafted: 03.01.2014

Game Controlls and the Web

This complements the main page.

Pad #1 Big Ben PCPADVIBASS

My first buy was a no name controller at Game Stop at Euro 9.99. It's a PS-Style variatoon and includes even a force feedback (dual motor rumble).

Packaging

bigben in blister picture 1bigben in blister picture 2

Basic Data

Brandnamebigben play
ProductnamePCPADVIBASS
Product-IDBB5007Slv(Slv = Silver)
USB Product String"Generic USB Joystick "
USB-VID1345Sino Lite Technology Corp.
USB-PID1000
USB-REV0100
USB-Class(es)03/00/00
USB-Device (Windows)USBPDO-12
gamepad.id (Firefox)"1345-1000-Generic USB Joystick"
Layout StylePS
SwitchableYes: Default digital, switchable to Analogue

USB Descriptor Information from USB Device Tree Viewer

    =========================== USB Port2 ===========================

Connection Status        : Device is connected
Port Chain               : 1-5-1-2

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Input Device
Device ID                : USB\VID_1345&PID_1000\7&D2AC4E7&0&2
Driver KeyName           : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0008 (GUID_DEVCLASS_HIDCLASS)
Driver                   : C:\Windows\system32\DRIVERS\hidusb.sys (Version: 6.1.7601.17514  Date: 2010-11-21)
Legacy BusType           : PNPBus
Class                    : HIDClass
Service                  : HidUsb
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0009
Location IDs             : PCIROOT(0)#PCI(1202)#USBROOT(0)#USB(5)#USB(1)#USB(2)
Container ID             : {55389d9d-6a6d-11e3-a07b-bcaec58addcf}
Manufacturer Info        : (Standard system devices)
Capabilities             : Removable, SurpriseRemovalOK
Address                  : 2
Problem Code             : 0
Power State              : D0 (supported: D0, D2, D3, wake from D0, wake from D2)
 Child Device 1          : HID-compliant game controller
  Device ID              : HID\VID_1345&PID_1000\8&9594F53&0&0000
  Class                  : HIDClass

        ---------------- Connection Information ---------------
Connection Index         : 0x02
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01
Device Address           : 0x04
Is Hub                   : 0x00 (no)
Number Of Open Pipes     : 0x01 (1)
Device Bus Speed         : 0x00 (Low-Speed)
Pipe0ScheduleOffset      : 0x00 (0)

        ------------------ Device Descriptor ------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x110 (USB Version 1.10)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x08 (8 bytes)
idVendor                 : 0x1345
idProduct                : 0x1000
bcdDevice                : 0x100
iManufacturer            : 0x00
iProduct                 : 0x02
 Language 0x0409         : "Generic   USB  Joystick  "  *!*CAUTION  trailing space characters
iSerialNumber            : 0x00
bNumConfigurations       : 0x01

        -------------- Configuration Descriptor ---------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0022 (34 bytes)
bNumInterfaces           : 0x01
bConfigurationValue      : 0x01
iConfiguration           : 0x00
bmAttributes             : 0x80 (Bus Powered)
MaxPower                 : 0xFA (500 mA)

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0110 (HID Version 1.10)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0079 (121 bytes)
  05 01             Usage Page (Generic Desktop Controls)
  09 04             Usage (Joystick)
  A1 01             Collection (Application)
  09 01               Usage (Pointer)
  A1 00               Collection (Physical)
  15 00                 Logical Minimum (0)
  26 FF 00              Logical Maximum (255)
  35 00                 Physical Minimum (0)
  46 FF 00              Physical Maximum (255)
  05 01                 Usage Page (Generic Desktop Controls)
  09 30                 Usage (Direction-X)
  09 31                 Usage (Direction-Y)
  09 32                 Usage (Direction-Z)
  09 35                 Usage (Rotate-Z)
  75 08                 Report Size (8)
  95 04                 Report Count (4)
  81 02                 Input (Var)
  C0                  End Collection
  05 09               Usage Page (Buttons)
  19 01               Usage Minimum (1)
  29 0C               Usage Maximum (12)
  15 00               Logical Minimum (0)
  25 01               Logical Maximum (1)
  75 01               Report Size (1)
  95 0C               Report Count (12)
  81 02               Input (Var)
  75 01               Report Size (1)
  95 04               Report Count (4)
  81 01               Input (Const)
  05 01               Usage Page (Generic Desktop Controls)
  09 39               Usage (Hat Switch)
  15 00               Logical Minimum (0)
  25 07               Logical Maximum (7)
  35 00               Physical Minimum (0)
  46 3B 01            Physical Maximum (315)
  65 12               Unit (0x12)
  75 04               Report Size (4)
  95 01               Report Count (1)
  81 02               Input (Var)
  75 01               Report Size (1)
  95 04               Report Count (4)
  81 01               Input (Const)
  06 00 FF            Usage Page (unk)
  09 01               Usage (0x01)
  15 00               Logical Minimum (0)
  26 FF 00            Logical Maximum (255)
  75 08               Report Size (8)
  95 01               Report Count (1)
  81 02               Input (Var)
  06 00 FF            Usage Page (unk)
  09 01               Usage (0x01)
  09 02               Usage (0x02)
  15 00               Logical Minimum (0)
  26 FF 00            Logical Maximum (255)
  75 08               Report Size (8)
  95 02               Report Count (2)
  B1 02               Feature (Var)
  C0                End Collection

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x81 (Direction=IN  EndpointID=1)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x08
bInterval                : 0x0A (10 ms)
As usual, it shows some marketing blurb - while the packages shouts USB 2.0, the Device Descriptor tells USB Version 1.10 _and_ asks for low speed :) Also note the fancy model name string:
"Generic   USB  Joystick  "
As driver the standard Windows HID Driver is used.

What I'm missing is a OUT-pipe to handle the vibrator motors.

Windows7 Control Panel Icon

Windows7 Control Panel Info

No Nuthing - just the weired name:)

Windows7 Test Screen

All elements are detected:

Switching the Mode button does not result in any change. The displayed Structure matches the HID Descriptor.

Device

bigben top view; Buttons Numberedbigben bottom view

The controller features a 'MODE' button, switching various functions. A red LED displays the state. Further 'On' refers to a once pressed mode button with a lit LED.

Behaviour

The following assignment can be detected:
Win7 TestscreenGamepad API Test
OffOnOffOn
Left StickUpY (Up -1 )1,2Y (Up -1)Axis 1: -11,2Axis 1: -1
DownY (Down +1)1,2Y (Down +1)Axis 1: +11,2Axis 1: +1
LeftX (Left -1)1,2X (Left -1)Axis 0: -11,2Axis 0: -1
RightX (Right +1)1,2X (Right +1)Axis 0: +11,2Axis 0: +1
Right StickUpBtn 1Z-Rotation (Left -1)Btn 0Axis 5: -1
DownBtn 3Z-Rotation (Right +1)Btn 2Axis 5: +1
LeftBtn 4Z-Axis (Left -1)Btn 3Axis 2: -1
RightBtn 2Z-Axis (Right +1)Btn 1Axis 2: +1
Rocker/HatUpY (Up -1 )1,2UpAxis 1: -11,2Axis 5: -11,2
DownY (Down +1)1,2DownAxis 1: +11,2Axis 5: +11,2
LeftX (Left -1)1,2LeftAxis 0: -11,2Axis 4: -11,2
RightX (Right +1)1,2RightAxis 0: +11,2Axis 4: +11,2
Buttons11100
22211
33322
44433
55544
66655
77766
88877
99988
10101099
11 (Left Stick)11111010
12 (Right Stick)12121111
1Only digital movement (-1,0,+1) - 28-Way

Windows assigns the standard HID driver (hidusb.sys) which includes Joystick handling.

It seams as if the Mode switches between a digital gamepad (SNES like) mode and an analogue (liek xBox) mode. Even the handling looks quite alike. All definitions are according to the USB HID descriptor.

The FireFox behavior is rather strange. For one, 6 axis are reported (and displayed), while the USB HID decriptor clearly states only 4 Pointers (Direction-X, Direction-Y, Direction-Z, Rotate-Z). Then the Rocker/Hat is maped in a somewhat strange (and useless) way to axis 4/5.