Revision: 04.01.2014
Revision: 03.01.2014
Drafted: 03.01.2014

Game Controlls and the Web

This complements the main page.

Pad#3 Thrustmaster Dual Analog 4

This time a well known classic brand, Thrustmaster ... well, since been bought by french Guillemo, more like a hazbeen. It's a xBox-Style variation, bought at 14.99, again at Game Stop. I realy try hard to buy local, but somehow more and more shops drop game products, or PC products at all. Even Game Stop doesn't carry any (real) Joysticks (nowadays called Flightsticks) anymore :(

Packaging

Thrustmaster Dual Analog 4 package picture 1Thrustmaster Dual Analog 4 package picture 2Thrustmaster Dual Analog 4 package picture 2

Well, maybe the the rather elaborate packaging also justifies the higher price tag?

Basic Data

BrandnameThrustmaster
ProductnameDual Analog 4
Product-ID2960737
USB Product String"Thrustmaster dual analog 3.2"
USB Manufacturer String"Mega World"
USB-VID044FThrustMaster, Inc.
USB-PIDB315Firestorm Dual Analog 3
USB-REV0101
USB-Class(es)03/00/00
USB-Device (Windows)USBPDO-12
gamepad.id (Firefox)(not recognized)
Layout StylexBox
SwitchableNo (always analogue)
Detected parts in FireFox12 Buttons
6 Axis
Detected parts in Windows12 Buttons
4 Axis
1 8-Way Rocker/Hat

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_044F&PID_B315\7&D2AC4E7&0&3
Driver KeyName           : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0012 (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             : {be17c82c-7187-11e3-8a9a-bcaec58addcf}
Manufacturer Info        : (Standard system devices)
Capabilities             : Removable, SurpriseRemovalOK
Address                  : 3
Problem Code             : 0
Power State              : D0 (supported: D0, D1, D2, D3, wake from D0, wake from D1, wake from D2)
 Child Device 1          : HID-compliant game controller
  Device ID              : HID\VID_044F&PID_B315\8&18735A47&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     : 0x01 (1)
Device Bus Speed         : 0x00 (Low-Speed)
Pipe0ScheduleOffset      : 0x01 (1)

        ------------------ 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                 : 0x044F
idProduct                : 0xB315
bcdDevice                : 0x101
iManufacturer            : 0x01
 Language 0x0409         : "Mega World"
iProduct                 : 0x02
 Language 0x0409         : "Thrustmaster dual analog 3.2"
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             : 0xA0 (Bus Powered, Remote Wakeup)
MaxPower                 : 0xAF (350 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        : 0x006C (108 bytes)
  05 01             Usage Page (Generic Desktop Controls)
  09 05             Usage (Gamepad)
  A1 01             Collection (Application)
  05 01               Usage Page (Generic Desktop Controls)
  09 01               Usage (Pointer)
  A1 00               Collection (Physical)
  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 08                 Report Size (8)
  95 01                 Report Count (1)
  81 01                 Input (Const)
  05 01                 Usage Page (Generic Desktop Controls)
  09 39                 Usage (Hat Switch)
  25 07                 Logical Maximum (7)
  35 00                 Physical Minimum (0)
  46 0E 01              Physical Maximum (270)
  66 40 00              Unit (0x40)
  75 04                 Report Size (4)
  81 42                 Input (Var, NullState)
  09 30                 Usage (Direction-X)
  09 31                 Usage (Direction-Y)
  15 80                 Logical Minimum (-128)
  25 7F                 Logical Maximum (127)
  46 FF 00              Physical Maximum (255)
  66 00 00              Unit (0x00)
  75 08                 Report Size (8)
  95 02                 Report Count (2)
  81 02                 Input (Var)
  09 35                 Usage (Rotate-Z)
  95 01                 Report Count (1)
  81 02                 Input (Var)
  09 36                 Usage (Slider)
  16 00 00              Logical Minimum (0)
  26 FF 00              Logical Maximum (255)
  81 02                 Input (Var)
  09 BB                 Usage (0xBB)
  15 00                 Logical Minimum (0)
  26 FF 00              Logical Maximum (255)
  35 00                 Physical Minimum (0)
  46 FF 00              Physical Maximum (255)
  75 08                 Report Size (8)
  95 04                 Report Count (4)
  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)
Interesting Manufacturer String: "Mega World" - and the strings are at least valid formated .)

Also notable, unlike the other, logical min/max for axis is correct noted as signed - at least for X and Y. There is no Z axis, but rather a slider.

USB Descriptor Information from TDD

Information for device Thrustmaster dual analog 3.2 (VID=0x044F PID=0xB315): 

Connection Information:
------------------------------
Connection status: Device connected
Device actual bus speed: Low 
Device is hub: No
Device adress: 0x0005
Current configuration value: 0x01
Number of open pipes: 1

Device Descriptor:
------------------------------
0x12	bLength
0x01	bDescriptorType
0x0110	bcdUSB
0x00	bDeviceClass   
0x00	bDeviceSubClass   
0x00	bDeviceProtocol   
0x08	bMaxPacketSize0   (8 Bytes)
0x044F	idVendor
0xB315	idProduct
0x0101	bcdDevice
0x01	iManufacturer   "Mega World"
0x02	iProduct   "Thrustmaster dual analog 3.2"
0x00	iSerialNumber
0x01	bNumConfigurations

Configuration Descriptor:
------------------------------
0x09	bLength
0x02	bDescriptorType
0x0022	wTotalLength
0x01	bNumInterfaces
0x01	bConfigurationValue
0x00	iConfiguration
0xA0	bmAttributes   (Bus-powered Device, Remote-Wakeup)
0xAF	bMaxPower   (350 mA)

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x00	bInterfaceNumber
0x00	bAlternateSetting
0x01	bNumEndPoints
0x03	bInterfaceClass   (Human Interface Device Class)
0x00	bInterfaceSubClass   
0x00	bInterfaceProtocol   
0x00	iInterface

HID Descriptor:
------------------------------
0x09	bLength
0x21	bDescriptorType
0x0110	bcdHID
0x00	bCountryCode
0x01	bNumDescriptors
0x22	bDescriptorType   (Report descriptor)
0x006C	bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x81	bEndpointAddress   (IN Endpoint)
0x03	bmAttributes	(Transfer: Interrupt / Synch: None / Usage: Data)
0x0008	wMaxPacketSize   (8 Bytes) 
0x0A	bInterval

String Descriptor Table
--------------------------------
Index  LANGID  String
0x00   0x0000  0x0409 
0x01   0x0409  "Mega World"
0x02   0x0409  "Thrustmaster dual analog 3.2"
0x03   0x0409  "WT65F1-005 M:PCJPAD"
0x10   0x0409  "WT6510"
0xF0   0x0409  "Weltrend"
0xF1   0x0409  "Mega World"
0xF2   0x0409  "WT6510-005"
0xF3   0x0409  "M:PCJPAD"

------------------------------

Connection path for device: 
Standard Enhanced PCI to USB Host Controller
Root Hub
Generic USB Hub
Generic USB Hub
Thrustmaster dual analog 3.2 (VID=0x044F PID=0xB315)

Brought to you by TDD v1.82.0, Aug 20 2013, 17:17:20

Windows7 Control Panel Icon

Windows7 Control Panel Info

Windows7 Test Screen

All elements are detected:

The displayed Structure matches the HID Descriptor.

Device

Thrustmaster top view; Buttons NumberedThrustmaster bottom viewThrustmaster back view

The controller does not offer any mode switching.

Buttons are arranged different.

Behaviour

The following assignment can be detected:
Win7 TestscreenGamepad API Test
Left StickUpY (Up -1 )
DownY (Down +1)
LeftX (Left -1)
RightX (Right +1)
Right StickUpSlider (Left -1)
DownSlider (Right +1)
LeftZ Rotation (Left -1)
RightZ Rotation (Right +1)
Rocker/HatUpUp
DownDown
LeftLeft
RightRight
Buttons11
22
33
44
55
66
77
88
99
1010
11 (Left Stick)11
12 (Right Stick)12

Gamepad API Test does not recognize the gamepad at all.

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