Date: Thu, 3 Apr 2008 13:09:01 -0400 From: Jordan Coleman <jordan@JordanColeman.com> To: freebsd-embedded@freebsd.org Subject: Programmatic access to 802.11 info Message-ID: <8C45E249-2E03-4F70-B3C2-E28A92EEFB05@JordanColeman.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8C45E249-2E03-4F70-B3C2-E28A92EEFB05>