[kismac] Re: Signal strength

  • From: Robin L Darroch <robin@xxxxxxxxxxxxx>
  • To: kismac@xxxxxxxxxxxxx
  • Date: Thu, 2 Mar 2006 06:39:37 +0800

Whatever numbers are produced, regardless of all proscriptions against such behaviour, people are going to use them for comparison purposes, and then they are going to get mightily confused. In FreeBSD parlance, this would be a serious violation of POLA (Principle of Least Astonishment).

Hi Brad,

I think your principles are correct, but your conclusion is actually counter to those principles. As you say, people are going to use numbers to compare no matter what we tell them. Now lets look at two scenarios for such a comparison:

- warwalker Alice has a 12" iBook with Airport Extreme passive mode. When she's parked right next to a router, she gets a raw strength of 110. When a network is on the threshold of reception, she gets 60.
- warwalker Brian has a 17" PowerBook, also with Airport Extreme passive mode. Sitting next to a router, he gets raw strength 150. At the threshold of reception, he gets 70.

1) No scaling - existing raw numbers only:

* Alice walks past the north side of a house, and gets a signal of 80.
* Brian walks past the south side of the same house, and gets a signal of 100.
* Alice and Brian compare notes. Since they both have computers using Airport Extreme passive mode, they quite reasonably assume that the numbers are comparable, and thus conclude that the router is closer to the south side of the house than the north side. Imagine their astonishment when they visit the occupants and find the router sitting in one of the northern rooms!

2) Auto-scaling using the algorithm posted:

* Alice walks past the north side of the house, and gets a scaled strength of 41.
* Brian walks past the south side of the same house, and gets a scaled strength of 38.
* Alice and Brian compare notes (although we told them not to) and conclude that the router is closer to the north side of the house. When they make the same visit, they admire how clever they were to ignore our warnings.

In this case, the POLA is actually to provide auto-scaling, not the raw values KisMAC currently shows.

However, I'm not sure you've understood my proposal as I intended it (and I probably didn't explain it that well). The auto-scaling should NOT happen the way the graphs are currently auto-scaled. The graphs are (quite appropriately) scaled based on "what signal strengths have I seen lately". By contrast, the scaling values for signal strength will have to be auto-learned from the time when that driver was first added to the list in KisMAC (i.e. "what signal strengths have I seen *ever*"). This means that they increase in accuracy in a logarithmic curve, very rapidly improving at first (i.e. the first several networks scanned since installing the driver will have rough and inaccurate scaled strengths, although still relatively correct with respect to each other), then reaching the point where the weakest and strongest signals ever seen probably won't change much at all (because they'll have encountered - at least once - the "right next to the router" and the "threshold of hearing" situations). Essentially, KisMAC would always be learning, but after the initial period of inaccuracy, it would be pretty close to the mark.

In some cases (e.g. the apartment where I live), the training would be almost instantaneous: I have a network of my own, and there's another network which the Airport can only just pick up from time to time. If I ran KisMAC here, then later took it wardriving, my auto-scaled strengths would be pretty close to the mark right away, and would be far more comparable to anyone else's (reasonably trained) auto-scaled strengths than any existing raw figures.

Yes, it should be optional to turn it on, but I don't think the fact that it might be used to make an inappropriate comparison is a reason to exclude it from the program altogether: we already present data that will give wildly inaccurate comparisons, and don't even warn people that they shouldn't compare. The case I've given above goes much more in favour of learned auto-scaling if Alice has a DWL-122 instead of Airport Extreme (e.g. signals ranging from 5 to 50). In that case, she'd have got a raw strength of 23 compared to Brian's 100, and they would have figured that the router must be outside the south wall of the house, or even across the street to the south, which is a completely incorrect conclusion. If using auto-scaled values, Alice would still have got 41.

As for what to save in KisMAC's data files, that's another matter. Perhaps with each network saved, save the raw signal strength, and include an index number for what adapter picked it up, and then at the end of the file list the adapter(s) installed when the file was created (with some uniquely identifying number for each... MAC address? BSSID?) and their current minimum and maximum signal values. That way, the strengths can be displayed according to the user's preference (i.e. raw or auto-scaled) on either the same computer or another computer, while still allowing the scaling to improve in accuracy with later learning on the original computer that did the scan.

Hmm... this is getting a bit big... but the more I think about it, the more convinced I am that it would be a considerable improvement to the current numbers we show - we just need to be sure to get it right.

This doesn't exclude the possibility of using dBm if/when we can gather data on translating raw signals to dBm for all supported adapters: just let the user choose - raw, dBm, or auto-scaled.

 Robin L. Darroch - PO Box 2715, South Hedland WA 6722 - +61 421 503 966
      robin@xxxxxxxxxxxxx - robin@xxxxxxxxxxx - robin@xxxxxxxxxxxxx

Other related posts: