TP-Link WBS210/510 Power Levels

Hello there,
I'm updating a sub-project that's based on OpenWrt and am adding support for the TP-Link WBS210 (and possibly the WBS510 if I get the right information). One of the requirements for the project is per channel power levels (for example, if all 14 channels are a max of 30dBm, we put 14 => '30' in the code). I'm waiting on my device to arrive for testing but thought that since it's in OpenWrt, someone may have the information already.

For our project, the instructions for determining the max power per channel are to set the power on the first channel to 30 in basic setup and apply the changes. Then use "iw dev wlan0 info" to see what the max power accepted was. If necessary, repeat for each channel.

Any information that you can provide on the maximum power levels per channel will help greatly. I'm hoping to have a working firmware when I get the device.

Thanks, and have a great day. :slight_smile:

Regulatory power settings are already pre-configured and illegal to alter.

Thank you for that information. I need to clarify my question a little more. What I'm looking for is in the instance that the WBS won't work properly at the maximum power allowed, what is the maximum that it will work properly with?

As a side note, (not totally pertinent to this), the project that I'm trying to add this device into is the AREDN (Amateur Radio Emergency Data Network) mesh. They're allocated two more channels, due to our licensing requirements.

Thank you for your information. I'll check it and add it into the firmware update.

Have a great day. :slight_smile:

I need to PM you!

I asked AREDN for some information about channels -1 thru 2, and never received an answer!

I'm also a Ham.

What do you mean, are you saying that full-power doesn't work?

I had asked about the configuration settings in the AREDN mesh forums, and this is what I was told about the TP-Link devices.

For tp-link, the power offsite is '0' on all the devices we've seen. offset is only significant on ubiquiti devices.

The maxpower can be set to the manufacture specs, but it's not used on tplink. The max power is controlled by the 'chanpower', a per channel setting. Only on tp-link devices do we see different limits on different channels. The only place this detail could be stored is on the vendor flash partition where device unique data is stored after being calibrated in the factory with a lot of high cost equipment. To discover this, set chanpower to {14 => 30 } . This means all channels 14 and below are 30dBm max setting. Then manually starting from ch -2, set the max power to 30 in basic setup, "apply" the setting, and then check "iw dev wlan0 info" to see what value the driver accepted on that channel. go up each channel and record the accepted values. As an example in your current chanpower code, channels -2 through 1 will have max of 22 dBm, channels 2 though 14 will have 23 dBm.

Generally, ch -2 and -1 will have a higher max than ch 1. However, we have been making ch -2 and -1 match the max of ch 1. this is to be concervative on the signal quality. If we get the device on a scope to compare the signal shapes, then we can decide if it's appropriate to increase the max power on a give n channel if the driver lets us.

rfband on 2GHz devices is always '2400'. for 5GHz is always "5800ubntus" I think someone was thinking there would be 5800tplinkus or similar in the early days, but this didn't happen over time.


Hopefully this clarifies what I'm after, and maybe even helps with your questions.

Have a great night. :slight_smile:

1 Like

Before I start, just a note that if you don’t specify any power setting at all, the maximum power is used. So if that is all you’re trying to achieve, problem solved.

If you’re trying to figure out what each channel is allowed to do from a regulatory (and possibly device, but not sure) standpoint, you can do the following:
iw "phy${dev_num}" info 2>&1 | sed -e '/MHz/!d; /GI/d; /disabled/d; /radar detect /d; /Supported Channel Width/d; s/[:blank:]*\*[:blank:]*//g; s:[]()[]::g; s/\..*$//g' | awk ' { print "nextCh.push("$3"); nextChFreq["$3"] = \""$1"MHz\"; nextChPwr["$3"] = "$4";" ; } ' >> "$out"

Obviously this is suited to my code and my variables, but it might get you going in the right direction.
Note that this is doing a screenscrape of iw, which when you run the above command it specifically tells you NOT to do as the output is not guaranteed stable. That being said, the code has never stopped working.

