Commits

Commit Message Author Age Changes
5bac4cdd device-api: Add Set property This adds Set property so clients are able to identify when a device belongs to a set. Luiz Augusto von Dentz 2 years ago 1 file, +10, -0
6477522e doc: Add set-api This adds set-api.rst which documents DeviceSet interface. Luiz Augusto von Dentz 2 years ago 1 file, +53, -0
c2e99aef shared/ad: Add RSI data type This adds BT_AD_CSIP_RSI advertising data type. Luiz Augusto von Dentz 2 years ago 1 file, +1, -0
c1dd94cc shared/crypto: Add bt_crypto_sirk This adds bt_crypto_sirk which attempts to generate a unique SIRK using the following steps: - Generate a hash (k) using the str as input - Generate a hash (sirk) using vendor, product, version and source as input - Encrypt sirk using k as LTK with sef function. Luiz Augusto von Dentz 2 years ago 2 files, +43, -0
31ab084f client/player: Update High Reliability presets This updates High Reliability presets as published in BAP 1.0.1: https://www.bluetooth.com/specifications/bap-1-0-1/ Luiz Augusto von Dentz 2 years ago 1 file, +32, -8
a0847e00 iso-tester: Update High Reliability presets This updates High Reliability presets as published in BAP 1.0.1: https://www.bluetooth.com/specifications/bap-1-0-1/ Luiz Augusto von Dentz 2 years ago 1 file, +16, -16
4f34eeba l2cap-tester: Add server tests for Ext-Flowctl This adds the following tests: L2CAP Ext-Flowctl Server - Success L2CAP Ext-Flowctl Server - Nval SCID L2CAP LE EATT Client - Success L2CAP LE EATT Server - Success L2CAP LE EATT Server - Reject Luiz Augusto von Dentz 2 years ago 1 file, +228, -24
1033a462 gatt: Use DEFER_SETUP for EATT channels This makes use of DEFER_SETUP mechanism to do the following checks before accepting the connection: - Checks a valid device object exits - Checks if initiator/central as if the peripheral start connecting it may cause collisions. - Checks if the limit of allowed connections has been reached. Luiz Augusto von Dentz 2 years ago 4 files, +75, -23
ab3ff0d2 main: Disable EATT by default EATT is causing some problem with some platforms as they also attempt to configure it may cause a connection collision which needs to be handled by the kernel. Luiz Augusto von Dentz 2 years ago 2 files, +3, -3
3842320f gatt: Fix creating duplicated objects This checks cid before attempting to create device, if the device is using an RPA it could be that the MGMT event has not been processed yet which would lead to create a second copy of the same device using its identity address. Luiz Augusto von Dentz 2 years ago 1 file, +16, -2
581aae6a device: Fix not always storing device info When updating the device address check if the device is marked as temporary before attempting to call store_device_info otherwise it will have no effect and instead btd_device_set_temporary must be called. Luiz Augusto von Dentz 2 years ago 1 file, +4, -1
96ab7296 shared/att: Always queue BT_ATT_OP_MTU_REQ on the fixed channel BT_ATT_OP_MTU_REQ shall only be sent on the so called fixed channel since EATT channels shall use L2CAP procedure to update its MTU. Luiz Augusto von Dentz 2 years ago 1 file, +9, -0
57f15616 bap: Fix crash on unexpected disconnect If an unexpected disconnect happens while bt_bap_config is pending the following trace can be observed, to fix it bt_bap_config is reworked so it no longer attempts to create and config the stream in place, instead it just return the new stream and the function is renamed to bt_bap_stream_new: Invalid write of size 4 at 0x3980D8: config_cb (bap.c:395) by 0x4DF5A3: bap_req_complete (bap.c:3471) by 0x4E9D33: bap_req_detach (bap.c:3807) by 0x4E9D33: bt_bap_detach (bap.c:3819) by 0x4E9D33: bt_bap_detach (bap.c:3810) by 0x397AA9: bap_disconnect (bap.c:1342) by 0x4223E0: btd_service_disconnect (service.c:305) by 0x4974D8F: g_slist_foreach (in /usr/lib64/libglib-2.0.so.0.7200.3) by 0x438FC3: att_disconnected_cb (device.c:5160) by 0x49A6C6: queue_foreach (queue.c:207) by 0x4B463B: disconnect_cb (att.c:701) by 0x5054DF: watch_callback (io-glib.c:157) by 0x495BFAE: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.7200.3) by 0x49B12C7: ??? (in /usr/lib64/libglib-2.0.so.0.7200.3) Address 0x6576940 is 96 bytes inside a block of size 112 free'd at 0x48480E4: free (vg_replace_malloc.c:872) by 0x48F78D: remove_interface (object.c:660) by 0x490489: g_dbus_unregister_interface (object.c:1394) by 0x397BA8: ep_remove (bap.c:1330) by 0x49ACF4: queue_remove_if (queue.c:279) by 0x49B0AC: queue_remove_all (queue.c:321) by 0x397A7C: bap_disconnect (bap.c:1339) by 0x4223E0: btd_service_disconnect (service.c:305) by 0x4974D8F: g_slist_foreach (in /usr/lib64/libglib-2.0.so.0.7200.3) by 0x438FC3: att_disconnected_cb (device.c:5160) by 0x49A6C6: queue_foreach (queue.c:207) by 0x4B463B: disconnect_cb (att.c:701) Block was alloc'd at at 0x484586F: malloc (vg_replace_malloc.c:381) by 0x49B432: util_malloc (util.c:43) by 0x39A1D9: ep_register (bap.c:563) by 0x39A1D9: pac_found (bap.c:664) by 0x4E5FEA: bap_foreach_pac (bap.c:3980) by 0x4EA437: bap_notify_ready (bap.c:2736) by 0x4EA437: bap_idle (bap.c:3711) by 0x4B52F0: idle_notify (gatt-client.c:171) by 0x49ACF4: queue_remove_if (queue.c:279) by 0x49B0AC: queue_remove_all (queue.c:321) by 0x4C092C: notify_client_idle (gatt-client.c:180) by 0x4C092C: request_unref (gatt-client.c:199) by 0x4AACB5: destroy_att_send_op (att.c:209) by 0x4B2B88: handle_rsp (att.c:862) by 0x4B2B88: can_read_data (att.c:1052) by 0x5054DF: watch_callback (io-glib.c:157) Luiz Augusto von Dentz 2 years ago 3 files, +16, -34
07bd8e3a shared/bap: Make use of bt_gatt_client_idle_register This uses bt_gatt_client_idle_register to track when instance is ready instead of using a dedicated queue to track requests. Fixes: https://github.com/bluez/bluez/issues/485 Luiz Augusto von Dentz 2 years ago 1 file, +74, -94
15458c5e media: Fix not checking BREDR support for A2DP A2DP shall depend on MGMT_SETTING_BREDR setting so the likes of bluetoothctl -e don't attempt to register A2DP with controller that are on LE only mode. Luiz Augusto von Dentz 2 years ago 1 file, +8, -3
d6f790f8 share/gatt-client: Introduce idle callback This introduces the concept of idle callback which can be used to get notified when there is no more pending requests by the client. Luiz Augusto von Dentz 2 years ago 2 files, +84, -2
36c23462 shared/bap: Cleanup requests on detach If session is being detached any ongoing/queue request shall be cancelled as well otherwise when the session is attach again they would be invalid. Luiz Augusto von Dentz 2 years ago 1 file, +16, -0
24aeb319 client: Allow transport.send command to work with multiple transports This enables transport.send to work with multiple transports instead of sending one by one which can create synchronization problems. Luiz Augusto von Dentz 2 years ago 1 file, +40, -33
1923f5dd device: Don't attempt to connect LE if ATT is already connected This checks if an att instance already exists before attempting to connect it once again. Luiz Augusto von Dentz 2 years ago 1 file, +1, -1
2be849c2 iso-tester: Add test for central receiving timestamped ISO packet This attempts to receive a timestamped HCI ISO data packet on central. With kernel 6.2 HCI ISO packet parsing this test fails with Bluetooth: Frame malformed (len 40, expected len 0) Link: https://lore.kernel.org/linux-bluetooth/1fd2d4523c139deda93aab2c31f1508d79c32472.1676921889.git.pav@iki.fi/ Pauli Virtanen 2 years ago 1 file, +15, -1
80a45cb6 bthost: Allow sending ISO packets with sequence number and timestamp Change bthost_send_iso to take packet sequence number and timestamp, and allow it to send timestamped HCI ISO data packets. Currently, btdev passes through ISO packets, so this can also be used to test RX timestamping. Pauli Virtanen 2 years ago 3 files, +36, -15
fcdd38ac shared/bap: fix crash unregistering media endpoint while streaming Always free BAP stream in bt_bap_stream_release if it is not attached to a client session, simplifying the cleanup. Fixes the following ASAN crash is observed when media endpoint is unregistered (stopping sound server) while streaming from remote BAP client: ERROR: AddressSanitizer: heap-use-after-free on address 0x60b0000474d8 READ of size 8 at 0x60b0000474d8 thread T0 #0 0x7a27c6 in stream_set_state src/shared/bap.c:1227 #1 0x7aff61 in remove_streams src/shared/bap.c:2483 #2 0x71d2d0 in queue_foreach src/shared/queue.c:207 #3 0x7b0152 in bt_bap_remove_pac src/shared/bap.c:2501 #4 0x463cda in media_endpoint_destroy profiles/audio/media.c:179 ... 0x60b0000474d8 is located 8 bytes inside of 112-byte region freed by thread T0 here: #0 0x7f93b12b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388) #1 0x7a0504 in bap_stream_free src/shared/bap.c:972 #2 0x7a0800 in bap_stream_detach src/shared/bap.c:989 #3 0x7a26d1 in bap_stream_state_changed src/shared/bap.c:1208 #4 0x7a2ab4 in stream_set_state src/shared/bap.c:1252 #5 0x7ab18a in stream_release src/shared/bap.c:1985 #6 0x7c6919 in bt_bap_stream_release src/shared/bap.c:4572 #7 0x7aff50 in remove_streams src/shared/bap.c:2482 ... previously allocated by thread T0 here: #0 0x7f93b12ba6af in __interceptor_malloc (/lib64/libasan.so.8+0xba6af) #1 0x71e9ae in util_malloc src/shared/util.c:43 #2 0x79c2f5 in bap_stream_new src/shared/bap.c:766 #3 0x7a4863 in ep_config src/shared/bap.c:1446 #4 0x7a4f22 in ascs_config src/shared/bap.c:1481 ... Pauli Virtanen 2 years ago 1 file, +11, -4
46a5d2be device: wait GATT client ready before service accept() if no cache On device ATT attach, do not immediately call accept() for profiles, if there is no cached data in GATT database. Instead, wait for service resolution to complete, as likely accept() cannot succeed before that. Several profiles (bap, vcp, midi, deviceinfo) assume that GATT attributes are available when their accept() is called, returning success even if not. In this case, the services never find the remote attributes and are not operable. Other profiles (hog, batt, ...) fail their accept which prompts core to retry after discovery, and work correctly also in this case. Fix the failing services by waiting for service resolution as necessary, so profiles can assume the GATT DB has some content. Pauli Virtanen 2 years ago 1 file, +4, -3
1106b28b configure: Check ell path If the 'enable-external-ell' is not specified in the configure parameter, the build system assumes that the ELL source is located same level where the bluez source is cloned. But the configure doens't check the folder and user will get the build error while building the source. This patch checks if the ELL source path if the 'enable-external-ell' flag is not set and throws an error if the ELL doesn't exist. Tedd Ho-Jeong An 2 years ago 1 file, +5, -0
1bfd597f audio/transport: update BAP transport QOS values when changed Currently, BAP transport publishes on DBus QOS values obtained at transport creation time. For BAP server the transport creation usually occurs before stream QOS is configured, and these values are then all zero. bap->sdu is also never set. Update transport QOS values in DBus when stream state changes. Since nearly all QOS values are exposed in the transport, use bt_bap_qos to store them there for simplicity. Pauli Virtanen 2 years ago 1 file, +43, -19
5d347b54 media: fix ASAN crash in pac_config_cb Don't call configuration callback if stream's transport was cleared in the meantime. The clear callback is called just before the stream is freed. Fixes ASAN crash on disconnect while waiting for SetConfiguration DBus reply: ERROR: AddressSanitizer: heap-use-after-free on address 0x60b00002eb90 READ of size 8 at 0x60b00002eb90 thread T0 #0 0x7a4892 in bap_stream_config_cfm_cb src/shared/bap.c:3201 #1 0x4688fb in pac_config_cb profiles/audio/media.c:1010 #2 0x462164 in media_endpoint_cancel profiles/audio/media.c:157 #3 0x462243 in media_endpoint_cancel_all profiles/audio/media.c:165 #4 0x46365b in clear_endpoint profiles/audio/media.c:297 #5 0x463a21 in endpoint_reply profiles/audio/media.c:325 ... freed by thread T0 here: #0 0x7eff644b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388) #1 0x78d8cc in bap_stream_free src/shared/bap.c:974 #2 0x78dbc8 in bap_stream_detach src/shared/bap.c:991 #3 0x78fa43 in bap_stream_state_changed src/shared/bap.c:1210 #4 0x78fe26 in stream_set_state src/shared/bap.c:1254 #5 0x7ab5ce in stream_foreach_detach src/shared/bap.c:3820 #6 0x70ce06 in queue_foreach src/shared/queue.c:207 #7 0x7ab942 in bt_bap_detach src/shared/bap.c:3836 #8 0x51da7a in bap_disconnect profiles/audio/bap.c:1342 #9 0x626e57 in btd_service_disconnect src/service.c:305 Pauli Virtanen 2 years ago 1 file, +6, -0
e9163b09 media: look up BAP transports by their associated stream To look up transports, use BAP stream pointers associated with them, not the path strings stored in the stream user data. This makes it clearer that transports presented to the sound server correspond to the actual streams. The Acquire/etc. of BAP transports are already tied to the associated stream. This fixes use-after-free crashes in pac_clear. They occur because the lifetime of the path string was either that of media transport or media endpoint, which may be shorter than that of the BAP stream. In such case, pac_clear is entered with invalid pointer in stream user data, leading to crash. There are a few code paths for this, e.g. making sound server delay its SetConfiguration response (e.g. gdb breakpoint) to get dbus timeout, then disconnecting: ERROR: AddressSanitizer: heap-use-after-free on address XXXX READ of size 3 at 0x606000031640 thread T0 ... #4 0x559891 in btd_debug src/log.c:117 #5 0x46abfd in pac_clear profiles/audio/media.c:1096 #6 0x79fcaf in bap_stream_clear_cfm src/shared/bap.c:914 #7 0x7a060d in bap_stream_detach src/shared/bap.c:987 #8 0x7a25ea in bap_stream_state_changed src/shared/bap.c:1210 #9 0x7a29cd in stream_set_state src/shared/bap.c:1254 #10 0x7be824 in stream_foreach_detach src/shared/bap.c:3820 #11 0x71d15d in queue_foreach src/shared/queue.c:207 #12 0x7beb98 in bt_bap_detach src/shared/bap.c:3836 #13 0x5228cb in bap_disconnect profiles/audio/bap.c:1342 #14 0x63247c in btd_service_disconnect src/service.c:305 freed by thread T0 here: #0 0x7f16708b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388) #1 0x7f167071b8cc in g_free (/lib64/libglib-2.0.so.0+0x5b8cc) #2 0x7047b7 in remove_interface gdbus/object.c:660 #3 0x70aef6 in g_dbus_unregister_interface gdbus/object.c:1394 #4 0x47be30 in media_transport_destroy profiles/audio/transport.c:217 #5 0x464ab9 in endpoint_remove_transport profiles/audio/media.c:270 #6 0x464d26 in clear_configuration profiles/audio/media.c:292 #7 0x464e69 in clear_endpoint profiles/audio/media.c:300 #8 0x46516e in endpoint_reply profiles/audio/media.c:325 ... Fixes: 7b1b1a499cf3 ("media: clear the right transport when clearing BAP endpoint") Pauli Virtanen 2 years ago 1 file, +11, -23
f7d0599a audio/transport: add media_transport_get_stream method for transports Add a method for getting the audio stream associated with a media transport. Pauli Virtanen 2 years ago 2 files, +19, -0
aa50506c monitor/att: Fix ASE frequency values This fixes the printed hex value of some of the frequencies. Luiz Augusto von Dentz 2 years ago 1 file, +9, -9
89f53589 gatttool: Use consistent spacing before brackets Dave Nicolson 2 years ago 1 file, +4, -4
5d63ee2a mgmt: Use BIT macro when defining bitfields This makes use of BIT macro when defining bitfields which makes it clearer what bit it is toggling. Luiz Augusto von Dentz 2 years ago 1 file, +61, -56
f2a29899 media: Check adapter CIS support to add BAP in SupportedUUIDs Don't indicate BAP support in SupportedUUIDs, if adapter supports neither CIS Central nor Peripheral. Pauli Virtanen 2 years ago 1 file, +5, -0
94af45bc adapter: Add function for checking adapter settings Add function for checking adapter current settings. Pauli Virtanen 2 years ago 2 files, +10, -0
6f131929 tools/btmgmt: add MGMT setting bit names for CIS feature support Add names for CIS Central/Peripheral MGMT setting bits: [mgmt]# info Index list with 1 item hci0: Primary controller addr XX:XX:XX:XX:XX:XX version 12 manufacturer 2 class 0x7c0104 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration wide-band-speech cis-central cis-peripheral current settings: powered bondable ssp br/edr le secure-conn cis-central cis-peripheral name xxx short name hci0: Configuration options supported options: public-address missing options: Pauli Virtanen 2 years ago 1 file, +2, -0
0f2f7a8f monitor: add MGMT setting bit names for CIS feature support Add names for CIS Central/Peripheral MGMT bits: @ MGMT Event: Command Complete (0x0001) plen 283 {0x0002} [hci0] 3.745117 Read Controller Information (0x0004) plen 280 Status: Success (0x00) Address: XX:XX:XX:XX:XX:XX (Intel Corporate) Version: Bluetooth 5.3 (0x0c) Manufacturer: Intel Corp. (2) Supported settings: 0x000ffeff Powered Connectable Fast Connectable Discoverable Bondable Link Security Secure Simple Pairing BR/EDR Low Energy Advertising Secure Connections Debug Keys Privacy Controller Configuration Static Address PHY Configuration Wideband Speech CIS Central CIS Peripheral Current settings: 0x000c0ad1 Powered Bondable Secure Simple Pairing BR/EDR Low Energy Secure Connections CIS Central CIS Peripheral Class: 0x7c0104 Major class: Computer (desktop, notebook, PDA, organizers) Minor class: Desktop workstation Rendering (Printing, Speaker) Capturing (Scanner, Microphone) Object Transfer (v-Inbox, v-Folder) Audio (Speaker, Microphone, Headset) Telephony (Cordless telephony, Modem, Headset) Name: xxx Short name: Pauli Virtanen 2 years ago 1 file, +2, -0
c35d32b1 lib: Add defines for MGMT setting bits for CIS feature support Pauli Virtanen 2 years ago 1 file, +2, -0
97ad0ecb doc: add MGMT setting for CIS features Add definitions for new MGMT Controller Information settings bits, indicating adapter Connected Isochronous Stream - Central/Peripheral feature support. Pauli Virtanen 2 years ago 1 file, +4, -0
3e2e3aa7 doc: remove unimplemented Quality Report from MGMT settings The Set Quality Report command was removed in commit 0454e2d09570 ("mgmt: Add support for Mesh in the kernel"), but the settings bit was not removed. It's also not implemented on kernel side, so remove it now. Pauli Virtanen 2 years ago 1 file, +0, -2
7b1b1a49 media: clear the right transport when clearing BAP endpoint Each configured BAP stream is associated with a transport, and only that transport should be cleared when the stream's configuration is cleared. This is required for multiple BAP clients to use the same Media1 endpoint, which is what we should aim for to follow the spirit in which the endpoints work in ASCS. Sound servers generally can handle this, since the *Configuration calls provide the transport paths, and for different clients they are associated with different devices. Pauli Virtanen 2 years ago 1 file, +12, -7
f56205e3 shared/bap: fix local endpoint state to be per-client ASCS v1.0 Sec. 4.1: "For each ASE characteristic (distinguished by their attribute handles), the server shall expose separate ASE characteristic values for each client." In shared/bap.c, the ASE chrc value is contained in bt_bap_endpoint struct. As implemented currently, the same local ASE chrc value is shared between all clients, in contradiction with the above. Namely, the bt_bap_endpoint is looked up based on the gatt_db_attribute handles, in bap_get_endpoint and bap_get_endpoint_id, but the handles correspond to the ASCS registrations, and do not depend on which client is in question. Fix this by moving the endpoint states to the bt_bap BAP session struct, so that the ASE state is associated with the sessions, and each session has separate state. Pauli Virtanen 2 years ago 1 file, +34, -31
67395a3b media: set default value for BAP endpoint Vendor field The "Vendor" field is optional, and should have an initialized valid default value. It has the default values in register_endpoint, but not in app_register_endpoint, so make the latter match the former. Pauli Virtanen 2 years ago 1 file, +2, -0
dcbdf5e6 media: Rework support of Vendor to use uint32_t as type This reworks the handlings of Vendor property to use a single uint32_t. Luiz Augusto von Dentz 2 years ago 2 files, +34, -27
d611a40f media-api: Make Vendor a uint32_t Using two uint16_t requires the use of a container which makes things a lot more complicated so this switch to use a single uint32_t. Luiz Augusto von Dentz 2 years ago 1 file, +2, -2
be5c4938 shared/util: Check arguments on util_memcpy This avoids having to check for !src or !len before calling util_memcpy since otherwise it can cause runtime errors. Luiz Augusto von Dentz 2 years ago 1 file, +1, -1
33d99e12 client/player: Add support for Company ID, Vendor ID This adds support for Company ID and Vendor Codec ID in BAP profile. This also adds handling of Vendor Specific Coding format for BAP Profile. Now it allows to enter zero codec capabilities for vendor codec. In order to register zero codec capabilities, 0 shall be entered when prompted. Abhay Maheta 2 years ago 1 file, +54, -7
17bcd2a3 profiles: Add Support for Metadata, CID and VID This adds support for Metadata, Company ID and Vendor Codec ID Maheta, Abhay 2 years ago 3 files, +105, -12
ca6546fe shared: define MAX_INPUT for musl musl systems don't have MAX_INPUT. Just define it to _POSIX_MAX_INPUT which musl does have if it's not already defined. Note that on glibc, the values match anyway (as of glibc-2.36), and indeed POSIX_MAX_INPUT has the same value on musl too. Bug: https://bugs.gentoo.org/888467 Sam James 2 years ago 1 file, +5, -0
8787aed7 tools/mesh-cfgtest: Support extended device composition This adds support for extended device composition to account for new fundamental models supported by bluetooth-meshd daemon. Also, update to include explicit element locations and handle different ordering of model IDs in the composition data. Inga Stotland 2 years ago 1 file, +168, -20
5045e984 mesh: Remove unused byte swap for ScanBuild Brian Gix 2 years ago 1 file, +0, -7
4bdd7090 mesh: Fix Checksmatch warning Brian Gix 2 years ago 1 file, +1, -1
Previous Next