.. _iso_broadcast_benchmark: Bluetooth: Throughput ##################### The ISO Broadcast Benchmark sample measures and report packet loss and sync loss of an ISO broadcaster against one or more ISO broadcast receivers. Overview ******** The sample transmits data from the *broadcaster* to the *receiver* (multiple receivers may be used with no effect on the test) and measures the quality of the sync. The application is used as both a broadcaster and a receiver, and the mode can easily be changed. Requirements ************ * BlueZ running on the host, or * A board with Bluetooth Low Energy 5.2 support * A Bluetooth Controller and board that supports setting CONFIG_BT_CTLR_ADV_ISO=y * A remote board running the same sample as the reversed role that supports setting CONFIG_BT_CTLR_SYNC_ISO Building and running ******************** This sample can be found under :zephyr_file:`samples/bluetooth/iso_broadcast_benchmark` in the Zephyr tree. See :ref:`bluetooth samples section ` for details. Testing ======= After programming the sample to both boards, test it by performing the following steps: 1. Connect to both boards with a terminal emulator (for example, PuTTY or minicom). #. Reset both boards. #. In one of the terminal emulators, type "r" to start the application on the connected board in the receiver role. #. In the other terminal emulator, type "b" to start the application in the broadcaster role. #. Optionally modify the broadcasting settings. #. Observe that the receiver synchronizes to the broadcaster. #. Observe the receive statistics on the receiver(s). Sample output ============== The receiver will output statistics for overall (since boot), current sync (since the BIG was synced) and latest 1000 received packets:: *** Booting Zephyr OS build zephyr-v2.5.0-3768-g42f09317bfbe *** [00:00:00.447,845] iso_broadcast_main: Starting Bluetooth Throughput Choose device role - type r (receiver role) or b (broadcaster role), or q to quit: r Receiver role [00:00:05.784,698] iso_broadcast_receiver: Scan started [00:00:05.784,698] iso_broadcast_receiver: Waiting for periodic advertiser [00:00:05.793,304] iso_broadcast_receiver: Found broadcaster with address 28:3B:AD:F5:EE:0C (random) (RSSI -33) [00:00:05.793,334] iso_broadcast_receiver: Periodic advertiser found [00:00:05.793,701] iso_broadcast_receiver: Scan stopped [00:00:05.793,701] iso_broadcast_receiver: Creating Periodic Advertising Sync [00:00:05.796,081] iso_broadcast_receiver: Waiting for periodic sync [00:00:06.453,460] bt_scan: Unknown handle 0x0000 for periodic advertising report [00:00:06.453,979] iso_broadcast_receiver: Periodic advertisement synced [00:00:06.454,010] iso_broadcast_receiver: Periodic sync established [00:00:06.454,040] iso_broadcast_receiver: Waiting for BIG info [00:00:08.853,485] iso_broadcast_receiver: BIGinfo received: num_bis 2, nse 1, interval 7 ms, bn 1, pto 0, irc 1, max_pdu 251, sdu_interval 7500 us, max_sdu 251, phy LE 2M, without framing, not encrypted [00:00:08.853,515] iso_broadcast_receiver: Syncing to BIG [00:00:08.853,973] iso_broadcast_receiver: Waiting for BIG sync [00:00:11.254,211] iso_broadcast_receiver: ISO Channel 0x2000124c connected [00:00:11.254,333] iso_broadcast_receiver: BIG sync established [00:00:11.254,486] iso_broadcast_receiver: ISO Channel 0x20001260 connected [00:00:11.639,343] iso_broadcast_receiver: Overall : Received 99/100 (99.00%) - Total packets lost 1 [00:00:11.639,343] iso_broadcast_receiver: Current Sync: Received 99/100 (99.00%) - Total packets lost 1 [00:00:11.639,373] iso_broadcast_receiver: Latest 1000 : Received 99/100 (99.00%) - Total packets lost 1 [00:00:12.029,388] iso_broadcast_receiver: Overall : Received 199/200 (99.50%) - Total packets lost 1 [00:00:12.029,388] iso_broadcast_receiver: Current Sync: Received 199/200 (99.50%) - Total packets lost 1 [00:00:12.029,388] iso_broadcast_receiver: Latest 1000 : Received 199/200 (99.50%) - Total packets lost 1 The broadcaster will ask if any changes to the current settings are wanted. If y/Y is chosen, then it will create a prompt to enter changes to the settings, otherwise continue with the current settings. The broadcaster will then start the BIG and output the current counter (since the BIG was created):: *** Booting Zephyr OS build zephyr-v2.5.0-3768-g06d4327cc601 *** [00:00:00.447,845] iso_broadcast_main: Starting Bluetooth Throughput Choose device role - type r (receiver role) or b (broadcaster role), or q to quit: b Broadcaster role Change settings (y/N)? (Current settings: rtn=2, interval=7500, latency=10, phy=2, sdu=251, packing=0, framing=0, bis_count=2) [00:00:08.802,185] iso_broadcast_broadcaster: Creating Extended Advertising set [00:00:08.804,260] iso_broadcast_broadcaster: Setting Extended Advertising parameters [00:00:08.804,504] iso_broadcast_broadcaster: Starting Periodic Advertising [00:00:08.804,870] iso_broadcast_broadcaster: Starting Extended Advertising set [00:00:08.807,159] iso_broadcast_broadcaster: Creating BIG [00:00:08.807,617] iso_broadcast_broadcaster: Waiting for BIG complete [00:00:08.813,049] iso_broadcast_broadcaster: ISO Channel 0x20001218 connected [00:00:08.813,171] iso_broadcast_broadcaster: BIG created [00:00:08.813,507] iso_broadcast_broadcaster: ISO Channel 0x2000122c connected [00:00:09.196,472] iso_broadcast_broadcaster: Sending value 100 [00:00:09.587,036] iso_broadcast_broadcaster: Sending value 200 [00:00:09.977,722] iso_broadcast_broadcaster: Sending value 300 [00:00:10.368,347] iso_broadcast_broadcaster: Sending value 400 [00:00:10.758,972] iso_broadcast_broadcaster: Sending value 500 [00:00:11.149,597] iso_broadcast_broadcaster: Sending value 600 [00:00:11.540,222] iso_broadcast_broadcaster: Sending value 700