local uci = require "luci.model.uci".cursor()
local ntm = require "luci.model.network"
+ local has_iwinfo = pcall(require, "iwinfo")
+
ntm.init(uci)
function guess_wifi_hw(ifname)
+ local bands = ""
local name, idx = ifname:match("^([a-z]+)(%d+)")
idx = tonumber(idx)
+ if has_iwinfo then
+ local iw = luci.sys.wifi.getiwinfo(ifname)
+ local bl = iw.hwmodelist
+ if bl and next(bl) then
+ if bl.a then bands = bands .. "a" end
+ if bl.b then bands = bands .. "b" end
+ if bl.g then bands = bands .. "g" end
+ if bl.n then bands = bands .. "n" end
+ end
+ end
+
-- wl.o
if name == "wl" then
- local name = "Broadcom 802.11 Wireless Controller"
+ local name = "Broadcom 802.11%s Wireless Controller" % bands
local nm = 0
local fd = nixio.open("/proc/bus/pci/devices", "r")
-- madwifi
elseif name == "ath" or name == "wifi" then
- return "Atheros 802.11 Wireless Controller"
+ return "Atheros 802.11%s Wireless Controller" % bands
-- ralink
elseif name == "ra" then
- return "RaLink 802.11 Wireless Controller"
+ return "RaLink 802.11%s Wireless Controller" % bands
-- prism?
elseif name == "eth" then
- return "Prism 802.11 Wireless Controller"
+ return "Prism 802.11%s Wireless Controller" % bands
-- dunno yet
else
- return "Generic 802.11 Wireless Controller"
+ return "Generic 802.11%s Wireless Controller" % bands
end
end
<%+header%>
+<% if not has_iwinfo then %>
+ <div class="errorbox">
+ <strong><%:Package libiwinfo required!%></strong><br />
+ <%_The <em>libiwinfo</em> package is not installed. You must install this component for working wireless configuration!%>
+ </div>
+<% end %>
+
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript"><![CDATA[
+<script type="text/javascript">//<![CDATA[
var iwxhr = new XHR();
var wifidevs = <%=luci.http.write_json(netdevs)%>;
var arptable = <%=luci.http.write_json(arpcache)%>;
{
if (is_assoc)
info.innerHTML = String.format(
- '<strong><%:SSID%>:</strong> %s | ' +
+ '<strong><%:SSID%>:</strong> %h | ' +
'<strong><%:Mode%>:</strong> %s<br />' +
'<strong><%:BSSID%>:</strong> %s | ' +
'<strong><%:Encryption%>:</strong> %s',
iw.encryption ? iw.encryption.description : '<%:None%>'
);
else
- info.innerHTML = '<em><%:Wireless is disabled or not associated%></em>';
+ info.innerHTML = String.format(
+ '<strong><%:SSID%>:</strong> %h | ' +
+ '<strong><%:Mode%>:</strong> %s<br />' +
+ '<em><%:Wireless is disabled or not associated%></em>',
+ iw.ssid || '?', iw.mode
+ );
}
var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo');
{
var img = document.getElementById(dev + '-iw-upstate');
if (img)
- img.src = '<%=resource%>/icons/wifi' + (devup[dev] ? '' : '_disabled') + '.png';
+ img.src = '<%=resource%>/icons/wifi_big' + (devup[dev] ? '' : '_disabled') + '.png';
}
}
};
update_status();
-]]></script>
+//]]></script>
<h2><a id="content" name="content"><%:Wireless Overview%></a></h2>
<table class="cbi-section-table" style="margin:10px; empty-cells:hide">
<!-- physical device -->
<tr>
- <td style="width:34px"><img src="<%=resource%>/icons/wifi_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
+ <td style="width:34px"><img src="<%=resource%>/icons/wifi_big_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
<td colspan="2" style="text-align:left">
<big><strong><%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)</strong></big><br />
<span id="<%=dev:name()%>-iw-devinfo"></span>