BLE Freeze and Unresponsive Controller on Verdin iMX8M Mini (AzureWave/Marvell-NXP SDIO) with TorizonCore 6.8.3

Hardware/Software Environment:

  • Module: Verdin iMX8M Mini DualLite 1GB WB IT
  • OS: TorizonCore 6.8.3+build.37 (kirkstone)
  • Kernel: Linux 5.15.183-6.8.3+git.defb81960f4f #1-TorizonCore SMP PREEMPT Tue Jun 3 13:26:20 UTC 2025 aarch64
  • Bluetooth/WiFi Module: AzureWave AW-CM276NF (SDIO, Marvell/NXP chipset)
  • Application: Python container using BLE via BlueZ over D-Bus (e.g. python-dbus, pydbus)
  • Docker Variant: Yes

Problem Description:

After several hours of BLE operation in Central mode (LE scans), the AzureWave/Marvell-NXP SDIO controller enters a frozen state:

  • Symptoms:
    • dmesg log shows:

      Bluetooth: hci0: unknown advertising packet type: 0xff
      Bluetooth: hci0: command 0x200c tx timeout
      Bluetooth: hci0: failed to disable LE scan: status 0x1f
      
    • The Python application (using BlueZ via D-Bus) reports:

      Can't init device hci0: Connection timed out (110)
      
    • Sometimes hciconfig hci0 still shows “UP RUNNING”, other times it disappears (“No such device”).

    • No software reset (hciconfig hci0 reset, down, up) restores BLE functionality.

    • Only a system reboot or power cycle recovers the BLE interface.


Questions for Toradex/NXP Support:

  • Is there any known software workaround to recover BLE in this situation, without rebooting or power cycling the SOM?
  • Is there a firmware fix or update for AzureWave/Marvell-NXP BLE SDIO to prevent this freeze (especially after “unknown advertising packet type” events)?
  • Are there recommended monitoring or automated recovery strategies for this specific hardware, OS, and Python/BlueZ D-Bus setup?

Attachments:

  • Log excerpts:

    Sep 08 09:19:48 kernel: Bluetooth: hci0: unknown advertising packet type: 0xff
    Sep 08 09:27:19 kernel: Bluetooth: hci0: command 0x200c tx timeout
    Sep 08 10:44:36 [Python]: Can't init device hci0: Connection timed out (110)
    
  • Output from hciconfig hci0, hcitool dev.


Thank you for your support!

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


I understand you’re experiencing BLE connectivity issues with your Verdin iMX8M Mini DualLite module using the AzureWave AW-CM276NF wireless module. Based on the Toradex documentation, I can provide some guidance for your BlueZ D-Bus API implementation.

BlueZ Configuration and Compatibility

For your Python container using BlueZ over D-Bus, the Verdin iMX8M Mini supports Bluetooth 5.3 connectivity(1). The documentation shows that BlueZ 5+ has specific compatibility considerations that may be relevant to your issue(2).

If you’re using older BlueZ utilities alongside your D-Bus implementation, you may need to enable compatibility mode(2):

root@colibri-imx6ull:~# vi /lib/systemd/system/bluetooth.service

Change the ExecStart line from:

ExecStart=/usr/libexec/bluetooth/bluetoothd

to:

ExecStart=/usr/libexec/bluetooth/bluetoothd --compat

Then reload and restart:

root@colibri-imx6ull:~# systemctl daemon-reload
root@colibri-imx6ull:~# systemctl restart bluetooth

(2)

D-Bus API Considerations

For your Python application using D-Bus, the documentation notes that there are limited tools updated to use the newer D-Bus API(2). The BlueZ 5 D-Bus API documentation provides more details on proper implementation(2).

Hardware Specifications

Your Verdin iMX8M Mini DualLite 1GB WB IT module includes:

  • Bluetooth 5.3 support(1)
  • Wi-Fi 802.11ac 2x2 MU-MIMO capability(1)
  • Industrial temperature range operation (-40° to +85°C)(1)

