Jump to content

Recommended Posts

Posted

Dear Community,

 

I currently want to reduce the transmission power of the NanoPi Neo Air.

This means that I simply want to be able to set the Wifi transmission power in 10% steps, for example.

 

What I have already tried:

  1. Instructions according to Wiki: OpenWrt image is not flashed. No access via browser.
    But it doesn't matter: max. transmission power is used in AP mode. 
    Setting as in the Wiki image "TransmitPower:auto" probably does not apply here anyway.
  2. Network Manager TUI via "sudo nmtui" has no such settings.
  3. Adjust the NVRAM files in "/lib/firmware/brcm" or "/lib/firmware/ap6212" step by step. 
    All changes are saved in the txt file but not written to the host driver.
    The tests do not recognise any changes. No matter how I adjust the values. (Many different attempts)
  4. Firmware patch ("brcmfmac43430a1-sdio.bin") with HxD: The place where "Maxp2ga0" is set is found & edited in binary file. --> 07 60 3F 60 6D 61 78 70 32 67 61 30 = `?`maxp2ga0
    Bytes for maxp2ga0: 07 60Bytes for maxp2ga1: 3F 60
    3F 60 → 0x603F or 0x3F60 → similar, typically 0x60 = 96 → 20 dBm (Both antenna values have been set)
    Unfortunately, this change is not loaded into the host driver on the chip either...
    Continue working on existing "locked" firmware with Seemoo Lab? (unlikely)
  5. Throttling Tx-Power via command "sudo iw dev wlan0 set txpower fixed 1500"
    Change is displayed under "iwconfig wlan0", but it is either overwritten directly or not taken into account at all.
    No change is noticeable in the tests, no matter how low the value is set.
  6. Other firmware & NVRAM tested: Wifi does not start at all (IP rebount reconnect try xx) or the W-Lan is not visible.
    Maybe you can start here again and find a working firmware that is not "locked"? Which software to use?
     

I test with Putty via the wifi connection. I use the following command:

for i in $(seq 1 30); do iw dev wlan0 station dump | awk '/signal/ {print $2}'; sleep 1; done \
| awk '{x[NR]=$1; s+=$1} END{ if (NR>0) {mean=s/NR; for(i=1;i<=NR;i++) v+=(x[i]-mean)^2; sd=sqrt(v/NR); print 'N="NR, "mean="mean, "sd="sd} }'

This measures the connection strength in dBm every second, 30 times, and only outputs the mean value.

I always have the same 3 measurement positions with the exact same antenna alignment. 

(In a corridor: 3m, 12m, 25m)

 

Interesting stuff:

  • sudo iw phy phy0 info
  • dmesg | tail -n 50 | grep -i brcmfmac
  • File paths: /lib/firmware/brcm & /lib/firmware/AP6212
  • CC code (country) is not set by default: "sudo iw reg get" & "sudo iw reg set DE"


Are there any other approaches or have I overlooked something?
Thank you very much for your help!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines