mirror of
https://github.com/Dasharo/zephyr.git
synced 2026-03-06 14:57:20 -08:00
doc: Bluetooth: move btmon instructions
Move so both sections referring to btmon are on the same page. Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
This commit is contained in:
committed by
Anas Nashif
parent
a64a64b3c2
commit
fbe91cd654
@@ -51,34 +51,9 @@ To start developing using this setup follow the :ref:`Getting Started Guide
|
||||
boards that support Bluetooth and then :ref:`run the application
|
||||
<application_run_board>`).
|
||||
|
||||
.. _bluetooth-hci-tracing:
|
||||
|
||||
Embedded HCI tracing
|
||||
--------------------
|
||||
|
||||
When running both Host and Controller in actual Integrated Circuits, you will
|
||||
only see normal log messages on the console by default, without any way of
|
||||
accessing the HCI traffic between the Host and the Controller. However, there
|
||||
is a special Bluetooth logging mode that converts the console to use a binary
|
||||
protocol that interleaves both normal log messages as well as the HCI traffic.
|
||||
Set the following Kconfig options to enable this protocol before building your
|
||||
application:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
CONFIG_BT_DEBUG_MONITOR_UART=y
|
||||
CONFIG_UART_CONSOLE=n
|
||||
|
||||
Setting :kconfig:option:`CONFIG_BT_DEBUG_MONITOR_UART` to ``y`` replaces the
|
||||
:kconfig:option:`CONFIG_BT_DEBUG_LOG` option, and setting :kconfig:option:`CONFIG_UART_CONSOLE`
|
||||
to ``n`` disables the default ``printk``/``printf`` hooks.
|
||||
|
||||
To decode the binary protocol that will now be sent to the console UART you need
|
||||
to use the btmon tool from :ref:`BlueZ <bluetooth_bluez>`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ btmon --tty <console TTY> --tty-speed 115200
|
||||
There is a way to access the :ref:`HCI <bluetooth-hci>` traffic between the Host
|
||||
and Controller, even if there is no physical transport. See :ref:`Embedded HCI
|
||||
tracing <bluetooth-embedded-hci-tracing>` for instructions.
|
||||
|
||||
Host on Linux with an external Controller
|
||||
=========================================
|
||||
@@ -117,6 +92,7 @@ QEMU
|
||||
|
||||
You can run the Zephyr Host on the :ref:`QEMU emulator<application_run_qemu>`
|
||||
and have it interact with a physical external Bluetooth Controller.
|
||||
|
||||
Refer to :ref:`bluetooth_qemu_native` for full instructions on how to build and
|
||||
run an application in this setup.
|
||||
|
||||
@@ -129,13 +105,13 @@ native_sim
|
||||
The :ref:`native_sim <native_sim>` target builds your Zephyr application
|
||||
with the Zephyr kernel, and some minimal HW emulation as a native Linux
|
||||
executable.
|
||||
|
||||
This executable is a normal Linux program, which can be debugged and
|
||||
instrumented like any other, and it communicates with a physical or virtual
|
||||
external Controller.
|
||||
external Controller. Refer to:
|
||||
|
||||
Refer to :ref:`bluetooth_qemu_native` for full instructions on how to build and
|
||||
run an application with a physical controller. For the virtual controller refer
|
||||
to :ref:`bluetooth_virtual_posix`.
|
||||
- :ref:`bluetooth_qemu_native` for the physical controller
|
||||
- :ref:`bluetooth_virtual_posix` for the virtual controller
|
||||
|
||||
Simulated nRF5x with BabbleSim
|
||||
==============================
|
||||
|
||||
@@ -81,6 +81,7 @@ Running on QEMU or native_sim
|
||||
|
||||
It's possible to run Bluetooth applications using either the :ref:`QEMU
|
||||
emulator<application_run_qemu>` or :ref:`native_sim <native_sim>`.
|
||||
|
||||
In either case, a Bluetooth controller needs to be exported from
|
||||
the host OS (Linux) to the emulator. For this purpose you will need some tools
|
||||
described in the :ref:`bluetooth_bluez` section.
|
||||
@@ -166,6 +167,8 @@ transports when building a single-mode, Zephyr-based BLE Controller:
|
||||
* USB: Use the :ref:`hci_usb <bluetooth-hci-usb-sample>` sample and then
|
||||
treat it as a Host System Bluetooth Controller (see previous section)
|
||||
|
||||
.. _bluetooth-hci-tracing:
|
||||
|
||||
HCI Tracing
|
||||
===========
|
||||
|
||||
@@ -178,6 +181,61 @@ In order to see those logs, you can use the built-in ``btmon`` tool from BlueZ:
|
||||
|
||||
$ btmon
|
||||
|
||||
The output looks like this::
|
||||
|
||||
= New Index: 00:00:00:00:00:00 (Primary,Virtual,Control) 0.274200
|
||||
= Open Index: 00:00:00:00:00:00 0.274500
|
||||
< HCI Command: Reset (0x03|0x0003) plen 0 #1 0.274600
|
||||
> HCI Event: Command Complete (0x0e) plen 4 #2 0.274700
|
||||
Reset (0x03|0x0003) ncmd 1
|
||||
Status: Success (0x00)
|
||||
< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0 #3 0.274800
|
||||
> HCI Event: Command Complete (0x0e) plen 12 #4 0.274900
|
||||
Read Local Supported Features (0x04|0x0003) ncmd 1
|
||||
Status: Success (0x00)
|
||||
Features: 0x00 0x00 0x00 0x00 0x60 0x00 0x00 0x00
|
||||
BR/EDR Not Supported
|
||||
LE Supported (Controller)
|
||||
|
||||
.. _bluetooth-embedded-hci-tracing:
|
||||
|
||||
Embedded HCI tracing
|
||||
--------------------
|
||||
|
||||
When running both Host and Controller in actual Integrated Circuits, you will
|
||||
only see normal log messages on the console by default, without any way of
|
||||
accessing the HCI traffic between the Host and the Controller. However, there
|
||||
is a special Bluetooth logging mode that converts the console to use a binary
|
||||
protocol that interleaves both normal log messages as well as the HCI traffic.
|
||||
|
||||
Set the following Kconfig options to enable this protocol before building your
|
||||
application:
|
||||
|
||||
.. code-block:: cfg
|
||||
|
||||
CONFIG_BT_DEBUG_MONITOR_UART=y
|
||||
CONFIG_UART_CONSOLE=n
|
||||
|
||||
- Setting :kconfig:option:`CONFIG_BT_DEBUG_MONITOR_UART` activates the formatting
|
||||
- Clearing :kconfig:option:`CONFIG_UART_CONSOLE` makes the UART unavailable for
|
||||
the system console. E.g. for ``printk`` and the :kconfig:option:`boot banner
|
||||
<CONFIG_BOOT_BANNER>`
|
||||
|
||||
To decode the binary protocol that will now be sent to the console UART you need
|
||||
to use the btmon tool from :ref:`BlueZ <bluetooth_bluez>`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ btmon --tty <console TTY> --tty-speed 115200
|
||||
|
||||
If UART is not available (or you still want non-binary logs), you can set
|
||||
:kconfig:option:`CONFIG_BT_DEBUG_MONITOR_RTT` instead, which will use Segger
|
||||
RTT. For example, if trying to connect to a nRF52840DK with S/N 683578642:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ btmon --jlink nRF52840_xxAA,683578642
|
||||
|
||||
.. _bluetooth_virtual_posix:
|
||||
|
||||
Running on a Virtual Controller and native_sim
|
||||
|
||||
Reference in New Issue
Block a user