I’m using BeagleBone Black as a TCP client which sends a TCP packet every 5 seconds and the same packet is echoed by the server immediately and I’m measuring the RTT (Round Trip Time). I’m using Edimax WiFi USB adapter. The RTT measured was ridiculously high (400ms) and I eventually found out its because the BBB suspends power to the adapter every few milliseconds (if there is no activity). I can see the current toggling between 80mA and 0 through an ammeter. Its because of this toggle, the RTT shoots up. I have disabled the auto suspend for the USB. Some observations
The same WIFI adapter plugged into a computer (Linux and windows) running the same code works fine (with and without change to the autosuspend settings). No toggling of power and a steady 40ms RTT is observed. Also blue LED on adapter is stable.
I powered the the USB through a hub(powered externally) and connected it to BBB and it still exhibits the issue
The toggling of power can be observed with the blue led on the edimax adapter which remains constant when connected to other computers but blinks when connected to BBB. Cross checked with an ammeter.
When I keep the adapter busy on BBB (by sending the packet every 500ms instead of 2s), the adapter consumes a steady 80mA and the RTT is stable at 40ms
I have played around with the autosuspend settings (by writing -1 to autosuspend for the usb device), powered through hub etc. but the problem persists.
Can anyone suggest if I’m missing something obvious.
Thanks Robert. That command is not working. This is what I get when I run that command (my wireless interface is wlan1)
root@beaglebone:~# iwconfig wlan1 power off Error for wireless request “Set Power Management” (8B2C) : SET failed on device wlan1 ; Operation not permitted.
I tried this with two USB wifi adapters popular with BBB (this and this). Does not work on both. I’m currently running 3.8.13-bone79 kernel.
Also tried adding this to my /etc/network/interfaces file. Still no luck.
Thank you. That suggestion worked. I installed a pre-compiled kernel 4.4.27-ti-r62.
I’m trying to find a kernel which supports these 3 things
Runs Xenomai
Power management with the wireless adapter (the current issue)
Power management features in kernel (CPU freq, CPU idle, Suspend-to-Ram, Runtime PM)
With 2, manually patching and compiling xenomai with an existing Linux kernel from scratch didn’t work (gave up due to time constraints). I had to install a pre-compiled kernel 3.8.13-xenomai-r79 and then installed the xenomai userspace (xenomai 2.6.4). That worked perfectly.
With 3, I would like to suspend the CPU and then wakeup using GPIO.
Any chance there is a 4.4.x precompiled Xenomai kernel which supports 2 and 3?
Appreciate your help. Took me a while to figure out this wireless issue. Thanks.