Programmatic access to 802.11 info
Jordan Coleman
jordan at JordanColeman.com
Thu Apr 3 17:27:26 UTC 2008
We are currently working on an embedded application that need to
connect to wireless networks. The UI lets the user configure one or
more networks, select whether to use a specific network or roam among
a list of SSIDs, view SSID scan information etc. We are wrapping
wpa_supplicant and letting it handle network selection, roaming, WPA
(as well as WEP), etc. and that seems to work well enough. However,
at the moment, we're having trouble getting various status information
in a reliable and efficient manner.
Our temporary code invokes "ifconfig -v <dev> list scan" and scrapes
its output to get scanning info (it appears to provide more and better
info than wpa_supplicant's 'scan results' command). Similarly, we're
scraping "wpa_cli status" and "ifconfig <dev> list sta" for
association and signal strength information. At best, this seems like
the hard way to get this info and it's darn ugly, too (polling sucks,
but having to fork and exec ifconfig on every poll sucks even more).
What's more, some of the information we want, such as signal quality
("n out of 5 bars", etc.), isn't really available. We can get RSSI
from "ifconfig list sta", but it's not the same thing.
So can anyone suggest how to go about getting this information
straight from the system? The application is primarily written in
Perl, but Perl is not a hard requirement for this portion of the
code. The device runs FreeBSD 7 and the wireless hardware is Atheros-
based. So far, I've been unsuccessful in finding helpful docs and the
FreeBSD wireless code is big enough to make grokking it a challenge.
Thanks in advance for any help you can provide.
++Jordan
More information about the freebsd-embedded
mailing list