如何在不断开连接的情况下切换wifi通道?

时间:2015-04-21 10:44:05

标签: linux embedded wifi

我们正在开发通过wifi连接并做一些工作的小型互联网连接设备。它通过移动应用程序控制。

出于配置目的,我们使用wi-fi模块,它可以通过两个接口wlan0和wlan1同时在两种STA + AP模式下工作。其中一个接口在主模式下工作。电话通过wlan1连接到设备,并发送命令让设备连接到另一个网络并等待结果。设备依次使用wlan0连接到另一个Wi-Fi网络,如果连接成功则通知电话。

但是有一个问题。两个接口(wlan0和wlan1)必须在与我们具有单个硬件模块相同的通道上工作。这导致wlan1的通道改变以匹配wlan0的通道。

这就是问题所在。当频道改变时,电话会失去与设备的连接。 有没有办法改变Wi-Fi频道,但保持设备和手机之间的连接?

我们的Wi-Fi模块是rtl8723bu。 Linux 3.4.103。 Wifi守护进程:hostapd v0.8.x_rtw_r7475.20130812_beta,wpa_supplicant v2.3。

更新
这里更清楚地描述了设备上发生了什么。

假设手机已经连接到设备wlan1接口,并且essid DeviceAp位于通道1上。我们有一个带有essid RouterAp的路由器,它位于通道6上。设备接口wlan0未配置且未运行。 (下图中的步骤1)。

然后手机向设备发送连接到RouterAp的请求。 (下图中的步骤2)。

当wlan0开始连接到RouterAp时,它会更改工作频道。因为WiFi模块只能在一个通道上工作。 wlan1的频道也会发生变化(可能很难)。因此,Phone丢失了DeviceAp并开始漫游。 (下图中的步骤3)。

所以更新问题是:

有没有办法告诉手机(或其他设备)网络更改?或者可能会增加手机连接回DeviceAP的可能性。

此行为与设置Google Chromecast的过程非常相似。 Chromecast还有两个无线接口并可以更改频道,但手机不会丢失与它的连接。

图像:
http://postimg.org/image/soh78vd17/

0 个答案:

没有答案