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-PIDB315According to Linux USB-ID List: Firestorm 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)

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 .)

Allso 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 ratehr a slider.

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.