Linux bluetooth development
 help / color / mirror / Atom feed
From: Cheng Jiang <cheng.jiang@oss.qualcomm.com>
To: linux-bluetooth@vger.kernel.org
Cc: jinwang.li@oss.qualcomm.com, wei.deng@oss.qualcomm.com,
	xiuzhuo.shang@oss.qualcomm.com, shuai.zhang@oss.qualcomm.com,
	Cheng Jiang <cheng.jiang@oss.qualcomm.com>
Subject: [PATCH 11/11] doc/qualification: Add RAP/RAS PTS qualification results
Date: Thu,  1 Oct 2026 21:18:57 +0800	[thread overview]
Message-ID: <20261001131900.707485-12-cheng.jiang@oss.qualcomm.com> (raw)
In-Reply-To: <20261001131900.707485-1-cheng.jiang@oss.qualcomm.com>

Record the PTS results for the Ranging Profile and the Ranging Service.
Both are split per case prefix, as the other qualification documents are:
rap-pts.rst keeps the 19 RAP Requester and Responder cases, and the new
ras-pts.rst carries the 31 RAS Server cases.

Every case is listed on its own row rather than collapsed into a range, so
the file states which cases were actually run. RAS/SR/SPE/BI-02-C is
listed as not applicable: RAS.TS Table 5.1 selects it only when Abort
Operation is unsupported (NOT RAS 3/4), and the IUT supports it, so
RAS/SR/RCP/BV-03-C and RAS/SR/SPE/BI-05-C cover that path instead.

ras-pts.rst also records which transport the server must pick when a
client enables both notifications and indications, since the rule differs
per characteristic and each variant has its own case.

Assisted-by: Claude:claude-opus-4.8
---
 doc/qualification/rap-pts.rst | 180 ++++++++++++++++++++++++++++++++++
 doc/qualification/ras-pts.rst | 135 +++++++++++++++++++++++++
 2 files changed, 315 insertions(+)
 create mode 100644 doc/qualification/rap-pts.rst
 create mode 100644 doc/qualification/ras-pts.rst

