diff --git a/acts/framework/acts/test_utils/wifi/WifiBaseTest.py b/acts/framework/acts/test_utils/wifi/WifiBaseTest.py
index 201d252..7db5cb6 100755
--- a/acts/framework/acts/test_utils/wifi/WifiBaseTest.py
+++ b/acts/framework/acts/test_utils/wifi/WifiBaseTest.py
@@ -260,7 +260,10 @@
         if network["security"] == hostapd_constants.WEP_STRING:
             self.wep_networks[ap_instance][band]["bssid"] = bssid
         if network["security"] == hostapd_constants.ENT_STRING:
-            self.ent_networks[ap_instance][band]["bssid"] = bssid
+            if "bssid" not in self.ent_networks[ap_instance][band]:
+                self.ent_networks[ap_instance][band]["bssid"] = bssid
+            else:
+                self.ent_networks_pwd[ap_instance][band]["bssid"] = bssid
         if network["security"] == 'none':
             self.open_network[ap_instance][band]["bssid"] = bssid
 
@@ -308,6 +311,8 @@
             ent_network=False,
             radius_conf_2g=None,
             radius_conf_5g=None,
+            ent_network_pwd=False,
+            radius_conf_pwd=None,
             ap_count=1):
         asserts.assert_true(
             len(self.user_params["AccessPoint"]) == 2,
@@ -334,6 +339,8 @@
             self.user_params["wep_networks"] = []
         if ent_network:
             self.user_params["ent_networks"] = []
+        if ent_network_pwd:
+            self.user_params["ent_networks_pwd"] = []
 
         for count in range(config_count):
 
@@ -410,6 +417,21 @@
                     network_list_2g.append(networks_dict["2g"])
                     network_list_5g.append(networks_dict["5g"])
 
+                if ent_network_pwd:
+                    networks_dict = self.get_open_network(
+                                        mirror_ap,
+                                        self.user_params["ent_networks_pwd"],
+                                        hidden=hidden,
+                                        same_ssid=same_ssid)
+                    networks_dict["2g"]["security"] = hostapd_constants.ENT_STRING
+                    networks_dict["2g"].update(radius_conf_pwd)
+                    networks_dict["5g"]["security"] = hostapd_constants.ENT_STRING
+                    networks_dict["5g"].update(radius_conf_pwd)
+                    self.ent_networks_pwd = self.user_params["ent_networks_pwd"]
+
+                    network_list_2g.append(networks_dict["2g"])
+                    network_list_5g.append(networks_dict["5g"])
+
             orig_network_list_5g = copy.copy(network_list_5g)
             orig_network_list_2g = copy.copy(network_list_2g)
 
diff --git a/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py b/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
index abdf2d4..94918c9 100644
--- a/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
+++ b/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
@@ -18,10 +18,10 @@
 import time
 
 from acts import asserts
-from acts import base_test
 from acts import signals
 from acts.test_decorators import test_tracker_info
 from acts.test_utils.wifi import wifi_test_utils as wutils
+from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest
 
 WifiEnums = wutils.WifiEnums
 
@@ -33,14 +33,14 @@
 Ent = WifiEnums.Enterprise
 
 
-class WifiEnterpriseRoamingTest(base_test.BaseTestClass):
+class WifiEnterpriseRoamingTest(WifiBaseTest):
+    def __init__(self, controllers):
+        WifiBaseTest.__init__(self, controllers)
+
     def setup_class(self):
         self.dut = self.android_devices[0]
         wutils.wifi_test_device_init(self.dut)
         req_params = (
-            "ent_roaming_ssid",
-            "bssid_a",
-            "bssid_b",
             "attn_vals",
             # Expected time within which roaming should finish, in seconds.
             "roam_interval",
@@ -49,8 +49,25 @@
             "client_key",
             "eap_identity",
             "eap_password",
-            "device_password")
+            "device_password",
+            "radius_conf_2g",
+            "radius_conf_5g")
         self.unpack_userparams(req_params)
+        if "AccessPoint" in self.user_params:
+            self.legacy_configure_ap_and_start(
+                mirror_ap=True,
+                ent_network=True,
+                ap_count=2,
+                radius_conf_2g=self.radius_conf_2g,
+                radius_conf_5g=self.radius_conf_5g,)
+        self.ent_network_2g_a = self.ent_networks[0]["2g"]
+        self.ent_network_2g_b = self.ent_networks[1]["2g"]
+        self.bssid_2g_a = self.ent_network_2g_a[WifiEnums.BSSID_KEY.lower()]
+        self.bssid_2g_b = self.ent_network_2g_b[WifiEnums.BSSID_KEY.lower()]
+        self.ent_roaming_ssid = self.ent_network_2g_a[WifiEnums.SSID_KEY]
+        self.bssid_a = self.bssid_2g_a
+        self.bssid_b = self.bssid_2g_b
+
         self.config_peap = {
             Ent.EAP: int(EAP.PEAP),
             Ent.CA_CERT: self.ca_cert,
@@ -80,7 +97,7 @@
             WifiEnums.SSID_KEY: self.ent_roaming_ssid,
         }
         self.attn_a = self.attenuators[0]
-        self.attn_b = self.attenuators[1]
+        self.attn_b = self.attenuators[2]
         # Set screen lock password so ConfigStore is unlocked.
         self.dut.droid.setDevicePassword(self.device_password)
         self.set_attns("default")
diff --git a/acts/tests/google/wifi/WifiEnterpriseTest.py b/acts/tests/google/wifi/WifiEnterpriseTest.py
index 41a2512..fd70e24 100755
--- a/acts/tests/google/wifi/WifiEnterpriseTest.py
+++ b/acts/tests/google/wifi/WifiEnterpriseTest.py
@@ -19,12 +19,12 @@
 import time
 
 from acts import asserts
