Commit graph

816 commits

Author SHA1 Message Date
Jordan Yates
9f44b011de bluetooth: hci: h4: optional reset pin
Add an optional reset pin for H4 HCI driver.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-09-09 20:39:59 -04:00
Evgenii Kosenko
8ef809f43c drivers: bluetooth: silabs_efr32: Declares periodic sync feature
Adds declaration for Periodic Advertising Synchronization Establishment
procedure supported by controller.

Signed-off-by: Evgenii Kosenko <Evgenii.Kosenko@silabs.com>
2025-09-09 10:32:05 +02:00
Alessandro Manganaro
d808d9e2f9 drivers: bluetooth: hci: stm32wba driver update for pm
Reworking  pm implementation in stm32wba ble hci driver.
Enabling "no-reset" quirk for stm32wba ble hci driver to
maintain specific configuration required for pm.

Signed-off-by: Alessandro Manganaro <alessandro.manganaro@st.com>
2025-09-06 08:40:02 +02:00
Aaron Ye
0d46a93417 drivers: bluetooth: hci: stop rx thread when closes the HCI
Stops the RX thread when closes the HCI for Ambiq HCI driver

Signed-off-by: Aaron Ye <aye@ambiq.com>
2025-08-28 06:24:49 +02:00
Aaron Ye
2c63115f51 drivers: bluetooth: hci: add close function for Ambiq Apollo4 series
This commit adds close function support for Ambiq Apollo4 series SoC
so the bt_disable() API can be used.

Signed-off-by: Aaron Ye <aye@ambiq.com>
2025-08-28 06:24:49 +02:00
Sylvio Alves
7305e109fb bluetooth: esp32: make LE discardability length-safe
Determine event discardability after parsing the HCI header and require
at least one byte before reading the LE subevent. This removes a possible
OOB read on malformed/short LE Meta events. Also mark LE Extended
Advertising Report as discardable, matching legacy Advertising Report to
reduce RX pool pressure during heavy scanning.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-08-23 05:11:05 +02:00
Sylvio Alves
089df60140 bluetooth: esp32: fix VHCI semaphore misuse in HCI send path
The TX flow control semaphore was initialized with a count of 1 and
released again after every bt_esp32_send() call. This broke the VHCI
flow control contract and could allow sending more packets than the
controller advertised.

This prevents host/controller overruns and ensures proper synchronization
with the ESP32 VHCI interface.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-08-23 05:11:05 +02:00
Pavel Vasilyev
8de6705ec3 drivers: bluetooth: Align bt_hci_send behavior on error
This change alignes HCI drivers behavior with Host expectation. That is:
if an HCI driver managed to send a packet to Controller, the HCI driver
also unreferences it. If the HCI driver didn't manage to send the
packet to Controller and returns an error code, it does not unreferences
buffer.

This change aligns the behavior of HCI drivers with the Host's
expectations. Specifically:
- If an HCI driver successfully sends a packet to the Controller, the
  HCI driver also unreferences it.
- If the HCI driver fails to send the packet to the Controller and
  returns an error code, it does not unreference the buffer.

Fixes #94445

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2025-08-18 22:01:15 +02:00
Raffael Rostagno
99b8333b8e drivers: bt: esp32c2: Add support
Add BT-HCI support to ESP32-C2 and ESP8684.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2025-08-06 12:10:59 +03:00
James Smith
6e344ba19e drivers: bluetooth: hci: silabs: Implement hci_close
Implements HCI close support for the silabs efr32 HCI driver.

Calling `bt_disable()` now works as expected, which is particularly
important for multiprotocol applications.

Signed-off-by: James Smith <james@loopj.com>
2025-08-05 10:25:24 +01:00
Bas van Loon
4a09047b0e drivers: bluetooth: hci_nxp_setup: Prevent re-init of CRC table.
The CRC32 table only needs to be generated once, so prevent it from
regenerating every time as it only required once.

