I have created a modified AVR core based on ArduinoXInput's custom core but for PlayStation instead, to emulate a DS4 controller on HID-capable boards like the Leonardo. Using USBTreeView and online gamepad testers, it seems I was successful, as it shows up as a DS4. However, when plugging it into my PS4 with this sketch, which presses and releases the PS button repeatedly:
struct DS4Report {
uint8_t reportID;
uint8_t leftStickX;
uint8_t leftStickY;
uint8_t rightStickX;
uint8_t rightStickY;
uint8_t dpad : 4;
uint16_t buttonWest : 1;
uint16_t buttonSouth : 1;
uint16_t buttonEast : 1;
uint16_t buttonNorth : 1;
uint16_t buttonL1 : 1;
uint16_t buttonR1 : 1;
uint16_t buttonL2 : 1;
uint16_t buttonR2 : 1;
uint16_t buttonSelect : 1;
uint16_t buttonStart : 1;
uint16_t buttonL3 : 1;
uint16_t buttonR3 : 1;
uint16_t buttonHome : 1;
uint16_t buttonTouchpad : 1;
uint8_t reportCounter : 6;
uint8_t leftTrigger;
uint8_t rightTrigger;
uint16_t axisTiming;
uint8_t battery;
uint8_t reserved0;
int16_t gyrox;
int16_t gyroy;
int16_t gyroz;
int16_t accx;
int16_t accy;
int16_t accz;
uint8_t misc[4];
uint8_t powerLevel : 4;
uint8_t charging : 1;
uint8_t headphones : 1;
uint8_t microphone : 1;
uint8_t extension : 1;
uint8_t extData0 : 1;
uint8_t extData1 : 1;
uint8_t notConnected : 1;
uint8_t extData3 : 5;
uint8_t misc2;
uint8_t tpadIncrement;
uint8_t touchpad_counter_p1 : 7;
uint8_t touchpad_unpressed_p1 : 1;
uint8_t touch1_pos1;
uint8_t touch1_pos2;
uint8_t touch1_pos3;
uint8_t touchpad_counter_p2 : 7;
uint8_t touchpad_unpressed_p2 : 1;
uint8_t touch2_pos1;
uint8_t touch2_pos2;
uint8_t touch2_pos3;
uint8_t mystery2[22];
} __attribute__((packed));
DS4Report report;
volatile bool psPressed = false;
volatile uint32_t timestamp = 0;
volatile uint8_t reportCounter = 0;
unsigned long lastToggle = 0;
unsigned long lastReport = 0;
void writeToEndpoint(const uint8_t* data, uint8_t len) {
for (uint8_t i = 0; i < len; i++) {
UEDATX = data[i];
}
}
void txInterruptCallback() {
reportCounter = (reportCounter + 1) & 0x3F;
report.buttonHome = (psPressed ? 0x01 : 0x00) | (reportCounter << 2);
writeToEndpoint((const uint8_t*)&report, sizeof(report));
UEINTX &= ~(1 << FIFOCON);
}
void ds4OutHandler()
{
uint8_t buf[64];
int n = USB_Recv(ARDUINODS4_RX_ENDPOINT, buf, USB_Available(ARDUINODS4_RX_ENDPOINT));
}
void setup() {
memset(&report, 0, sizeof(report));
report.reportID = 0x01;
report.leftStickX = 0x80;
report.leftStickY = 0x80;
report.rightStickX = 0x80;
report.rightStickY = 0x80;
report.dpad = 0x08;
report.buttonNorth = 0x00;
report.buttonSouth = 0x00;
report.buttonEast = 0x00;
report.buttonWest = 0x00;
report.buttonHome = 0x00;
report.leftTrigger = 0x00;
report.rightTrigger = 0x00;
report.battery = 0x11;
report.gyrox = 0x0000;
report.gyroy = 0x0000;
report.gyroz = 0x0000;
report.accx = 0x0000;
report.accy = 0x0000;
report.accz = 0x2000;
delay(2000);
ArduinoDS4USB::setSendCallback(txInterruptCallback);
ArduinoDS4USB::setRecvCallback(ds4OutHandler);
cli();
UENUM = 1;
if (UEINTX & (1 << RWAL)) {
writeToEndpoint((const uint8_t*)&report, sizeof(report));
UEINTX &= ~(1 << FIFOCON);
}
sei();
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - lastToggle >= 500) {
psPressed = !psPressed;
lastToggle = currentTime;
}
if (currentTime - lastReport >= 5) {
noInterrupts();
interrupts();
}
delay(1);
}
Nothing happens, it's not recognized. I know the PS4 will refuse it every 8 minutes without authentication keys, but until then it should work.
What am I missing?
EDIT: I have tried to take the approach used for GP2040-CE, with the same descriptors and the VID/PID of the Razer controller, but I just get the exact same result, even after adding handling for every possible feature request by the PS4 (other than authentication, of course). Also, here's what I see with USBTreeView:
=========================== USB Port2 ===========================
Connection Status : 0x01 (Device is connected)
Port Chain : 1-2
Properties : 0x01
IsUserConnectable : yes
PortIsDebugCapable : no
PortHasMultiCompanions : no
PortConnectorIsTypeC : no
ConnectionIndex : 0x02 (Port 2)
CompanionIndex : 0
CompanionHubSymLnk : USB#ROOT_HUB30#5&2ddeeb85&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
CompanionPortNumber : 0x06 (Port 6)
-> CompanionPortChain : 1-6
========================== Summary =========================
Vendor ID : 0x1532 (Razer (Asia-Pacific) Pte Ltd.)
Product ID : 0x0401
Manufacturer String : "Unknown"
Product String : "Arduino Leonardo"
Serial : ---
USB Version : 2.0 (but 12 Mbit/s FullSpeed only)
Port maximum Speed : High-Speed (Companion Port 1-6 is doing the SuperSpeed)
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 500 mA
Used Endpoints : 3
======================== USB Device ========================
+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : USB Input Device
Device Path 1 : \\?\USB#VID_1532&PID_0401#6&21a47d&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Device Path 2 : \\?\USB#VID_1532&PID_0401#6&21a47d&0&2#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Kernel Name : \Device\USBPDO-6
Device ID : USB\VID_1532&PID_0401\6&21A47D&0&2
Hardware IDs : USB\VID_1532&PID_0401&REV_0100 USB\VID_1532&PID_0401
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0010 (GUID_DEVCLASS_HIDCLASS)
Driver : \SystemRoot\System32\drivers\hidusb.sys (Version: 10.0.26100.5074 Date: 2025-09-09 Company: Microsoft Corporation)
Driver Inf : C:\WINDOWS\inf\input.inf
Legacy BusType : PNPBus
Class : HIDClass
Class GUID : {745a17a0-74d3-11d0-b6fe-00a0c90f57da} (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Enumerator : USB
Location Info : Port_#0002.Hub_#0002
Address : 2
Location IDs : PCIROOT(0)#PCI(0801)#PCI(0004)#USBROOT(0)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(GP17)#ACPI(XHC1)#ACPI(RHUB)#ACPI(PRT2)
Container ID : {daf9550e-78dd-11f0-807d-ac50dea9a6f2}
Manufacturer Info : (Standard system devices)
Capabilities : 0x84 (Removable, SurpriseRemovalOK)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
First Install Date : 2025-08-15 15:09:11
Last Arrival Date : 2025-10-03 23:40:38
Bus Relations : HID\VID_1532&PID_0401&Col01\7&2d58bc48&0&0000, HID\VID_1532&PID_0401&Col02\7&2d58bc48&0&0001
SelectiveSuspendEnabled : 0
EnhancedPowerMgmtEnabled : 1
Power State : D0 (supported: D0, D3, wake from D0)
+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\153204010100
osvc : REG_BINARY 00 00
---------------- Connection Information ---------------
Connection Index : 0x02 (Port 2)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x01 (1)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number of open Pipes : 0x02 (2 pipes to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=5 -> 718 Bits/ms = 89750 Bytes/s
Pipe[1] : EndpointID=3 Direction=OUT ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=5 -> 718 Bits/ms = 89750 Bytes/s
Data (HexDump) : 02 00 00 00 12 01 00 02 00 00 00 40 32 15 01 04 ...........@2...
00 01 01 02 00 01 01 01 00 01 00 02 00 00 00 01 ................
00 00 00 07 05 81 03 40 00 05 00 00 00 00 07 05 .......@........
03 03 40 00 05 00 00 00 00 ..@......
--------------- Connection Information V2 -------------
Connection Index : 0x02 (2)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03
Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0) -> but Companion Port 1-6 does
ReservedMBZ : 0x00
Flags : 0x00
DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 02 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 ................
---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x200 (USB Version 2.0) -> but device is Full-Speed only
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x1532 (Razer (Asia-Pacific) Pte Ltd.)
idProduct : 0x0401
bcdDevice : 0x0100
iManufacturer : 0x01 (String Descriptor 1)
Language 0x0409 : "Unknown"
iProduct : 0x02 (String Descriptor 2)
Language 0x0409 : "Arduino Leonardo"
iSerialNumber : 0x00 (No String Descriptor)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 00 02 00 00 00 40 32 15 01 04 00 01 01 02 .......@2.......
00 01 ..
------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0029 (41 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0xFA (500 mA)
Data (HexDump) : 09 02 29 00 01 01 00 80 FA 09 04 00 00 02 03 00 ..).............
00 00 09 21 11 01 00 01 22 E1 01 07 05 81 03 40 ...!...."......@
00 05 07 05 03 03 40 00 05 ......@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x02 (2 Endpoints)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 02 03 00 00 00 .........
------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0111 (HID Version 1.11)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 11 01 00 01 22 E1 01 .!...."..
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x01E1 (481 bytes)
05 01 Usage Page (Generic Desktop Controls)
09 05 Usage (Gamepad)
A1 01 Collection (Application)
85 01 Report ID (0x01)
09 30 Usage (Direction-X)
09 31 Usage (Direction-Y)
09 32 Usage (Direction-Z)
09 35 Usage (Rotate-Z)
15 00 Logical Minimum (0)
26 FF 00 Logical Maximum (255)
75 08 Report Size (8)
95 04 Report Count (4)
81 02 Input (Var)
09 39 Usage (Hat Switch)
15 00 Logical Minimum (0)
25 07 Logical Maximum (7)
35 00 Physical Minimum (0)
46 3B 01 Physical Maximum (315)
65 14 Unit (0x14)
75 04 Report Size (4)
95 01 Report Count (1)
81 42 Input (Var, NullState)
65 00 Unit (0x00)
05 09 Usage Page (Buttons)
19 01 Usage Minimum (1)
29 0E Usage Maximum (14)
15 00 Logical Minimum (0)
25 01 Logical Maximum (1)
75 01 Report Size (1)
95 0E Report Count (14)
81 02 Input (Var)
06 00 FF Usage Page (Vendor Defined)
09 20 Usage (unk)
75 06 Report Size (6)
95 01 Report Count (1)
81 02 Input (Var)
05 01 Usage Page (Generic Desktop Controls)
09 33 Usage (Rotate-X)
09 34 Usage (Rotate-Y)
15 00 Logical Minimum (0)
26 FF 00 Logical Maximum (255)
75 08 Report Size (8)
95 02 Report Count (2)
81 02 Input (Var)
06 00 FF Usage Page (Vendor Defined)
09 21 Usage (unk)
95 36 Report Count (54)
81 02 Input (Var)
85 05 Report ID (0x05)
09 22 Usage (unk)
95 1F Report Count (31)
91 02 Output (Var)
85 03 Report ID (0x03)
0A 21 27 Usage (unk)
95 2F Report Count (47)
B1 02 Feature (Var)
85 02 Report ID (0x02)
09 24 Usage (unk)
95 24 Report Count (36)
B1 02 Feature (Var)
85 08 Report ID (0x08)
09 25 Usage (unk)
95 03 Report Count (3)
B1 02 Feature (Var)
85 10 Report ID (0x10)
09 26 Usage (unk)
95 04 Report Count (4)
B1 02 Feature (Var)
85 11 Report ID (0x11)
09 27 Usage (unk)
95 02 Report Count (2)
B1 02 Feature (Var)
85 12 Report ID (0x12)
06 02 FF Usage Page (Vendor Defined)
09 21 Usage (unk)
95 0F Report Count (15)
B1 02 Feature (Var)
85 13 Report ID (0x13)
09 22 Usage (unk)
95 16 Report Count (22)
B1 02 Feature (Var)
85 14 Report ID (0x14)
06 05 FF Usage Page (Vendor Defined)
09 20 Usage (unk)
95 10 Report Count (16)
B1 02 Feature (Var)
85 15 Report ID (0x15)
09 21 Usage (unk)
95 2C Report Count (44)
B1 02 Feature (Var)
06 80 FF Usage Page (Vendor Defined)
85 80 Report ID (0x80)
09 20 Usage (unk)
95 06 Report Count (6)
B1 02 Feature (Var)
85 81 Report ID (0x81)
09 21 Usage (unk)
95 06 Report Count (6)
B1 02 Feature (Var)
85 82 Report ID (0x82)
09 22 Usage (unk)
95 05 Report Count (5)
B1 02 Feature (Var)
85 83 Report ID (0x83)
09 23 Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 84 Report ID (0x84)
09 24 Usage (unk)
95 04 Report Count (4)
B1 02 Feature (Var)
85 85 Report ID (0x85)
09 25 Usage (unk)
95 06 Report Count (6)
B1 02 Feature (Var)
85 86 Report ID (0x86)
09 26 Usage (unk)
95 06 Report Count (6)
B1 02 Feature (Var)
85 87 Report ID (0x87)
09 27 Usage (unk)
95 23 Report Count (35)
B1 02 Feature (Var)
85 88 Report ID (0x88)
09 28 Usage (unk)
95 22 Report Count (34)
B1 02 Feature (Var)
85 89 Report ID (0x89)
09 29 Usage (unk)
95 02 Report Count (2)
B1 02 Feature (Var)
85 90 Report ID (0x90)
09 30 Usage (unk)
95 05 Report Count (5)
B1 02 Feature (Var)
85 91 Report ID (0x91)
09 31 Usage (unk)
95 03 Report Count (3)
B1 02 Feature (Var)
85 92 Report ID (0x92)
09 32 Usage (unk)
95 03 Report Count (3)
B1 02 Feature (Var)
85 93 Report ID (0x93)
09 33 Usage (unk)
95 0C Report Count (12)
B1 02 Feature (Var)
85 A0 Report ID (0xA0)
09 40 Usage (unk)
95 06 Report Count (6)
B1 02 Feature (Var)
85 A1 Report ID (0xA1)
09 41 Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 A2 Report ID (0xA2)
09 42 Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 A3 Report ID (0xA3)
09 43 Usage (unk)
95 30 Report Count (48)
B1 02 Feature (Var)
85 A4 Report ID (0xA4)
09 44 Usage (unk)
95 0D Report Count (13)
B1 02 Feature (Var)
85 A5 Report ID (0xA5)
09 45 Usage (unk)
95 15 Report Count (21)
B1 02 Feature (Var)
85 A6 Report ID (0xA6)
09 46 Usage (unk)
95 15 Report Count (21)
B1 02 Feature (Var)
85 A7 Report ID (0xA7)
09 4A Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 A8 Report ID (0xA8)
09 4B Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 A9 Report ID (0xA9)
09 4C Usage (unk)
95 08 Report Count (8)
B1 02 Feature (Var)
85 AA Report ID (0xAA)
09 4E Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 AB Report ID (0xAB)
09 4F Usage (unk)
95 39 Report Count (57)
B1 02 Feature (Var)
85 AC Report ID (0xAC)
09 50 Usage (unk)
95 39 Report Count (57)
B1 02 Feature (Var)
85 AD Report ID (0xAD)
09 51 Usage (unk)
95 0B Report Count (11)
B1 02 Feature (Var)
85 AE Report ID (0xAE)
09 52 Usage (unk)
95 01 Report Count (1)
B1 02 Feature (Var)
85 AF Report ID (0xAF)
09 53 Usage (unk)
95 02 Report Count (2)
B1 02 Feature (Var)
85 B0 Report ID (0xB0)
09 54 Usage (unk)
95 3F Report Count (63)
B1 02 Feature (Var)
C0 End Collection
06 F0 FF Usage Page (Vendor Defined)
09 40 Usage (unk)
A1 01 Collection (Application)
85 F0 Report ID (0xF0)
09 47 Usage (unk)
95 3F Report Count (63)
B1 02 Feature (Var)
85 F1 Report ID (0xF1)
09 48 Usage (unk)
95 3F Report Count (63)
B1 02 Feature (Var)
85 F2 Report ID (0xF2)
09 49 Usage (unk)
95 0F Report Count (15)
B1 02 Feature (Var)
85 F3 Report ID (0xF3)
0A 01 47 Usage (unk)
95 07 Report Count (7)
B1 02 Feature (Var)
C0 End Collection
Data (HexDump) : 05 01 09 05 A1 01 85 01 09 30 09 31 09 32 09 35 .........0.1.2.5
15 00 26 FF 00 75 08 95 04 81 02 09 39 15 00 25 ..&..u......9..%
07 35 00 46 3B 01 65 14 75 04 95 01 81 42 65 00 .5.F;.e.u....Be.
05 09 19 01 29 0E 15 00 25 01 75 01 95 0E 81 02 ....)...%.u.....
06 00 FF 09 20 75 06 95 01 81 02 05 01 09 33 09 .... u........3.
34 15 00 26 FF 00 75 08 95 02 81 02 06 00 FF 09 4..&..u.........
21 95 36 81 02 85 05 09 22 95 1F 91 02 85 03 0A !.6.....".......
21 27 95 2F B1 02 85 02 09 24 95 24 B1 02 85 08 !'./.....$.$....
09 25 95 03 B1 02 85 10 09 26 95 04 B1 02 85 11 .%.......&......
09 27 95 02 B1 02 85 12 06 02 FF 09 21 95 0F B1 .'..........!...
02 85 13 09 22 95 16 B1 02 85 14 06 05 FF 09 20 ...."..........
95 10 B1 02 85 15 09 21 95 2C B1 02 06 80 FF 85 .......!.,......
80 09 20 95 06 B1 02 85 81 09 21 95 06 B1 02 85 .. .......!.....
82 09 22 95 05 B1 02 85 83 09 23 95 01 B1 02 85 ..".......#.....
84 09 24 95 04 B1 02 85 85 09 25 95 06 B1 02 85 ..$.......%.....
86 09 26 95 06 B1 02 85 87 09 27 95 23 B1 02 85 ..&.......'.#...
88 09 28 95 22 B1 02 85 89 09 29 95 02 B1 02 85 ..(.".....).....
90 09 30 95 05 B1 02 85 91 09 31 95 03 B1 02 85 ..0.......1.....
92 09 32 95 03 B1 02 85 93 09 33 95 0C B1 02 85 ..2.......3.....
A0 09 40 95 06 B1 02 85 A1 09 41 95 01 B1 02 85 [email protected].....
A2 09 42 95 01 B1 02 85 A3 09 43 95 30 B1 02 85 ..B.......C.0...
A4 09 44 95 0D B1 02 85 A5 09 45 95 15 B1 02 85 ..D.......E.....
A6 09 46 95 15 B1 02 85 A7 09 4A 95 01 B1 02 85 ..F.......J.....
A8 09 4B 95 01 B1 02 85 A9 09 4C 95 08 B1 02 85 ..K.......L.....
AA 09 4E 95 01 B1 02 85 AB 09 4F 95 39 B1 02 85 ..N.......O.9...
AC 09 50 95 39 B1 02 85 AD 09 51 95 0B B1 02 85 ..P.9.....Q.....
AE 09 52 95 01 B1 02 85 AF 09 53 95 02 B1 02 85 ..R.......S.....
B0 09 54 95 3F B1 02 C0 06 F0 FF 09 40 A1 01 85 ..T.?.......@...
F0 09 47 95 3F B1 02 85 F1 09 48 95 3F B1 02 85 ..G.?.....H.?...
F2 09 49 95 0F B1 02 85 F3 0A 01 47 95 07 B1 02 ..I........G....
C0 .
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x05 (5 ms)
Data (HexDump) : 07 05 81 03 40 00 05 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x03 (Direction=OUT EndpointID=3)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x05 (5 ms)
Data (HexDump) : 07 05 03 03 40 00 05 ....@..
----------------- Device Qualifier Descriptor -----------------
Error : request skipped because low-speed device
-------------------- String Descriptors -------------------
------ String Descriptor 0 ------
bLength : 0x04 (4 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language ID[0] : 0x0409 (English - United States)
Data (HexDump) : 04 03 09 04 ....
------ String Descriptor 1 ------
bLength : 0x10 (16 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Unknown"
Data (HexDump) : 10 03 55 00 6E 00 6B 00 6E 00 6F 00 77 00 6E 00 ..U.n.k.n.o.w.n.
------ String Descriptor 2 ------
bLength : 0x22 (34 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Arduino Leonardo"
Data (HexDump) : 22 03 41 00 72 00 64 00 75 00 69 00 6E 00 6F 00 ".A.r.d.u.i.n.o.
20 00 4C 00 65 00 6F 00 6E 00 61 00 72 00 64 00 .L.e.o.n.a.r.d.
6F 00 o.
DS4 arduino... one of the hits is docs.arduino.cc/libraries/ds4 ... you could try it to see if PS4 "likes" it