Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
From: Shuai Zhang
Date: Wed Apr 01 2026 - 22:26:23 EST
Hi Dmitry
just checking if there are any updates on this patch.
Please let me know if any further information is needed.
On 3/18/2026 10:32 AM, Shuai Zhang wrote:
Hi Dmitry
Thanks for the review.
On 3/14/2026 12:06 AM, Dmitry Baryshkov wrote:
On Thu, Jan 08, 2026 at 03:43:53PM +0800, Shuai Zhang wrote:
Since USB can disconnect at any time, if it disconnects duringDoes it not have any check for not completing firmware update if the
the BT firmware download, the BT controller firmware version may still
be updated even without completing the download.
download was not successful / complete?
Because of RAM limitations, the controller updates the firmware version during
the download process,even if the download does not complete.
Since btusb cannot power-cycle the controller, the only recovery after
an interrupted download is to retry the firmware download.
Thanks,
When USB reconnects, the BT host detects the same version as in the
firmware file, which prevents the firmware from being downloaded again.
Therefore, remove the equality check to ensure that after
USB reconnection, the BT host can still download the firmware.
Signed-off-by: Shuai Zhang <shuai.zhang@xxxxxxxxxxxxxxxx>
---
drivers/bluetooth/btusb.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 646de80c7..991064a25 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
"firmware rome 0x%x build 0x%x",
rver_rom, rver_patch, ver_rom, ver_patch);
- if (rver_rom != ver_rom || rver_patch <= ver_patch) {
+ /* Allow rampatch if version is greater than or equal to firmware version.
+ * Equal versions are acceptable for re-flashing or recovery scenarios.
+ */
+ if (rver_rom != ver_rom || rver_patch < ver_patch) {
bt_dev_err(hdev, "rampatch file version did not match with firmware");
err = -EINVAL;
goto done;
--
2.34.1
Shuai