Signed-off-by: Bas van Loon <bas@arch-embedded.com>
2025-08-02 13:17:58 +02:00
Dmitrii Sharshakov
a610e0ec82 bluetooth: hci: userchan: support connecting over UNIX socket
Can be used with Bluez btvirt

Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
2025-08-01 19:36:43 +01:00
Jordan Yates
def2ec8590 bluetooth: hci: spi: configurable CS delay
Make the common SPI CS delay property configurable from devicetree. This
can be required for using a nRF54L as a Bluetooth controller, since it
has an additional delay after waking up from the CS assertion until it
is ready to accept and transmit data (see OPS t_START_HFINT).

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-07-29 22:50:23 -04:00
Alberto Escolar Piedras
0acebf7135 drivers/bluetooth/userchan: Remove NATIVE_APPLICATION support
It is not possible to build anymore in that mode, so we do not
need to support it in this driver cmake files.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-07-19 09:38:15 +02:00
Petri Pitkanen
808ee1713d drivers: bluetooth: silabs: Fix indicating support for 2M phy
Previously we always had driver to support 2M PHY regardless of
configuration. As this was fixed the missing support statemenent
caused 2M support to miss regardless of configuration.

Signed-off-by: Petri Pitkanen <petri.pitkanen@silabs.com>
2025-07-08 13:44:51 -05:00
Pisit Sawangvonganan
b8a8173c1f drivers: kconfig: fix typo
Utilize a code spell-checking tool to scan for and correct spelling errors
in `Kconfig` files within the `drivers` directory.
Additionally, incorporates a fix recommended by the reviewer.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-07-01 10:58:54 -10:00
Sylvio Alves
1df3403393 soc: esp32c6: add BLE support
Add BLE support to ESP32-C6 series.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-06-27 18:27:15 -05:00
Sylvio Alves
9952180987 soc: espressif: sync hal to latest updates
1) Bring latest hal_espressif updates/sync to latest v5.1 branch.
2) Update RF libraries for bug fixes and improvements
3) Add necessary BLE Kconfig entries to support latest changes.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-06-26 10:51:45 -10:00
Romain Jayles
684b90e6b3 bluetooth: stm32wbax: add temperature calibration of linklayer
This patch allows to link the request of the linklayer for a
temperature calibration to the temperature driver.
The linklayer will then adapt and trigger its calibration related to
the current temperature.

Signed-off-by: Romain Jayles <romain.jayles@st.com>
2025-06-26 10:59:31 -05:00
Romain Jayles
94b82655fa drivers: bluetooth: dedicated Kconfig for the STM32WBA configuration
Adds a Kconfig for the STM32WBA associated BT configuration

The first configuration added is the possibility to activate the
calibration of the radio using the temperature

Signed-off-by: Romain Jayles <romain.jayles@st.com>
2025-06-26 10:59:31 -05:00
Johan Hedberg
c186a3110c Bluetooth: drivers: Use bt_hci_cmd_alloc()
Use bt_hci_cmd_alloc() instead of the soon to be deprecated
bt_hci_cmd_create().

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2025-06-23 12:44:53 -07:00
Dmitrii Sharshakov
639bccf969 Bluetooth: drivers: make H4 and H5 follow CONFIG_BT_HCI_INIT_PRIORITY
In some cases UART drivers might have too high init priorities
so HCI must be initialized even later if used with those.

One example is zephyr,native-tty-uart.

Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
2025-06-21 13:14:45 +02:00
Jori Rintahaka
0d5ed7c306 drivers: bluetooth: hci: silabs: fix radio IRQ priorities
Fix radio IRQ priorities. With the Controller update from SiSDK,
its behavior changed so that it overwrites the IRQ priorities.

Reconfigure the priorities after the Controller is initialized.
Source interrupt numbers and priorities from devicetree.

Also set the SYNTH IRQ priority on all HW, and set either the
RDMAILBOX or HOSTMAILBOX IRQ depending on which one exists.

