BCM43341B0 Frame reassembly failed

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

 



I recently brought an Intel Edison board with a BCM43341B0 chip up from
4.9 to 4.16.0-rc6 but I am having reliability issues when using
btattach instead of the previous brcm_patchram_plus utility to attach
the device.


The hci communication with the bluetooth chip gets corrupted almost
always when creating a GATT connection.  Thowing "Bluetooth: hci0:
Frame reassembly failed (-84)" and then requiring the device to be
reset to communicate again.

Kernel logs interleaved with attaching the device:
# /usr/bin/btattach --bredr /dev/ttyS0 -P bcm -S 3000000 &
# Attaching Primary controller to /dev/ttyS0
[   53.148206] Bluetooth: HCI UART driver ver 2.3
[   53.152758] Bluetooth: HCI UART protocol H4 registered
[   53.157970] Bluetooth: HCI UART protocol Three-wire (H5) registered
[   53.164512] hci_bcm hci_bcm: hci_bcm device registered.
[   53.170445] Bluetooth: HCI UART protocol Broadcom registered
Switched line discipline from 0 to 15
Device index 0 attached
[   53.333220] Bluetooth: hci0: BCM: chip id 82
[   53.340184] Bluetooth: hci0: BCM: features 0x2f
[   53.368421] Bluetooth: hci0: BCM43341B0
[   53.372338] Bluetooth: hci0: BCM43341B0 (002.001.014) build 0000
[   57.843684] Bluetooth: hci0: BCM (002.001.014) build 0166



Tail of the btmon while it is attached:

> HCI Event: Command Complete (0x0e) plen 4               #299 [hci0]
62.947028
      Broadcom Write RAM (0x3f|0x004c) ncmd 1
        Status: Success (0x00)
< HCI Command: Broadcom Write RAM (0x3f|0x004c) plen 255  #300 [hci0]
62.947488
        Address: 0x000d7a7d
        0f 71 d0 09 dc bc f1 71 0f 6e d0 bc f1 73 0f
6c  .q.....q.n...s.l
        d0 bc f1 75 0f cb d1 29 e1 bc f1 79 0f 76 d0
bc  ...u...)...y.v..
        f1 85 0f 74 d0 bc f1 ad 0f c1 d1 12 e1 a8 78
10  ...t..........x.
        f0 60 0f 07 d1 e9 1c 38 46 fe f7 0b f8 60 f3
1f  .`.....8F....`..
        64 00 28 f2 d1 bd e8 f0 41 ff f7 c6 be e9 1c
