Re: Bug/Problem with rtl_bt/rtl8822cs_config.bin

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

 



Hi Christian,

+ Max Chou as the author of commit 848fc6164158 ("Bluetooth: hci_h5:
btrtl: Add support for RTL8822C")

On Tue, Feb 21, 2023 at 8:13 AM Christian Hewitt
<christianshewitt@xxxxxxxxx> wrote:
[...]
> I can also use the oldest upstream firmware with the Armbian config:
>
> [    7.315358] Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000c lmp_ver=0a lmp_subver=8822
> [    7.318754] Bluetooth: hci0: RTL: rom_version status=0 version=3
> [    7.318772] Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cs_fw.bin
> [    7.319680] Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cs_config.bin
> [    7.341340] Bluetooth: hci0: RTL: cfg_sz 73, total sz 30817
> [    7.612533] Bluetooth: hci0: RTL: fw version 0x05990d54
>
> The config file Armbian are using [0] is sourced from an Amlogic (Android) BSP
> repo shared to manufacturer Jethome (Vyacheslav on CC). There is no obvious
> version info. There are newer (more recently committed) config files available
> in updates to the Amlogic repo (alongside older 0599_0D54 firmware) and all work
> with any upstream firmware file.
I did compare the two config files and they differ in certain areas.
- upstream config: 1500000 baud, flow control is disabled
- Armbian config: 2000000 baud, flow control is enabled

Seeing that the Armbian config works with a higher baud rate my guess
is that there's some issue with flow control instead.

For those who are interested, here's the raw data provided by the
rtlfw tool from [0].
Armbian (= working) config:
Signature: 0x8723ab55
Data len:  67
len=16  offset=000c,{ 02 50 00 00 50 c5 ea 19 e1 1b fd af 5f 01 a4 0b
},UART_CONFIG
len=2   offset=01be,{ 1a 19 }
len=1   offset=01bb,{ 3d }
len=4   offset=01c0,{ 10 00 60 01 }
len=11  offset=1000,{ 00 ff 04 5d 00 03 00 ff ff ff ff }
len=11  offset=1040,{ 28 08 30 30 00 ff ff ff ff ff ff }
len=1   offset=01c4,{ 02 }

upstream (= non-working) config:
Signature: 0x8723ab55
Data len:  27
len=16  offset=000c,{ 02 80 92 04 50 c5 ea 19 e1 1b fd af 5b 01 a4 0b
},UART_CONFIG
len=1   offset=007a,{ 37 }
len=1   offset=00d9,{ 0f }

The baud rate is encoded in the first four bytes and can be decoded
with the help of btrtl_convert_baudrate() from Linux'
drivers/bluetooth/btrtl.c
Flow control is encoded as BIT(2) in data[12].

I am hoping that Hilda and/or Max can provide some ideas on how to
solve this issue.


Best regards,
Martin


[0] https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/tools/rtlfw.c?id=5d347b54714e0f2d750253be09b68b0c3119dd0a



[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