Additional Notes

The documentation mentions that Python packages (python-dbus, python-pygobject) are included for D-Bus usage with Python, specifically for pairing operations(3). On devices with limited flash memory, these packages might impact available storage(3).

Recommendations

  1. Update to TorizonCore 7.x: Consider upgrading from TorizonCore 6.8.3 to a more recent version, as newer releases may include updated BlueZ and kernel improvements.

  2. D-Bus Implementation: Ensure your Python application properly implements the BlueZ 5 D-Bus API rather than relying on older C API methods.

  3. Monitoring Strategy: Implement proper error handling in your Python application to detect connection timeouts and attempt graceful recovery before the hardware enters the frozen state.

For the specific SDIO controller freeze issue you’re experiencing, this appears to be a hardware/firmware-level problem that may require investigation beyond the current documentation scope.

Best regards, Toradex AI Assistant.

Thank you for the suggestion regarding TorizonCore 7.x. I can consider upgrading from TorizonCore 6.8.3.
Before proceeding, could you please confirm if there have actually been relevant changes or improvements to the BlueZ stack or kernel drivers (specifically for Bluetooth/BLE and the AzureWave/Marvell-NXP SDIO chip) in recent releases?
Are there any release notes or changelogs that mention fixes or enhancements for issues similar to mine?

Hello @VLengineering,

Sorry for the delay on this topic.

We have been investigating a similar issue.
So far, the most promising solution is to use the NXP proprietary drivers instead of the default ones which are available on Torizon OS.

To do that, a custom Torizon OS 7 build with Yocto (7.3.0 recommended) is needed, in addition to the meta-toradex-wifi layer.

You will also need a driver package that we can provide under NDA.
If you want to give this a try, please let me know so I can contact you via email for the additional details.

Best Regards,
Bruno

Hello Bruno,

Thank you for your feedback and for investigating the issue.

I am interested in trying the NXP proprietary drivers for this project.

Since this development is for a client, I would like to clarify:
Should the NDA be signed by me as the developer, or is it preferable that it be signed directly by my client?

In addition, could you please provide as many technical details as possible regarding the integration and usage of the NXP drivers?
I would also like to know if these drivers have already been tested by your team in scenarios similar to mine, and if you have any feedback regarding their stability and feature support (Bluetooth LE, filtering, etc.).

I want to be sure that moving to the NXP proprietary drivers is a reliable solution and that I am not investing time and effort on an unproven path.

Please let me know your recommendations and the next steps.

Best regards,

Hello @VLengineering,

You need to start from a Yocto build of Torizon OS, as per the instructions here: Build Torizon OS from Source With Yocto Project/OpenEmbedded | Toradex Developer Center
The instructions on how to install the proprietary drivers are part of the meta-toradex-wifi layer: GitHub - toradex/meta-toradex-wifi at scarthgap-7.x.y
I would only add that you do not need manufacturing mode (mfg-mode) to use the drivers, so you can remove this configuration.

These drivers have been tested in bluetooth scenarios and have proven more stable than the default drivers on Torizon OS.
One of our customers has seen still a rare issue on their use of bluetooth, but this driver is currently the best alternative.
It is possible that you will not run into problems with it, as we have not been able to reproduce the issues with our setup.

I will reach out via email for the details regarding NDAs.

Best Regards,
Bruno

Hello Bruno,

Thanks for your reply and the info!
I’ll wait for your instructions regarding the NDA.
Best regards.

Hi Bruno,

I’m finally working on the task to customize the Torizon image and integrate the proprietary NXP drivers into the meta-toradex-wifi layer, as suggested by the guides you’ve provided.

I’ve already signed the NDA, but I’m missing the link to download the NXP driver package.

Could you kindly provide the link? Thanks in advance for your support!

Best regards,

Luca

Hello @VLengineering

I have reached out to you on a separated email.

Best regards
Max