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
prev 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