解决OpenWrt无线搜索错误bug

在升级TP-LINK 841n的OpenWrt系统到 Barrier Breaker r41988后,发现无线搜索功能失效。通过源码分析,定位到问题在于lua/luci/sys.lua模块中的iwinfo调用。修复方法包括重新编译iwinfo并更新到路由器,解决了iwinfo radio0 scan的问题,从而恢复了无线搜索功能。
摘要由CSDN通过智能技术生成

    TP-LINK 841n路由更新openwrt系统到Barrier Breaker r41988,“网络”-->“无线”-->“搜索”这个功能就不能用了,trunk版的也有这个问题。其实今年4、5月份玩HG255D路由就有这个问题,但当时的源码编译给TP-LINK 841n却没有这个问题。对这样的问题,确实比较头大,花了两天时间终于找到bug所在(只解决wr841n的,我的hg255d出问题了)。

    无线搜索bug截图(注意device参数radio0):

一番搜索后发现此页面的源码在系统的/usr/lib/lua/luci/view/admin_network/wifi_join.htm文件里,对应openwrt的源码路径为./feeds/luci/modules/admin-full/luasrc/view/admin_network/wifi_join.htm。终于要代码如下:

<%-

	local sys = require "luci.sys"
	local utl = require "luci.util"

	function guess_wifi_signal(info)
		local scale = (100 / (info.quality_max or 100) * (info.quality or 0))
		local icon

		if not info.bssid or info.bssid == "00:00:00:00:00:00" then
			icon = resource .. "/icons/signal-none.png"
		elseif scale < 15 then
			icon = resource .. "/icons/signal-0.png"
		elseif scale < 35 then
			icon = resource .. "/icons/signal-0-25.png"
		elseif scale < 55 then
			icon = resource .. "/icons/signal-25-50.png"
		elseif scale < 75 then
			icon = resource .. "/icons/signal-50-75.png"
		else
			icon = resource .. "/icons/signal-75-100.png"
		end

		return icon
	end

	function percent_wifi_signal(info)
		local qc = info.quality or 0
		local qm = info.quality_max or 0

		if info.bssid and qc > 0 and qm > 0 then
			return math.floor((100 / qm) * qc)
		else
			return 0
		end
	end

	function format_wifi_encryption(info)
		if info.wep == true then
			return "WEP"
		elseif info.wpa > 0 then
			return translatef("<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>",
				table.concat(info.pair_ciphers, ", "),
				table.concat(info.group_ciphers, ", "),
				(info.wpa == 3) and translate("mixed WPA/WPA2")
					or (info.wpa == 2 and "WPA2" or "WPA"),
				table.concat(info.auth_suites, ", ")
			)
		elseif info.enabled then
			return "<em>%s</em>" % translate("unknown")
		else
			return "<em>%s</em>" % translate("open")
		end
	end

	local dev = luci.http.formvalue("device")
	local iw = luci.sys.wifi.getiwinfo(dev)

	if not iw then
		luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
		return
	end


	function scanlist(times)
		local i, k, v
		local l = { }
		local s = { }

		for i = 1, times do
			for k, v in ipairs(iw.scanlist or { }) do
				if not s[v.bssid] then
					l[#l+1] = v
					s[v.bssid] = true
				end
			end
		end

		return l
	end
-%>

<%+header%>

<h2><a 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenWrt无线桥接是一种网络连接技术,它可以将多个无线网络连接在一起,形成一个统一的无线网络。通过OpenWrt路由器的配置和管理,我们可以将不同的无线网络桥接在一起,让它们互相通信,扩大无线网络的覆盖范围。 在OpenWrt中实现无线桥接需要做以下几个步骤: 1. 首先,确保你的OpenWrt路由器已经正确连接了无线网络,并且可以正常访问互联网。 2. 登录到OpenWrt的Web管理界面,找到“网络”菜单下的“接口”选项,并点击“新增接口”按钮。 3. 在新增接口的设置界面中,选择“无线电波接口”作为接口类型,并选择你要桥接的无线网络,填写相应的SSID和密码。 4. 在接口设置中,选择“桥接”作为接口协议,并选择要桥接的LAN接口。 5. 点击“保存&应用”按钮,保存配置并应用到OpenWrt路由器上。 6. 完成以上步骤后,OpenWrt路由器会自动进行无线桥接设置,并重新启动无线网络。通过其他设备连接到这个无线网络,就能够访问到原始无线网络中的资源。 需要注意的是,开启无线桥接之后,无线网络的性能可能会受到一定影响,特别是在信号传输中有一定的延迟。此外,无线桥接还需要确保每个无线网络使用相同的网络协议和加密方式,以便实现成功的桥接。 总之,OpenWrt无线桥接功能可以帮助我们扩大无线网络的覆盖范围,提供更加便捷的网络连接方式。只需要按照上述步骤进行配置,就能够轻松地搭建无线桥接网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值