What I want to do:

I want to do some experiments with devices such as a Raspberry Pi in environments, where there is noise in the 2.4GHz and 5GHz band.

What I tried so far:

My idea was to simply use the wireless tools in Linux, such as iwconfig, wpa_cli, which can in theory display dBm values for both the signal strength (which works without problems) and the noise floor (which I am not able to get).
However, as far as I understand whether a reasonable noise value is actually calculated is dependent on the support by the driver of the WiFi chipset. To my bad luck, it seems that I am not in possession of any such chipset and I find a hard time to see, which chipset drivers actually do support a noise measurement (Chipsets tested BCM43438, AR9271, RTL8723BE, RTL8188CU). See also e.g. this question.

The reason this noise value would be very attractive to me, is that it is already the product of a specific algorithm that takes the radio spectrum in the WiFi channel of choice and processes this input to give a single value for noise. (If anybody knows anything about those algorithms used, please let me know, I would also be interested in that).

Can anybody help me:

In order to perform meaningful WiFi noise measurements in the 2.4 GHz (and possibly also the 5 GHz WiFi-band), I was wondering, if I need special drivers for my WiFi hardware that can provide the noise information? Could anybody point me into some direction how I could get a reasonable noise measurement with any standard WiFi chipset.

  • 2
    You can't accurately understand noise floor with just WiFi hardware... luckily, an RPi 3 Model B+ can act as an SDR in these bands! github.com/seemoo-lab/mobisys2018_nexmon_software_defined_radio/… (I'm not sure if it's possible to Rx)
    – Attie
    Apr 14 '18 at 9:33
  • Thanks for the suggestion. I will for sure take a look at it.
    – oh.dae.su
    Apr 14 '18 at 19:43
  • 1
    @Attie The Nexmon Project was an interesting read. From what I can understand it seems to be an SDR for Tx only. However, in General it would be interesting, if the new WiFi chipset on the RPi 3B+ was able to output a reasonable noise measurement value. Unfortunately, at the Moment I do not have Access to one.
    – oh.dae.su
    Apr 17 '18 at 7:53
  • I had suspected as much from a quick look... I have a 3B+, so might try giving it a go... no promises though.
    – Attie
    Apr 17 '18 at 10:32

I posit you are just not using the correct software - it would seem very strange for any WIFI chip to not be able to tell you the signal level. (On my Ubuntu box) I just typed :

iwlist wlan0 scanning  | egrep "SSID|Quality"

To get a list of SSIDs and their signal levels. FWIW I have a Dell laptop with built in Wifi. LSPCI lists the card as Intel Corporation Wireless 3165 (rev 79)

I did the same thing on my Asus RT-AC68U router (running dd-wrt), and once I worked out that the interface was eth1 for WIFI device, this worked as well. this device claims to have a BCM4360 802.11ac Wireless Network Adptor (rev 03)

Note that these tools will only detect interference from other Wifi gear - if interference is coming from something that does not speak the Wifi protocol (Microwave, analog interface for an arduino, electric fence), you may need expensive equipment. That said, it might be possible to make some inferences by connecting to an AP and processing the output of

cat /proc/net/wireless

Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000   70.  -27.  -256        0      0      0      0     42        0
  • 4
    Thanks a lot for your suggestion. Actually on all of my wifi chipsets the iwlist command you mentioned gives me an output of Quality and Signal level. However, it is missing the entry Noise, which afaik gives information about the noise floor that could be also of non-WiFi origin (which is what I am looking for). Without checking the source code producing the output in /proc/net/wireless, I am pretty sure that a noise value =-256dBm is a default value and indicates that no noise measurement is available, as such a low value is unreasonable, due to e.g. thermal noise, which is always present.
    – oh.dae.su
    Apr 14 '18 at 19:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.