diff options
| -rw-r--r-- | hidd/main.c | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/hidd/main.c b/hidd/main.c index f710a5a4..c1aeb37a 100644 --- a/hidd/main.c +++ b/hidd/main.c @@ -236,6 +236,16 @@ static int request_encryption(bdaddr_t *src, bdaddr_t *dst)  	return err;  } +static void enable_sixaxis(int csk) +{ +	const unsigned char buf[] = { +		0x53 /*HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE*/, +		0xf4,  0x42, 0x03, 0x00, 0x00 }; +	int err; + +	err = write(csk, buf, sizeof(buf)); +} +  static int create_device(int ctl, int csk, int isk, uint8_t subclass, int nosdp, int nocheck, int bootonly, int encrypt, int timeout)  {  	struct hidp_connadd_req req; @@ -324,6 +334,9 @@ create:  		req.flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);  	} +	if (req.vendor == 0x054c && req.product == 0x0268) +		enable_sixaxis(csk); +  	err = ioctl(ctl, HIDPCONNADD, &req);  error: | 