-from acts import base_test
 from acts import signals
 from acts.test_decorators import test_tracker_info
-from acts.test_utils.tel.tel_test_utils import start_adb_tcpdump
-from acts.test_utils.tel.tel_test_utils import stop_adb_tcpdump
+from acts.test_utils.net.net_test_utils import start_tcpdump
+from acts.test_utils.net.net_test_utils import stop_tcpdump
 from acts.test_utils.wifi import wifi_test_utils as wutils
+from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest
 
 WifiEnums = wutils.WifiEnums
 
@@ -35,9 +35,9 @@
 Ent = WifiEnums.Enterprise
 
 
-class WifiEnterpriseTest(base_test.BaseTestClass):
+class WifiEnterpriseTest(WifiBaseTest):
     def __init__(self, controllers):
-        base_test.BaseTestClass.__init__(self, controllers)
+        WifiBaseTest.__init__(self, controllers)
 
     def setup_class(self):
         self.dut = self.android_devices[0]
@@ -52,12 +52,23 @@
             "passpoint_client_cert", "passpoint_client_key", "eap_identity",
             "eap_password", "invalid_ca_cert", "invalid_client_cert",
             "invalid_client_key", "fqdn", "provider_friendly_name", "realm",
-            "ssid_peap0", "ssid_peap1", "ssid_tls", "ssid_ttls", "ssid_pwd",
-            "ssid_sim", "ssid_aka", "ssid_aka_prime", "ssid_passpoint",
-            "device_password", "ping_addr")
+            "device_password", "ping_addr", "radius_conf_2g", "radius_conf_5g",
+            "radius_conf_pwd")
         self.unpack_userparams(required_userparam_names,
                                roaming_consortium_ids=None,
                                plmn=None)
+
+        if "AccessPoint" in self.user_params:
+            self.legacy_configure_ap_and_start(
+                ent_network=True,
+                radius_conf_2g=self.radius_conf_2g,
+                radius_conf_5g=self.radius_conf_5g,
+                ent_network_pwd=True,
+                radius_conf_pwd=self.radius_conf_pwd,)
+        self.ent_network_2g = self.ent_networks[0]["2g"]
+        self.ent_network_5g = self.ent_networks[0]["5g"]
+        self.ent_network_pwd = self.ent_networks_pwd[0]["2g"]
+
         # Default configs for EAP networks.
         self.config_peap0 = {
             Ent.EAP: int(EAP.PEAP),
@@ -65,14 +76,15 @@
             Ent.IDENTITY: self.eap_identity,
             Ent.PASSWORD: self.eap_password,
             Ent.PHASE2: int(EapPhase2.MSCHAPV2),
-            WifiEnums.SSID_KEY: self.ssid_peap0
+            WifiEnums.SSID_KEY: self.ent_network_5g[WifiEnums.SSID_KEY],
         }
         self.config_peap1 = dict(self.config_peap0)
-        self.config_peap1[WifiEnums.SSID_KEY] = self.ssid_peap1
+        self.config_peap1[WifiEnums.SSID_KEY] = \
+            self.ent_network_2g[WifiEnums.SSID_KEY]
         self.config_tls = {
             Ent.EAP: int(EAP.TLS),
             Ent.CA_CERT: self.ca_cert,
-            WifiEnums.SSID_KEY: self.ssid_tls,
+            WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY],
             Ent.CLIENT_CERT: self.client_cert,
             Ent.PRIVATE_KEY_ID: self.client_key,
             Ent.IDENTITY: self.eap_identity,
@@ -83,25 +95,25 @@
             Ent.IDENTITY: self.eap_identity,
             Ent.PASSWORD: self.eap_password,
             Ent.PHASE2: int(EapPhase2.MSCHAPV2),
-            WifiEnums.SSID_KEY: self.ssid_ttls
+            WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY],
         }
         self.config_pwd = {
             Ent.EAP: int(EAP.PWD),
             Ent.IDENTITY: self.eap_identity,
             Ent.PASSWORD: self.eap_password,
-            WifiEnums.SSID_KEY: self.ssid_pwd
+            WifiEnums.SSID_KEY: self.ent_network_pwd[WifiEnums.SSID_KEY],
         }
         self.config_sim = {
             Ent.EAP: int(EAP.SIM),
-            WifiEnums.SSID_KEY: self.ssid_sim,
+            WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY],
         }
         self.config_aka = {
             Ent.EAP: int(EAP.AKA),
-            WifiEnums.SSID_KEY: self.ssid_aka,
+            WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY],
         }
         self.config_aka_prime = {
             Ent.EAP: int(EAP.AKA_PRIME),
-            WifiEnums.SSID_KEY: self.ssid_aka_prime,
+            WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY],
         }
 
         # Base config for passpoint networks.
@@ -142,14 +154,10 @@
         self.dut.droid.wakeUpNow()
         wutils.reset_wifi(self.dut)
         self.dut.ed.clear_all_events()
-        self.tcpdump_pid = start_adb_tcpdump(self.dut, self.test_name, mask='all')
+        self.tcpdump_pid = start_tcpdump(self.dut, self.test_name)
 
     def teardown_test(self):
-        if self.tcpdump_pid:
-            stop_adb_tcpdump(self.dut,
-                             self.tcpdump_pid,
-                             pull_tcpdump=True)
-            self.tcpdump_pid = None
+        stop_tcpdump(self.dut, self.tcpdump_pid, self.test_name)
         self.dut.droid.wakeLockRelease()
         self.dut.droid.goToSleepNow()
         self.dut.droid.wifiStopTrackingStateChange()