Hi, Lantis1008,

If that will tell me the max power that each channel accepts, that's what I'm after. In the AREDN project, they set each channel to the max that it can run (device standpoint)--as long as it's below the regulatory limit. The developers over there aren't very good at documenting, IMHO, so their instructions can be confusing. If your code will find the max usable power for all of the channels at once, that's better than the do one, write it down, do the next, write it down, etc... that they are proposing.

I'll give it a shot when I get a device.

Thanks, and have a great day. :slight_smile:

Hi, lantis1008,

So, I finally got my hands on three WBS210's. I tried your command on them, and I get an error. "-ash: can't create: nonexistent directory" What directory does it need to be able to run? My linux scripting-fu is weak, so I'm not entirely sure where your command is trying to put the information.

Have a great day. :slight_smile:

Hey, the easiest way would be to remove the >> $out at the end, otherwise replace $out with something like /tmp/wifioutput.txt.

Removing it entirely dumps to screen, the other option dumps to a file.

Let me know how you go.

There’s also the phy${dev_num} which would need to be replaced with phy0 and phy1

Here's what I get for the results:

root@AC0EC-213-26-176:~# cat /root/wifioutput2.txt
nextCh.push(-2); nextChFreq[-2] = "2397MHz"; nextChPwr[-2] = 27;
nextCh.push(-1); nextChFreq[-1] = "2402MHz"; nextChPwr[-1] = 27;
nextCh.push(1); nextChFreq[1] = "2412MHz"; nextChPwr[1] = 27;
nextCh.push(2); nextChFreq[2] = "2417MHz"; nextChPwr[2] = 27;
nextCh.push(3); nextChFreq[3] = "2422MHz"; nextChPwr[3] = 27;
nextCh.push(4); nextChFreq[4] = "2427MHz"; nextChPwr[4] = 27;
nextCh.push(5); nextChFreq[5] = "2432MHz"; nextChPwr[5] = 27;
nextCh.push(6); nextChFreq[6] = "2437MHz"; nextChPwr[6] = 27;
nextCh.push(7); nextChFreq[7] = "2442MHz"; nextChPwr[7] = 27;
nextCh.push(8); nextChFreq[8] = "2447MHz"; nextChPwr[8] = 27;
nextCh.push(9); nextChFreq[9] = "2452MHz"; nextChPwr[9] = 27;
nextCh.push(10); nextChFreq[10] = "2457MHz"; nextChPwr[10] = 27;
nextCh.push(11); nextChFreq[11] = "2462MHz"; nextChPwr[11] = 27;
nextCh.push(12); nextChFreq[12] = "2467MHz"; nextChPwr[12] = 27;
nextCh.push(13); nextChFreq[13] = "2472MHz"; nextChPwr[13] = 27;
nextCh.push(14); nextChFreq[14] = "2484MHz"; nextChPwr[14] = 27;

And iw dev wlan0 info gives me:

root@AC0EC-213-26-176:~# iw dev wlan0 info
Interface wlan0
        ifindex 9
        wdev 0x2
        addr 18:a6:f7:d5:1a:b0
        ssid AREDN-5-v3
        type IBSS
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 13.00 dBm

So, I'm at a loss as to how to select the channel that I need, along with the bandwidth that I need.

Have a great night. :slight_smile:

The output there is showing that all channels can be set to 27dBm, which seems a bit strange, but that’s at least what the iw utility believes is possible.

Here's what the individual iw dev wlan0 info calls gave me.

channel 1 = > 13
channel 2 = > 18
channel 3 = > 18
channel 4 = > 18
channel 5 = > 18
channel 6 = > 18
channel 7 = > 18
channel 8 = > 18
channel 9 = > 18
channel 10 = > 18
channel 11 = > 13
channel 12 = > 27
channel 13 = > 27
channel 14 = > 27

1 => 13, 10 => 18, 11 => 13, 14 => 27 (these are the entries I put in the config file)

Have a great night. :slight_smile:P