Issue with WiFi USB adapter on BBB

Hello All,

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

  1. 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.

  2. I powered the the USB through a hub(powered externally) and connected it to BBB and it still exhibits the issue

  3. 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.

  4. 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.

Have you disable power management?

sudo iwconfig wlan0 power off

Regards,

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.

allow-hotplug wlan1

iface wlan1 inet dhcp
wireless-power off

Any suggestions? Thank you.

any reason you can't use 4.4.x? (4.4.34-ti-r69)

Regards,

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

  1. Runs Xenomai
  2. Power management with the wireless adapter (the current issue)
  3. 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.

Well i see an ipipe driver for 4.4.x:

https://git.xenomai.org/ipipe.git/

the xenomai patch merge is always fun...

Regards,

Okay, give this a shot, totally un-tested:

git clone https://github.com/RobertCNelson/ti-linux-kernel-dev.git
cd ti-linux-kernel-dev/
git checkout origin/ti-linux-xenomai-4.4.y -b tmp
./build_deb.sh

cp deploy/linux-image*.deb to target and install via:

sudo dpkg -i linux-image*.deb

Regards,

debian@beaglebone:~$ dmesg | grep Xenomai
[ 1.662891] [Xenomai] scheduling class idle registered.
[ 1.662905] [Xenomai] scheduling class rt registered.
[ 1.663079] I-pipe: head domain Xenomai registered.
[ 1.666337] [Xenomai] Cobalt v3.0.3 (Groovy Cosmic Halo)

Regards,

Thanks Robert. This works.

However, I moved my project from BBB to BBBGW. Can I follow the same
steps for BBGW?