I am using a Colibri iMX8QXP 2GB WB IT, on a Viola Plus carrier board.
I have installed TorizonCore 6.4.0-build.5 on it.
I have set up 2 Unictron AA222 wifi antennas on it.
I am getting an issue with the LAN wifi: it crashes when a very low throughput is reached.
STEPS TO REPRODUCE:
Once TorizonCore is installed, I am connecting to the LAN wifi with:
nmcli -a device wifi connect <my-wifi>
Then, I unplug the ethernet cable.
Then, I perform either (A) or (B), and it systematically provokes a wifi crash within few minutes.
(A) Pinging the Colibri from a remote machine at 100 ping/second.
(B) Connecting to the Colibri with ssh, then pinging google.com at 100 ping/second.
What do I mean by “wifi crash”?
- In (A), not being able to ping the Colibri anymore, until rebooting Colibri.
- In (B), loosing the ssh connection to the Colibri, and not being able to ping it anymore as well, until rebooting Colibri.
In a minority of cases, the wifi is able to “recover”, and I am able to ping again after 10 minutes without needing a reboot.
Occasionally, in (B), I could see the following message in the terminal:
ping: sendto: No buffer space available
FURTHER OBSERVATIONS AND HYPOTHESES:
The probability that the issue appears decreases as I reduce the ping frequency: at 10 ping/second the issue seldom appears within 10 minutes, and at 1 ping/second it never occurs.
Therefore, my guess is that the wifi has an abnormally low throughput, so it quickly fills its buffer, and once the buffer is filled the wifi crashes. This hypothesis is also supported by the occasional observation of the
ping: sendto: No buffer space available message.
I have performed these tests using different Colibri boards (of the same model) and carrier boards (of the same model as well).
I also have performed the same tests between 2 laptops on the same LAN wifi, and did not get any issue.
Additionally, I have done some throughput calculations.
- In (A) my pings are sent from Windows, so they should contain 64 bytes of data.
- In (B) they are sent from TorizonCore, so they should contain 32 bytes of data.
At 100 pings/second, that implies a throughput of 100 x 32 x 8 = 25600 bits/sec.
That is a very low throughput, far below the 400.0Mbps of the wifi network the data is going through, and also far below the “up to 866.7 Mbps” that I have read from the IMX8X datasheet.
I am providing attached below the journalctl logs that I got from a test of type (B), after having enabled persistent Journald logging.
In this test, the connection was lost around 16:12:15.
journalctl_oct_16_12.log (140.2 KB)