Signed-off-by: Jori Rintahaka <jori.rintahaka@silabs.com>
Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2025-06-18 17:45:51 -04:00
Jori Rintahaka
133f5bc3c2 drivers: bluetooth: hci: refactor silabs controller init
Refactor the controller init to use the new init routines the
controller now provides. Instead of using a hardcoded set of
features, the features are now initialized based on Kconfig
values that the application selects.

Add config files under modules/hal_silabs, used by the controller
init routines in the external module hal_silabs to determine which
features to enable based on Kconfig options. This brings the
controller feature configurability to roughly parity with the
Simplicity SDK.

Signed-off-by: Jori Rintahaka <jori.rintahaka@silabs.com>
Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2025-06-18 17:45:51 -04:00
Nirav Agrawal
ffe8daa767 drivers: bluetooth: add BT-CAL data load for NXP IW612/IW416 SoC
- Add support for default Annex-55 Bluetooth calibration data load
 for both IW612 and IW416 SoC.
- Add support for default Annex-100 Bluetooth calibration data load
 for both IW612 and IW416 SoC.

Signed-off-by: Nirav Agrawal <nirav.agrawal@nxp.com>
2025-06-13 10:36:28 -04:00
Ali Hozhabri
ecf795f0f1 drivers: bluetooth: hci: Use TRNG peripheral for BLE purpose on WB0x
Call entropy APIs to use TRNG peripheral on STM32WB0x devices for BLE
purposes.

Enable RNG node on Nucleo-WB0x boards.

Remove RNG initialization as it's done in the entropy driver.

Signed-off-by: Ali Hozhabri <ali.hozhabri@st.com>
2025-06-12 09:32:41 -07:00
Matthias Ringwald
b67b5c5dc1 bluetooth: cyw43xxx: support newer PatchRAM files
The CYW43xxx for Infineon Controllers stops after the first LauncRAM
command. Newer Controllers like the CYW5557x update the firmware in
multiple stages, which is supported by this commit.

Signed-off-by: Matthias Ringwald <matthias@ringwald.ch>
2025-06-11 16:04:56 -07:00
Matthias Ringwald
e50f03404e bluetooth: cyw43xxx: support autobaud feature
Newer AIROC controllers like the CYW55573 don't support changing the
baudrate in Download Mode. However, a higher baud rate can be used
directly to sent HCI Reset.

This commit adds the KConfig flag CONFIG_AIROC_DOWNLOAD_MODE to enable
the new behaviour.

Signed-off-by: Matthias Ringwald <matthias@ringwald.ch>
2025-06-11 10:12:24 -07:00
Guotao Zhang
b2c4397185 drivers: bluetooth: hci: nxp: add Kconfig for IW610
Add Kconfig BT_NXP_IW610.

Signed-off-by: Guotao Zhang <guotao.zhang@nxp.com>
2025-06-09 14:30:04 -07:00
Axel Le Bourhis
928aa4a196 drivers: bluetooth: hci_nxp: fix discarding multi part adv reports
In case of extended advertising, advertising data can be reported in
parts, so we shouldn't discard them.
Instead, only discard the legacy advertising reports.

Signed-off-by: Axel Le Bourhis <axel.lebourhis@nxp.com>
2025-06-06 08:45:33 +02:00
Lyle Zhu
71ef6c6979 Drivers: Bluetooth: H4: Use a semaphore to wake up HCI RX thread
There is an issue that the buffer cannot be allocated by the function
`read_payload()` in UART ISR context. Then the UART RX will be
disabled. The H4 driver hopes to get the receive buffer in the HCI RX
thread and then open the UART RX again. However, there is a situation
where the HCI RX thread is blocked in getting the received data
buffer. However, since the UARt RX has been disabled, the HCI RX
thread cannot get the received data buffer. Therefore, the RX thread
is always blocked here, causing the Bluetooth host to not work
properly.

Add a semaphore `rx.ready` to notify new received data buffer has
been added to H4 RX queue.

Wait for the semaphore `rx.ready` instead of H4 RX queue in HCI RX
thread.

