82 lines
2.2 KiB
Diff
82 lines
2.2 KiB
Diff
|
From b83e617e98ddfce94f3209399c290c8a764ffe3e Mon Sep 17 00:00:00 2001
|
||
|
From: Bastien Nocera <hadess@hadess.net>
|
||
|
Date: Mon, 27 Nov 2017 16:26:50 +0100
|
||
|
Subject: [PATCH 1/2] autopair: Add more common PIN codes for audio devices
|
||
|
|
||
|
PIN codes "1111", and "1234" are fairly common PIN codes used for audio
|
||
|
devices such as speakers and headsets. This replaces similar quirks
|
||
|
already present in gnome-bluetooth's PIN database.
|
||
|
---
|
||
|
plugins/autopair.c | 18 ++++++++++++++----
|
||
|
1 file changed, 14 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/plugins/autopair.c b/plugins/autopair.c
|
||
|
index 6980b0a64..70e19930e 100644
|
||
|
--- a/plugins/autopair.c
|
||
|
+++ b/plugins/autopair.c
|
||
|
@@ -92,10 +92,20 @@ static ssize_t autopair_pincb(struct btd_adapter *adapter,
|
||
|
case 0x06: /* Headphones */
|
||
|
case 0x07: /* Portable Audio */
|
||
|
case 0x0a: /* HiFi Audio Device */
|
||
|
- if (attempt > 1)
|
||
|
- return 0;
|
||
|
- memcpy(pinbuf, "0000", 4);
|
||
|
- return 4;
|
||
|
+ {
|
||
|
+ const char *pincodes[] = {
|
||
|
+ "0000",
|
||
|
+ "1234",
|
||
|
+ "1111"
|
||
|
+ };
|
||
|
+ const char *pincode;
|
||
|
+
|
||
|
+ if (attempt > G_N_ELEMENTS(pincodes))
|
||
|
+ return 0;
|
||
|
+ pincode = pincodes[attempt - 1];
|
||
|
+ memcpy(pinbuf, pincode, strlen(pincode));
|
||
|
+ return strlen(pincode);
|
||
|
+ }
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
--
|
||
|
2.21.0
|
||
|
|
||
|
|
||
|
From 62d8a8237e3cb5bea5333d485416cc8d8b92556c Mon Sep 17 00:00:00 2001
|
||
|
From: Bastien Nocera <hadess@hadess.net>
|
||
|
Date: Mon, 27 Nov 2017 16:26:51 +0100
|
||
|
Subject: [PATCH 2/2] autopair: Add pin codes to try for gaming input devices
|
||
|
|
||
|
As well as remote controls.
|
||
|
---
|
||
|
plugins/autopair.c | 12 ++++++++++++
|
||
|
1 file changed, 12 insertions(+)
|
||
|
|
||
|
diff --git a/plugins/autopair.c b/plugins/autopair.c
|
||
|
index 70e19930e..043bd9b9d 100644
|
||
|
--- a/plugins/autopair.c
|
||
|
+++ b/plugins/autopair.c
|
||
|
@@ -111,6 +111,18 @@ static ssize_t autopair_pincb(struct btd_adapter *adapter,
|
||
|
|
||
|
case 0x05: /* Peripheral */
|
||
|
switch ((class & 0xc0) >> 6) {
|
||
|
+ case 0x00:
|
||
|
+ switch ((class & 0x1e) >> 2) {
|
||
|
+ case 0x01: /* Joystick */
|
||
|
+ case 0x02: /* Gamepad */
|
||
|
+ case 0x03: /* Remote Control */
|
||
|
+ if (attempt > 1)
|
||
|
+ return 0;
|
||
|
+ memcpy(pinbuf, "0000", 4);
|
||
|
+ return 4;
|
||
|
+ }
|
||
|
+
|
||
|
+ break;
|
||
|
case 0x01: /* Keyboard */
|
||
|
case 0x03: /* Combo keyboard/pointing device */
|
||
|
/* For keyboards rejecting the first random code
|
||
|
--
|
||
|
2.21.0
|
||
|
|