diff --git a/doc/qualification/rap-pts.rst b/doc/qualification/rap-pts.rst
new file mode 100644
index 000000000..a2647f701
--- /dev/null
+++ b/doc/qualification/rap-pts.rst
@@ -0,0 +1,180 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later
+.. Copyright © 2026 Qualcomm Technologies, Inc.
+
+================
+RAP test results
+================
+
+:PTS version: 8.14.0.4
+:BlueZ: 5.87 with Channel Sounding support
+
+RAS Server test results are in ``ras-pts.rst``.
+
+Setup
+=====
+
+- Enable ``Experimental = true`` in ``/etc/bluetooth/main.conf``.
+- Use a ``NoInputNoOutput`` bluetoothctl agent and make it the default agent.
+- Before cases that establish a new encrypted link, delete the DUT bond and the
+  corresponding PTS LTK/bond. Removing only one side causes authentication
+  failure.
+- Do not use the bluetoothctl ``gatt`` menu to write RAS CCCDs. Use the
+  ``cs ranging-data-mode`` command so RAP owns subscription lifetime.
+
+Requester results
+=================
+
++----------------------------+----------+--------------------------------------------------------------------------+
+| Test name                  | Result   | Notes                                                                    |
++============================+==========+==========================================================================+
+| RAP/REQ/RRD/BV-01-C        | PASS     | Configure the requested Real-time notification or indication transport.  |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/RRD/BI-01-C        | PASS     | The Requester disables the Real-time CCCD after 5 seconds without a      |
+|                            |          | first segment.                                                           |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/RRD/BI-02-C        | PASS     | The Requester disables the Real-time CCCD after 1 second without a       |
+|                            |          | continuation segment.                                                    |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/SER/BV-01-C  | PASS     | Discover the remote primary Ranging Service.                             |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-01-C  | PASS     | Discover the RAS Features characteristic.                                |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-02-C  | PASS     | Discover the Real-time Ranging Data characteristic.                      |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-03-C  | PASS     | Discover the On-demand Ranging Data characteristic.                      |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-04-C  | PASS     | Discover the RAS Control Point characteristic.                           |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-05-C  | PASS     | Discover the Ranging Data Ready characteristic.                          |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/CGGIT/CHA/BV-06-C  | PASS     | Discover the Ranging Data Overwritten characteristic.                    |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BV-01-C        | PASS     | See the On-demand ranging data procedures below.                         |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BI-01-C        | PASS     | The Requester sends Abort Operation after 5 seconds without the first    |
+|                            |          | On-demand segment.                                                       |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BI-02-C        | PASS     | The Requester sends Abort Operation when a continuation segment is       |
+|                            |          | missing for more than one second.                                        |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BI-03-C        | PASS     | Ignore Complete Lost and RFU Control Point responses; receive normal     |
+|                            |          | data and ACK the subsequent Complete response.                           |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BV-05-C        | PASS     | Configure On-demand notification transport; PTS validates Ranging Data   |
+|                            |          | Ready notification handling.                                             |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BV-06-C        | PASS     | On the PTS MMI, promptly read Ranging Data Ready after PTS suppresses    |
+|                            |          | its notification.                                                        |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BV-07-C        | PASS     | Configure On-demand indication transport; PTS validates Ranging Data     |
+|                            |          | Overwritten indication reception.                                        |
++----------------------------+----------+--------------------------------------------------------------------------+
+| RAP/REQ/ORD/BV-08-C        | PASS     | Configure On-demand notification transport; PTS validates Ranging Data   |
+|                            |          | Overwritten notification reception.                                      |
++----------------------------+----------+--------------------------------------------------------------------------+
+
+Responder results
+=================
+
++----------------------------+----------+--------------------------------------------------------------------------+
+| Test name                  | Result   | Notes                                                                    |
++============================+==========+==========================================================================+
+| RAP/RES/RSPF/BV-01-C       | PASS     | Discoverable advertising includes the Ranging Service UUID (0x185B).     |
++----------------------------+----------+--------------------------------------------------------------------------+
+
+
+Before ``RAP/RES/RSPF/BV-01-C``, advertise the Ranging Service UUID so PTS can
+discover the Responder::
+
+    menu advertise
+    uuids 0000185b-0000-1000-8000-00805f9b34fb
+    back
+    advertise peripheral
+
+Stop it after the case with ``advertise off``.
+
+On-demand ranging data procedures
+=================================
+
+Some RAS Requester cases are exercised against PTS's SIG pre-generated ranging
+data (``TSPX_test_method``) when the PTS controller does not support Channel
+Sounding. The procedures below use the ``ranging-data-mode`` command to select
+the transport PTS expects for each case.
+
+For ``RAP/REQ/ORD/BV-01-C``, set ``TSPX_test_method`` to ``pre-generated
+ranging data`` and select the ``2_procedures`` input.
+
+After connection, pairing, and encryption complete, run the following in the
+same bluetoothctl session::
+
+    menu cs
+    ranging-data-mode <pts_addr> ondemand indicate
+
+This configures indications for Ranging Data Ready, RAS Control Point, and
+Ranging Data Overwritten. Segmented On-demand Ranging Data remains configured
+for notifications so large pre-generated streams are not stalled by
+per-indication confirmation pacing.
+
+The Requester reads the Ranging Data Ready characteristic, waits for the PTS
+Ready indication, writes ``Get Ranging Data``, reassembles the data, and writes
+``ACK Ranging Data`` after the PTS Complete response.
+
+For ``RAP/REQ/ORD/BI-01-C``, use the same setup but configure PTS not to send
+the first On-demand segment after ``Get Ranging Data``. The Requester writes
+``Abort Operation`` after five seconds. For ``RAP/REQ/ORD/BI-02-C``, have PTS
+send only First Segment; the Requester's one-second continuation watchdog
+sends Abort within the PTS assertion window.
+
+For ``RAP/REQ/ORD/BI-03-C``, use the same setup and allow PTS to inject
+Complete Lost Ranging Data Segments and RFU Control Point responses during the
+transfer. No additional DUT action is required: the Requester ignores them,
+then ACKs the normal Complete Ranging Data response.
+
+For ``RAP/REQ/ORD/BV-05-C``, select notification transport after security is
+complete::
+
+    menu cs
+    ranging-data-mode <pts_addr> ondemand notify
+
+This configures the Ranging Data Ready path for the PTS notification round.
+
+For ``RAP/REQ/ORD/BV-07-C``, select indication transport to receive the
+Ranging Data Overwritten indication::
+
+    menu cs
+    ranging-data-mode <pts_addr> ondemand indicate
+
+PTS can log failed attempts to send an indication during this case even though
+its final verdict is PASS; record the final PTS verdict rather than treating
+that server-side diagnostic alone as a DUT failure.
+
+For ``RAP/REQ/ORD/BV-08-C``, select notification transport to receive the
+Ranging Data Overwritten notification::
+
+    menu cs
+    ranging-data-mode <pts_addr> ondemand notify
+
+For ``RAP/REQ/ORD/BV-06-C``, after connection and security complete, first use
+indication transport to enter the PTS On-demand flow, then switch to the
+notification transport used by the lost-Ready round::
+
+    menu cs
+    ranging-data-mode <pts_addr> ondemand indicate
+    ranging-data-mode <pts_addr> ondemand notify
+
+Wait for ``Ranging Data mode updated`` after each command. PTS does not advance
+to the lost-Ready MMI until both transitions have been completed. It then
+suppresses the Ranging Data Ready notification and presents an MMI asking for a
+read of the Ranging Data Ready characteristic. Complete the MMI promptly, before
+its short timeout, from the bluetoothctl GATT menu::
+
+    back
+    menu gatt
+    select-attribute 00002c18-0000-1000-8000-00805f9b34fb
+    read
+
+Selecting the characteristic by UUID avoids depending on the handles PTS
+happens to assign; ``select-attribute`` matches characteristics before
+descriptors, so this selects the value attribute and not its CCCD. Use
+``list-attributes`` if the remote database needs to be inspected first. Return
+to PTS and continue the MMI after the read request is sent.
diff --git a/doc/qualification/ras-pts.rst b/doc/qualification/ras-pts.rst
new file mode 100644
index 000000000..3b9bfd0d0
--- /dev/null
+++ b/doc/qualification/ras-pts.rst
@@ -0,0 +1,135 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later
+.. Copyright © 2026 Qualcomm Technologies, Inc.
+
+================
+RAS test results
+================
+
+:PTS version: 8.14.0.4
+:BlueZ: 5.87 with Channel Sounding support
+
+RAP Requester and Responder test results are in ``rap-pts.rst``.
+
+Setup
+=====
+
+- Enable ``Experimental = true`` in ``/etc/bluetooth/main.conf``.
+- Use a ``NoInputNoOutput`` bluetoothctl agent and make it the default agent.
+- Before cases that establish a new encrypted link, delete the DUT bond and the
+  corresponding PTS LTK/bond. Removing only one side causes authentication
+  failure.
+- The DUT acts as the CS Reflector. Set the role from the bluetoothctl Channel
+  Sounding menu before the first case::
+
+      menu cs
+      role 0x02
+
+Tests
+=====
+
++------------------------------+----------+----------------------------------------------------------------+
+| Test name                    | Result   | Notes                                                          |
++==============================+==========+================================================================+
+| IOPT/RAS/SR/GATTDB/BV-01-I   | PASS     | RAS database validation.                                       |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/SER/BV-01-C     | PASS     | Primary, unique Ranging Service discovery.                     |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-01-C     | PASS     | RAS Features characteristic declaration.                       |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-02-C     | PASS     | Real-time Ranging Data characteristic declaration.             |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-03-C     | PASS     | On-demand Ranging Data characteristic declaration.             |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-04-C     | PASS     | RAS Control Point characteristic declaration.                  |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-08-C     | PASS     | Ranging Data Ready characteristic declaration.                 |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SGGIT/CHA/BV-12-C     | PASS     | Ranging Data Overwritten characteristic declaration.           |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-01-C           | PASS     | RAS Features read.                                             |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-02-C           | PASS     | Ranging Data Ready notification or indication.                 |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-03-C           | PASS     | Ranging Data Ready read.                                       |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-04-C           | PASS     | Ranging Data Overwritten read.                                 |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-05-C           | PASS     | Ranging Data Ready, Indication transport.                      |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-06-C           | PASS     | Ranging Data Ready, Notification transport.                    |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-07-C           | PASS     | Ranging Data Ready, Indication and Read.                       |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-08-C           | PASS     | Ranging Data Overwritten is indicated when the client enabled  |
+|                              |          | both transports.                                               |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCO/BV-09-C           | PASS     | Ranging Data Ready is indicated when the client enabled both   |
+|                              |          | transports.                                                    |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RRD/BV-01-C           | PASS     | Real-time Ranging Data delivery.                               |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RRD/BV-03-C           | PASS     | Real-time Ranging Data is notified when the client enabled     |
+|                              |          | both transports.                                               |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RRD/BV-04-C           | PASS     | Overwritten Real-time data restarts on the new Ranging         |
+|                              |          | Counter.                                                       |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RRD/BV-05-C           | PASS     | Real-time subscription is dropped on disconnection.            |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCP/BV-01-C           | PASS     | Get Ranging Data, segmented transfer and ACK.                  |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCP/BV-03-C           | PASS     | Abort Operation stops an in-progress transfer.                 |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/RCP/BV-05-C           | PASS     | Control Point state is reset on disconnection.                 |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-01-C           | PASS     | Op Code Not Supported, Retrieve Lost Ranging Data Segments.    |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-03-C           | PASS     | Op Code Not Supported, Set Filter.                             |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-04-C           | PASS     | Op Code Not Supported, RFU.                                    |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-05-C           | PASS     | Invalid Parameter, Abort Operation.                            |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-06-C           | PASS     | Get Ranging Data and ACK Ranging Data errors.                  |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-07-C           | PASS     | Server Busy.                                                   |
++------------------------------+----------+----------------------------------------------------------------+
+| RAS/SR/SPE/BI-11-C           | PASS     | Real-time and On-demand CCCDs are mutually exclusive.          |
++------------------------------+----------+----------------------------------------------------------------+
+
+Not applicable
+==============
+
++------------------------------+-----------------------------------------------+
+| Test name                    | Reason                                        |
++==============================+===============================================+
+| RAS/SR/SPE/BI-02-C           | Applies when Abort Operation is not supported |
+|                              | (NOT RAS 3/4 in RAS.TS Table 5.1). The IUT    |
+|                              | supports it, so RAS/SR/RCP/BV-03-C and        |
+|                              | RAS/SR/SPE/BI-05-C are run instead.           |
++------------------------------+-----------------------------------------------+
+
+Pre-generated ranging data
+==========================
+
+With ``TSPX_test_method`` set to pre-generated CS data, the whole ranging data
+arrives in one go rather than one CS subevent at a time, so the On-demand
+notification path sends its segments back to back with no air time between
+them. ``RAS/SR/SPE/BI-05-C`` writes an invalid Abort Operation mid-transfer
+and needs the transfer to still be running when it does, so the per-segment
+delay has to leave the peer a window: it fails at 0 ms and passes at the 5 ms
+``RAS_SEGMENT_NFY_PACE_MS`` uses. Feeding the test data one subevent at a
+time rather than in one go does not change that, since the segments of a
+subevent still go out back to back. Raise the delay if PTS reports Complete
+Ranging Data where it expected Invalid Parameter.
+
+Transport selection
+===================
+
+When a client enables both notifications and indications on a characteristic,
+the transport the server must use differs per characteristic:
+
+- Ranging Data Ready and Ranging Data Overwritten are indicated (RAS 3.4.2 and
+  3.5.2), covered by ``RAS/SR/RCO/BV-08-C`` and ``RAS/SR/RCO/BV-09-C``.
+- On-demand and Real-time Ranging Data are notified (RAS 3.2.2 and 3.2.3.1),
+  covered by ``RAS/SR/RCO/BV-05..07-C`` and ``RAS/SR/RRD/BV-03-C``.
-- 
2.43.0


      parent reply	other threads:[~2026-10-01 13:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01 13:18 [PATCH 00/11] Ranging Profile and Ranging Service PTS fixes Cheng Jiang
2026-10-01 13:18 ` [PATCH 01/11] shared/gatt-client: Allow registering notify with explicit CCC value Cheng Jiang
2026-10-01 16:03   ` Ranging Profile and Ranging Service PTS fixes bluez.test.bot
2026-10-01 13:18 ` [PATCH 02/11] shared/gatt-db: Add gatt_db_attribute_indicate() Cheng Jiang
2026-10-01 15:48   ` Luiz Augusto von Dentz
2026-10-09  8:45     ` Cheng Jiang
2026-10-01 13:18 ` [PATCH 03/11] shared/rap: Honor CCCD transport for RAS on-demand ranging data Cheng Jiang
2026-10-01 13:18 ` [PATCH 04/11] shared/rap: Add RAS Control Point Abort Operation Cheng Jiang
2026-10-01 13:18 ` [PATCH 05/11] shared/rap: Shorten the requester Control Point response timeout Cheng Jiang
2026-10-01 13:18 ` [PATCH 06/11] shared/rap: Add real-time ranging data delivery on the responder Cheng Jiang
2026-10-01 13:18 ` [PATCH 07/11] shared/rap: Add requester ranging data subscription API Cheng Jiang
2026-10-01 13:18 ` [PATCH 08/11] profiles/ranging: Expose requester ranging data mode over D-Bus Cheng Jiang
2026-10-01 13:18 ` [PATCH 09/11] client: Add Channel Sounding ranging data mode control Cheng Jiang
2026-10-01 13:18 ` [PATCH 10/11] doc: Document " Cheng Jiang
2026-10-01 13:18 ` Cheng Jiang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261001131900.707485-12-cheng.jiang@oss.qualcomm.com \
    --to=cheng.jiang@oss.qualcomm.com \
    --cc=jinwang.li@oss.qualcomm.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=shuai.zhang@oss.qualcomm.com \
    --cc=wei.deng@oss.qualcomm.com \
    --cc=xiuzhuo.shang@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox