Commit Graph

31 Commits

Author SHA1 Message Date
Isaac Hermida c7adf015f9 bluetooth-init: validate HCI interface after initialization
Some Bluetooth controllers may expose hci0 even when the firmware
initialization has not completed correctly. In that state, the init
script may report success but bluetoothd cannot use the controller.

Validate the controller through the kernel management interface before
accepting the initialization as successful. This matches the interface
used by bluetoothd and catches controllers that are visible through HCI
but not registered in MGMT yet.

Use a timeout for the MGMT query so a broken controller state cannot
block the init script instead of falling back to the retry loop.

https://onedigi.atlassian.net/browse/DEL-9512

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-19 08:54:56 +02:00
Isaac Hermida 3552e1b5e1 bluetooth-init: fix BT_GPIO expansion
After refactoring these scripts in a8c6dcb56e, some platforms are
not setting the enable line correctly.
Regarding the affected platforms, on the 6UL it works because that GPIO
comes enabled by default, but not on the other ones.
For the other platforms refactored, such as the CC91/93 or CCMP25,
it is not needed, as the variable is used directly in the gpioset command.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-08 12:25:27 +02:00
Mike Engel a8c6dcb56e bluez: generalize BT GPIO configuration for bluetooth-init script
This commit generalizes the BT GPIO value used in the bluetooth-init
script for different platforms.

Signed-off-by: Mike Engel <Mike.Engel@digi.com>

https://onedigi.atlassian.net/browse/DEL-9668
2026-04-30 16:39:03 +02:00
Arturo Buzarra 8f2ac0347c bluez5-init: ccmp2: increase Bluetooth operational speed to 3M
Increase the Bluetooth UART operational speed to 3M baudrate for CCMP2.

https://onedigi.atlassian.net/browse/DEL-9454

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-04-30 12:32:05 +02:00
Mike Engel 0a307d029e meta-digi-dey: replace systemd-udev-settle from BT and ifupdown service
This commit replaces systemd-udev-settle from bluetooth-init and
ifupdown service. Systemd recommends not to use that service and
wait for specifc event or service to sync interfaces.

Signed-off-by: Mike Engel <Mike.Engel@digi.com>

https://onedigi.atlassian.net/browse/DEL-9338
2026-04-16 11:08:02 +02:00
Isaac Hermida 865ca174c9 bluetooth-init: bluetooth-init_btbcm_hciuart: optimize script
Optimize the script to remove unneeded code.
As the BT_REG_ON is managed by the driver, the REG_POWER_ON is not
needed at all.
Loading the hci_uart pulls btbcm, so no need to load it explicitly.

https://onedigi.atlassian.net/browse/DEL-9949

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-01-30 12:36:41 +01:00
Isaac Hermida 3408f8c4ed bluetooth-init: consolidate common scripts
Consolidate the init script for platforms based on the same driver with
the same logic.
The btbmc and hciuart drivers are used in the ccmp1 and cc95.
The btnxpuart driver is used in the cc91 and cc93.
The btdigi driver is used in the cc8 platforms with the qca65x4 driver.

https://onedigi.atlassian.net/browse/DEL-9949

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-01-30 12:36:41 +01:00
Gonzalo Ruiz 6d83bc1ab9 bluez5-init: ccmp2: load FCC file by default
New default file is 'CYW55500A1_FCC.hcd' for ccmp2, so load that file by
default in the script.

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2026-01-13 09:56:30 +01:00
Isaac Hermida cf27d3e201 bluetooth-init: get the BT MAC address from the DT node
Retrieve the Bluetooth MAC address from the device tree (DT) node
rather than from the environment.
U-Boot will populate this address by default, but it can be
overridden with a custom MAC address specified directly in the DT,
which then takes priority.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2025-12-02 12:31:33 +01:00
Gonzalo Ruiz 6a07f42432 bluez: ccmp1/ccmp2: set custom MAC addresses on boot
Use an HCI vendor-specific command from Infineon on bluetooth-init
to set a custom MAC address every time the interface is started.

Valid for both CCMP1 (Murata 2AE) and CCMP2 (Murata 2FY) devices.

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2025-11-04 18:08:33 +01:00
Arturo Buzarra a20aadbeec bluez5-init: add Bluetooth init script for CCMP1x platforms
The HCI_UART Bluetooth driver does not support suspend-to-RAM operation, so the
driver must be loaded and unloaded manually. This commit adds support for the
Bluetooth initialization script used across Digi platforms, specifically for
ConnectCore MP13 and MP15.

https://onedigi.atlassian.net/browse/DEL-9650

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2025-06-13 13:24:28 +02:00
Isaac Hermida b5465a7390 bluez5-init: unify all bluetooth-init services
Unify all the different bluetooth init scripts.
The service can be started as oneshot instead of forking, as in all cases
the attach command is started daemonized in background.
Regarding the service requirements, just rely on udev so the HW itself
should be detected and ready.
Make it running before the bluetooth service, so the HW Bluetooth device
is fully ready when bluetooth service starts.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2025-02-05 12:10:20 +01:00
Isaac Hermida 2514406b4c bluez5-init: unify CCMP2 bluetooth init script
bluez5-init is a Digi custom recipe to collect the init script
needed to bring up the specific platform bluetooth hardware.
CCMP1s do not require any bluetooth init extra action.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2025-02-05 12:10:20 +01:00
Isaac Hermida ca9d8162df bluetooth-init: cc9: do not unload the btnxpuart on reboot
Do not take any action such as removing the btnxpuart module When
the system is being restarted (poweroff or reboot), as the driver
tries to restore the UART baudrate when removing the module, and if
the system is being off, some of the entries might be dissapeared in the
middle of the process, leading to a NULL pointer and preventing the
system of being rebooted.
The btnxpuart can be removed on suspend/resume safely, so add the logic
to detect if the system is being rebooted.

https://onedigi.atlassian.net/browse/DEL-9290

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-11-28 15:41:41 +01:00
Isaac Hermida 5451a0f4bc bluetooth-init: ccimx6ul: validate FW was correctly loaded
Sporadically, the BT FW is uploaded but the interface is not functional
as it is not up and its entries are not populated. Validate the FW
was correctly set, if not, rely on the retry mechanism.

https://onedigi.atlassian.net/browse/DEL-9006

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-10-31 09:59:42 +01:00
Javier Viguera 7b50fb3a06 bluetooth-init: ensure the interface is up before unloading the module
This is a workaround for a driver failure when unloading the module. The
"btnxpuart" driver crashes with a null pointer dereference if the bluetooth
interface is down when the module is unloaded.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-09-27 14:09:23 +02:00
Javier Viguera 55f8ccadec bluetooth-init: start driver load service before bluetooth daemon
Revert to the previous used order for the bluetooth related
services. First, load the driver and then execute the bluetooth
daemon. This is needed for two reasons:

  * The bluetooth daemon caches the MAC address. Loading the module before
    ensures the daemon caches the correct MAC.
  * The connectcore-demo server stops working if the bluetooth interface
    is unavailable when the server launches. This order ensures the demo
    works as expected.

This change also brings back the problem of the btnxpuart module unload
failure on reboot/suspend. The following commit adds a workaround for
the driver issue.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-09-27 14:02:34 +02:00
Javier Viguera 6107312f03 bluetooth-init: fix systemd service syntax
According to systemd manual, "After" setting expects a space-separated
list. Fix the wrong comma-separated list to prevent the following boot
failure:

  bluetooth-init.service:4: Failed to add dependency on systemd-udev-settle.service,bluetooth.service, ignoring: Invalid argument

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-09-16 18:58:15 +02:00
Javier Viguera 4c33a85d6b bluetooth-init: start driver load service after bluetooth daemon
The bluetooth daemon does not need the interface to exist before being
executed. We configure the daemon with AutoEnable=true, which will enable
adapters present on start or that appear later on.

On shutdown, systemd stops services in the opposite order to the boot,
so configuring the driver load service after the bluetooth service,
ensures that on shutdown the driver is unloaded before the bluetooth
daemon is stopped.

The btnxpuart driver needs this order, to prevent a module unload failure
on system reboot/poweroff.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-08-30 18:22:37 +02:00
Mike Engel d11b291f9a meta-digi: add new CCMX91 platform into DEY
This commits adds the CCMX91 platform to the DEY
build system. Furthermore, it creates generic ccimx9
support to be used for the CCiMX91 and CCiMX93
platform.

