Re: [PATCH v6 1/6] Bluetooth: btintel: Check firmware version before download

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luiz,

On Wed, 2021-02-10 at 12:18 -0800, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
> 
> This checks the firmware build number, week and year matches with
> repective version loaded and then skip the download process.
> 
> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
> ---
> v2: Add patch that mover checks for operational mode after the version
> checking.
> v3: Fix not checking for operation mode before using btintel_read_boot_params
> since some models depend on that to contruct the fw filename. Also attempt to
> cleanup duplicated code.
> v4: Fix forwarding -EALREADY when firmware has already been loaded.
> v5: Fix not advancing fw_ptr.
> v6: Fix btusb_setup_intel_new_get_fw_name error checking for ddc.
> 
>  drivers/bluetooth/btintel.c   | 94 +++++++++++++++++++++++++++--------
>  drivers/bluetooth/btintel.h   |  5 +-
>  drivers/bluetooth/btusb.c     | 18 ++++++-
>  drivers/bluetooth/hci_intel.c |  7 ++-
>  4 files changed, 98 insertions(+), 26 deletions(-)
> 

I tested with ThP and it worked great as expected. However, when I used
a legacy WsP, it failed to download, and here is the output:

[  682.597921] Bluetooth: hci1: Bootloader revision 0.0 build 26 week 38 2015
[  682.598980] Bluetooth: hci1: Device revision is 16
[  682.598981] Bluetooth: hci1: Secure boot is enabled
[  682.598982] Bluetooth: hci1: OTP lock is enabled
[  682.598983] Bluetooth: hci1: API lock is enabled
[  682.598984] Bluetooth: hci1: Debug lock is disabled
[  682.598985] Bluetooth: hci1: Minimum firmware build 1 week 10 2014
[  682.602706] Bluetooth: hci1: Found device firmware: intel/ibt-12-16.sfi
[  682.602744] Bluetooth: hci1: Boot Address: 0x40800
[  682.602745] Bluetooth: hci1: Firmware Version: 26-38.15
[  682.602745] Bluetooth: hci1: Firmware already loaded
[  682.602829] Bluetooth: hci1: Waiting for device to boot
[  682.608593] usb 1-2: USB disconnect, device number 6
[  683.618723] Bluetooth: hci1: Device boot timeout
[  683.618817] Bluetooth: hci1: sending frame failed (-19)

It looks like the parameter values of "write_boot_params" command in the firmware
file is same as the bootloader version, when it should be the actual firmware
version, and it caused the firmeare downloading to fail.

So, for those legacy device like WsP and SfP, we may need to skip for checking the
version and try not to reload the firmware.

Regards,
Tedd
cold boot
[    3.906251] Bluetooth: Core ver 2.22
[    3.906264] Bluetooth: HCI device and connection manager initialized
[    3.906266] Bluetooth: HCI socket layer initialized
[    3.906269] Bluetooth: L2CAP socket layer initialized
[    3.906270] Bluetooth: SCO socket layer initialized
[    4.060381] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[    4.061651] Bluetooth: hci0: Device revision is 2
[    4.061655] Bluetooth: hci0: Secure boot is enabled
[    4.061656] Bluetooth: hci0: OTP lock is enabled
[    4.061656] Bluetooth: hci0: API lock is enabled
[    4.061657] Bluetooth: hci0: Debug lock is disabled
[    4.061658] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[    4.082238] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[    4.082315] Bluetooth: hci0: Boot Address: 0x40800
[    4.082316] Bluetooth: hci0: Firmware Version: 26-11.20
[    5.644601] Bluetooth: hci0: Waiting for firmware download to complete
[    5.645401] Bluetooth: hci0: Firmware loaded in 1526524 usecs
[    5.645421] Bluetooth: hci0: Waiting for device to boot
[    5.658427] Bluetooth: hci0: Device booted in 12709 usecs
[    5.857453] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[    5.860426] Bluetooth: hci0: Applying Intel DDC parameters completed
[    5.863385] Bluetooth: hci0: Firmware revision 0.1 build 26 week 11 2020
[    5.921369] Bluetooth: hci0: MSFT filter_enable is already on
[    6.236151] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    6.236153] Bluetooth: BNEP filters: protocol multicast
[    6.236155] Bluetooth: BNEP socket layer initialized
[   21.400204] Bluetooth: RFCOMM TTY layer initialized
[   21.400208] Bluetooth: RFCOMM socket layer initialized
[   21.400211] Bluetooth: RFCOMM ver 1.11

