This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

WL1837 WLAN Rx Coexistence Issue

Other Parts Discussed in Thread: WL1837, WL1837MOD

I am working on a custom board using a iMX6 processor and a WL1837 radio module. I appear to be experiencing a problem related to Bluetooth coexistence which is severely impacting WLAN traffic in the Rx direction. The Wifi TX path of the WL1837 is fine during my tests. I integrated the WL1837 module into my system using the documentation found in the getting started guide.

http://processors.wiki.ti.com/index.php/WL18xx_First_Time_Getting_Started_Guide_%28IMX6%29

I have searched the forums for similar problems, but have not found a solution. Today I tested R8.6 SP1 (http://processors.wiki.ti.com/index.php/WiLink8_Release_Notes/R8.6_SP1) and the problem did not go away. Here are the details of my setup.

Software Setup

  • Android 5.1.1 (BSP from NXP)
  • WL1837 R8.6 SP1 driver
  • MAC FW Rev 8.9.0.1.55
  • PHY FW Rev 8.2.0.0.233
  • Bluetooth Init Script FROM SP 3.9 (downloaded from www.ti.com/.../WL18XX-BT-SP)

Wireless Setup

  • 802.11g (CH 6) excellent signal strength, -49 dBm
  • WPA2-PSK AES
  • Bluetooth Headset Connected (HFP BTSCO Audio via WL1837 PCM interface. WL1837 is PCM Master)

My main application is video conferencing. However, I’ve been able to show this problem by running iperf on my board in server mode and pairing a headset. Here are the reproduction steps and test details.

  1. Turn Bluetooth Off
  2. Connect the device to a to a 2.4 Ghz Wifi network.
  3. On the device run iperf in server mode (iperf -s)
  4. Start an iperf throughput from PC. Data packets may be TCP or UDP.
  5. In my environment I am seeing throughput of ~10 Mbits/sec.
  6. Enable Bluetooth (optionally Pair a headset)
  7. Throughput drops to about 5Mbits/sec.
  8. After ~30-90 seconds the throughput drops to 0
  9. Turn Bluetooth off, after about ~30 seconds the throughput is 10Mbits/sec again.

Additional Information

  • The same issue is not observed if I connect the WL1837 to a 5 Ghz wifi network, so I am pretty sure this is a coexistence problem.
  • The same issue is not observed if I run iperf as a client on my device and my PC as the server. So it appears that WiFi Rx is getting starved.
  • Using the wlconf utility I tired to turn off the coexistence algorithm by changing the core.sg.state variable to 0. In this mode Wifi Rx does not cut out, Bluetooth SCO audio quality is severely impacted.
  • The same problem happens with a WL1837MOD eval module and a SabreSD board.

I need help from TI to resolve this issue. For example, is there a special calibration process that must be done to tune the SG Coexistence parameters? Any advice and suggestions are welcome.

Scott

  • Hi Scott,

    SCO and A2DP have higher priority over WLAN during CoEx scenario.
    You can refer to: www.ti.com/.../swru423 for the expected throughput numbers under single role and Co Ex.
    Please see sections "8.1 Single-Role" and "8.4.1 WLAN Single Role – Bluetooth Performance"

    You can also take a look at: processors.wiki.ti.com/.../WiLink8_-_TI_Coexistense_Tutorial_1.pdf - this is a tutorial on the CoEx architecture.

    A few questions:

    (1) Why 11g? 10 Mbps in single role is itself very low to begin with.
    (2) What's the configured SCO packet type?
    (3) Are there other devices in the neighbourhood?
    (4) Have you run the "configure-device.sh" script to generate the wl18xx-conf.bin file?

    Regards,
    Gigi Joseph.
  • Hi Gigi, thanks for getting back to me. Here are the answers to your questions.

    1) I wanted to test WLAN performance in the worst case. I tested 802.11n and I see the same issue.

    2) We are using Android 5.1.1 with Bluedroid. WBS is not being used. I added debug to the stack to try and determine which SCO packet was being used. The SCO connection is being created with a supported packet mask 0x38F.

           (BTM_SCO_PKT_TYPES_MASK_HV1      +  /* Packet Types                             */
            BTM_SCO_PKT_TYPES_MASK_HV2      +
            BTM_SCO_PKT_TYPES_MASK_HV3      +
            BTM_SCO_PKT_TYPES_MASK_EV3      +
            BTM_SCO_PKT_TYPES_MASK_EV4      +
            BTM_SCO_PKT_TYPES_MASK_EV5      +
            BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
            BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)

    3) Yes, there are many devices in the area.

    4) Yes


    Have you tested the coexistence support with Android and the Bluedroid stack? I'm wondering if it would be worth while spending some time trying to get the BlueZ stack running on my device.

    As I mentioned there are lots of devices in my area, so today I tested in a faraday cage. Here is a summary of the throughput results. I believe these show that there is an issue with the coexistence algorithm. I'm curious if others see the same issue with a similar setup?

    Summary: 802.11n, Channel 6, Open Network, Bluetooth Off, DLINK Router, Iperf output follows

    Accepted connection from 192.168.1.202, port 49780

    [  5] local 192.168.1.209 port 5201 connected to 192.168.1.202 port 49781

    [ ID] Interval           Transfer     Bandwidth

    [  5]   0.00-1.00   sec  5.63 MBytes  47.2 Mbits/sec

    [  5]   1.00-2.00   sec  6.19 MBytes  51.9 Mbits/sec

    [  5]   2.00-3.00   sec  5.98 MBytes  50.1 Mbits/sec

    [  5]   3.00-4.00   sec  6.25 MBytes  52.4 Mbits/sec

    [  5]   4.00-5.00   sec  6.32 MBytes  53.0 Mbits/sec

    [  5]   5.00-6.00   sec  6.22 MBytes  52.2 Mbits/sec

    [  5]   6.00-7.00   sec  6.14 MBytes  51.5 Mbits/sec

    [  5]   7.00-8.00   sec  6.22 MBytes  52.2 Mbits/sec

    [  5]   8.00-9.00   sec  6.21 MBytes  52.1 Mbits/sec

    [  5]   9.00-10.00  sec  6.06 MBytes  50.8 Mbits/sec

    [  5]  10.00-10.03  sec   162 KBytes  51.5 Mbits/sec

    - - - - - - - - - - - - - - - - - - - - - - - - -

    [ ID] Interval           Transfer     Bandwidth

    [  5]   0.00-10.03  sec  61.4 MBytes  51.4 Mbits/sec                  sender

    [  5]   0.00-10.03  sec  61.4 MBytes  51.4 Mbits/sec                  receiver

    -----------------------------------------------------------

    These results are excellent! Now the same test with Bluetooth On and a Headset connected with SCO audio being played to the headset.

    Accepted connection from 192.168.1.202, port 49788

    [  5] local 192.168.1.209 port 5201 connected to 192.168.1.202 port 49789

    [ ID] Interval           Transfer     Bandwidth

    [  5]   0.00-1.00   sec  1.12 MBytes  9.41 Mbits/sec

    [  5]   1.00-2.00   sec  1.11 MBytes  9.32 Mbits/sec

    [  5]   2.00-3.00   sec   476 KBytes  3.90 Mbits/sec

    [  5]   3.00-4.00   sec   843 KBytes  6.92 Mbits/sec

    [  5]   4.00-5.00   sec   920 KBytes  7.54 Mbits/sec

    [  5]   5.00-6.00   sec   869 KBytes  7.12 Mbits/sec

    [  5]   6.00-7.00   sec   861 KBytes  7.05 Mbits/sec

    [  5]   7.00-8.00   sec   667 KBytes  5.46 Mbits/sec

    [  5]   8.00-9.00   sec   943 KBytes  7.73 Mbits/sec

    [  5]   9.00-10.00  sec  1004 KBytes  8.22 Mbits/sec

    [  5]  10.00-11.00  sec   325 KBytes  2.66 Mbits/sec

    [  5]  11.00-12.00  sec   397 KBytes  3.25 Mbits/sec

    [  5]  12.00-13.00  sec   770 KBytes  6.31 Mbits/sec

    [  5]  13.00-14.00  sec   706 KBytes  5.78 Mbits/sec

    [  5]  14.00-15.00  sec  1.01 MBytes  8.50 Mbits/sec

    [  5]  15.00-16.00  sec   816 KBytes  6.68 Mbits/sec

    [  5]  16.00-17.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  5]  17.00-18.00  sec  1.09 MBytes  9.17 Mbits/sec

    [  5]  18.00-19.00  sec   352 KBytes  2.89 Mbits/sec

    [  5]  19.00-20.00  sec  29.9 KBytes   245 Kbits/sec

    [  5]  20.00-21.00  sec  1.43 KBytes  11.7 Kbits/sec

    [  5]  21.00-22.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  22.00-23.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  23.00-24.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  24.00-25.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  25.00-26.00  sec  5.70 KBytes  46.8 Kbits/sec

    [  5]  26.00-27.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  27.00-28.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  28.00-29.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  29.00-30.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  30.00-31.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  31.00-32.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  32.00-33.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  33.00-34.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  34.00-35.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  35.00-36.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  36.00-37.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  37.00-38.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  38.00-39.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  39.00-40.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  40.00-41.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  41.00-42.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  42.00-43.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  43.00-44.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  44.00-45.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  45.00-46.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  46.00-47.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  47.00-48.00  sec  0.00 Bytes  0.00 bits/sec

    [  5]  48.00-49.00  sec  0.00 Bytes  0.00 bits/sec

    iperf3: the client has unexpectedly closed the connection

    -----------------------------------------------------------

    Server listening on 5201

    -----------------------------------------------------------

    Accepted connection from 192.168.1.202, port 49790

    [  6] local 192.168.1.209 port 5201 connected to 192.168.1.202 port 49791

    [ ID] Interval           Transfer     Bandwidth

    [  6]   0.00-1.00   sec  1.01 MBytes  8.50 Mbits/sec

    [  6]   1.00-2.00   sec  1.31 MBytes  11.0 Mbits/sec

    [  6]   2.00-3.00   sec  1.10 MBytes  9.24 Mbits/sec

    [  6]   3.00-4.00   sec  1.12 MBytes  9.40 Mbits/sec

    [  6]   4.00-5.00   sec  1.18 MBytes  9.89 Mbits/sec

    [  6]   5.00-6.00   sec  1.21 MBytes  10.1 Mbits/sec

    [  6]   6.00-7.00   sec  1.20 MBytes  10.0 Mbits/sec

    [  6]   7.00-8.00   sec  1.17 MBytes  9.79 Mbits/sec

    [  6]   8.00-9.00   sec  1.12 MBytes  9.38 Mbits/sec

    [  6]   9.00-10.00  sec   788 KBytes  6.46 Mbits/sec

    [  6]  10.00-11.00  sec  1.13 MBytes  9.45 Mbits/sec

    [  6]  11.00-12.00  sec   933 KBytes  7.65 Mbits/sec

    [  6]  12.00-13.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  6]  13.00-14.00  sec  1.22 MBytes  10.2 Mbits/sec

    [  6]  14.00-15.00  sec   615 KBytes  5.04 Mbits/sec

    [  6]  15.00-16.00  sec  1.14 MBytes  9.56 Mbits/sec

    [  6]  16.00-17.00  sec  1.18 MBytes  9.90 Mbits/sec

    [  6]  17.00-18.00  sec  1.29 MBytes  10.9 Mbits/sec

    [  6]  18.00-19.00  sec   413 KBytes  3.39 Mbits/sec

    [  6]  19.00-20.00  sec   783 KBytes  6.41 Mbits/sec

    [  6]  20.00-21.00  sec  1012 KBytes  8.29 Mbits/sec

    [  6]  21.00-22.00  sec  1.02 MBytes  8.52 Mbits/sec

    [  6]  22.00-23.00  sec   758 KBytes  6.21 Mbits/sec

    [  6]  23.00-24.00  sec   952 KBytes  7.79 Mbits/sec

    [  6]  24.00-25.00  sec  1.05 MBytes  8.80 Mbits/sec

    [  6]  25.00-26.00  sec  1.10 MBytes  9.25 Mbits/sec

    [  6]  26.00-27.00  sec  1.16 MBytes  9.77 Mbits/sec

    [  6]  27.00-28.00  sec  1.22 MBytes  10.3 Mbits/sec

    [  6]  28.00-29.00  sec  1.01 MBytes  8.43 Mbits/sec

    [  6]  29.00-30.00  sec   729 KBytes  5.98 Mbits/sec

    [  6]  30.00-31.00  sec  1.21 MBytes  10.1 Mbits/sec

    [  6]  31.00-32.00  sec   739 KBytes  6.05 Mbits/sec

    [  6]  32.00-33.00  sec   937 KBytes  7.67 Mbits/sec

    [  6]  33.00-34.00  sec   944 KBytes  7.74 Mbits/sec

    [  6]  34.00-35.00  sec  1.20 MBytes  10.0 Mbits/sec

    [  6]  35.00-36.00  sec  1.15 MBytes  9.68 Mbits/sec

    [  6]  36.00-37.00  sec  1020 KBytes  8.36 Mbits/sec

    [  6]  37.00-38.00  sec   274 KBytes  2.25 Mbits/sec

    [  6]  38.00-39.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  39.00-40.00  sec  79.8 KBytes   654 Kbits/sec

    [  6]  40.00-41.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  41.00-42.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  42.00-43.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  43.00-44.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  44.00-45.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  45.00-46.00  sec  57.0 KBytes   468 Kbits/sec

    [  6]  46.00-47.00  sec   792 KBytes  6.49 Mbits/sec

    [  6]  47.00-48.00  sec  1.15 MBytes  9.64 Mbits/sec

    [  6]  48.00-49.00  sec   861 KBytes  7.06 Mbits/sec

    [  6]  49.00-50.00  sec   771 KBytes  6.32 Mbits/sec

    [  6]  50.00-51.00  sec  1011 KBytes  8.28 Mbits/sec

    [  6]  51.00-52.00  sec   518 KBytes  4.24 Mbits/sec

    [  6]  52.00-53.00  sec   757 KBytes  6.20 Mbits/sec

    [  6]  53.00-54.00  sec   973 KBytes  7.97 Mbits/sec

    [  6]  54.00-55.00  sec  1.25 MBytes  10.5 Mbits/sec

    [  6]  55.00-56.00  sec   859 KBytes  7.04 Mbits/sec

    [  6]  56.00-57.00  sec   781 KBytes  6.40 Mbits/sec

    [  6]  57.00-58.00  sec   786 KBytes  6.44 Mbits/sec

    [  6]  58.00-59.00  sec   996 KBytes  8.16 Mbits/sec

    [  6]  59.00-60.00  sec   833 KBytes  6.82 Mbits/sec

    [  6]  60.00-61.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  6]  61.00-62.00  sec  1.04 MBytes  8.72 Mbits/sec

    [  6]  62.00-63.00  sec   915 KBytes  7.49 Mbits/sec

    [  6]  63.00-64.00  sec  1.18 MBytes  9.93 Mbits/sec

    [  6]  64.00-65.00  sec   707 KBytes  5.79 Mbits/sec

    [  6]  65.00-66.00  sec   293 KBytes  2.40 Mbits/sec

    [  6]  66.00-67.00  sec   431 KBytes  3.53 Mbits/sec

    [  6]  67.00-68.00  sec  1.07 MBytes  8.99 Mbits/sec

    [  6]  68.00-69.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  6]  69.00-70.00  sec  1.19 MBytes  10.0 Mbits/sec

    [  6]  70.00-71.00  sec  1.28 MBytes  10.7 Mbits/sec

    [  6]  71.00-72.00  sec   497 KBytes  4.07 Mbits/sec

    [  6]  72.00-73.00  sec   604 KBytes  4.95 Mbits/sec

    [  6]  73.00-74.00  sec   721 KBytes  5.90 Mbits/sec

    [  6]  74.00-75.00  sec   628 KBytes  5.15 Mbits/sec

    [  6]  75.00-76.00  sec   499 KBytes  4.09 Mbits/sec

    [  6]  76.00-77.00  sec   578 KBytes  4.74 Mbits/sec

    [  6]  77.00-78.00  sec   907 KBytes  7.43 Mbits/sec

    [  6]  78.00-79.00  sec  1.21 MBytes  10.2 Mbits/sec

    [  6]  79.00-80.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  6]  80.00-81.00  sec  1.17 MBytes  9.81 Mbits/sec

    [  6]  81.00-82.00  sec   891 KBytes  7.30 Mbits/sec

    [  6]  82.00-83.00  sec   215 KBytes  1.76 Mbits/sec

    [  6]  83.00-84.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  84.00-85.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  85.00-86.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  86.00-87.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  87.00-88.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  88.00-89.00  sec   802 KBytes  6.58 Mbits/sec

    [  6]  89.00-90.00  sec   839 KBytes  6.87 Mbits/sec

    [  6]  90.00-91.00  sec  1019 KBytes  8.35 Mbits/sec

    [  6]  91.00-92.00  sec   701 KBytes  5.74 Mbits/sec

    [  6]  92.00-93.00  sec  1.20 MBytes  10.1 Mbits/sec

    [  6]  93.00-94.00  sec   708 KBytes  5.80 Mbits/sec

    [  6]  94.00-95.00  sec   165 KBytes  1.35 Mbits/sec

    [  6]  95.00-96.00  sec  76.8 KBytes   629 Kbits/sec

    [  6]  96.00-97.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  97.00-98.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  98.00-99.00  sec  0.00 Bytes  0.00 bits/sec

    [  6]  99.00-100.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 100.00-101.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 101.00-102.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 102.00-103.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 103.00-104.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 104.00-105.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 105.00-106.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 106.00-107.00 sec  12.8 KBytes   105 Kbits/sec

    [  6] 107.00-108.00 sec   325 KBytes  2.66 Mbits/sec

    [  6] 108.00-109.00 sec   575 KBytes  4.71 Mbits/sec

    [  6] 109.00-110.00 sec  1.24 MBytes  10.4 Mbits/sec

    [  6] 110.00-111.00 sec  1.21 MBytes  10.1 Mbits/sec

    [  6] 111.00-112.00 sec  1.14 MBytes  9.52 Mbits/sec

    [  6] 112.00-113.00 sec   341 KBytes  2.79 Mbits/sec

    [  6] 113.00-114.00 sec   621 KBytes  5.09 Mbits/sec

    [  6] 114.00-115.00 sec  1.17 MBytes  9.83 Mbits/sec

    [  6] 115.00-116.00 sec  1.16 MBytes  9.69 Mbits/sec

    [  6] 116.00-117.00 sec   354 KBytes  2.90 Mbits/sec

    [  6] 117.00-118.00 sec   634 KBytes  5.20 Mbits/sec

    [  6] 118.00-119.00 sec  1.06 MBytes  8.90 Mbits/sec

    [  6] 119.00-120.00 sec  1.19 MBytes  9.95 Mbits/sec

    [  6] 120.00-121.00 sec  1.24 MBytes  10.4 Mbits/sec

    [  6] 121.00-122.00 sec  1.17 MBytes  9.81 Mbits/sec

    [  6] 122.00-123.00 sec  1.14 MBytes  9.54 Mbits/sec

    [  6] 123.00-124.00 sec  1.12 MBytes  9.46 Mbits/sec

    [  6] 124.00-125.00 sec   345 KBytes  2.83 Mbits/sec

    [  6] 125.00-126.00 sec   148 KBytes  1.21 Mbits/sec

    [  6] 126.00-127.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 127.00-128.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 128.00-129.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 129.00-130.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 130.00-131.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 131.00-132.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 132.00-133.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 133.00-134.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 134.00-135.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 135.00-136.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 136.00-137.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 137.00-138.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 138.00-139.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 139.00-140.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 140.00-141.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 141.00-142.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 142.00-143.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 143.00-144.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 144.00-145.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 145.00-146.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 146.00-147.00 sec  0.00 Bytes  0.00 bits/sec

    [  6] 147.00-148.00 sec  0.00 Bytes  0.00 bits/sec

    iperf3: the client has unexpectedly closed the connection

     

    As you can see the Rx throughput goes to 0 for a long time, sometimes it never recovers until Bluetooth is turned off. If I turn Bluetooth off the throughput goes back to ~50 Mbits/sec after 30 seconds or so. What's interesting to me is that I don't see the same issue with WLAN Tx.

  • Wireless Traces.zip

    These are the wireless traces from yesterdays tests. Perhaps they will provide further insight into this issue.

  • I tried experimenting with the coexistence SG parameters by updating the wl18xx-conf.bin file. Nothing I changed seemed to have any effect on this issue. It seems to me that the WLAN Rx service period is interrupted very often when a bluetooth headset is paired, which makes Wifi un-usable. Are there any specific combination of parameters you could recommend to boost the WLAN receive priority?

    I found something interesting today - some of the access points I tested seem to behave better during my testing. A LAP connected to a Cisco WLC and a NETGEAR WNDAP330 seemed better. Although better, I am still seeing up to 50% packet loss when trying to receive a 2Mbit UDP stream. My main use case for the WL1837 is to stream video while simultaneously using a bluetooth headset (with the handsfree profile). The SCO audio will also be sent/received over the WLAN. The secondary use case would be to receive video over the WLAN while using a bluetooth headset. When WLAN is connected in the 2.4 Ghz band there are too many dropped packets to successfully achieve the above use cases. In addition to the this there are a lot of pops in the SCO audio, which I believe is also due interference.

    Do you have any ideas regarding what type of integration issues could cause the coexistence to break? I have changed the i2s frequency in the latest BTS script from 16Khz to 8Khz, all other parameters should be unchanged. Would it be possible to try this on Android and see if it is working? (It seems easy to reproduce).

    Below is a dump of my wl18xx-conf.bin file. I've been trying to get wlan firmware dumps with wl_logproxy and glogger to no avail.

    header.magic = 0x10e100ca
    header.version = 0x00070007
    header.checksum = 0x00000000
    core.sg.params = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x0000001b, 0x00000011, 0x000000aa, 0x00000032, 0x00000064, 0x00000320, 0x000000c8, 0x000000c8, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0000003c, 0x00001388, 0x000004b0, 0x000003e8, 0x00000001, 0x00000003, 0x00000006, 0x0000000a, 0x0000000a, 0x00000002, 0x00000005, 0x0000001e, 0x00000003, 0x0000000a, 0x00000002, 0x00000000, 0x00000019, 0x00000019, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
    core.sg.state = 0x01
    core.rx.rx_msdu_life_time = 0x0007d000
    core.rx.packet_detection_threshold = 0x00000000
    core.rx.ps_poll_timeout = 0x000f
    core.rx.upsd_timeout = 0x000f
    core.rx.rts_threshold = 0x0931
    core.rx.rx_cca_threshold = 0x0000
    core.rx.irq_blk_threshold = 0xffff
    core.rx.irq_pkt_threshold = 0x0000
    core.rx.irq_timeout = 0x0258
    core.rx.queue_type = 0x00
    core.tx.tx_energy_detection = 0x00
    core.tx.sta_rc_conf.enabled_rates = 0x00000000
    core.tx.sta_rc_conf.short_retry_limit = 0x0a
    core.tx.sta_rc_conf.long_retry_limit = 0x0a
    core.tx.sta_rc_conf.aflags = 0x00
    core.tx.ac_conf_count = 0x04
    core.tx.ac_conf0.ac = 0x00
    core.tx.ac_conf0.cw_min = 0x0f
    core.tx.ac_conf0.cw_max = 0x003f
    core.tx.ac_conf0.aifsn = 0x03
    core.tx.ac_conf0.tx_op_limit = 0x0000
    core.tx.ac_conf1.ac = 0x01
    core.tx.ac_conf1.cw_min = 0x0f
    core.tx.ac_conf1.cw_max = 0x003f
    core.tx.ac_conf1.aifsn = 0x07
    core.tx.ac_conf1.tx_op_limit = 0x0000
    core.tx.ac_conf2.ac = 0x02
    core.tx.ac_conf2.cw_min = 0x0f
    core.tx.ac_conf2.cw_max = 0x003f
    core.tx.ac_conf2.aifsn = 0x01
    core.tx.ac_conf2.tx_op_limit = 0x0bc0
    core.tx.ac_conf3.ac = 0x03
    core.tx.ac_conf3.cw_min = 0x0f
    core.tx.ac_conf3.cw_max = 0x003f
    core.tx.ac_conf3.aifsn = 0x01
    core.tx.ac_conf3.tx_op_limit = 0x05e0
    core.tx.max_tx_retries = 0x64
    core.tx.ap_aging_period = 0x012c
    core.tx.tid_conf_count = 0x04
    core.tx.tid_conf0.queue_id = 0x00
    core.tx.tid_conf0.channel_type = 0x01
    core.tx.tid_conf0.tsid = 0x00
    core.tx.tid_conf0.ps_scheme = 0x00
    core.tx.tid_conf0.ack_policy = 0x00
    core.tx.tid_conf0.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf1.queue_id = 0x01
    core.tx.tid_conf1.channel_type = 0x01
    core.tx.tid_conf1.tsid = 0x01
    core.tx.tid_conf1.ps_scheme = 0x00
    core.tx.tid_conf1.ack_policy = 0x00
    core.tx.tid_conf1.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf2.queue_id = 0x02
    core.tx.tid_conf2.channel_type = 0x01
    core.tx.tid_conf2.tsid = 0x02
    core.tx.tid_conf2.ps_scheme = 0x00
    core.tx.tid_conf2.ack_policy = 0x00
    core.tx.tid_conf2.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf3.queue_id = 0x03
    core.tx.tid_conf3.channel_type = 0x01
    core.tx.tid_conf3.tsid = 0x03
    core.tx.tid_conf3.ps_scheme = 0x00
    core.tx.tid_conf3.ack_policy = 0x00
    core.tx.tid_conf3.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf4.queue_id = 0x00
    core.tx.tid_conf4.channel_type = 0x00
    core.tx.tid_conf4.tsid = 0x00
    core.tx.tid_conf4.ps_scheme = 0x00
    core.tx.tid_conf4.ack_policy = 0x00
    core.tx.tid_conf4.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf5.queue_id = 0x00
    core.tx.tid_conf5.channel_type = 0x00
    core.tx.tid_conf5.tsid = 0x00
    core.tx.tid_conf5.ps_scheme = 0x00
    core.tx.tid_conf5.ack_policy = 0x00
    core.tx.tid_conf5.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf6.queue_id = 0x00
    core.tx.tid_conf6.channel_type = 0x00
    core.tx.tid_conf6.tsid = 0x00
    core.tx.tid_conf6.ps_scheme = 0x00
    core.tx.tid_conf6.ack_policy = 0x00
    core.tx.tid_conf6.apsd_conf = 0x00000000, 0x00000000
    core.tx.tid_conf7.queue_id = 0x00
    core.tx.tid_conf7.channel_type = 0x00
    core.tx.tid_conf7.tsid = 0x00
    core.tx.tid_conf7.ps_scheme = 0x00
    core.tx.tid_conf7.ack_policy = 0x00
    core.tx.tid_conf7.apsd_conf = 0x00000000, 0x00000000
    core.tx.frag_threshold = 0x0930
    core.tx.tx_compl_timeout = 0x015e
    core.tx.tx_compl_threshold = 0x000a
    core.tx.basic_rate = 0x00000001
    core.tx.basic_rate_5 = 0x00000008
    core.tx.tmpl_short_retry_limit = 0x0a
    core.tx.tmpl_long_retry_limit = 0x0a
    core.tx.tx_watchdog_timeout = 0x00001388
    core.tx.slow_link_thold = 0x03
    core.tx.fast_link_thold = 0x1e
    core.conn.wake_up_event = 0x02
    core.conn.listen_interval = 0x01
    core.conn.suspend_wake_up_event = 0x04
    core.conn.suspend_listen_interval = 0x03
    core.conn.bcn_filt_mode = 0x01
    core.conn.bcn_filt_ie_count = 0x03
    core.conn.bcn_filt_ie0.ie = 0x25
    core.conn.bcn_filt_ie0.rule = 0x02
    core.conn.bcn_filt_ie0.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie0.type = 0x00
    core.conn.bcn_filt_ie0.version = 0x00, 0x00
    core.conn.bcn_filt_ie1.ie = 0x3d
    core.conn.bcn_filt_ie1.rule = 0x01
    core.conn.bcn_filt_ie1.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie1.type = 0x00
    core.conn.bcn_filt_ie1.version = 0x00, 0x00
    core.conn.bcn_filt_ie2.ie = 0x2a
    core.conn.bcn_filt_ie2.rule = 0x01
    core.conn.bcn_filt_ie2.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie2.type = 0x00
    core.conn.bcn_filt_ie2.version = 0x00, 0x00
    core.conn.bcn_filt_ie3.ie = 0x00
    core.conn.bcn_filt_ie3.rule = 0x00
    core.conn.bcn_filt_ie3.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie3.type = 0x00
    core.conn.bcn_filt_ie3.version = 0x00, 0x00
    core.conn.bcn_filt_ie4.ie = 0x00
    core.conn.bcn_filt_ie4.rule = 0x00
    core.conn.bcn_filt_ie4.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie4.type = 0x00
    core.conn.bcn_filt_ie4.version = 0x00, 0x00
    core.conn.bcn_filt_ie5.ie = 0x00
    core.conn.bcn_filt_ie5.rule = 0x00
    core.conn.bcn_filt_ie5.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie5.type = 0x00
    core.conn.bcn_filt_ie5.version = 0x00, 0x00
    core.conn.bcn_filt_ie6.ie = 0x00
    core.conn.bcn_filt_ie6.rule = 0x00
    core.conn.bcn_filt_ie6.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie6.type = 0x00
    core.conn.bcn_filt_ie6.version = 0x00, 0x00
    core.conn.bcn_filt_ie7.ie = 0x00
    core.conn.bcn_filt_ie7.rule = 0x00
    core.conn.bcn_filt_ie7.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie7.type = 0x00
    core.conn.bcn_filt_ie7.version = 0x00, 0x00
    core.conn.bcn_filt_ie8.ie = 0x00
    core.conn.bcn_filt_ie8.rule = 0x00
    core.conn.bcn_filt_ie8.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie8.type = 0x00
    core.conn.bcn_filt_ie8.version = 0x00, 0x00
    core.conn.bcn_filt_ie9.ie = 0x00
    core.conn.bcn_filt_ie9.rule = 0x00
    core.conn.bcn_filt_ie9.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie9.type = 0x00
    core.conn.bcn_filt_ie9.version = 0x00, 0x00
    core.conn.bcn_filt_ie10.ie = 0x00
    core.conn.bcn_filt_ie10.rule = 0x00
    core.conn.bcn_filt_ie10.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie10.type = 0x00
    core.conn.bcn_filt_ie10.version = 0x00, 0x00
    core.conn.bcn_filt_ie11.ie = 0x00
    core.conn.bcn_filt_ie11.rule = 0x00
    core.conn.bcn_filt_ie11.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie11.type = 0x00
    core.conn.bcn_filt_ie11.version = 0x00, 0x00
    core.conn.bcn_filt_ie12.ie = 0x00
    core.conn.bcn_filt_ie12.rule = 0x00
    core.conn.bcn_filt_ie12.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie12.type = 0x00
    core.conn.bcn_filt_ie12.version = 0x00, 0x00
    core.conn.bcn_filt_ie13.ie = 0x00
    core.conn.bcn_filt_ie13.rule = 0x00
    core.conn.bcn_filt_ie13.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie13.type = 0x00
    core.conn.bcn_filt_ie13.version = 0x00, 0x00
    core.conn.bcn_filt_ie14.ie = 0x00
    core.conn.bcn_filt_ie14.rule = 0x00
    core.conn.bcn_filt_ie14.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie14.type = 0x00
    core.conn.bcn_filt_ie14.version = 0x00, 0x00
    core.conn.bcn_filt_ie15.ie = 0x00
    core.conn.bcn_filt_ie15.rule = 0x00
    core.conn.bcn_filt_ie15.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie15.type = 0x00
    core.conn.bcn_filt_ie15.version = 0x00, 0x00
    core.conn.bcn_filt_ie16.ie = 0x00
    core.conn.bcn_filt_ie16.rule = 0x00
    core.conn.bcn_filt_ie16.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie16.type = 0x00
    core.conn.bcn_filt_ie16.version = 0x00, 0x00
    core.conn.bcn_filt_ie17.ie = 0x00
    core.conn.bcn_filt_ie17.rule = 0x00
    core.conn.bcn_filt_ie17.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie17.type = 0x00
    core.conn.bcn_filt_ie17.version = 0x00, 0x00
    core.conn.bcn_filt_ie18.ie = 0x00
    core.conn.bcn_filt_ie18.rule = 0x00
    core.conn.bcn_filt_ie18.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie18.type = 0x00
    core.conn.bcn_filt_ie18.version = 0x00, 0x00
    core.conn.bcn_filt_ie19.ie = 0x00
    core.conn.bcn_filt_ie19.rule = 0x00
    core.conn.bcn_filt_ie19.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie19.type = 0x00
    core.conn.bcn_filt_ie19.version = 0x00, 0x00
    core.conn.bcn_filt_ie20.ie = 0x00
    core.conn.bcn_filt_ie20.rule = 0x00
    core.conn.bcn_filt_ie20.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie20.type = 0x00
    core.conn.bcn_filt_ie20.version = 0x00, 0x00
    core.conn.bcn_filt_ie21.ie = 0x00
    core.conn.bcn_filt_ie21.rule = 0x00
    core.conn.bcn_filt_ie21.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie21.type = 0x00
    core.conn.bcn_filt_ie21.version = 0x00, 0x00
    core.conn.bcn_filt_ie22.ie = 0x00
    core.conn.bcn_filt_ie22.rule = 0x00
    core.conn.bcn_filt_ie22.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie22.type = 0x00
    core.conn.bcn_filt_ie22.version = 0x00, 0x00
    core.conn.bcn_filt_ie23.ie = 0x00
    core.conn.bcn_filt_ie23.rule = 0x00
    core.conn.bcn_filt_ie23.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie23.type = 0x00
    core.conn.bcn_filt_ie23.version = 0x00, 0x00
    core.conn.bcn_filt_ie24.ie = 0x00
    core.conn.bcn_filt_ie24.rule = 0x00
    core.conn.bcn_filt_ie24.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie24.type = 0x00
    core.conn.bcn_filt_ie24.version = 0x00, 0x00
    core.conn.bcn_filt_ie25.ie = 0x00
    core.conn.bcn_filt_ie25.rule = 0x00
    core.conn.bcn_filt_ie25.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie25.type = 0x00
    core.conn.bcn_filt_ie25.version = 0x00, 0x00
    core.conn.bcn_filt_ie26.ie = 0x00
    core.conn.bcn_filt_ie26.rule = 0x00
    core.conn.bcn_filt_ie26.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie26.type = 0x00
    core.conn.bcn_filt_ie26.version = 0x00, 0x00
    core.conn.bcn_filt_ie27.ie = 0x00
    core.conn.bcn_filt_ie27.rule = 0x00
    core.conn.bcn_filt_ie27.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie27.type = 0x00
    core.conn.bcn_filt_ie27.version = 0x00, 0x00
    core.conn.bcn_filt_ie28.ie = 0x00
    core.conn.bcn_filt_ie28.rule = 0x00
    core.conn.bcn_filt_ie28.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie28.type = 0x00
    core.conn.bcn_filt_ie28.version = 0x00, 0x00
    core.conn.bcn_filt_ie29.ie = 0x00
    core.conn.bcn_filt_ie29.rule = 0x00
    core.conn.bcn_filt_ie29.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie29.type = 0x00
    core.conn.bcn_filt_ie29.version = 0x00, 0x00
    core.conn.bcn_filt_ie30.ie = 0x00
    core.conn.bcn_filt_ie30.rule = 0x00
    core.conn.bcn_filt_ie30.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie30.type = 0x00
    core.conn.bcn_filt_ie30.version = 0x00, 0x00
    core.conn.bcn_filt_ie31.ie = 0x00
    core.conn.bcn_filt_ie31.rule = 0x00
    core.conn.bcn_filt_ie31.oui = 0x00, 0x00, 0x00
    core.conn.bcn_filt_ie31.type = 0x00
    core.conn.bcn_filt_ie31.version = 0x00, 0x00
    core.conn.synch_fail_thold = 0x0000000c
    core.conn.bss_lose_timeout = 0x00000190
    core.conn.beacon_rx_timeout = 0x00002710
    core.conn.broadcast_timeout = 0x00004e20
    core.conn.rx_broadcast_in_ps = 0x01
    core.conn.ps_poll_threshold = 0x0a
    core.conn.sig_weights.rssi_bcn_avg_weight = 0x00
    core.conn.sig_weights.rssi_pkt_avg_weight = 0x00
    core.conn.sig_weights.snr_bcn_avg_weight = 0x00
    core.conn.sig_weights.snr_pkt_avg_weight = 0x00
    core.conn.bet_enable = 0x01
    core.conn.bet_max_consecutive = 0x32
    core.conn.psm_entry_retries = 0x08
    core.conn.psm_exit_retries = 0x10
    core.conn.psm_entry_nullfunc_retries = 0x03
    core.conn.dynamic_ps_timeout = 0x0096
    core.conn.forced_ps = 0x00
    core.conn.keep_alive_interval = 0x0000d6d8
    core.conn.max_listen_interval = 0x14
    core.conn.sta_sleep_auth = 0xff
    core.conn.suspend_rx_ba_activity = 0x00
    core.itrim.enable = 0x00
    core.itrim.timeout = 0x0000c350
    core.pm_config.host_clk_settling_time = 0x00001388
    core.pm_config.host_fast_wakeup_support = 0x01
    core.roam_trigger.trigger_pacing = 0x0001
    core.roam_trigger.avg_weight_rssi_beacon = 0x14
    core.roam_trigger.avg_weight_rssi_data = 0x0a
    core.roam_trigger.avg_weight_snr_beacon = 0x14
    core.roam_trigger.avg_weight_snr_data = 0x0a
    core.scan.min_dwell_time_active = 0x00001d4c
    core.scan.max_dwell_time_active = 0x00007530
    core.scan.min_dwell_time_active_long = 0x000061a8
    core.scan.max_dwell_time_active_long = 0x0000c350
    core.scan.dwell_time_passive = 0x000186a0
    core.scan.dwell_time_dfs = 0x000249f0
    core.scan.num_probe_reqs = 0x0002
    core.scan.split_scan_timeout = 0x0000c350
    core.sched_scan.base_dwell_time = 0x00001d4c
    core.sched_scan.max_dwell_time_delta = 0x000057e4
    core.sched_scan.dwell_time_delta_per_probe = 0x000007d0
    core.sched_scan.dwell_time_delta_per_probe_5 = 0x0000015e
    core.sched_scan.dwell_time_passive = 0x000186a0
    core.sched_scan.dwell_time_dfs = 0x000249f0
    core.sched_scan.num_probe_reqs = 0x02
    core.sched_scan.rssi_threshold = 0xa6
    core.sched_scan.snr_threshold = 0x00
    core.sched_scan.num_short_intervals = 0x0d
    core.sched_scan.long_interval = 0x7530
    core.ht.rx_ba_win_size = 0x20
    core.ht.tx_ba_win_size = 0x40
    core.ht.inactivity_timeout = 0x2710
    core.ht.tx_ba_tid_bitmap = 0x3f
    core.mem.num_stations = 0x01
    core.mem.ssid_profiles = 0x01
    core.mem.rx_block_num = 0x28
    core.mem.tx_min_block_num = 0x28
    core.mem.dynamic_memory = 0x01
    core.mem.min_req_tx_blocks = 0x2d
    core.mem.min_req_rx_blocks = 0x16
    core.mem.tx_min = 0x1b
    core.fm_coex.enable = 0x01
    core.fm_coex.swallow_period = 0x05
    core.fm_coex.n_divider_fref_set_1 = 0xff
    core.fm_coex.n_divider_fref_set_2 = 0x0c
    core.fm_coex.m_divider_fref_set_1 = 0xffff
    core.fm_coex.m_divider_fref_set_2 = 0x0094
    core.fm_coex.coex_pll_stabilization_time = 0xffffffff
    core.fm_coex.ldo_stabilization_time = 0xffff
    core.fm_coex.fm_disturbed_band_margin = 0xff
    core.fm_coex.swallow_clk_diff = 0xff
    core.rx_streaming.duration = 0x00000096
    core.rx_streaming.queues = 0x01
    core.rx_streaming.interval = 0x14
    core.rx_streaming.always = 0x00
    core.fwlog.mode = 0x00
    core.fwlog.mem_blocks = 0x02
    core.fwlog.severity = 0x00
    core.fwlog.timestamp = 0x00
    core.fwlog.output = 0x01
    core.fwlog.threshold = 0x00
    core.rate.rate_retry_score = 0x7d00
    core.rate.per_add = 0x2000
    core.rate.per_th1 = 0x0800
    core.rate.per_th2 = 0x1000
    core.rate.max_per = 0x1fa4
    core.rate.inverse_curiosity_factor = 0x05
    core.rate.tx_fail_low_th = 0x04
    core.rate.tx_fail_high_th = 0x0a
    core.rate.per_alpha_shift = 0x04
    core.rate.per_add_shift = 0x0d
    core.rate.per_beta1_shift = 0x0a
    core.rate.per_beta2_shift = 0x08
    core.rate.rate_check_up = 0x02
    core.rate.rate_check_down = 0x0c
    core.rate.rate_retry_policy = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    core.hangover.recover_time = 0x00000000
    core.hangover.hangover_period = 0x14
    core.hangover.dynamic_mode = 0x01
    core.hangover.early_termination_mode = 0x01
    core.hangover.max_period = 0x14
    core.hangover.min_period = 0x01
    core.hangover.increase_delta = 0x01
    core.hangover.decrease_delta = 0x02
    core.hangover.quiet_time = 0x04
    core.hangover.increase_time = 0x01
    core.hangover.window_size = 0x10
    core.recovery.bug_on_recovery = 0x00
    core.recovery.no_recovery = 0x00
    wl18xx.ht.mode = 0x00
    wl18xx.phy.phy_standalone = 0x00
    wl18xx.phy.spare0 = 0x08
    wl18xx.phy.enable_clpc = 0x00
    wl18xx.phy.enable_tx_low_pwr_on_siso_rdl = 0x00
    wl18xx.phy.auto_detect = 0x00
    wl18xx.phy.dedicated_fem = 0x00
    wl18xx.phy.low_band_component = 0x02
    wl18xx.phy.low_band_component_type = 0x05
    wl18xx.phy.high_band_component = 0x01
    wl18xx.phy.high_band_component_type = 0x0a
    wl18xx.phy.number_of_assembled_ant2_4 = 0x02
    wl18xx.phy.number_of_assembled_ant5 = 0x02
    wl18xx.phy.pin_muxing_platform_options = 0x00, 0x00
    wl18xx.phy.external_pa_dc2dc = 0x00
    wl18xx.phy.tcxo_ldo_voltage = 0x00
    wl18xx.phy.xtal_itrim_val = 0x04
    wl18xx.phy.srf_state = 0x00
    wl18xx.phy.srf1 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    wl18xx.phy.srf2 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    wl18xx.phy.srf3 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    wl18xx.phy.io_configuration = 0x01
    wl18xx.phy.sdio_configuration = 0x00
    wl18xx.phy.settings = 0x00
    wl18xx.phy.rx_profile = 0x00
    wl18xx.phy.per_chan_pwr_limit_arr_11abg = 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x18, 0x78, 0x88, 0x88, 0x78, 0x88, 0x82, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf4, 0x44, 0xff, 0xf4, 0x44, 0xff, 0xf4, 0x22, 0x22, 0xf4, 0x22, 0x22, 0xf6, 0x44, 0x44, 0xff, 0x44, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0xff, 0x44, 0x55, 0xf4, 0xff, 0xff, 0xff, 0x33, 0x22, 0xff, 0x33, 0x22, 0xff, 0x66, 0x66, 0xff, 0x44, 0x66, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff
    wl18xx.phy.pwr_limit_reference_11_abg = 0x55
    wl18xx.phy.per_chan_pwr_limit_arr_11p = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
    wl18xx.phy.pwr_limit_reference_11p = 0x64
    wl18xx.phy.spare1 = 0x00
    wl18xx.phy.per_chan_bo_mode_11_abg = 0x40, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19
    wl18xx.phy.per_chan_bo_mode_11_p = 0x00, 0x00, 0x00, 0x01
    wl18xx.phy.primary_clock_setting_time = 0x05
    wl18xx.phy.clock_valid_on_wake_up = 0x00
    wl18xx.phy.secondary_clock_setting_time = 0x05
    wl18xx.phy.board_type = 0x02
    wl18xx.phy.psat = 0x00
    wl18xx.phy.low_power_val = 0xff
    wl18xx.phy.med_power_val = 0xff
    wl18xx.phy.high_power_val = 0xff
    wl18xx.phy.per_sub_band_tx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
    wl18xx.phy.per_sub_band_rx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    wl18xx.phy.tx_rf_margin = 0x01
    wl18xx.phy.low_power_val_2nd = 0xff
    wl18xx.phy.med_power_val_2nd = 0xff
    wl18xx.phy.high_power_val_2nd = 0xff
    wl18xx.phy.padding = 0x00
    wl18xx.ap_sleep.idle_duty_cycle = 0x00
    wl18xx.ap_sleep.connected_duty_cycle = 0x00
    wl18xx.ap_sleep.max_stations_thresh = 0x04
    wl18xx.ap_sleep.idle_conn_thresh = 0x08
  • Scott,

    I'm not sure if the logs that you've provided tell us much about the core details of the problem, which I take to mainly be why the Bluetooth is causing Wi-Fi to completely drop the signal. Could you go into more detail about your test setup? We may recommend an alternative setup depending on the way your Faraday cage was set up to minimize any variables.

    For now, could you please download the TI Wireless Tools to get us comprehensive BT and Wi-Fi logs? The link is here. The SDMMC adapter that you are using to connect the WiLink8 device to your setup should already have the debug pins broken out - the Getting Started guide will have all the necessary details.

    Once we get the Wi-Fi and Bluetooth logs, we can gain more insight into what is exactly causing the disconnect and find a solution for you.

    Justin

  • Coexistence Debug.zip

    Hi Justin,


    Your understanding of the problem is correct. The WiFi throughput drops way off. The wireless sniffer tool shows that the 802.11 date rate is dropping to 1 Mbps.

    Here are the details

    On Sabre Board
    1. Connect Wifi to 2.4 Ghz. Any 2.4 Ghz network seems to do. I've reproduced this in a wireless cage, with an AP at my desk, and when connected to my corporate network. The brands of AP's I tested are Netgrear, DLink, Apple Airport Extreme and a Ciso WLC with LAP 1242.
    2. Pair a Bluetooth Headset - I've tried two different headsets - brands tested were Sony and Peltor
    3. Start Iperf In Server Mode (eg iperf -s)
    4. Begin playing SCO audio to the headset. Note: This required some hardware re-work and driver coding to get working on the sabre board - we connected the i2s interface of the WL1837 to audmux4 of the iMX6 and created a basic Alsa SOC codec+machine driver.  To play SCO audio I am using an application called BluetoothSCOTest which is on the google play store.

    On PC
    1. Start iperf in client mode: iperf3 -c 172.30.1.151 -b 15M -t 600 -u


    It seems like using a larger bandwidth target can make the issue happen faster. On a wireless trace it looks like the data rate is dropping to 1 Mbps after a while. If I specify a bandwidth limit of 500 Kbps the stream is received with little packet loss. I first noticed this problem when running our custom audio/video streaming application. When the sabre board was using a bluetooth headset the WL1837 was unable to receive a video/audio at a usable rate. I then began doing some tests with Iperf to determine the throughput I could achieve when bluetooth was in use. The results I get are much lower that stated in the WLAN Bluetooth Coexistence app note.

    Please let me know if you would like any other details or additional logs. This is the first time I've collected the firmware logs so I hope everything is there. While searching through the forum I found a few issues which sounded similar but couldn't find an answer.

    http://e2e.ti.com/support/wireless_connectivity/wilink_wifi_bluetooth/f/307/p/243555/1093821#1093821

     http://e2e.ti.com/support/wireless_connectivity/wilink_wifi_bluetooth/f/307/t/243555

     http://e2e.ti.com/support/wireless_connectivity/wilink_wifi_bluetooth/f/307/t/327878

     http://e2e.ti.com/support/wireless_connectivity/wilink_wifi_bluetooth/f/307/p/146970/547424#547424

    Thanks again Justin, looking forward to your response.

  • Scott,

    Thanks for the logs. It looks like it doesn't include trace information - could you please take the logs one more time with the trace info enabled? Enabling it is fairly simple:

    1. Download the BT Service Pack and place the three files somewhere on your computer (preferably the Logger install path). 

    2. In the Logger Settings window of the Logger application, check "HCI/LMP viewer" to enable it. 

    3. Click "Setup" for the "HCI/LMP viewer" to set up the connection. Click "Add File..." and link to the "TIInit_11.8.32.xml" that was just placed in the earlier path.

    For your Faraday cage setup, are all the devices placed in the cage when you are testing? As in, the WiLink device, the router, and the Bluetooth speaker piece in that environment? I am trying to think of a test setup that would minimize any variability in the Wi-Fi or Bluetooth link quality, but we can tackle that issue once we have the more detailed logs.

    Last question - how much throughput do you expect your stream to require? 

    Please let me know!

    Justin

  • BT TRACE.zip

    Hi Justin, it looks like I got the trace info this time. Please take a look and don't hesitate to ask for any other info.

    When I was in the wireless cage all devices were in there too (device with wl1836, DLink Router, and BT head set).

    Our stream requires at least 1 Mbps, with the possibility of going up to 6 Mbps. 2 Mbps will be quite common. However this document suggests we can do much better than this.  I will be away next week, but my colleagues will be monitor this thread in my absence.

    .

  • Scott,

    My colleague and I looked through the Bluetooth logs and did not find anything wrong with them. The connection event seems to be set up fine without any errors, and nothing stood out to us as wrong. Can you verify that when you attach the Bluetooth earpiece to your setup that the audio streams through the earpiece without issue?

    I'd also like to ask you to re-take the Wi-Fi logs with gLogger, it seems that the log file that you attached in an earlier post was simply a link to another file that gLogger was looking for. It seems as if the problem lies somewhere in the Wi-Fi rather than the Bluetooth, but until we have those logs as well, it is hard to tell exactly what is causing the issue.

    Once we have both sets of logs, I'll work with my team to get you a fix as soon as we can.

    Justin

  • Hi Justin, I re-took the Wifi logs. I'm going to attach a few .csv files from glogger this time. The files stream_3 - stream_6 seem to show the problem at it's worst. Please let me know if you'd like me to gather additional information. https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/968/glogger-logs.7z

  • Hi Justin, I'm attaching on more wifi trace. This one is a bit longer, towards the end of the log the iperf throughput went to 0 and never recovered. https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/968/glog_5F00_2016_5F00_06_5F00_20_5F00_174844.7z

  • Scott,

    Thank you. I am currently looking into the logs and will let you know what I find. To verify, this is using an iMX6 Sabre board with the SDMMC adapter and WiLink8 COM8 EVM, is that correct?

    Thanks,
    Justin
  • Justin, that is correct. Thanks for your help!


    Scott

  • Scott,

    You mentioned the use of different equipment that yielded better results - do you have a Cisco AP that you would be able to gather more iperf data with? Cisco APs do not implement rate fallback so if it shows consistently better performance, then that may be one possible cause for the drop in bandwidth you are seeing.

    We are continuing to look into the logs and other possible reasons for the behavior you are observing. In the meantime, do you by chance have a wireless sniffer that you could use to sniff the flow of data in your test setup?

    Justin
  • Justin,


    Here are some iperf logs and traces for two different AP's (Motorola and Cisco). The Cisco AP seems better, although when bluetooth is on and streaming SCO audio there are large spikes in packet loss. When bluetooth is off packet loss is less than 2% on average. Are the large spikes in packet loss normal when bluetooth is on?


    Do you see this issue on your end? Can you let me know what type of AP's you normally test with?

    The wireless traces were too big to attach here so I had to save them in .csv format. Let me know if you need me to run any other tests.

    Thanks for you help,

    Scotthttps://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/968/IPerf_2D00_Wireless-Traces.7z

  • Justin,

    Here are a couple more traces from 2 more AP's. Note, I did these tests in a shielded room.


    The first AP was an Apple Airport Extreme, it showed the problem right away.


    The second AP was a Cisco DPQ3925, this AP worked very well. I'm preforming more tests with this AP right now outside of the shielded room. It's to early to say if everything is fine with this AP, but so far I haven't seen this issues withttps://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/968/Wireless-Traces-2.7zh this AP. The packet loss has been low (< 2-4%) on a 3 Mbps UDP stream when bluetooth was in use. That seems promising, this is what I was expecting with other AP's.


    I noticed the other AP's tend to drop there transmit rate to 1 Mbps when bluetooth is in use on the sabre board.

  • Hi Justin, did the logs I send contain useful information to help troubleshoot this issue? From what I've seen so far it looks like there is a compatibility issue with some AP's - which results in the AP dropping it's transmit rate to 802.11b speeds. Do you see this issue on your end, and can you let me know which AP's you test with or can you recommend an AP? If you have any update on this issue that would be great. Please do not hesitate to request additional information.

    We are operating under the assumption that this can be resolved with a firmware update. If that is not the case I would appreciate knowing ASAP.

    Thanks for all your help

    Scott

  • Scott,

    I noticed in the logs that when the bandwidth drops to zero, that the main transmissions are what seem to be the CTS-to-self packets that "protect" the Bluetooth transmission. However, I believe that even with the Cisco router you tested that you should see more than 3Mbps of continuous bandwidth.

    Theoretically, your SCO stream should not need to use more than 1/3 of the antenna's capacity (the SCO test is on 2-EV3 channel). Have you done a test with A2DP audio to see if the bandwidth drop is unique to when you use SCO or if it's with any data at all over Bluetooth?

    I've forwarded this issue to our R&D team and they have more capability to test and give a definite answer on whether or not this is something that we can solve. I expect to have a more concrete answer by tomorrow. Apologies for the delay!

    Justin

  • Scott,

    We noticed in the logs that you are currently using BT-SP version 107, which is very old. Can you verify that you've downloaded the latest BT Service Pack from this link

    The current SP is at 3.9, corresponding to the BTS version of P2.136. Once you download it, copy the TIInit_11.8.32.bts into /lib/firmware, making sure to remove and replace any older BTS file that might be present.

    Let me know if this works!

    Justin

  • Justin, unfortunately the problem still exists with BT-SP 3.9. You can refer to my post on May 30th describing my software setup when I discovered this issue, on our custom board. The sabreboard is running an earlier TI software package, but my custom board is up to date. The main reason for running tests on the sabre board was to get access to the firmware logs.  Has R&D ever heard to this issue before or been able to reproduce it based on my summary? I will try the same test with A2DP instead of HFP and let you know the results.

    Thanks

    Scott