Re: button mapping on the Playstation 5 controller
From: Roderick Colenbrander <hidden>
Date: 2021-08-07 18:52:45
Hi Tanuj, The button mapping of the kernel driver should be fine (you can confirm using evtest). SDL2 requires a button/stick mapping and I need to provide one to them as I'm not sure if they have the one for the kernel driver. Depending on your SDL2 version, SDL also bundles its own HID driver, which uses hidraw. Not sure which is getting picked up here, I guess the kernel driver. I will have quick look at this today or so if time permits. Thanks, Roderick Colenbrander On Fri, Aug 6, 2021 at 4:50 PM Tanuj Bagaria [off-list ref] wrote:
Hi, If someone could point me in the right direction is all I ask. eg what to google / where to look for the answers? I know this is the wrong place to email for this, but I wasn't able to find any information of button mapping issues on a Playstation 5 Dualsense controller and how to resolve it. I was able to find the announcement of the driver and this email address. I really don't want to be sending this email since I'm fairly sure it is as always an issue on my own system. However if this is an actual issue I have included details of my system below. Essentially, the issue is that the button I press on the controller doesn't match the key detected on the computer; where connected with USB or Bluetooth. As far as I can tell this is because the controller is not using the correct driver somehow. I cant't figure out: 1) How to use the correct driver? 2) Why I need to force the kernel to use the correct driver? Currently this is the mapping I get: | **Controller** | **$ sdl2-jstest --test 0** || **https://gamepad-tester.com/** || **Detected in game with Stadia** | |:--------------:|:------------------------:|:----:|:-------------------------------:|:---------:|:--------------------------------:| | On Device | Button | Axis | Button | Axis | | | X | 0 | | B2 A | | □ | | □ | 3 | | B3 B | | △ | | △ | 2 | | B1 X | | ◯ | | ◯ | 1 | | B0 Y | | X | | L1 | 4 | | B4 LB | | | | L2 | 6 | 2 | | 2 RAX | L1 | | L3 | 11 | | B11 | | | | R1 | 5 | | B5 RB | | | | R2 | 7 | 5 | | 3 RAY | R1 | | R3 | 12 | | B16 | | | | DL | Hat 1 Value 8 Left | | B14 DL | | DL | | DR | Hat 1 Value 2 Right | | B15 DR | | DR | | DU | Hat 1 Value 1 Up | | B12 DU | | DU | | DD | Hat 1 Value 4 Down | | B13 DD | | DD | | LAX | | 0 | | 0 LAX | LAX | | LAY | | 1 | | 1 LAY | LAY | | RAX | | 3 | B6 LT | | | | RAY | | 4 | B7 RT | | | | Create | 8 | | B8 View | | Select | | Menu | 9 | | B9 Menu | | Start | | PS | 10 | | B10 | | | This remains consistant across reboots and switch between bluetooth and usb. The trackpad seem to work fine over USB, I haven't yet tested the Headset, accelerometer, and gyroscope yet. According to [This Comment](https://aur.archlinux.org/packages/hid-playstation-dkms/#comment-805935) on the AUR hid-playstation-dkms page, I should not install this on kernel higher that 5.12. The only "solution" I seem to be able to find to this is on the [Arch Wiki]( https://wiki.archlinux.org/title/Gamepad#Playstation_5_(Dualsense)_controller ) is using a [xbox driver that runs in the user space](https://gitlab.com/xboxdrv/xboxdrv) to remap the keys which seemed weird since there is already an apropriate driver already. Also there is apparantly some thing call [linuxconsole](https://sourceforge.net/projects/linuxconsole/) but I wasn't able to remap the keys with that. Regards, Tanuj Details from my computer Arch Linux$ uname -srvmpio Linux 5.13.8-arch1-1 #1 SMP PREEMPT Wed, 04 Aug 2021 16:57:44 +0000 x86_64 unknown unknown GNU/Linux$ lsusb | grep Sony Bus 003 Device 012: ID 054c:0ce6 Sony Corp. Wireless Controller$ lsusb -s 003:012 -v Bus 003 Device 012: ID 054c:0ce6 Sony Corp. Wireless Controller Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x054c Sony Corp. idProduct 0x0ce6 bcdDevice 1.00 iManufacturer 1 Sony Interactive Entertainment iProduct 2 Wireless Controller iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x00e3 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 0 AudioControl Interface Descriptor: bLength 10 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0049 bInCollection 2 baInterfaceNr(0) 1 baInterfaceNr(1) 2 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0101 USB Streaming bAssocTerminal 6 bNrChannels 4 wChannelConfig 0x0033 Left Front (L) Right Front (R) Left Surround (LS) Right Surround (RS) iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 2 bSourceID 1 bControlSize 1 bmaControls(0) 0x03 Mute Control Volume Control bmaControls(1) 0x00 bmaControls(2) 0x00 bmaControls(3) 0x00 bmaControls(4) 0x00 iFeature 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 3 wTerminalType 0x0301 Speaker bAssocTerminal 4 bSourceID 2 iTerminal 0 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 4 wTerminalType 0x0402 Headset bAssocTerminal 3 bNrChannels 2 wChannelConfig 0x0003 Left Front (L) Right Front (R) iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 5 bSourceID 4 bControlSize 1 bmaControls(0) 0x03 Mute Control Volume Control bmaControls(1) 0x00 iFeature 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 6 wTerminalType 0x0101 USB Streaming bAssocTerminal 1 bSourceID 5 iTerminal 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 1 bDelay 1 frames wFormatTag 0x0001 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 4 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 9 Transfer Type Isochronous Synch Type Adaptive Usage Type Data wMaxPacketSize 0x0188 1x 392 bytes bInterval 4 bRefresh 0 bSynchAddress 0 AudioStreaming Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0x0000 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 6 bDelay 1 frames wFormatTag 0x0001 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x00c4 1x 196 bytes bInterval 4 bRefresh 0 bSynchAddress 0 AudioStreaming Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0x0000 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 273 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 6 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 6$ lsusb -s 003:012 -t -v /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M ID 1d6b:0002 Linux Foundation 2.0 root hub |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/7p, 480M ID 0424:2807 Microchip Technology, Inc. (formerly SMSC) Hub |__ Port 3: Dev 12, If 0, Class=Audio, Driver=snd-usb-audio, 480M ID 054c:0ce6 Sony Corp. |__ Port 3: Dev 12, If 3, Class=Human Interface Device, Driver=usbhid, 480M ID 054c:0ce6 Sony Corp. |__ Port 3: Dev 12, If 1, Class=Audio, Driver=snd-usb-audio, 480M ID 054c:0ce6 Sony Corp. |__ Port 3: Dev 12, If 2, Class=Audio, Driver=snd-usb-audio, 480M ID 054c:0ce6 Sony Corp.$ lsmod | grep hid-playstation$ modinfo hid-playstation filename: /lib/modules/5.13.8-arch1-1/kernel/drivers/hid/hid-playstation.ko.zst license: GPL description: HID Driver for PlayStation peripherals. author: Sony Interactive Entertainment srcversion: 980BEAF44460E60E97C39B7 alias: hid:b0003g*v0000054Cp00000CE6 alias: hid:b0005g*v0000054Cp00000CE6 depends: ff-memless retpoline: Y intree: Y name: hid_playstation vermagic: 5.13.8-arch1-1 SMP preempt mod_unload sig_id: PKCS#7 signer: Build time autogenerated kernel key sig_key: 3C:D4:29:8B:B9:DD:84:BA:47:98:89:17:89:BD:77:F0:F2:8A:4A:82 sig_hashalgo: sha512 signature: 9A:15:37:2E:09:2F:E5:49:3B:4B:38:9D:95:64:17:C3:08:A2:A8:B3: FE:DA:D9:8E:0C:ED:83:4B:22:BF:CE:22:91:53:D8:EB:9D:D3:E2:65: 89:CD:FB:2F:C2:3E:31:B8:69:65:BF:CB:FC:89:5B:6C:E4:D2:5A:5C: 85:12:0A:6F:F7:A5:16:63:C6:74:38:0F:04:F8:05:4B:25:F2:4B:6F: 19:21:A5:B9:CC:09:69:58:F9:27:01:66:ED:3B:12:B4:93:5F:E0:D1: 52:D1:BE:2C:C1:72:DA:14:1B:49:B2:E3:6D:C1:FF:88:7C:E6:2A:B8: 6D:E6:83:D5:5A:60:32:B8:DB:70:0D:D0:5E:26:17:73:C8:BF:D9:10: 52:30:32:3A:0E:94:08:76:D1:7D:07:DE:AE:33:18:FB:CB:75:6A:D1: 62:F6:FB:7B:EA:4F:3C:E0:93:DE:35:EA:A0:7B:1F:4D:2E:4D:17:8C: 63:F9:D7:AB:1F:1A:66:B2:30:8C:CF:CC:32:6A:1E:11:CF:5C:C2:C2: BF:11:BC:A3:B4:E2:D0:57:5A:10:2C:6F:49:53:F0:81:09:0F:22:68: 9D:30:ED:FF:F0:74:0C:1C:8E:09:DF:E0:05:60:6B:F0:45:4A:7A:0D: 92:9E:5B:83:63:B9:6D:3A:76:C2:3E:AA:19:92:74:E1:C1:6B:BB:2E: 33:89:E7:B3:91:A7:58:B0:E7:18:E1:4D:A0:98:D0:25:80:04:37:14: 85:34:31:85:50:27:D1:7D:99:71:A5:99:14:8A:76:3A:75:D5:5A:23: AE:3C:AD:83:41:6A:E8:42:8F:28:54:E9:1D:D0:C5:6C:85:38:0F:23: 3C:75:FD:27:AF:01:90:99:C2:C9:C9:90:11:4D:96:9D:85:42:01:E2: 84:DF:D5:0D:DD:E9:E0:33:C8:55:80:4A:0C:9D:AF:CB:FB:65:2C:E9: D0:EF:2A:E1:6F:B2:BE:D5:8C:29:DF:B2:7A:0A:7A:DF:9B:6F:89:C7: 21:67:E5:DA:C1:C4:80:1A:D2:9D:C2:EF:69:1D:50:7F:2B:52:8C:3A: 58:06:AC:C8:43:5A:45:64:8F:E9:AB:28:C1:01:FD:A3:1E:E3:DE:3B: 38:52:6B:A6:14:5A:3E:15:AF:69:9B:B9:1F:91:5D:0B:EC:48:8C:13: 06:24:3F:A3:83:83:EE:E4:D3:C8:A0:16:F5:2C:EE:67:BA:6C:68:B1: EA:E1:8D:62:BE:8E:86:6D:3B:7F:EE:80:21:5E:CB:0E:D4:9E:B4:F9: C3:C2:0E:CE:A5:B0:EC:E7:A4:F6:AE:BE:C3:72:43:76:CD:F0:9B:9F: 5D:FC:8A:5C:E2:47:EB:79:93:12:72:5B$ cat /proc/bus/input/devices I: Bus=0003 Vendor=054c Product=0ce6 Version=8111 N: Name="Sony Interactive Entertainment Wireless Controller" P: Phys= S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:39:00.0/usb3/3-1/3-1.3/3-1.3:1.3/0003:054C:0CE6.0013/input/input68 U: Uniq=4c:b9:9b:16:ea:b7 H: Handlers=event17 js0 B: PROP=0 B: EV=20000b B: KEY=7fdb000000000000 0 0 0 0 B: ABS=3003f B: FF=107030000 0 I: Bus=0003 Vendor=054c Product=0ce6 Version=8111 N: Name="Sony Interactive Entertainment Wireless Controller Motion Sensors" P: Phys= S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:39:00.0/usb3/3-1/3-1.3/3-1.3:1.3/0003:054C:0CE6.0013/input/input69 U: Uniq=4c:b9:9b:16:ea:b7 H: Handlers=event31 js2 B: PROP=40 B: EV=19 B: ABS=3f B: MSC=20 I: Bus=0003 Vendor=054c Product=0ce6 Version=8111 N: Name="Sony Interactive Entertainment Wireless Controller Touchpad" P: Phys= S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:39:00.0/usb3/3-1/3-1.3/3-1.3:1.3/0003:054C:0CE6.0013/input/input70 U: Uniq=4c:b9:9b:16:ea:b7 H: Handlers=event256 mouse7 B: PROP=5 B: EV=b B: KEY=2420 10000 0 0 0 0 B: ABS=260800000000003/sys/bus/hid/devices/0003:054C:0CE6.0013]$ cat * 00 cat: driver: Is a directory 0x01010007 0x00000313 cat: hidraw: Is a directory cat: input: Is a directory hid:b0003g0001v0000054Cp00000CE6 cat: power: Is a directory cat: power_supply: Is a directory "&4 #/ 3( 4/ 5 $ 4&u 9%5F;euBe )%u ! % &?! '" @? (? )? * +? ,? - .�/?�0?�1?�2�5? 6cat: subsystem: Is a directory DRIVER=playstation HID_ID=0003:0000054C:00000CE6 HID_NAME=Sony Interactive Entertainment Wireless Controller HID_PHYS=usb-0000:39:00.0-1.3/input3 HID_UNIQ=4c:b9:9b:16:ea:b7 MODALIAS=hid:b0003g0001v0000054Cp00000CE6