diff --git a/packages/network/bluez/package.mk b/packages/network/bluez/package.mk index 7a29825ccf..5ee2c02add 100644 --- a/packages/network/bluez/package.mk +++ b/packages/network/bluez/package.mk @@ -17,12 +17,12 @@ ################################################################################ PKG_NAME="bluez" -PKG_VERSION="5.47" -PKG_SHA256="cf75bf7cd5d564f21cc4a2bd01d5c39ce425397335fd47d9bbe43af0a58342c8" +PKG_VERSION="5.48" +PKG_SHA256="a89ba9f21eabdc28a6eec046c14f901ee2d9809d303f8df25e9e2d4d7c4c2dc8" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.bluez.org/" -PKG_URL="http://www.kernel.org/pub/linux/bluetooth/$PKG_NAME-$PKG_VERSION.tar.xz" +PKG_URL="https://git.kernel.org/pub/scm/bluetooth/bluez.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.gz" PKG_DEPENDS_TARGET="toolchain dbus glib readline systemd" PKG_SECTION="network" PKG_SHORTDESC="bluez: Bluetooth Tools and System Daemons for Linux." diff --git a/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch b/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch index 60b4067e75..a2768cc551 100644 --- a/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch +++ b/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch @@ -9,48 +9,40 @@ Navigation Controller is using PID 0x042f over USB but PID 0x0268 plugins/sixaxis.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) -diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c -index fcc93bc..50db6c1 100644 --- a/plugins/sixaxis.c +++ b/plugins/sixaxis.c -@@ -54,6 +54,7 @@ static const struct { +@@ -363,7 +363,13 @@ + info("sixaxis: setting up new device"); + + btd_device_device_set_name(device, cp->name); +- btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); ++ ++ /* if device reports different pid/vid on BT prefer those over USB */ ++ if (cp->bt_pid) ++ btd_device_set_pnpid(device, cp->source, cp->vid, cp->bt_pid, cp->version); ++ else ++ btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); ++ + btd_device_set_temporary(device, true); + + closure = g_new0(struct authentication_closure, 1); +--- a/profiles/input/sixaxis.h ++++ b/profiles/input/sixaxis.h +@@ -38,6 +38,7 @@ uint16_t vid; uint16_t pid; uint16_t version; + uint16_t bt_pid; - } devices[] = { - { - .name = "PLAYSTATION(R)3 Controller", -@@ -68,6 +69,7 @@ static const struct { - .vid = 0x054c, - .pid = 0x042f, - .version = 0x0000, -+ .bt_pid = 0x0268, - }, + CablePairingType type; }; - -@@ -300,8 +302,19 @@ static bool setup_device(int fd, int index, struct btd_adapter *adapter) - info("sixaxis: setting up new device"); - - btd_device_device_set_name(device, devices[index].name); -- btd_device_set_pnpid(device, devices[index].source, devices[index].vid, -- devices[index].pid, devices[index].version); -+ -+ /* if device reports different pid/vid on BT prefer those over USB */ -+ if (devices[index].bt_pid) -+ btd_device_set_pnpid(device, devices[index].source, -+ devices[index].vid, -+ devices[index].bt_pid, -+ devices[index].version); -+ else -+ btd_device_set_pnpid(device, devices[index].source, -+ devices[index].vid, -+ devices[index].pid, -+ devices[index].version); -+ - btd_device_set_temporary(device, false); - - return true; --- + +@@ -59,6 +60,7 @@ + .vid = 0x054c, + .pid = 0x042f, + .version = 0x0000, ++ .bt_pid = 0x0268, + .type = CABLE_PAIRING_SIXAXIS, + }, + { +-- 2.1.4 - diff --git a/packages/network/bluez/patches/bluez-12_sixaxis-add-support-for-setting-SDP-record.patch b/packages/network/bluez/patches/bluez-12_sixaxis-add-support-for-setting-SDP-record.patch deleted file mode 100644 index ebe761459e..0000000000 --- a/packages/network/bluez/patches/bluez-12_sixaxis-add-support-for-setting-SDP-record.patch +++ /dev/null @@ -1,71 +0,0 @@ -From: Szymon Janc -Subject: [PATCH 2/5] core/device: Add support for setting SDP record -Newsgroups: gmane.linux.bluez.kernel -Date: 2015-06-15 18:28:27 GMT (36 weeks, 4 days, 21 hours and 33 minutes ago) - -This allows to set SDP record for device without resolving services -over SDP. After SDP is provided profiles are probed. ---- - src/device.c | 31 +++++++++++++++++++++++++++++++ - src/device.h | 3 +++ - 2 files changed, 34 insertions(+) - -diff --git a/src/device.c b/src/device.c -index 3ef0340..859aa3c 100644 ---- a/src/device.c -+++ b/src/device.c -@@ -5542,6 +5542,37 @@ static sdp_list_t *read_device_records(struct btd_device *device) - return recs; - } - -+void btd_device_set_record(struct btd_device *device, const char *uuid, -+ sdp_record_t *rec) -+{ -+ /* This API is only used for BR/EDR */ -+ struct bearer_state *state = &device->bredr_state; -+ struct browse_req *req; -+ sdp_list_t *recs = NULL; -+ -+ if (!rec) -+ return; -+ -+ req = browse_request_new(device, BROWSE_SDP, NULL); -+ if (!req) -+ return; -+ -+ recs = sdp_list_append(recs, rec); -+ update_bredr_services(req, recs); -+ sdp_list_free(recs, NULL); -+ -+ device->svc_refreshed = true; -+ state->svc_resolved = true; -+ -+ device_probe_profiles(device, req->profiles_added); -+ -+ /* Propagate services changes */ -+ g_dbus_emit_property_changed(dbus_conn, req->device->path, -+ DEVICE_INTERFACE, "UUIDs"); -+ -+ device_svc_resolved(device, BROWSE_SDP, device->bdaddr_type, 0); -+} -+ - const sdp_record_t *btd_device_get_record(struct btd_device *device, - const char *uuid) - { -diff --git a/src/device.h b/src/device.h -index 1955f54..aee677a 100644 ---- a/src/device.h -+++ b/src/device.h -@@ -62,6 +62,9 @@ struct device_addr_type { - int device_addr_type_cmp(gconstpointer a, gconstpointer b); - GSList *btd_device_get_uuids(struct btd_device *device); - void device_probe_profiles(struct btd_device *device, GSList *profiles); -+ -+void btd_device_set_record(struct btd_device *device, const char *uuid, -+ sdp_record_t *rec); - const sdp_record_t *btd_device_get_record(struct btd_device *device, - const char *uuid); - struct gatt_primary *btd_device_get_primary(struct btd_device *device, --- -2.1.4 - diff --git a/packages/network/bluez/patches/bluez-13_sixaxis-provide-dualshock-3-SDP-record.patch b/packages/network/bluez/patches/bluez-13_sixaxis-provide-dualshock-3-SDP-record.patch deleted file mode 100644 index 91aa83af1b..0000000000 --- a/packages/network/bluez/patches/bluez-13_sixaxis-provide-dualshock-3-SDP-record.patch +++ /dev/null @@ -1,216 +0,0 @@ -From: Szymon Janc -Subject: [PATCH 3/5] sixaxis: Provide DualShock 3 SDP record while adding new device -Newsgroups: gmane.linux.bluez.kernel -Date: 2015-06-15 18:28:28 GMT (36 weeks, 4 days, 21 hours and 33 minutes ago) - -This allows to skip SDP search for DualShock 3 devices. Since some -DS3 clones were reported to not provide any SDP record this should -allow to operate them. ---- - Makefile.plugins | 1 + - plugins/sixaxis.c | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 167 insertions(+) - -diff --git a/Makefile.plugins b/Makefile.plugins -index cae43d9..2c2385d 100644 ---- a/Makefile.plugins -+++ b/Makefile.plugins -@@ -118,4 +118,5 @@ plugins_sixaxis_la_SOURCES = plugins/sixaxis.c - plugins_sixaxis_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version \ - -no-undefined @UDEV_LIBS@ - plugins_sixaxis_la_CFLAGS = $(AM_CFLAGS) -fvisibility=hidden @UDEV_CFLAGS@ -+plugins_sixaxis_la_LIBADD = lib/libbluetooth-internal.la - endif -diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c -index 50db6c1..782a89f 100644 ---- a/plugins/sixaxis.c -+++ b/plugins/sixaxis.c -@@ -40,4 +40,6 @@ - - #include "lib/bluetooth.h" -+#include "lib/sdp.h" -+#include "lib/sdp_lib.h" - #include "lib/uuid.h" - #include "src/adapter.h" -@@ -257,6 +258,170 @@ out: - return false; - } - -+static sdp_record_t *get_sdp_record(void) -+{ -+ sdp_record_t *record; -+ uint16_t hid_release, hid_parser, version, timeout; -+ uint8_t sdp_disable, battery, remote_wakeup, norm_connect, boot_device; -+ uint8_t subclass, country, virtual_cable, reconnect; -+ sdp_list_t *svclass_id, *pfseq, *apseq, *root; -+ uuid_t root_uuid, hidkb_uuid, l2cap_uuid, hidp_uuid; -+ sdp_profile_desc_t profile; -+ sdp_list_t *aproto, *proto[3]; -+ sdp_data_t *psm, *lang_lst, *lang_lst2, *hid_spec_lst, *hid_spec_lst2; -+ uint8_t dtd = SDP_UINT16; -+ uint8_t dtd2 = SDP_UINT8; -+ uint8_t dtd_data = SDP_TEXT_STR8; -+ void *dtds[2]; -+ void *values[2]; -+ void *dtds2[2]; -+ void *values2[2]; -+ int leng[2]; -+ uint8_t hid_spec_type = 0x22; -+ uint16_t hid_attr_lang[] = { 0x409, 0x100 }; -+ static const uint16_t ctrl = 0x11; -+ static const uint16_t intr = 0x13; -+ uint8_t hid_spec[] = { -+ 0x05, 0x01, 0x09, 0x04, 0xa1, 0x01, 0xa1, 0x02, 0x85, 0x01, -+ 0x75, 0x08, 0x95, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x81, -+ 0x03, 0x75, 0x01, 0x95, 0x13, 0x15, 0x00, 0x25, 0x01, 0x35, -+ 0x00, 0x45, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x13, 0x81, -+ 0x02, 0x75, 0x01, 0x95, 0x0d, 0x06, 0x00, 0xff, 0x81, 0x03, -+ 0x15, 0x00, 0x26, 0xff, 0x00, 0x05, 0x01, 0x09, 0x01, 0xa1, -+ 0x00, 0x75, 0x08, 0x95, 0x04, 0x35, 0x00, 0x46, 0xff, 0x00, -+ 0x09, 0x30, 0x09, 0x31, 0x09, 0x32, 0x09, 0x35, 0x81, 0x02, -+ 0xc0, 0x05, 0x01, 0x75, 0x08, 0x95, 0x27, 0x09, 0x01, 0x81, -+ 0x02, 0x75, 0x08, 0x95, 0x30, 0x09, 0x01, 0x91, 0x02, 0x75, -+ 0x08, 0x95, 0x30, 0x09, 0x01, 0xb1, 0x02, 0xc0, 0xa1, 0x02, -+ 0x85, 0x02, 0x75, 0x08, 0x95, 0x30, 0x09, 0x01, 0xb1, 0x02, -+ 0xc0, 0xa1, 0x02, 0x85, 0xee, 0x75, 0x08, 0x95, 0x30, 0x09, -+ 0x01, 0xb1, 0x02, 0xc0, 0xa1, 0x02, 0x85, 0xef, 0x75, 0x08, -+ 0x95, 0x30, 0x09, 0x01, 0xb1, 0x02, 0xc0, 0xc0, 0x00 -+ }; -+ -+ record = sdp_record_alloc(); -+ if (!record) -+ return NULL; -+ -+ sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); -+ root = sdp_list_append(0, &root_uuid); -+ sdp_set_browse_groups(record, root); -+ -+ sdp_add_lang_attr(record); -+ -+ sdp_uuid16_create(&hidkb_uuid, HID_SVCLASS_ID); -+ svclass_id = sdp_list_append(0, &hidkb_uuid); -+ sdp_set_service_classes(record, svclass_id); -+ -+ sdp_uuid16_create(&profile.uuid, HID_PROFILE_ID); -+ profile.version = 0x0100; -+ pfseq = sdp_list_append(0, &profile); -+ sdp_set_profile_descs(record, pfseq); -+ -+ /* protocols */ -+ sdp_uuid16_create(&l2cap_uuid, L2CAP_UUID); -+ proto[1] = sdp_list_append(0, &l2cap_uuid); -+ psm = sdp_data_alloc(SDP_UINT16, &ctrl); -+ proto[1] = sdp_list_append(proto[1], psm); -+ apseq = sdp_list_append(0, proto[1]); -+ -+ sdp_uuid16_create(&hidp_uuid, HIDP_UUID); -+ proto[2] = sdp_list_append(0, &hidp_uuid); -+ apseq = sdp_list_append(apseq, proto[2]); -+ -+ aproto = sdp_list_append(0, apseq); -+ sdp_set_access_protos(record, aproto); -+ -+ /* additional protocols */ -+ proto[1] = sdp_list_append(0, &l2cap_uuid); -+ psm = sdp_data_alloc(SDP_UINT16, &intr); -+ proto[1] = sdp_list_append(proto[1], psm); -+ apseq = sdp_list_append(0, proto[1]); -+ -+ sdp_uuid16_create(&hidp_uuid, HIDP_UUID); -+ proto[2] = sdp_list_append(0, &hidp_uuid); -+ apseq = sdp_list_append(apseq, proto[2]); -+ -+ aproto = sdp_list_append(0, apseq); -+ sdp_set_add_access_protos(record, aproto); -+ -+ sdp_set_info_attr(record, "Wireless Controller", -+ "Sony Computer Entertainment", -+ "Wireless Controller"); -+ -+ hid_release = 0x0100; -+ sdp_attr_add_new(record, SDP_ATTR_HID_DEVICE_RELEASE_NUMBER, SDP_UINT16, -+ &hid_release); -+ -+ hid_parser = 0x0100; -+ sdp_attr_add_new(record, SDP_ATTR_HID_PARSER_VERSION, SDP_UINT16, -+ &hid_parser); -+ -+ subclass = 0x00; -+ sdp_attr_add_new(record, SDP_ATTR_HID_DEVICE_SUBCLASS, SDP_UINT8, -+ &subclass); -+ -+ country = 0x21; -+ sdp_attr_add_new(record, SDP_ATTR_HID_COUNTRY_CODE, SDP_UINT8, -+ &country); -+ -+ virtual_cable = 0x01; -+ sdp_attr_add_new(record, SDP_ATTR_HID_VIRTUAL_CABLE, SDP_BOOL, -+ &virtual_cable); -+ -+ reconnect = 0x01; -+ sdp_attr_add_new(record, SDP_ATTR_HID_RECONNECT_INITIATE, SDP_BOOL, -+ &reconnect); -+ -+ dtds[0] = &dtd2; -+ values[0] = &hid_spec_type; -+ dtds[1] = &dtd_data; -+ values[1] = hid_spec; -+ leng[0] = 0; -+ leng[1] = sizeof(hid_spec); -+ hid_spec_lst = sdp_seq_alloc_with_length(dtds, values, leng, 2); -+ hid_spec_lst2 = sdp_data_alloc(SDP_SEQ8, hid_spec_lst); -+ sdp_attr_add(record, SDP_ATTR_HID_DESCRIPTOR_LIST, hid_spec_lst2); -+ -+ dtds2[0] = &dtd; -+ values2[0] = &hid_attr_lang[0]; -+ dtds2[1] = &dtd; -+ values2[1] = &hid_attr_lang[1]; -+ lang_lst = sdp_seq_alloc(dtds2, values2, sizeof(hid_attr_lang) / 2); -+ lang_lst2 = sdp_data_alloc(SDP_SEQ8, lang_lst); -+ sdp_attr_add(record, SDP_ATTR_HID_LANG_ID_BASE_LIST, lang_lst2); -+ -+ sdp_disable = 0x00; -+ sdp_attr_add_new(record, SDP_ATTR_HID_SDP_DISABLE, SDP_BOOL, -+ &sdp_disable); -+ -+ battery = 0x01; -+ sdp_attr_add_new(record, SDP_ATTR_HID_BATTERY_POWER, SDP_BOOL, -+ &battery); -+ -+ remote_wakeup = 0x01; -+ sdp_attr_add_new(record, SDP_ATTR_HID_REMOTE_WAKEUP, SDP_BOOL, -+ &remote_wakeup); -+ -+ version = 0x0100; -+ sdp_attr_add_new(record, SDP_ATTR_HID_PROFILE_VERSION, SDP_UINT16, -+ &version); -+ -+ timeout = 0x3e80; -+ sdp_attr_add_new(record, SDP_ATTR_HID_SUPERVISION_TIMEOUT, SDP_UINT16, -+ &timeout); -+ -+ norm_connect = 0x00; -+ sdp_attr_add_new(record, SDP_ATTR_HID_NORMALLY_CONNECTABLE, SDP_BOOL, -+ &norm_connect); -+ -+ boot_device = 0x00; -+ sdp_attr_add_new(record, SDP_ATTR_HID_BOOT_DEVICE, SDP_BOOL, -+ &boot_device); -+ -+ return record; -+} -+ - static bool setup_device(int fd, int index, struct btd_adapter *adapter) - { - char device_addr[18], master_addr[18], adapter_addr[18]; -@@ -316,6 +481,7 @@ static bool setup_device(int fd, int index, struct btd_adapter *adapter) - devices[index].version); - - btd_device_set_temporary(device, false); -+ btd_device_set_record(device, HID_UUID, get_sdp_record()); - - return true; - } --- -2.1.4 - diff --git a/packages/network/bluez/patches/bluez-14_sixaxis-remove-not-needed-checks.patch b/packages/network/bluez/patches/bluez-14_sixaxis-remove-not-needed-checks.patch deleted file mode 100644 index 04caec68c0..0000000000 --- a/packages/network/bluez/patches/bluez-14_sixaxis-remove-not-needed-checks.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: Szymon Janc -Subject: [PATCH 4/5] profiles/input: Remove not needed sixaxis checks -Newsgroups: gmane.linux.bluez.kernel -Date: 2015-06-15 18:28:29 GMT (36 weeks, 4 days, 21 hours and 33 minutes ago) - -This check is now needed only for DualShock 4. ---- - profiles/input/server.c | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/profiles/input/server.c b/profiles/input/server.c -index eb3fcf8..101108b 100644 ---- a/profiles/input/server.c -+++ b/profiles/input/server.c -@@ -131,18 +131,10 @@ static bool dev_is_sixaxis(const bdaddr_t *src, const bdaddr_t *dst) - vid = btd_device_get_vendor(device); - pid = btd_device_get_product(device); - -- /* DualShock 3 */ -- if (vid == 0x054c && pid == 0x0268) -- return true; -- - /* DualShock 4 */ - if (vid == 0x054c && pid == 0x05c4) - return true; - -- /* Navigation Controller */ -- if (vid == 0x054c && pid == 0x042f) -- return true; -- - return false; - } - --- -2.1.4 - diff --git a/packages/network/bluez/patches/bluez-15_sixaxis-fix-multi-line-comments-style.patch b/packages/network/bluez/patches/bluez-15_sixaxis-fix-multi-line-comments-style.patch deleted file mode 100644 index ac8f462fbf..0000000000 --- a/packages/network/bluez/patches/bluez-15_sixaxis-fix-multi-line-comments-style.patch +++ /dev/null @@ -1,43 +0,0 @@ -From: Szymon Janc -Subject: [PATCH 5/5] sixaxis: Fix multi-line comments style -Newsgroups: gmane.linux.bluez.kernel -Date: 2015-06-15 18:28:30 GMT (36 weeks, 4 days, 21 hours and 33 minutes ago) - ---- - plugins/sixaxis.c | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c -index 782a89f..9b6cad4 100644 ---- a/plugins/sixaxis.c -+++ b/plugins/sixaxis.c -@@ -435,9 +435,11 @@ static bool setup_device(int fd, int index, struct btd_adapter *adapter) - if (get_master_bdaddr(fd, &master_bdaddr) < 0) - return false; - -- /* This can happen if controller was plugged while already connected -+ /* -+ * This can happen if controller was plugged while already connected - * eg. to charge up battery. -- * Don't set LEDs in that case, hence return false */ -+ * Don't set LEDs in that case, hence return false -+ */ - device = btd_adapter_find_device(adapter, &device_bdaddr, - BDADDR_BREDR); - if (device && btd_device_is_connected(device)) -@@ -533,8 +535,10 @@ static int get_js_number(struct udev_device *udevice) - if (!input_parent) - goto next; - -- /* check if this is the joystick relative to the hidraw device -- * above */ -+ /* -+ * check if this is the joystick relative to the hidraw device -+ * above -+ */ - input_id = udev_device_get_sysattr_value(input_parent, "uniq"); - - /* --- -2.1.4 - diff --git a/packages/network/bluez/patches/bluez-20-sixaxis-autotrust.patch b/packages/network/bluez/patches/bluez-20-sixaxis-autotrust.patch index e6daa7321a..a2ed445ba2 100644 --- a/packages/network/bluez/patches/bluez-20-sixaxis-autotrust.patch +++ b/packages/network/bluez/patches/bluez-20-sixaxis-autotrust.patch @@ -1,11 +1,10 @@ -diff -Naur bluez-5.37/plugins/sixaxis.c bluez-5.37.patch/plugins/sixaxis.c ---- bluez-5.37/plugins/sixaxis.c 2016-04-21 21:38:45.805962009 +0200 -+++ bluez-5.37.patch/plugins/sixaxis.c 2016-04-24 15:22:36.852107941 +0200 -@@ -484,6 +484,7 @@ - devices[index].version); +--- a/plugins/sixaxis.c ++++ b/plugins/sixaxis.c +@@ -370,6 +370,7 @@ + else + btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); - btd_device_set_temporary(device, false); + btd_device_set_trusted(device, true); - btd_device_set_record(device, HID_UUID, get_sdp_record()); + btd_device_set_temporary(device, true); - return true; + closure = g_new0(struct authentication_closure, 1);