# Duplicated/conflicting GUIDs for the DragonRise/PC TWIN SHOCK controllers

**URL:** <https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112>\
**Category:** SDL Development\
**Created:** [March 28, 2018, 4:18pm UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112 "2018-03-28T16:18:57Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![swyter](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/swyter/32/2823_2.png) [@swyter](https://discourse.libsdl.org/u/swyter)\
**Post date:** [March 28, 2018, 4:18pm UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112/1 "2018-03-28T16:18:57Z")

</div>

This is mainly a cross-post from: [https://github.com/gabomdq/SDL\_GameControllerDB/issues/202](https://github.com/gabomdq/SDL_GameControllerDB/issues/202)

* * *

Turns out that many generic Chinese controllers based on the same _PC TWIN SHOCK_ board from _DragonRise Inc._ share the same USB vendor (`0x0079`) and product (`0x0006`) identifiers, but they also use slightly different button layouts, causing conflicts because the SDL2 gamepad GUID cannot distinguish between them.

My _NGS Phantom_ mainly conflicts with [Issue #86](https://github.com/gabomdq/SDL_GameControllerDB/issues/86) in Linux, and the “_G-Shark GS-GP702_” in Windows. Funnily enough in macOS looks like the GUID is slightly different, for some reason.

These are the correct mappings for Linux, macOS and Windows:

```auto
03000000790000000600000010010000,NGS Phantom---LNX,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux,
03000000790000000600000007010000,NGS Phantom---MAC,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
03000000790000000600000000000000,NGS Phantom---WIN,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows,

```

I ship a game with these community mappings and I’m having trouble playing with my own controller because everything is subtly broken.

_PS_: Maybe @icculus can add some additional optional bits to tell them apart. Maybe by optionally matching by VID/PID/Version/Revision/Firmware instead of only VID/PID.

 ![imagen](https://discourse.libsdl.org/uploads/default/original/2X/3/3692dbdac3c5ddb3661f9284e7e121bc35e3a5ac.png)

---

<div class="post-metadata">

**Author:** ![swyter](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/swyter/32/2823_2.png) [@swyter](https://discourse.libsdl.org/u/swyter)\
**Post date:** [March 28, 2018, 4:30pm UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112/2 "2018-03-28T16:30:30Z")

</div>

This is my `lsusb` report:

```auto
[swyter@osgiliath ~]$ lsusb -v -d0079:0006

Bus 007 Device 002: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 1.00
  bDeviceClass 0 
  bDeviceSubClass 0 
  bDeviceProtocol 0 
  bMaxPacketSize0 8
  idVendor 0x0079 DragonRise Inc.
  idProduct 0x0006 PC TWIN SHOCK Gamepad
  bcdDevice 1.07
  iManufacturer 1 DragonRise Inc.  
  iProduct 2 Generic USB Joystick  
  iSerial 0 
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 41
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0 
    bmAttributes 0x80
      (Bus Powered)
    MaxPower 500mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 0 
      bInterfaceProtocol 0 
      iInterface 0 
        HID Device Descriptor:
          bLength 9
          bDescriptorType 33
          bcdHID 1.10
          bCountryCode 33 US
          bNumDescriptors 1
          bDescriptorType 34 Report
          wDescriptorLength 101
         Report Descriptors: 
           **UNAVAILABLE**
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x81 EP 1 IN
        bmAttributes 3
          Transfer Type Interrupt
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0008 1x 8 bytes
        bInterval 10
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x01 EP 1 OUT
        bmAttributes 3
          Transfer Type Interrupt
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0008 1x 8 bytes
        bInterval 10
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
  (Bus Powered)

```

Maybe @Daniel_Gibson can post his gamepad output and see what is different.

---

<div class="post-metadata">

**Author:** ![Daniel\_Gibson](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/daniel_gibson/32/3010_2.png) [@Daniel\_Gibson](https://discourse.libsdl.org/u/Daniel_Gibson)\
**Post date:** [April 9, 2018, 1:07am UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112/3 "2018-04-09T01:07:03Z")

</div>

Damn, I somehow missed this.  
Anyway, the report for my Trust CXT24:

```auto
Bus 003 Device 120: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 1.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0 
  bDeviceProtocol 0 
  bMaxPacketSize0 8
  idVendor 0x0079 DragonRise Inc.
  idProduct 0x0006 PC TWIN SHOCK Gamepad
  bcdDevice 1.07
  iManufacturer 1 DragonRise Inc.  
  iProduct 2 Generic USB Joystick  
  iSerial 0 
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 41
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0 
    bmAttributes 0x80
      (Bus Powered)
    MaxPower 500mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 0 No Subclass
      bInterfaceProtocol 0 None
      iInterface 0 
        HID Device Descriptor:
          bLength 9
          bDescriptorType 33
          bcdHID 1.10
          bCountryCode 33 US
          bNumDescriptors 1
          bDescriptorType 34 Report
          wDescriptorLength 101
         Report Descriptors: 
           **UNAVAILABLE**
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x81 EP 1 IN
        bmAttributes 3
          Transfer Type Interrupt
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0008 1x 8 bytes
        bInterval 10
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x01 EP 1 OUT
        bmAttributes 3
          Transfer Type Interrupt
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0008 1x 8 bytes
        bInterval 10
Device Status: 0x0000
  (Bus Powered)

```

---

<div class="post-metadata">

**Author:** ![landeel](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/l/c5a1d2/32.png) [@landeel](https://discourse.libsdl.org/u/landeel)\
**Post date:** [March 12, 2019, 4:59pm UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112/4 "2019-03-12T16:59:52Z")

</div>

Hello, as reported here: [https://discourse.libsdl.org/t/different-game-controllers-with-the-same-guid/25773](https://github.com/gabomdq/SDL_GameControllerDB/issues/url)…  
I have two devices have the same GUID under Linux, same vendor/product id, but they’re not exactly the same. One is from Dragonrise, the other is actually from Microntek.

```auto
    Bus 002 Device 012: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
    Device Descriptor:
    bLength 18
    bDescriptorType 1
    bcdUSB 1.00
    bDeviceClass 0 (Defined at Interface level)
    bDeviceSubClass 0
    bDeviceProtocol 0
    bMaxPacketSize0 8
    idVendor 0x0079 DragonRise Inc.
    idProduct 0x0006 PC TWIN SHOCK Gamepad
    bcdDevice 1.07
    iManufacturer 1 DragonRise Inc.
    iProduct 2 Generic USB Joystick
    iSerial 0
    bNumConfigurations 1
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 41
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0x80
    (Bus Powered)
    MaxPower 500mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 3 Human Interface Device
    bInterfaceSubClass 0 No Subclass
    bInterfaceProtocol 0 None
    iInterface 0
    HID Device Descriptor:
    bLength 9
    bDescriptorType 33
    bcdHID 1.10
    bCountryCode 33 US
    bNumDescriptors 1
    bDescriptorType 34 Report
    wDescriptorLength 101
    Report Descriptors:
    **UNAVAILABLE**
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x81 EP 1 IN
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0008 1x 8 bytes
    bInterval 10
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x01 EP 1 OUT
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0008 1x 8 bytes
    bInterval 10
    Device Status: 0x0000
    (Bus Powered)

```

```auto
    Bus 002 Device 013: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
    Device Descriptor:
    bLength 18
    bDescriptorType 1
    bcdUSB 1.00
    bDeviceClass 0 (Defined at Interface level)
    bDeviceSubClass 0
    bDeviceProtocol 0
    bMaxPacketSize0 8
    idVendor 0x0079 DragonRise Inc.
    idProduct 0x0006 PC TWIN SHOCK Gamepad
    bcdDevice 1.07
    iManufacturer 1 Microntek
    iProduct 2 USB Joystick
    iSerial 0
    bNumConfigurations 1
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 41
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0x80
    (Bus Powered)
    MaxPower 500mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 3 Human Interface Device
    bInterfaceSubClass 0 No Subclass
    bInterfaceProtocol 0 None
    iInterface 0
    HID Device Descriptor:
    bLength 9
    bDescriptorType 33
    bcdHID 1.10
    bCountryCode 33 US
    bNumDescriptors 1
    bDescriptorType 34 Report
    wDescriptorLength 107
    Report Descriptors:
    **UNAVAILABLE**
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x81 EP 1 IN
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0008 1x 8 bytes
    bInterval 10
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x01 EP 1 OUT
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0008 1x 8 bytes
    bInterval 10
    Device Status: 0x0000
    (Bus Powered)

```

---

<div class="post-metadata">

**Author:** ![landeel](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/l/c5a1d2/32.png) [@landeel](https://discourse.libsdl.org/u/landeel)\
**Post date:** [March 13, 2019, 11:40am UTC](https://discourse.libsdl.org/t/duplicated-conflicting-guids-for-the-dragonrise-pc-twin-shock-controllers/24112/5 "2019-03-13T11:40:05Z")

</div>

Also reported here: [https://bugzilla.libsdl.org/show\_bug.cgi?id=4545](https://bugzilla.libsdl.org/show_bug.cgi?id=4545)