Reboot
han1@han1-NUC8i7BEH:~$ dmesg | grep Bluetooth
[    3.909093] Bluetooth: Core ver 2.22
[    3.909124] Bluetooth: HCI device and connection manager initialized
[    3.909130] Bluetooth: HCI socket layer initialized
[    3.909132] Bluetooth: L2CAP socket layer initialized
[    3.909135] Bluetooth: SCO socket layer initialized
[    3.992043] Bluetooth: hci0: Firmware revision 0.1 build 26 week 11 2020
[    4.023816] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[    4.023953] Bluetooth: hci0: Boot Address: 0x40800
[    4.023957] Bluetooth: hci0: Firmware Version: 26-11.20
[    4.023958] Bluetooth: hci0: Firmware already loaded
[    4.082616] Bluetooth: hci0: MSFT filter_enable is already on
[    6.858276] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    6.858278] Bluetooth: BNEP filters: protocol multicast
[    6.858281] Bluetooth: BNEP socket layer initialized
[    6.962610] Bluetooth: hci0: MSFT filter_enable is already on
[   53.815973] Bluetooth: RFCOMM TTY layer initialized
[   53.815979] Bluetooth: RFCOMM socket layer initialized
[   53.815982] Bluetooth: RFCOMM ver 1.11


New FW + Reboot
[    3.831773] Bluetooth: Core ver 2.22
[    3.831788] Bluetooth: HCI device and connection manager initialized
[    3.831790] Bluetooth: HCI socket layer initialized
[    3.831791] Bluetooth: L2CAP socket layer initialized
[    3.831794] Bluetooth: SCO socket layer initialized
[    4.120498] Bluetooth: hci0: Firmware revision 0.1 build 26 week 11 2020
[    4.128674] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[    4.128831] Bluetooth: hci0: Boot Address: 0x40800
[    4.128836] Bluetooth: hci0: Firmware Version: 168-48.20
[    6.146311] Bluetooth: hci0: command 0xfc01 tx timeout
[    7.027561] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    7.027563] Bluetooth: BNEP filters: protocol multicast
[    7.027568] Bluetooth: BNEP socket layer initialized
[   14.142710] Bluetooth: hci0: FW download error recovery failed (-110)
[   14.569654] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[   14.570665] Bluetooth: hci0: Device revision is 2
[   14.570673] Bluetooth: hci0: Secure boot is enabled
[   14.570678] Bluetooth: hci0: OTP lock is enabled
[   14.570683] Bluetooth: hci0: API lock is enabled
[   14.570688] Bluetooth: hci0: Debug lock is disabled
[   14.570696] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[   14.571855] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[   14.571892] Bluetooth: hci0: Boot Address: 0x40800
[   14.571894] Bluetooth: hci0: Firmware Version: 168-48.20
[   16.011471] Bluetooth: hci0: Waiting for firmware download to complete
[   16.011554] Bluetooth: hci0: Firmware loaded in 1405954 usecs
[   16.011576] Bluetooth: hci0: Waiting for device to boot
[   16.025717] Bluetooth: hci0: Device booted in 13807 usecs
[   16.028449] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[   16.030655] Bluetooth: hci0: Applying Intel DDC parameters completed
[   16.033762] Bluetooth: hci0: Firmware revision 0.1 build 168 week 48 2020
[   16.095632] Bluetooth: hci0: MSFT filter_enable is already on
[  891.792054] Bluetooth: RFCOMM TTY layer initialized
[  891.792059] Bluetooth: RFCOMM socket layer initialized
[  891.792062] Bluetooth: RFCOMM ver 1.11


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux