I've been trying to debug an issue where our QCA4020 based product can't join Thread networks. From the OpenThread output log I will see something like "No networks found" when it does the pre-join scan. To work around some other bugs in QAPI manged to get access to the OpenThread API. (I'll leave the details on how to do this as an exercise for the reader.)
I am using otLinkActiveScan() from a CLI command to scan for Active networks. QCA4020 devices NEVER see other other QCA4020 devices. Our KW41 devices can see the QCA4020 devices and the QCA4020 can see our KW41 devices. Our KW41 devices do not use OpenThread.
I installed OpenThread on a KW41Z. The KW41Z sees the our KW41 devices but not QCA4020. The QCA4020 will see the KW41Z.
OpenThread reports a "Frame rx failed, error:UnknownNeighbor" when it recveives a Beacon Notify from a QCA4020 device.
Here is the log output from two CDB20 QCA4020 dev boards.
KW41Z PAN ID: BAD3
CDB20 #1 PAN ID: 3BCF
CDB20 #1 PAN ID: 096E
Every other device is a KW41 running NXP Thread stack.
----- From CDB20 with PAN ID 3BCF -----
> thread scan network 500[DEBG]-MAC-----: [00298B25] Started Scan (type=Active)[DEBG]-MAC-----: Beacon Notify pan=096E chan=15[DEBG]-MAC-----: Received from short address 4000[DEBG]-MAC-----: drop not neighbor[INFO]-MAC-----: Frame rx failed, error:UnknownNeighbor, len:26, seqnum:0, type:Beacon, src:0x4000, dst:None, s[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=9A7D2EE861D3F67B, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=84F4 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=2F03F3593EEFAFF3, chan=25, pan=84F4[DEBG]-MAC-----: Beacon Notify pan=819E chan=25[INFO]-MAC-----: Received non-Thread Beacon src=B621C5367D74DE8B, chan=25, pan=819E[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=576153C10037B761, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=FBDC chan=25[INFO]-MAC-----: Received non-Thread Beacon src=276C26B4FA001F26, chan=25, pan=FBDC[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=96F65D714365B146, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=F692923D70F13CCC, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=E26ED0796A254018, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=BAD3 chan=17[INFO]-MAC-----: Received non-Thread Beacon src=D2682E0CD2836CD8, chan=17, pan=BAD3[DEBG]-MAC-----: [00299190] Received scan confirm.| Extended Addr | PAN | CH | RSSI | LQI | C | J |+------------------+------+----+------+-----+---+---++ 9A7D2EE861D3F67B + EAF6 + 25 + -70 + 47 + 0 + 0 ++ 2F03F3593EEFAFF3 + 84F4 + 25 + -72 + 39 + 0 + 0 ++ B621C5367D74DE8B + 819E + 25 + -75 + 32 + 0 + 0 ++ 576153C10037B761 + EAF6 + 25 + -73 + 37 + 0 + 0 ++ 276C26B4FA001F26 + FBDC + 25 + -77 + 25 + 0 + 0 ++ 96F65D714365B146 + EAF6 + 25 + -77 + 26 + 0 + 0 ++ F692923D70F13CCC + EAF6 + 25 + -78 + 23 + 0 + 0 ++ E26ED0796A254018 + EAF6 + 25 + -66 + 59 + 0 + 0 ++ D2682E0CD2836CD8 + BAD3 + 17 + -57 + 84 + 0 + 0 +----- From CDB20 with PAN ID 096E -----> thread scan network 500[DEBG]-MAC-----: [000783FD] Started Scan (type=Active)[DEBG]-MAC-----: Beacon Notify pan=3BCF chan=16[DEBG]-MAC-----: Received from short address e400[DEBG]-MAC-----: drop not neighbor[INFO]-MAC-----: Frame rx failed, error:UnknownNeighbor, len:26, seqnum:0, type:Beacon, src:0xe400, dst:None, s[DEBG]-MAC-----: Beacon Notify pan=BAD3 chan=17[INFO]-MAC-----: Received non-Thread Beacon src=D2682E0CD2836CD8, chan=17, pan=BAD3[DEBG]-MAC-----: Beacon Notify pan=11E9 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=C609721EDC08817F, chan=25, pan=11E9[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=9A7D2EE861D3F67B, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=9F9B1906FA86E413, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=84F4 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=AB7C7ECD36BB54BD, chan=25, pan=84F4[DEBG]-MAC-----: Beacon Notify pan=84F4 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=2F03F3593EEFAFF3, chan=25, pan=84F4[DEBG]-MAC-----: Beacon Notify pan=A8EF chan=25[INFO]-MAC-----: Received non-Thread Beacon src=3EDE6079BDB059D6, chan=25, pan=A8EF[DEBG]-MAC-----: Beacon Notify pan=EAF6 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=E26ED0796A254018, chan=25, pan=EAF6[DEBG]-MAC-----: Beacon Notify pan=84F4 chan=25[INFO]-MAC-----: Received non-Thread Beacon src=2E93E8ECBC3BEC44, chan=25, pan=84F4[DEBG]-MAC-----: [00078A69] Received scan confirm.| Extended Addr | PAN | CH | RSSI | LQI | C | J |+------------------+------+----+------+-----+---+---++ D2682E0CD2836CD8 + BAD3 + 17 + -64 + 63 + 0 + 0 ++ C609721EDC08817F + 11E9 + 25 + -75 + 31 + 0 + 0 ++ 9A7D2EE861D3F67B + EAF6 + 25 + -66 + 59 + 0 + 0 ++ 9F9B1906FA86E413 + EAF6 + 25 + -64 + 64 + 0 + 0 ++ AB7C7ECD36BB54BD + 84F4 + 25 + -69 + 48 + 0 + 0 ++ 2F03F3593EEFAFF3 + 84F4 + 25 + -74 + 33 + 0 + 0 ++ 3EDE6079BDB059D6 + A8EF + 25 + -77 + 26 + 0 + 0 ++ E26ED0796A254018 + EAF6 + 25 + -70 + 47 + 0 + 0 ++ 2E93E8ECBC3BEC44 + 84F4 + 25 + -75 + 32 + 0 + 0 +
Hi Jesse,
Without making any modifications to the open thread, can you please confirm if you are able to scan and find other 4020 device using QCLI demo? Can you please use below commands to verify this?
Commands on Thread router device:
Thread> Initialize 0
Thread> UseDefaultInfo
Thread> Start
Thread> CommissionerStart
Thread> CommissionerAddJoiner mypassword
Thread> GetDeviceConfiguration
Thread> GetNetworkConfiguration
Commands on Thread end device:
Thread> Initialize 2
Thread> JoinerStart mypassword
Thread> Start
Thread> GetDeviceConfiguration
Thread> GetNetworkConfiguration
Thanks,
Manjula
From First Device:
Kinldy try to increase the default transmit power used by the 15.4 MAC to Maixmum and let us know if issue still persist.
To increase the default transmit power used by the 15.4 MAC.
Edit @target\quartz\nvm\config\CDB\QCA4020_2p0.nvm file to set TagValue as 0F for TagNum 58 .
Rebuild(build.bat t 4020 cdb) and reflash the image on both devices. Verify if QCA4020 is able to identify other QCA4020 device during Thread Scan Operation.
Signal strength has nothing to do with the issue I'm describing here. What I'm describing here is an issue I discovered while determining if signal strength was the cause of a different problem. The QCA4020 is getting the beacon from another QCA4020 and is rejecting it. The debug log from OpenThread shows this:
The "drop not neighbor" text is coming from something Qualcomm added to OpenThread. That text does not appear anywhere in the OpenThread source. There are files referenced in thread.lib, mac_internal.cpp and mac_external.cpp, that do not exist in OpenThread. My suspicion is there is something wrong with the beacon the QCA4020 is sending. The KW41Z running OpenThread reports the same error with beacons received from a QCA4020 minus the "drop not neighbor" line. (The QCA4020 processes the beacon from the KW41Z just fine.)
Because the QCA4020 is throwing away beacons from other QCA4020 devices I never get scan results which makes it impossible to compare the RSSI and LQI values with other devices.
We are using a newer module from Silex than what is on the CDB20 QCA4020 dev kit. We think there is problem with the module that we need to discuss with Silex. I would like to get scan results so we have concrete data we can present to Silex. We already have the transmit power set to maximum.
I don't know what more I can add to show how I'm verifying the problem. Beacon responses from QCA4020 devices never get passed into the callback function that gets registered with otLinkActiveScan(). The table that gets printed at the end of the scans in my original post is generated from the results passed into that callback function. You can see from the OpenThread log output that there are beacons received that do not result in entries in the table. In the first scan there is no entry in the table for the beacon received from the device on channel 15. In the second scan there is no entry in the table for the beacon received on channel 16.
I'll be sending a Wireshark capture shortly.