Wake up the HCI RX thread when failing to allocate the RX buffer.

Fixes #89879.

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2025-05-26 11:54:09 +02:00
Sreeram Tatapudi
f61efef6b0 drivers: bluetooth: Add BLE low power mode for cyw920829m2evk_02
Add BLE low power mode for cyw920829m2evk_02

Signed-off-by: Sreeram Tatapudi <sreeram.praveen@infineon.com>
2025-05-13 17:45:47 +02:00
Johan Hedberg
4cce7b6987 Bluetooth: drivers: Add names to Silabs EFR32 threads
This makes thread analysis output nicer, e.g.:

uart:~$ kernel thread list
Scheduler: 25953 since last call
Threads:
 0x20002380 EFR32 HCI RX
        options: 0x0, priority: -10 timeout: 0
        state: pending, entry: 0x80228fd
        stack size 512, unused 216, usage 296 / 512 (57 %)

 0x20002478 EFR32 LL
        options: 0x0, priority: -16 timeout: 0
        state: pending, entry: 0x8022921
        stack size 1024, unused 296, usage 728 / 1024 (71 %)

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2025-05-07 13:32:28 +02:00
Johan Hedberg
6113230ce3 Bluetooth: drivers: Update to use new H:4 buffer encoding
Update all HCI drivers to use the new H:4 encoding for buffers passing
to/from drivers.

One behavioral change that's done in favor of simplicity, is that where
there's previously been switch statements that could return an error for
unsupported packet types now simply pass any received packet unchanged to
lower layers of the controller (or the HCI transport). Handling this is
now the responsibility of the lower layers, however in practice hitting
such scenarios means that there's a mismatch between configured host and
controller features.

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2025-04-29 13:00:33 +02:00
Nirav Agrawal
49e96fb885 drivers: bluetooth: hci: add IW416 BT Controller Support
Added IW416 SoC support to enable Bluetooth HCI driver perform
firmware load, and works with blueooth HCI interface.

Removed cmake file from bt_controller/, added support in hal_nxp
module to fetch firmware blobs for iW416/nw612 BT Only FW.

Signed-off-by: Nirav Agrawal <nirav.agrawal@nxp.com>
2025-04-28 12:57:54 -05:00
Luis Ubieda
b6e2486ac3 bluetooth: userchan: Guard reads from beyond frame size
Even though through code-inspection there isn't a clear path where the
guard wouldn't act upon the length reaching the limit, this check is
moved up to unconditially validate it on every read.

Fixes #84731.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-28 17:50:56 +01:00
Hao Luo
6f4b92d64d soc: ambiq: Optimize the inclusion relationship of header files
Optimized the inclusion relationship of header files

Signed-off-by: Hao Luo <hluo@ambiq.com>
2025-04-17 09:06:18 +02:00
Marcio Ribeiro
de98c3ce78 drivers: bt: esp32 bt controller features supported
Adds features supported by esp32 bt controller

Signed-off-by: Marcio Ribeiro <marcio.ribeiro@espressif.com>
2025-04-08 16:10:37 +02:00
Jordan Yates
c3139c59d0 bluetooth: hci: SPI backend boot timeout
Add a timeout to the SPI boot process to ensure that `bt_enable` does
not block forever but instead returns an error after an appropriately
large delay. While 1 second would be sufficient under normal operation,
we also want to give the controller time to perform any application
upgrades via a bootloader.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-04-08 08:57:26 +02:00
Yassine El Aissaoui
58ea18ed75 bluetooth: hci_nxp: disallow standby usage while sending HCI MSG
Sending an HCI message requires to wake up the controller
core if it's asleep. Platform controllers may send responses using
non wakeable interrupts and those can be lost during standby usage.
Blocking standby usage until the HCI message is sent.