38  d.(.....A......8
        46 fd f7 ff ff 28 78 40 1f c2 b2 eb 1d 03 e0
28  F....(x@.......(
        78 40 1e c2 b2 eb 1c a0 21 38 46 fe f7 b6 f9
ee  x@......!8F.....
        e0 e9 1c 38 46 fd f7 ed ff 28 78 40 1f c2 b2
eb  ...8F....(x@....
        1d 03 e0 28 78 40 1e c2 b2 eb 1c 00 21 ec e7
00  ...(x@......!...
        2e 6f d0 b7 70 ea 78 02 23 03 25 54 2a 26 d0
08  .o..p.x.#.%T*&..
        dc 3e 2a 35 d0 51 2a 15 d0 52 2a 08 d1 0a e0
c5  .>*5.Q*..R*.....
        e0 af e0 73 2a 36 d0 79 2a 3d d0 85 2a 42 d0
60  ...s*6.y*=..*B.`
        f3 1f 64 c8 e0 33 70 52 20 70 70 38 46 fd f7 89  ..d..3pR
pp8F...
        ff f0 70 c0 e0 05 20 30 70 51 20 70 70 f1 1c 38  ..p... 0pQ
pp..8
        46 fd f7 8a ff b7 e0 8d e0 62 e0 c4 e0 08 20 30  F........b....
0
        70 54 22 72 70 b0 70 f5 70 31
71                 pT"rp.p.p1q     
< HCI Command: Reset (0x03|0x0003) plen 0                 #301 [hci0]
63.278672
> HCI Event: Command Complete (0x0e) plen 4               #302 [hci0]
63.282869
      Reset (0x03|0x0003) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Local Version.. (0x04|0x0001) plen 0  #303 [hci0]
63.390748
> HCI Event: Command Complete (0x0e) plen 12              #304 [hci0]
63.393602
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 166 (0x00a6)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 16654 (0x410e)
        Manufacturer: Broadcom Corporation (15)
          Firmware: 002.001.014 (BCM43341B0)
          Build: 0166
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0          #305 [hci0]
63.639173
> HCI Event: Command Complete (0x0e) plen 10              #306 [hci0]
63.641588
      Read BD ADDR (0x04|0x0009) ncmd 1
        Status: Success (0x00)
        Address: 43:34:1B:00:1F:AC (OUI 43-34-1B)
< HCI Command: Broadcom Set Slee.. (0x3f|0x0027) plen 12  #307 [hci0]
63.641961
        Sleep mode: UART (0x01)
        02 02 01 01 01 01 00 00 00 00
00                 ...........     
> HCI Event: Command Complete (0x0e) plen 4               #308 [hci0]
63.645219
      Broadcom Set Sleepmode Param (0x3f|0x0027) ncmd 1
        Status: Success (0x00)
< HCI Command: Reset (0x03|0x0003) plen 0                 #309 [hci0]
63.645426
> HCI Event: Command Complete (0x0e) plen 4               #310 [hci0]
63.663325
      Reset (0x03|0x0003) ncmd 1
        Status: Success (0x00)


bluetoothctl interleaved with btmon showing the device advertised and
then the connection starting:


# bluetoothctl
[NEW] Controller 43:34:1B:00:1F:AC TestDevice [default]
Agent registered
[bluetooth]# advertise yes
[bluetooth]# @ Control Command:
0xffff                            {0x0002} [hci0] 111.701388
        3e 00 01 03 00 00 00 00 00 00 00 00
00           >............   
@ MGMT Event: Advertising Added (0x0023) plen 1      {0x0003} [hci0]
111.701423
        Instance: 1
@ MGMT Event: Advertising Added (0x0023) plen 1      {0x0001} [hci0]
111.701423
        Instance: 1
< HCI Command: LE Set Advertisi.. (0x08|0x0008) plen 32  #311 [hci0]
111.701986
        Length: 3
        Flags: 0x06
          LE General Discoverable Mode
          BR/EDR Not Supported
> HCI Event: Command Complete (0x0e) plen 4              #312 [hci0]
111.723457
      LE Set Advertising Data (0x08|0x0008) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Resp.. (0x08|0x0009) plen 32  #313 [hci0]
111.723629
        Length: 0
> HCI Event: Command Complete (0x0e) plen 4              #314 [hci0]
111.728550
      LE Set Scan Response Data (0x08|0x0009) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Advertisi.. (0x08|0x0006) plen 15  #315 [hci0]
111.728805
        Min advertising interval: 1280.000 msec (0x0800)
        Max advertising interval: 1280.000 msec (0x0800)
        Type: Connectable undirected - ADV_IND (0x00)
        Own address type: Public (0x00)
        Direct address type: Public (0x00)
        Direct address: 00:00:00:00:00:00 (OUI 00-00-00)
        Channel map: 37, 38, 39 (0x07)
        Filter policy: Allow Scan Request from Any, Allow Connect
Request from Any (0x00)
> HCI Event: Command Complete (0x0e) plen 4              #316 [hci0]
111.732270
      LE Set Advertising Parameters (0x08|0x0006) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Advertise... (0x08|0x000a) plen 1  #317 [hci0]
111.732431
        Advertising: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4              #318 [hci0]
111.734729
      LE Set Advertise Enable (0x08|0x000a) ncmd 1
        Status: Success (0x00)
@ Control Event: 0xffff                              {0x0002} [hci0]
111.734864
        01 00 3e 00 00 01                                ..>...    
[CHG] Controller 43:34:1B:00:1F:AC SupportedInstances: 0x04
[CHG] Controller 43:34:1B:00:1F:AC ActiveInstances: 0x01
Advertising object registered
[bluetooth]# [  363.168061] Bluetooth: hci0: Frame reassembly failed (-
84)
[  363.426183] Bluetooth: hci0: ACL packet for unknown connection
handle 64
> ACL Data RX: Handle 64 flags 0x02 dlen 11              #319 [hci0]
122.280157
      ATT: Read By Group Type Request (0x10) len 6
        Handle range: 0x0001-0xffff
        Attribute group type: Primary Service (0x2800)
> HCI Event: LE Meta Event (0x3e) plen 10                #320 [hci0]
122.648076
      LE Connection Update Complete (0x03)
        Status: Success (0x00)
        Handle: 64
        Connection interval: 7.50 msec (0x0006)
        Connection latency: 0 (0x0000)
        Supervision timeout: 5000 msec (0x01f4)
[  368.353615] Bluetooth: hci0: ACL packet for unknown connection
handle 64
> ACL Data RX: Handle 64 flags 0x02 dlen 11              #321 [hci0]
127.207585
      ATT: Read By Group Type Request (0x10) len 6
        Handle range: 0x0001-0xffff
        Attribute group type: Primary Service (0x2800)
[  373.371672] Bluetooth: hci0: Frame reassembly failed (-84)
[  373.377296] Bluetooth: hci0: Frame reassembly failed (-84)
> HCI Event: Disconnect Complete (0x05) plen 4           #322 [hci0]
137.242761
        Status: Success (0x00)
        Handle: 64



If I change nothing but using this script instead of the btattach I do
not notice any of these issues:

echo 71 > /sys/class/gpio/export || true
echo out > /sys/class/gpio/gpio71/direction
echo 184 > /sys/class/gpio/export || true
echo out > /sys/class/gpio/gpio184/direction

echo 0 > /sys/class/gpio/gpio71/value
echo 0 > /sys/class/gpio/gpio184/value
sleep 1
echo 1 > /sys/class/gpio/gpio71/value
echo 1 > /sys/class/gpio/gpio184/value


/usr/sbin/brcm-patchram-plus                    \
        --use_baudrate_for_download             \
        --no2bytes                              \
        --enable_lpm                            \
        --enable_hci                            \
        --baudrate 3000000                      \
        --patchram /lib/firmware/brcm/BCM43341B0.hcd   \
        --bd_addr "97:4F:EE:03:0F:E8"           \
        -d                                      \
        /dev/ttyS0


Let me know if there is further debugging I can provide on this.

Thanks,
Brennan
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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