https://onedigi.atlassian.net/browse/DEL-9106

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2024-07-19 07:32:00 +02:00
Isaac Hermida 5588c30a7b Revert "ccimx93: bluetooth-init: re-initilize the LE support after hci reset"
This reverts commit c5b53c9765.

The HCI reset interface is fixed inside each BT power calibration shell
script, so this workaround is not needed anymore.

https://onedigi.atlassian.net/browse/DEL-8458

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-02-21 18:00:34 +01:00
Isaac Hermida c5b53c9765 ccimx93: bluetooth-init: re-initilize the LE support after hci reset
for the IW61x, when the FW is instructed with an hci reset command, the
LE stack is not correctly reset.
It can be workaround-ed by SW doing a SW power cycle.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-02-19 09:01:45 +01:00
Isaac Hermida f44ae189e5 bluetooth-init: ccimx93: adjust power levels
https://onedigi.atlassian.net/browse/DEL-8327
https://onedigi.atlassian.net/browse/DEL-8458

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-02-19 09:01:45 +01:00
Isaac Hermida bc4aaf2237 ccimx93: bluetooth-init: adjust recipes to btnxpuart driver
The btnxpuart driver uses internally the serial port to manage the chip, and
loads the BT FW independently of the WiFi subsystem.
While on it, add support in the bluetooth-init script to be able to power the
chip when the WiFi support is not present.

https://onedigi.atlassian.net/browse/DEL-8632

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-08-01 18:54:00 +02:00
Isaac Hermida 6feaa6e3c0 ccimx93: bluetooth-init: leave the interface up after attaching
Ensure we leave the Bluetooth interface up after attaching it. If not,
under some circumstances, it could be down.

https://onedigi.atlassian.net/browse/DEL-8608

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-06-30 11:04:44 +02:00
Isaac Hermida 803945c080 Revert "bluez5-init: ccimx93: add fix to enable LE"
Masking the extended advertising flag makes the hcitool lescan work, but
triggers functionality problem such as bluetoothctl scanning or extended
advertisement not working.
Do not mask it, so use bluetoothctl scan instead of hcitool lescan to discover
LE devices.

This reverts commit ac1e4633fb.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-05-02 12:52:11 +02:00
Isaac Hermida 06e84d1b7b bluez5-init: ccimx93: modify script to support suspend/resume
The BT chip for the ccimx93 cannot be turned off, nor can it be re-uploaded.
Therefore, we need to set some conditions to assume that it is going to be
attached correctly. The changes in this script take care of that.
Upon the first attachment, the rate is set to 3M, and future uses will always
be done at this rate. If, for any reason, it was not stopped and the chip is
already attached, do nothing.

https://onedigi.atlassian.net/browse/DEL-8464

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-04-20 17:05:00 +02:00
Isaac Hermida ac1e4633fb bluez5-init: ccimx93: add fix to enable LE
This fix is needed for bluez-5.65 version.
We can drop it when using a newer version.

https://onedigi.atlassian.net/browse/DEL-8346

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-04-20 17:05:00 +02:00
Isaac Hermida 6e812a569b ccimx93: bluetooth-init: fix how to set btaddr
Use the specific hcitool vendor command to set the BT mac address.
It is a custom vendor command (0x3f), and the field is 0x0022.
The BT address is passed from last octet to first octet.

https://onedigi.atlassian.net/browse/DEL-8346

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-04-20 17:05:00 +02:00
Isaac Hermida 66fb6e55c1 ccimx93: iw612: add bluetooth support
The bluetooth FW for the IW612 is loaded together with WiFi FW, so there
is not BT FW file as in our other products.
In order to use the BT, it is a requirement to load the WiFi FW, so
ensure that the service is started after the load of the system
modules.

https://onedigi.atlassian.net/browse/DEL-8346

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2023-03-27 16:34:06 +02:00
Arturo Buzarra fb6612dabe bluez5: split init scripts and systemd service in a different recipe
This commit moves all the work related with the initialization process to a new
recipe to allow disgregate the init scripts from the bluez5 recipe.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2022-05-09 16:40:04 +02:00