Signed-off-by: Yassine El Aissaoui <yassine.elaissaoui@nxp.com>
2025-04-01 16:27:50 +02:00
Johan Hedberg
4fe9e018d3 drivers: bluetooth: h4: Free RX buffer upon reset
There are cases where reset_rx() is called when rx.buf is set (e.g. when
the buffer was too small to receive the incoming packet). Be sure to free
the buffer, so that it wont get reused for the next packet (which might
require a buffer from a different pool).

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2025-03-31 11:29:55 +02:00
Niek Ilmer
86c4b8d1f6 drv: bluetooth: Renesas: add Zephyr_blobs_verify
Add a Zephyr blobs verify check for Renesas HAL

Signed-off-by: Niek Ilmer <niek.ilmer.aj@renesas.com>
2025-03-26 16:21:46 +01:00
Nirav Agrawal
cacf8f6a47 drivers: bluetooth: hci_nxp_setup: support for bt disable and reinit
- added flag in nxp setup driver to perform HCI controller firmware-
  load and configuration only once. This avoid loading/setting-up
  controller fw on successive bt_init() after bt_disable() call.

Signed-off-by: Nirav Agrawal <nirav.agrawal@nxp.com>
2025-03-12 19:02:35 +01:00
Nirav Agrawal
438701fdd5 bluetooth: host: perform hci-reset in bt_disable()
- added HCI command to send hci-reset in bt_disable() func, and
  remove its call from the driver close() call.
- remove rsp buf pass to 'hci_reset_complete()' func as status is
  already checked under 'bt_hci_cmd_send_sync()'.

Signed-off-by: Nirav Agrawal <nirav.agrawal@nxp.com>
2025-03-12 19:02:35 +01:00
Lyle Zhu
ca121e134e Driver: HCI: set BT_NXP_NW612 as default
Add a choice `BT_NXP_MODULE` to make sure only one controller can be
selected if the multiple controllers are supported.

All NXP Bluetooth module similar with BT_NXP_NW612 should be added
to the section.

And set the BT_NXP_NW612 as the default controller.

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2025-03-12 19:01:50 +01:00
Alberto Escolar Piedras
1bfbd9262e Bluetooth: userchan: Remove support for native_posix and clarify msg
native_posix has been removed, so let's remove its support from
kconfig for this driver.
Also let's replace its mention in the help message.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-03-12 02:27:36 +01:00
Piotr Pryga
ceb4298566 drivers: hci: ipc: Make IPC endpoint bound timeout configurable
The HCI IPC endpoint bound timeout value was hardcoded and set
to 1000 ms. This value may be differ between platforms, for
exampel due to extended boot time.
The default value used was a bit short for multicore SoCs
that usually may wait for some other service reposnes for
similar time. That may lead to timeout error while other
end of an endpoint was slightly late. Change the default
duration to 2000 ms to give more room for possible delays.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2025-03-11 09:00:29 +01:00
Alberto Escolar Piedras
b2b6f3c314 Bluetooth: userchan: Support other libCs
Refactor the userchan driver into a top and a bottom part.
The bottom is the one which interacts with the host and is built
with the host libC, while the top is built with the embedded code
and whatever libC that is built with.

Errors (errno) is converted between the top and bottom to ensure they
are coherent with the local libC.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-03-10 06:52:19 +01:00
Pavel Vasilyev
179f3c6f05 bluetooth: hci: ipc: assert when building HCI IPC driver w/o ACL FC
The HCI IPC driver is not reliable and can lead to lost ACL data if
built without Controller-to-Host ACL flow control.

This commit prevents building HCI IPC driver and hci_ipc sample without
CONFIG_BT_HCI_ACL_FLOW_CONTROL.

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2025-03-08 03:37:16 +01:00
Ying Zhang
6b16d10342 drivers: Bluetooth: nxp: not power off BLE controller when bt disable
remove the power off BLE controller function since the hci_reset cmd
is enough, also for wifi-ble coex scenario, need to maintain BLE controller
for some info in SMU region

Signed-off-by: Ying Zhang <ying.zhang_2@nxp.com>
2025-03-07 20:19:14 +01:00