From fbebafa73edb7603afc9ee5ac9f73d6b51a5f06f Mon Sep 17 00:00:00 2001 From: anatar818 <151121941+anatar818@users.noreply.github.com> Date: Tue, 22 Jul 2025 15:01:32 +0530 Subject: [PATCH 1/9] RDKBACCL-863 brlan0 interface MAC ID is changing upon every device reboot , added changes in the existing mac address code to generate mac address for brlan0 based upon the serial number which is unique same as for other interfaces like wifi0 etc --- rdkb-bpi-mac/source/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rdkb-bpi-mac/source/main.cpp b/rdkb-bpi-mac/source/main.cpp index 9d64ebb..cb9281b 100644 --- a/rdkb-bpi-mac/source/main.cpp +++ b/rdkb-bpi-mac/source/main.cpp @@ -38,7 +38,8 @@ int main() { {"lan3", 0x01, 0x03}, {"wifi0", 0x02, 0x00}, {"wifi1", 0x02, 0x01}, - {"wifi2", 0x02, 0x02} + {"wifi2", 0x02, 0x02}, + {"brlan0", 0x02, 0x00} }; // Read serial number From ac1aa76f1d4ca53ff1ab374cc9cba33ebd510b70 Mon Sep 17 00:00:00 2001 From: "keerthana.p" Date: Fri, 8 Aug 2025 13:55:48 +0100 Subject: [PATCH 2/9] RDKBACCL-1004 : Need to add logic of wifi constant mac for EM builds Reason for change: Added required interface list to support ctrl and ext Test procedure: Tested with daisy chain Risks: None Signed-off-by: keerthana.p --- rdkb-bpi-mac/source/main.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rdkb-bpi-mac/source/main.cpp b/rdkb-bpi-mac/source/main.cpp index cb9281b..2b31b37 100644 --- a/rdkb-bpi-mac/source/main.cpp +++ b/rdkb-bpi-mac/source/main.cpp @@ -39,7 +39,13 @@ int main() { {"wifi0", 0x02, 0x00}, {"wifi1", 0x02, 0x01}, {"wifi2", 0x02, 0x02}, - {"brlan0", 0x02, 0x00} +#if defined(_EM_BUILD_) + {"wifi1.1", 0x02, 0x03}, +#if defined(_EM_EXT_BUILD_) + {"wifi0.1", 0x02, 0x04}, +#endif +#endif + {"brlan0", 0x03, 0x00} }; // Read serial number From 6434d44142f12073fd981c7ed81d0550ac91ed93 Mon Sep 17 00:00:00 2001 From: Prabhudas Gannavarapu Date: Mon, 11 Aug 2025 16:13:29 +0000 Subject: [PATCH 3/9] RDKBACCL-870: Integrating "gw-lan-refresh" utility for banana pi Reason for change: Integrating gw_lan_refresh utility for banana pi. Test Procedure: Execute gw_lan_refresh command from the device console and verify that lan ports are refreshing are not. Risks: None Signed-off-by: Prabhudas Gannavarapu --- gw-lan-refresh/Readme | 42 +++++++++ gw-lan-refresh/source/gw_lan_refresh.c | 124 +++++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 gw-lan-refresh/Readme create mode 100644 gw-lan-refresh/source/gw_lan_refresh.c diff --git a/gw-lan-refresh/Readme b/gw-lan-refresh/Readme new file mode 100644 index 0000000..c88f5c5 --- /dev/null +++ b/gw-lan-refresh/Readme @@ -0,0 +1,42 @@ +Description: +This code implements an application to refresh the lan clients connected ports for updating the DHCP configuration. + +Core Functionality: +The program is to refresh all the eth ports except the port which is associated with WAN for BPI R4 device. As part of the refresh it will restart wifi clients using "X_CISCO_COM_KickAssocDevices" DM. + +Sample Output: +root@Filogic-GW:/rdklogs/logs# gw_lan_refresh +[ 619.265690] brlan0: port 1(lan1) entered disabled state +[ 619.275415] mt7530 mdio-bus:1f lan2: Link is Down +[ 619.281093] brlan0: port 2(lan2) entered disabled state +[ 619.291225] brlan0: port 3(lan3) entered disabled state +gw_lan_refresh +refresh_external_switch(): setting admin status down for port 1 +refresh_external_switch(): setting admin status down for port 2 +refresh_external_switch(): setting admin status down for port 3 +[ 623.300639] mt7530 mdio-bus:1f lan1: configuring for phy/gmii link mode +[ 623.307505] 8021q: adding VLAN 0 to HW filter on device lan1 +[ 623.317077] mt7530 mdio-bus:1f lan2: configuring for phy/gmii link mode +[ 623.324052] 8021q: adding VLAN 0 to HW filter on device lan2 +[ 623.333377] mt7530 mdio-bus:1f lan3: configuring for phy/gmii link mode +[ 623.340286] 8021q: adding VLAN 0 to HW filter on device lan3 +root@Filogic-GW:/rdklogs/logs# [ 623.530492] wifi1: moving STA e0:1f:88:f9:ac:36 to state 3 +[ 623.556269] wifi1: Rx BA session stop requested for e0:1f:88:f9:ac:36 tid 0 recipient reason: 36 +[ 623.565837] wifi1: Rx BA session stop requested for e0:1f:88:f9:ac:36 tid 1 recipient reason: 36 +[ 623.575016] wifi1: Rx BA session stop requested for e0:1f:88:f9:ac:36 tid 7 recipient reason: 36 +[ 623.584323] wifi1: Tx BA session stop requested for e0:1f:88:f9:ac:36 tid 0 +[ 623.620043] wifi1: Tx BA session stop requested for e0:1f:88:f9:ac:36 tid 1 +[ 623.644235] wifi1: Tx BA session stop requested for e0:1f:88:f9:ac:36 tid 4 +[ 623.672113] wifi1: Tx BA session stop requested for e0:1f:88:f9:ac:36 tid 7 +[ 623.752069] mt7996e 0000:01:00.0: mt7996_set_key: keyidx=0, link_bitmap=0x1 (STA e0:1f:88:f9:ac:36) +[ 623.761882] wifi1: moving STA e0:1f:88:f9:ac:36 to state 2 +[ 623.767478] wifi1: moving STA e0:1f:88:f9:ac:36 to state 1 +[ 623.773033] mt7996e 0000:01:00.0: mt7996_mac_sta_remove_links: removed_links=0x1 +[ 623.780450] mt7996e 0000:01:00.0: mt7996_mcu_add_sta: link=0, wcid=1, newly=0, conn_state=0 +[ 623.790781] wifi1: Removed STA e0:1f:88:f9:ac:36 +[ 623.795875] wifi1: Destroyed STA e0:1f:88:f9:ac:36 +refresh_external_switch(): setting admin status up for port 1 +refresh_external_switch(): setting admin status up for port 2 +refresh_external_switch(): setting admin status up for port 3 +Successfully set Device.WiFi.AccessPoint.1.X_CISCO_COM_KickAssocDevices +Successfully set Device.WiFi.AccessPoint.2.X_CISCO_COM_KickAssocDevices diff --git a/gw-lan-refresh/source/gw_lan_refresh.c b/gw-lan-refresh/source/gw_lan_refresh.c new file mode 100644 index 0000000..504b39a --- /dev/null +++ b/gw-lan-refresh/source/gw_lan_refresh.c @@ -0,0 +1,124 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2025 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +/** + * @file gw_lan_refresh.c + * @brief Main program entry for the Gateway Lan Refresh daemon + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ccsp/ccsp_hal_ethsw.h" + +#define CONSOLE_LOG_FILE "/rdklogs/logs/Consolelog.txt.0" + +#define DBG_PRINT(fmt ...) {\ + FILE *fp = NULL;\ + fp = fopen ( CONSOLE_LOG_FILE, "a+");\ + if (fp)\ + {\ + fprintf(fp,fmt);\ + fclose(fp);\ + }\ +}\ + + +#define SLEEP_TIME 4 + +pthread_mutex_t gw_lan_mutex = PTHREAD_MUTEX_INITIALIZER; + +void refresh_external_switch() +{ + CCSP_HAL_ETHSW_PORT port; + INT max_phy_eth_ports = 0; + + /* Total 3 LAN ports*/ + max_phy_eth_ports = CCSP_HAL_ETHSW_EthPort3; + + for (port = CCSP_HAL_ETHSW_EthPort1; port <= max_phy_eth_ports; port++) + { + // Disable the port + DBG_PRINT("%s(): setting admin status down for port %d\n", __FUNCTION__, port); + CcspHalEthSwSetPortAdminStatus(port, CCSP_HAL_ETHSW_AdminDown); + } + + sleep(SLEEP_TIME); + + for (port = CCSP_HAL_ETHSW_EthPort1; port <= max_phy_eth_ports; port++) + { + // Enable the port + DBG_PRINT("%s(): setting admin status up for port %d\n", __FUNCTION__, port); + CcspHalEthSwSetPortAdminStatus(port, CCSP_HAL_ETHSW_AdminUp); + } +} + +void set_wifi_refresh_dm(rbusHandle_t handle, const char* param) { + pthread_mutex_lock(&gw_lan_mutex); + + rbusError_t err = rbus_setBoolean(handle, param, true); + if (err != RBUS_ERROR_SUCCESS) { + DBG_PRINT("Failed to set %s: %d\n", param, err); + } else { + DBG_PRINT("Successfully set %s\n", param); + } + + pthread_mutex_unlock(&gw_lan_mutex); +} + +void refresh_wifi() +{ + rbusHandle_t handle; + rbusError_t err; + err = rbus_open(&handle, "gw_lan_refresh"); + if (err != RBUS_ERROR_SUCCESS) { + DBG_PRINT("Failed to initialize RBus: %d\n", err); + } + /* dis-associate connected wifi clients */ + set_wifi_refresh_dm(handle,"Device.WiFi.AccessPoint.1.X_CISCO_COM_KickAssocDevices"); + set_wifi_refresh_dm(handle,"Device.WiFi.AccessPoint.2.X_CISCO_COM_KickAssocDevices"); + + rbus_close(handle); +} + +int main(int argc, char **argv) +{ + if (argc == 2) { + if (strncmp (argv[1], "ethsw", strlen ("ethsw")) == 0) { + DBG_PRINT ("[%s] calling to update ethsw setting \n",argv[0]); + refresh_external_switch(); + }else if (strncmp (argv[1], "wifi", strlen ("wifi")) == 0) { + DBG_PRINT ("[%s] calling to update wifi setting \n",argv[0]); + refresh_wifi(); + } + else { + + } + }else { + DBG_PRINT("gw_lan_refresh \n"); + refresh_external_switch(); + refresh_wifi(); + } + return 0; +} From 8dc573c6b82ba5e164cf1287d4ab5c659bd38641 Mon Sep 17 00:00:00 2001 From: Prabhudas Gannavarapu Date: Wed, 13 Aug 2025 13:04:53 +0000 Subject: [PATCH 4/9] RDKBACCL-870: Integrating "gw-lan-refresh" utility for banana pi Reason for change: Adding Preceding # for Headings. Risks: None Signed-off-by: Prabhudas Gannavarapu --- gw-lan-refresh/Readme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gw-lan-refresh/Readme b/gw-lan-refresh/Readme index c88f5c5..3ba8bb4 100644 --- a/gw-lan-refresh/Readme +++ b/gw-lan-refresh/Readme @@ -1,10 +1,10 @@ -Description: +# Description This code implements an application to refresh the lan clients connected ports for updating the DHCP configuration. -Core Functionality: +# Core Functionality The program is to refresh all the eth ports except the port which is associated with WAN for BPI R4 device. As part of the refresh it will restart wifi clients using "X_CISCO_COM_KickAssocDevices" DM. -Sample Output: +# Sample Output root@Filogic-GW:/rdklogs/logs# gw_lan_refresh [ 619.265690] brlan0: port 1(lan1) entered disabled state [ 619.275415] mt7530 mdio-bus:1f lan2: Link is Down From e9f1fe40839e4aea4e37c5550fea472fcb301015 Mon Sep 17 00:00:00 2001 From: "keerthana.p" Date: Fri, 29 Aug 2025 08:55:21 +0100 Subject: [PATCH 5/9] RDKBACCL-1050 : Increment Vap's number and validate the EasyMesh functionality Reason for change: Add support of BH,iot vap's in InterfaceMap and scripts Test Procedure: Build successful Risks: Low Signed-off-by: keerthana.p --- rdkb-bpi-mac/source/main.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rdkb-bpi-mac/source/main.cpp b/rdkb-bpi-mac/source/main.cpp index 2b31b37..5ae32c0 100644 --- a/rdkb-bpi-mac/source/main.cpp +++ b/rdkb-bpi-mac/source/main.cpp @@ -36,14 +36,15 @@ int main() { {"lan1", 0x01, 0x01}, {"lan2", 0x01, 0x02}, {"lan3", 0x01, 0x03}, - {"wifi0", 0x02, 0x00}, - {"wifi1", 0x02, 0x01}, - {"wifi2", 0x02, 0x02}, + {"wifi0", 0x02, 0x10}, + {"wifi1", 0x02, 0x20}, + {"wifi2", 0x02, 0x30}, #if defined(_EM_BUILD_) - {"wifi1.1", 0x02, 0x03}, -#if defined(_EM_EXT_BUILD_) - {"wifi0.1", 0x02, 0x04}, -#endif + {"wifi0.1", 0x02, 0x11}, + {"wifi0.2", 0x02, 0x12}, + {"wifi1.1", 0x02, 0x21}, + {"wifi1.2", 0x02, 0x22}, + {"wifi1.3", 0x02, 0x23}, #endif {"brlan0", 0x03, 0x00} }; From d7b9fec7bc10586506d855883242aa90bf8a20e1 Mon Sep 17 00:00:00 2001 From: Prabhudas Gannavarapu Date: Fri, 10 Oct 2025 09:47:20 +0000 Subject: [PATCH 6/9] RDKBACCL-1144: LAN IP change via tr181 parameter is not getting reflected in brlan0 Reason for change: Due to change in ethernet lan interfaces, modified gw_lan_refresh code accordingly. Test Procedure: Execute gw_lan_refresh from the console and verify three lan ports are refreshed or not. Risks: None Signed-off-by: Prabhudas Gannavarapu --- gw-lan-refresh/source/gw_lan_refresh.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gw-lan-refresh/source/gw_lan_refresh.c b/gw-lan-refresh/source/gw_lan_refresh.c index 504b39a..8bb68ec 100644 --- a/gw-lan-refresh/source/gw_lan_refresh.c +++ b/gw-lan-refresh/source/gw_lan_refresh.c @@ -55,9 +55,9 @@ void refresh_external_switch() INT max_phy_eth_ports = 0; /* Total 3 LAN ports*/ - max_phy_eth_ports = CCSP_HAL_ETHSW_EthPort3; + max_phy_eth_ports = CCSP_HAL_ETHSW_EthPort4; - for (port = CCSP_HAL_ETHSW_EthPort1; port <= max_phy_eth_ports; port++) + for (port = CCSP_HAL_ETHSW_EthPort2; port <= max_phy_eth_ports; port++) { // Disable the port DBG_PRINT("%s(): setting admin status down for port %d\n", __FUNCTION__, port); @@ -66,7 +66,7 @@ void refresh_external_switch() sleep(SLEEP_TIME); - for (port = CCSP_HAL_ETHSW_EthPort1; port <= max_phy_eth_ports; port++) + for (port = CCSP_HAL_ETHSW_EthPort2; port <= max_phy_eth_ports; port++) { // Enable the port DBG_PRINT("%s(): setting admin status up for port %d\n", __FUNCTION__, port); From de35d4d007763faf3cf22135bb058205ab96dbc9 Mon Sep 17 00:00:00 2001 From: "keerthana.p" Date: Wed, 29 Oct 2025 14:14:21 +0000 Subject: [PATCH 7/9] RDKBACCL-771 : Wifi interfaces should have constant unique MAC for 6G band Reason for change: Added 6g interfaces list in default struct to have unique macaddress during bootup Test Procedure: Build successful Risks: Low Signed-off-by: keerthana.p --- rdkb-bpi-mac/source/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rdkb-bpi-mac/source/main.cpp b/rdkb-bpi-mac/source/main.cpp index 5ae32c0..24af60e 100644 --- a/rdkb-bpi-mac/source/main.cpp +++ b/rdkb-bpi-mac/source/main.cpp @@ -45,6 +45,9 @@ int main() { {"wifi1.1", 0x02, 0x21}, {"wifi1.2", 0x02, 0x22}, {"wifi1.3", 0x02, 0x23}, + {"wifi2.1", 0x02, 0x31}, + {"wifi2.2", 0x02, 0x32}, + {"wifi2.3", 0x02, 0x33}, #endif {"brlan0", 0x03, 0x00} }; From af33e1983407eecbebce592aaf5a6c7790456896 Mon Sep 17 00:00:00 2001 From: Prabhudas Gannavarapu Date: Mon, 23 Feb 2026 10:49:54 +0000 Subject: [PATCH 8/9] RDKBACCL-1343: Utilizing rfcmgr for BPI Reason for change: Adding required changes to support rfcMgr for BPI Test Procedure: Verify RFC feature is working or not. Feature should work and generate dcmrfc logs. Risks: None Signed-off-by: Prabhudas Gannavarapu --- rfc-utils/mtlsUtils.cpp | 67 +++++++++++++++++++++++++++++++++++++++++ rfc-utils/mtlsUtils.h | 46 ++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 rfc-utils/mtlsUtils.cpp create mode 100644 rfc-utils/mtlsUtils.h diff --git a/rfc-utils/mtlsUtils.cpp b/rfc-utils/mtlsUtils.cpp new file mode 100644 index 0000000..0b0c0ae --- /dev/null +++ b/rfc-utils/mtlsUtils.cpp @@ -0,0 +1,67 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2026 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +#include "mtlsUtils.h" +#include "rfc_common.h" + +#include "ccsp/platform_hal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define BUF_SIZE 64 + +#if defined(RDKB_SUPPORT) +std::string getErouterMac() +{ + char macBuf[BUF_SIZE] = {0}; + std::string erouterMac; + + if (platform_hal_GetBaseMacAddress(macBuf) == RETURN_OK) { + erouterMac = macBuf; + while (!erouterMac.empty() && (erouterMac.back() == '\n' || erouterMac.back() == ' ')) { + erouterMac.pop_back(); + } + } + + RDK_LOG(RDK_LOG_INFO, LOG_RFCMGR, "[%s] Recevied eRouterMac(eSTBMac): %s\n", __FUNCTION__,erouterMac.c_str()); + return erouterMac; +} + +std::string geteCMMac() +{ + std::string macAddress; + char macBuf[BUF_SIZE] = {0}; + + if (platform_hal_GetBaseMacAddress(macBuf) == RETURN_OK) { + macAddress = macBuf; + while (!macAddress.empty() && (macAddress.back() == '\n' || macAddress.back() == ' ')) { + macAddress.pop_back(); + } + } + + RDK_LOG(RDK_LOG_INFO, LOG_RFCMGR, "[%s] Received eCM MAC: %s\n", __FUNCTION__, macAddress.c_str()); + return macAddress; +} +#endif + +#ifdef __cplusplus +} +#endif diff --git a/rfc-utils/mtlsUtils.h b/rfc-utils/mtlsUtils.h new file mode 100644 index 0000000..4423b4d --- /dev/null +++ b/rfc-utils/mtlsUtils.h @@ -0,0 +1,46 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2026 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +#ifndef MTLSUTILS_H_ +#define MTLSUTILS_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#if defined(RDKB_SUPPORT) +std::string getErouterMac(); +std::string geteCMMac(); +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* MTLSUTILS_H_ */ + From e15591ad25b743ba3657723da5fb371a89375d51 Mon Sep 17 00:00:00 2001 From: Somanath Bulusu Date: Thu, 23 Jul 2026 05:52:55 +0000 Subject: [PATCH 9/9] RDKBWIFI-388: Add support for onboarding extender using WPS mechanism in RDK-B On extender builds (CONFIG_EXTENDER), trigger WPS PBC on the station AccessPoint.16 interface instead of FH AP.1/AP.2. Signed-off-by: Somanath Bulusu --- rdk-wps-monitor/source/button_callback.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/rdk-wps-monitor/source/button_callback.c b/rdk-wps-monitor/source/button_callback.c index 4d3dec3..b841221 100644 --- a/rdk-wps-monitor/source/button_callback.c +++ b/rdk-wps-monitor/source/button_callback.c @@ -70,13 +70,19 @@ void default_button_callback(const char *device, int button_code, int value) { printf("Failed to initialize RBus: %d\n", err); } - // Set WPS Push Button for Access Point 1 - log_message(LOG_INFO, "WPS button pressed on device %s - triggering WPS action for 2G", device); - set_wps_push_button(handle, "Device.WiFi.AccessPoint.1.WPS.X_CISCO_COM_ActivatePushButton"); - - // Set WPS Push Button for Access Point 2 - log_message(LOG_INFO, "WPS button pressed on device %s - triggering WPS action for 5G", device); - set_wps_push_button(handle, "Device.WiFi.AccessPoint.2.WPS.X_CISCO_COM_ActivatePushButton"); +#ifdef CONFIG_EXTENDER + // Set WPS Push Button for Station Interface + log_message(LOG_INFO, "WPS button pressed on device %s - triggering WPS action for station", device); + set_wps_push_button(handle, "Device.WiFi.AccessPoint.16.WPS.X_CISCO_COM_ActivatePushButton"); +#else + // Set WPS Push Button for Access Point 1 + log_message(LOG_INFO, "WPS button pressed on device %s - triggering WPS action for 2G", device); + set_wps_push_button(handle, "Device.WiFi.AccessPoint.1.WPS.X_CISCO_COM_ActivatePushButton"); + + // Set WPS Push Button for Access Point 2 + log_message(LOG_INFO, "WPS button pressed on device %s - triggering WPS action for 5G", device); + set_wps_push_button(handle, "Device.WiFi.AccessPoint.2.WPS.X_CISCO_COM_ActivatePushButton"); +#endif sleep(WPS_DELAY); // Close RBus