Revision: 03.01.2014
Drafted: 03.01.2014

Game Controlls and the Web

This complements the main page.

Pad#2 Speedlink Thunderstrike

Next one is a no name bought at Conrad (again Euro 9.99). It's a PS-Style variation, but this time silent.

Packaging

Speedlink Thunderstrike package picture 1Speedlink Thunderstrike package picture 2

Basic Data

BrandnameSpeedlink
ProductnameThunderstrike
Product-IDSL-6515-BK(BK = Black)
USB Product String"Generic USB Joystick "
USB-VID0079DragonRise Inc.
USB-PID0006Generic USB Joystick (!)
USB-REV0107
USB-Class(es)03/00/00
USB-Device (Windows)USBPDO-12
gamepad.id (Firefox)"79-6-Generic USB Joystick"
Layout StylePS
SwitchableYes: Default digital, switchable to Analogue

Guessing from a quick search, this controller (either just the chip or the whole device) is also sold as "SpeedLink Strike"

USB Descriptor Information from USB Device Tree Viewer

    =========================== USB Port3 ===========================

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

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

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Input Device
Device ID                : USB\VID_0079&PID_0006\7&D2AC4E7&0&3
Driver KeyName           : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0014 (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_#0003.Hub_#0009
Location IDs             : PCIROOT(0)#PCI(1202)#USBROOT(0)#USB(5)#USB(1)#USB(3)
Container ID             : {52e0fb13-7246-11e3-bea4-bcaec58addcf}
Manufacturer Info        : (Standard system devices)
Capabilities             : Removable, SurpriseRemovalOK
Address                  : 3
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_0079&PID_0006\8&FFE1A2B&0&0000
  Class                  : HIDClass

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

        ------------------ Device Descriptor ------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x100 (USB Version 1.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x08 (8 bytes)
idVendor                 : 0x0079
idProduct                : 0x0006
bcdDevice                : 0x107
iManufacturer            : 0x01
 Language 0x0409         : "DragonRise Inc.  "  *!*CAUTION  trailing space characters
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             : 0x0029 (41 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            : 0x02
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             : 0x21 (33 = US)
bNumDescriptors          : 0x01
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0065 (101 bytes)
  05 01             Usage Page (Generic Desktop Controls)
  09 04             Usage (Joystick)
  A1 01             Collection (Application)
  A1 02               Collection (Logical)
  75 08                 Report Size (8)
  95 05                 Report Count (5)
  15 00                 Logical Minimum (0)
  26 FF 00              Logical Maximum (255)
  35 00                 Physical Minimum (0)
  46 FF 00              Physical Maximum (255)
  09 30                 Usage (Direction-X)
  09 31                 Usage (Direction-Y)
  09 32                 Usage (Direction-Z)
  09 32                 Usage (Direction-Z)
  09 35                 Usage (Rotate-Z)
  81 02                 Input (Var)
  75 04                 Report Size (4)
  95 01                 Report Count (1)
  25 07                 Logical Maximum (7)
  46 3B 01              Physical Maximum (315)
  65 14                 Unit (0x14)
  09 39                 Usage (Hat Switch)
  81 42                 Input (Var, NullState)
  65 00                 Unit (0x00)
  75 01                 Report Size (1)
  95 0C                 Report Count (12)
  25 01                 Logical Maximum (1)
  45 01                 Physical Maximum (1)
  05 09                 Usage Page (Buttons)
  19 01                 Usage Minimum (1)
  29 0C                 Usage Maximum (12)
  81 02                 Input (Var)
  06 00 FF              Usage Page (unk)
  75 01                 Report Size (1)
  95 08                 Report Count (8)
  25 01                 Logical Maximum (1)
  45 01                 Physical Maximum (1)
  09 01                 Usage (0x01)
  81 02                 Input (Var)
  C0                  End Collection
  A1 02               Collection (Logical)
  75 08                 Report Size (8)
  95 07                 Report Count (7)
  46 FF 00              Physical Maximum (255)
  26 FF 00              Logical Maximum (255)
  09 02                 Usage (0x02)
  91 02                 Output (Var)
  C0                  End Collection
  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)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x01 (Direction=OUT  EndpointID=1)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x08
bInterval                : 0x0A (10 ms)
Again rather funny Strings:
"DragonRise Inc.  "
"Generic   USB  Joystick  "
I realy wonder how come that two different controllers house the same mal formated Product string - is there any strange compatibility issue, oder just common copy and paste?

The HID Descriptor is a bit weired. It reports 5 axis values, two of them named 'Direction Z' (usage 04/32)

More over, why is there an additional OUT-pipe? The HID descriptor even offers a structure for it. This would make sense if we had some vibrator motors or such. No Idea.

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

Speedlink Thunderstrike top view; Buttons NumberedSpeedlink Thunderstrike bottom view

Note that the sequence of the 4 diamond buttons is changed 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. Further two switches labled 'Rapid' and 'Auto' are present. They control a local auto fire mechanism. If Auto is pressed with another button, this button will be repeated (~8Hz?) indefinite. The LED will flicker accordingly. If Rapid is pressed with another button, this button will be repeated when ever pressed. The Assignments are reet by a reset button on the back. No additional information is transfered over USB (except for triggering) - or?

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.

Except for a different asignment of the 4 top right buttons it's virtually equal to the bigben gamepad. See there for comments regarding handling and FF-'features'.