diff --git a/snippets/nus-console/README.rst b/snippets/nus-console/README.rst new file mode 100644 index 00000000000..5d84343094b --- /dev/null +++ b/snippets/nus-console/README.rst @@ -0,0 +1,37 @@ +.. _snippet-nus-console: + +NUS Console Snippet (nus-console) +######################################## + +.. code-block:: console + + west build -S nus-console [...] + +Overview +******** + +This snippet redirects serial console output to a UART over NUS (Bluetooth LE) instance. +The Bluetooth Serial device used shall be configured using :ref:`devicetree`. + +Requirements +************ + +Hardware support for: + +- :kconfig:option:`CONFIG_BT` +- :kconfig:option:`CONFIG_BT_PERIPHERAL` +- :kconfig:option:`CONFIG_BT_NUS` +- :kconfig:option:`CONFIG_SERIAL` +- :kconfig:option:`CONFIG_CONSOLE` +- :kconfig:option:`CONFIG_UART_CONSOLE` + +A devicetree node with node label ``bt_nus_console_uart`` that points to an enabled +device node with nus-uart support. This should look roughly like this in +:ref:`your devicetree `: + +.. code-block:: DTS + + bt_nus_console_uart: bt_nus_console_uart { + compatible = "zephyr,nus-uart"; + /* ... */ + }; diff --git a/snippets/nus-console/nus-console.conf b/snippets/nus-console/nus-console.conf new file mode 100644 index 00000000000..bae817ce562 --- /dev/null +++ b/snippets/nus-console/nus-console.conf @@ -0,0 +1,16 @@ +CONFIG_SERIAL=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +CONFIG_BT=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_NUS=y +CONFIG_UART_BT=y +CONFIG_BT_NUS_AUTO_START_BLUETOOTH=y + +# Bluetooth optimizations to allow larger data packets. +CONFIG_BT_RX_STACK_SIZE=2048 +CONFIG_BT_L2CAP_TX_MTU=512 +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=502 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 diff --git a/snippets/nus-console/nus-console.overlay b/snippets/nus-console/nus-console.overlay new file mode 100644 index 00000000000..71b1b32079a --- /dev/null +++ b/snippets/nus-console/nus-console.overlay @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024 Croxel, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,console = &bt_nus_console_uart; + }; + + bt_nus_console_uart: bt_nus_console_uart { + compatible = "zephyr,nus-uart"; + rx-fifo-size = <1024>; + tx-fifo-size = <1024>; + }; +}; diff --git a/snippets/nus-console/snippet.yml b/snippets/nus-console/snippet.yml new file mode 100644 index 00000000000..3271a477428 --- /dev/null +++ b/snippets/nus-console/snippet.yml @@ -0,0 +1,4 @@ +name: nus-console +append: + EXTRA_CONF_FILE: nus-console.conf + EXTRA_DTC_OVERLAY_FILE: nus-console.overlay