# Initial automatic channel selection implementation

Luis R. Rodriguez mcgrof
Thu Jun 2 15:36:02 PDT 2011

```On Thu, May 26, 2011 at 5:59 PM, Luis R. Rodriguez <mcgrof at gmail.com> wrote:
> ?What I'd like to do is to affect the ratio to nullify it if the noise
> ?is very low on the channel. Given that noise is logarithmic we'd have
> ?to use a logarithmic function as well. Working on that now.

OK I've figured a way to plug the noise into this, I designed the
following function we can use as a factor:

1.1^(x+110)

Wolfram|Alpha boring details of this function:

http://bit.ly/mJNXE9

x,y results of different noise values in dBm, using apcalc:

mcgrof at tux ~ \$ calc
C-style arbitrary precision calculator (version 2.12.3.3)
Calc is open software. For license details type:  help copyright
[Type "exit" to exit, or "help" for help.]

; define f(x) = 1.1^(x+110)
f(x) defined

; f(-130)
~0.14864362802414368640
; f(-120)
~0.38554328942953174736
; f(-119)
~0.42409761837248492210
; f(-118)
~0.46650738020973341431
; f(-117)
~0.51315811823070675574
; f(-116)
~0.56447393005377743132
; f(-115)
~0.62092132305915517445
; f(-114)
~0.68301345536507069189
; f(-113)
~0.75131480090157776108
; f(-112)
~0.82644628099173553719
; f(-111)
~0.90909090909090909091
; f(-110)
1
; f(-109)
1.1
; f(-108)
1.21
; f(-107)
1.331

So then, we'd use a frequency for initiating beaconing (AP, Mesh, P2P)
which uses the lowest value from the following computation:

(busy time - tx time) / (active time - tx time) * 1.1^(noise + 110)

The 1.1 factor can be modified more accurately to represent the
exponential factor of how noise should affect interference decisions,
the 110 value here can be modified for any other arbitrary value we
find as representative of a regular noise value from a simple AP on
the frequency we are observing, my assumption here was -110 dBm.

If I don't hear yells I'll implement this algorithm, but first I want
to add APIs to let us query for survey data for specific frequencies,
the current stuff assumes the dump data will be useful within the time
period we get it, but the way I'm thinking of doing it is to do each
frequency analysis atomically -- change channel / do offchannel
operation on a frequency, and then get the survey data for that
frequency and compute the above. Then choose the frequency with the
lowest value. This would allow us to do work without regards to any
possible stale data. We could also later add a history of these values
and compute an average and keep picking the best one. Anyway, that's
that. Let me know what you think.

Luis

```

More information about the Hostap mailing list