5 function printf(fmt, ...)
6 print(string.format(fmt, ...))
25 function print_info(api, dev)
26 local iw = iwinfo[api]
27 local enc = iw.encryption(dev)
29 local function hwmode()
30 local m = iw.hwmodelist(dev)
33 if m.a then s = s.."a" end
34 if m.b then s = s.."b" end
35 if m.g then s = s.."g" end
36 if m.n then s = s.."n" end
43 printf("%-9s ESSID: \"%s\"",
46 printf(" Access Point: %s",
49 printf(" Type: %s HW Mode(s): %s",
52 printf(" Mode: %s Channel: %d (%.3f GHz)",
53 s(iw.mode(dev)), n(iw.channel(dev)), n(iw.frequency(dev)) / 1000)
55 printf(" Tx-Power: %s dBm Link Quality: %s/%s",
56 s(iw.txpower(dev)), s(iw.quality(dev)), s(iw.quality_max(dev)))
58 printf(" Signal: %s dBm Noise: %s dBm",
59 s(iw.signal(dev)), s(iw.noise(dev)))
61 printf(" Bit Rate: %.1f MBit/s",
62 n(iw.bitrate(dev)) / 1000)
64 printf(" Encryption: %s",
65 s(enc and enc.description))
70 function print_scan(api, dev)
71 local iw = iwinfo[api]
72 local sr = iw.scanlist(dev)
75 if sr and #sr > 0 then
76 for si, se in ipairs(sr) do
77 printf("Cell %02d - Address: %s", si, se.bssid)
78 printf(" ESSID: \"%s\"",
81 printf(" Mode: %s Channel: %d",
82 s(se.mode), n(se.channel))
84 printf(" Signal: %s dBm Quality: %d/%d",
85 s(se.signal), n(se.quality), n(se.quality_max))
87 printf(" Encryption: %s",
88 s(se.encryption.description))
93 print("No scan results or scanning not possible")
98 function print_txpwrlist(api, dev)
99 local iw = iwinfo[api]
100 local pl = iw.txpwrlist(dev)
101 local cp = n(iw.txpower(dev))
104 if pl and #pl > 0 then
105 for _, pe in ipairs(pl) do
106 printf("%s%3d dBm (%4d mW)",
107 (cp == pe.dbm) and "*" or " ",
111 print("No TX power information available")
117 function print_freqlist(api, dev)
118 local iw = iwinfo[api]
119 local fl = iw.freqlist(dev)
120 local cc = n(iw.channel(dev))
123 if fl and #fl > 0 then
124 for _, fe in ipairs(fl) do
125 printf("%s %.3f GHz (Channel %d)%s",
126 (cc == fe.channel) and "*" or " ",
127 n(fe.mhz) / 1000, n(fe.channel),
128 fe.restricted and " [restricted]" or "")
131 print("No frequency information available")
137 function print_assoclist(api, dev)
138 local iw = iwinfo[api]
139 local al = iw.assoclist(dev)
142 if al and next(al) then
143 for ai, ae in pairs(al) do
144 printf("%s %s dBm", ai, s(ae.signal))
147 print("No client connected or no information available")
153 function print_countrylist(api, dev)
154 local iw = iwinfo[api]
155 local cl = iw.countrylist(dev)
156 local cc = iw.country(dev)
159 if cl and #cl > 0 then
160 for _, ce in ipairs(cl) do
162 (cc == ce.alpha2) and "*" or " ",
166 print("No country code information available")
175 print(" iwinfo <device> info")
176 print(" iwinfo <device> scan")
177 print(" iwinfo <device> txpowerlist")
178 print(" iwinfo <device> freqlist")
179 print(" iwinfo <device> assoclist")
180 print(" iwinfo <device> countrylist")
185 local api = iwinfo.type(dev)
187 print("No such wireless device: " .. dev)
192 if arg[2]:match("^i") then
195 elseif arg[2]:match("^s") then
198 elseif arg[2]:match("^t") then
199 print_txpwrlist(api, dev)
201 elseif arg[2]:match("^f") then
202 print_freqlist(api, dev)
204 elseif arg[2]:match("^a") then
205 print_assoclist(api, dev)
207 elseif arg[2]:match("^c") then
208 print_countrylist(api, dev)
211 print("Unknown command: " .. arg[2])