diff --git a/server/cros/faft/firmware_test.py b/server/cros/faft/firmware_test.py
index bc1837a..f3dee6f 100644
--- a/server/cros/faft/firmware_test.py
+++ b/server/cros/faft/firmware_test.py
@@ -664,12 +664,12 @@
         # Servo v4 requires an external charger to source power. Make sure
         # this setup is correct.
         if 'servo_v4' in self.pdtester.servo_type:
-            role = self.pdtester.get('servo_v4_role')
+            role = self.pdtester.get('servo_pd_role')
             if role != 'src':
                 raise error.TestError(
                         'Servo v4 is not sourcing power! Make sure the servo '
                         '"DUT POWER" port is connected to a working charger. '
-                        'servo_v4_role:%s' % role)
+                        'servo_pd_role:%s' % role)
 
     def setup_usbkey(self, usbkey, host=None, used_for_recovery=None):
         """Setup the USB disk for the test.
diff --git a/server/cros/power/servo_charger.py b/server/cros/power/servo_charger.py
index 4cb3fc4..104b8cc 100644
--- a/server/cros/power/servo_charger.py
+++ b/server/cros/power/servo_charger.py
@@ -70,7 +70,7 @@
             raise error.TestNAError('Servo setup does not support PD control. '
                                     'Check logs for details.')
 
-        self._original_role = self._servo.get('servo_v4_role')
+        self._original_role = self._servo.get('servo_pd_role')
         if self._original_role == 'snk':
             self.start_charging()
             self.stop_charging()
@@ -150,7 +150,7 @@
 
         @raises error.TestError: if the role did not change successfully.
         """
-        self._servo.set_nocheck('servo_v4_role', role)
+        self._servo.set_nocheck('servo_pd_role', role)
         # Sometimes the role reverts quickly. Add a short delay to let the new
         # role stabilize.
         time.sleep(_ROLE_SETTLING_DELAY_SEC)
@@ -162,7 +162,7 @@
                      delay_sec=_DELAY_SEC, backoff=_BACKOFF)
         def check_servo_role(role):
             """Check if servo role is as expected, if not, retry."""
-            if self._servo.get('servo_v4_role') != role:
+            if self._servo.get('servo_pd_role') != role:
                 raise error.TestError('Servo v4 failed to set its PD role to '
                                       '%s.' % role)
         check_servo_role(role)
diff --git a/server/cros/servo/chrome_cr50.py b/server/cros/servo/chrome_cr50.py
index 16e0a4d..393a483 100644
--- a/server/cros/servo/chrome_cr50.py
+++ b/server/cros/servo/chrome_cr50.py
@@ -1231,7 +1231,7 @@
 
     def check_servo_monitor(self):
         """Returns True if cr50 can detect servo connect/disconnect"""
-        orig_dts = self._servo.get('servo_v4_dts_mode')
+        orig_dts = self._servo.get('servo_dts_mode')
         # Detach ccd so EC uart won't interfere with servo detection
         self._servo.set_dts_mode('off')
         self._servo.set('ec_uart_en', 'off')
diff --git a/server/cros/servo/servo.py b/server/cros/servo/servo.py
index e533ec0..39c9be6 100644
--- a/server/cros/servo/servo.py
+++ b/server/cros/servo/servo.py
@@ -656,14 +656,14 @@
         # v4p1).
         # TODO(coconutruben): eventually, replace this with a metric to track
         # SBU voltages wrt servo-hw/dut-hw
-        if self.has_control('servo_v4_sbu1_mv'):
+        if self.has_control('servo_dut_sbu1_mv'):
             # Attempt to take a reading of sbu1 and sbu2 multiple times to
             # account for situations where the two lines exchange hi/lo roles
             # frequently.
             for i in range(10):
                 try:
-                    sbu1 = int(self.get('servo_v4_sbu1_mv'))
-                    sbu2 = int(self.get('servo_v4_sbu2_mv'))
+                    sbu1 = int(self.get('servo_dut_sbu1_mv'))
+                    sbu2 = int(self.get('servo_dut_sbu2_mv'))
                     logging.info('attempt %d sbu1 %d sbu2 %d', i, sbu1, sbu2)
                 except error.TestFail as e:
                     # This is a nice to have but if reading this fails, it
@@ -1004,10 +1004,10 @@
 
     def get_ec_board(self):
         """Get the board name from EC."""
-        if self.has_control('active_v4_device'):
+        if self.has_control('active_dut_controller'):
             # If servo v4 is allowing dual_v4 devices, then choose the
             # active device.
-            active_device = self.get('active_v4_device')
+            active_device = self.get('active_dut_controller')
             if active_device == self.get_main_servo_device():
                 active_device = ''
         else:
@@ -1314,7 +1314,7 @@
 
         # If servo v4 is using ccd and servo micro, modify the servo type to
         # reflect the active device.
-        active_device = self.get('active_v4_device')
+        active_device = self.get('active_dut_controller')
         if active_device in servo_type:
             logging.info('%s is active', active_device)
             return 'servo_v4_with_' + active_device
@@ -1333,7 +1333,7 @@
         """Return the servo_v4_type (such as 'type-c'), or None if not v4."""
         if not hasattr(self, '_servo_v4_type'):
             if 'servo_v4' in self.get_servo_type():
-                self._servo_v4_type = self.get('servo_v4_type')
+                self._servo_v4_type = self.get('root.dut_connection_type')
             else:
                 self._servo_v4_type = None
         return self._servo_v4_type
@@ -1353,9 +1353,9 @@
 
     def enable_main_servo_device(self):
         """Make sure the main device has control of the dut."""
-        if not self.has_control('active_v4_device'):
+        if not self.has_control('active_dut_controller'):
             return
-        self.set('active_v4_device', self.get_main_servo_device())
+        self.set('active_dut_controller', self.get_main_servo_device())
 
 
     def main_device_is_ccd(self):
@@ -1385,7 +1385,7 @@
             # Use dts support as a proxy to whether the servo setup could
             # support a dual role. Only those setups now support legacy and ccd.
             return True
-        active_device = self.get('active_v4_device')
+        active_device = self.get('active_dut_controller')
         return 'ccd_cr50' not in active_device
 
     def _initialize_programmer(self, rw_only=False):
@@ -1616,15 +1616,15 @@
             logging.debug('Not a servo v4, unable to set role to %s.', role)
             return
 
-        if not self.has_control('servo_v4_role'):
+        if not self.has_control('servo_pd_role'):
             logging.debug(
                     'Servo does not has servo_v4_role control, unable'
                     ' to set role to %s.', role)
             return
 
-        value = self.get('servo_v4_role')
+        value = self.get('servo_pd_role')
         if value != role:
-            self.set_nocheck('servo_v4_role', role)
+            self.set_nocheck('servo_pd_role', role)
         else:
             logging.debug('Already in the role: %s.', role)
 
@@ -1637,13 +1637,13 @@
             logging.debug('Not a servo v4, unable to get role')
             return None
 
-        if not self.has_control('servo_v4_role'):
+        if not self.has_control('servo_pd_role'):
             logging.debug(
                     'Servo does not has servo_v4_role control, unable'
                     ' to get the role.')
             return None
 
-        return self.get('servo_v4_role')
+        return self.get('servo_pd_role')
 
     def set_servo_v4_pd_comm(self, en):
         """Set the PD communication of servo v4, either 'on' or 'off'.
@@ -1695,7 +1695,7 @@
         if not self.dts_mode_is_valid():
             logging.info('Not a valid servo setup. Unable to get dts mode.')
             return
-        return self.get('servo_v4_dts_mode')
+        return self.get('servo_dts_mode')
 
     def ccd_watchdog_enable(self, enable):
         """Control the ccd watchdog."""
@@ -1737,7 +1737,7 @@
         if not enable_watchdog:
             self.ccd_watchdog_enable(False)
 
-        self.set_nocheck('servo_v4_dts_mode', state)
+        self.set_nocheck('servo_dts_mode', state)
 
         if enable_watchdog:
             self.ccd_watchdog_enable(True)
@@ -1777,10 +1777,16 @@
             return '%s_version.%s' % (dev, tag)
 
         fw_versions = {}
+        # Note, this works because v4p1 starts with v4 as well.
+        # TODO(coconutruben): make this more robust so that it can work on
+        # a future v-whatever as well.
         if 'servo_v4' not in self.get_servo_type():
             return {}
-        v4_tag = get_fw_version_tag('support', 'servo_v4')
-        fw_versions[v4_tag] = self._get_servo_type_fw_version('servo_v4')
+        # v4 or v4p1
+        v4_flavor = self.get_servo_type().split('_with_')[0]
+        v4_tag = get_fw_version_tag('root', v4_flavor)
+        fw_versions[v4_tag] = self._get_servo_type_fw_version('servo_fw',
+                                                              prefix='root')
         if 'with' in self.get_servo_type():
             dut_devs = self.get_servo_type().split('_with_')[1].split('_and_')
             main_tag = get_fw_version_tag('main', dut_devs[0])
diff --git a/server/hosts/servo_host.py b/server/hosts/servo_host.py
index 69178e4..5ecbf59 100644
--- a/server/hosts/servo_host.py
+++ b/server/hosts/servo_host.py
@@ -958,7 +958,7 @@
         # panic information from servo micro and servo v4 for the current logs.
         # This can only happen if the |_servo| attribute is initialized.
         if self._servo:
-            for mcu in ['servo_micro', 'servo_v4']:
+            for mcu in ['servo_micro', 'servo_v4', 'servo_v4p1']:
                 ctrl = '%s_uart_cmd' % mcu
                 if self._servo.has_control(ctrl):
                     logging.info('Trying to retrieve %r panicinfo into logs',
diff --git a/server/hosts/servo_repair.py b/server/hosts/servo_repair.py
index 6164a02..cc66d31 100644
--- a/server/hosts/servo_repair.py
+++ b/server/hosts/servo_repair.py
@@ -525,7 +525,7 @@
     """
     @timeout_util.TimeoutDecorator(cros_constants.VERIFY_TIMEOUT_SEC)
     def verify(self, host):
-        if host.get_servo().get('servo_v4_role') == 'snk':
+        if host.get_servo().get('servo_pd_role') == 'snk':
             raise hosts.AutoservNonCriticalVerifyError(
                     'Power delivery not in src role.')
 
@@ -714,14 +714,14 @@
     def _get_max_sbu_value(self, host):
         """Get average voltage on SBU lines."""
         servo = host.get_servo()
-        if not servo.has_control('servo_v4_sbu1_mv'):
+        if not servo.has_control('servo_dut_sbu1_mv'):
             return -1
         s1 = 0
         s2 = 0
         for i in range(self._TOTAL_CHECK_SBU_VOLTAGE):
             try:
-                sbu1 = int(servo.get('servo_v4_sbu1_mv'))
-                sbu2 = int(servo.get('servo_v4_sbu2_mv'))
+                sbu1 = int(servo.get('servo_dut_sbu1_mv'))
+                sbu2 = int(servo.get('servo_dut_sbu2_mv'))
                 logging.debug('Attempt:%2d, sbu1 %4d sbu2 %4d', i, sbu1, sbu2)
                 s1 += sbu1
                 s2 += sbu2
@@ -1028,8 +1028,8 @@
 
         logging.info('Turn on configuration channel and wait 30 seconds.')
         # alternative option to turn line on is by `cc srcdts`
-        host.get_servo().set_nocheck('servo_v4_role', 'src')
-        host.get_servo().set_nocheck('servo_v4_dts_mode', 'on')
+        host.get_servo().set_nocheck('servo_pd_role', 'src')
+        host.get_servo().set_nocheck('servo_dts_mode', 'on')
         # wait till command will be effected
         time.sleep(self.CC_ON_TIMEOUT)
         host.restart_servod()
@@ -1120,21 +1120,21 @@
 
     @timeout_util.TimeoutDecorator(cros_constants.REPAIR_TIMEOUT_SEC)
     def repair(self, host):
-        host.get_servo().set_nocheck('servo_v4_role', 'snk')
+        host.get_servo().set_nocheck('servo_pd_role', 'snk')
         time.sleep(1)
         for x in range(self._SET_ATTEMPT_COUNT):
             logging.debug('Try set servo_v4_role to src.'
                           ' Attempt: %s', x + 1)
             try:
-                host.get_servo().set('servo_v4_role', 'src')
+                host.get_servo().set('servo_pd_role', 'src')
                 # Waiting a few seconds as it can be change to snk if PD
                 # on servo has issue.
                 time.sleep(5)
             except BaseException as e:
                 logging.debug('Setting PD with retries failed %s', e)
-            if host.get_servo().get('servo_v4_role') == 'src':
+            if host.get_servo().get('servo_pd_role') == 'src':
                 break
-        if host.get_servo().get('servo_v4_role') == 'snk':
+        if host.get_servo().get('servo_pd_role') == 'snk':
             raise hosts.AutoservNonCriticalVerifyError(
                     'Cannot switch power delivery to the src role')
         # Restart servod to re-initialize servos.
diff --git a/server/site_tests/firmware_Cr50CCDFirmwareUpdate/firmware_Cr50CCDFirmwareUpdate.py b/server/site_tests/firmware_Cr50CCDFirmwareUpdate/firmware_Cr50CCDFirmwareUpdate.py
index 6bd70a4..29d8d76 100644
--- a/server/site_tests/firmware_Cr50CCDFirmwareUpdate/firmware_Cr50CCDFirmwareUpdate.py
+++ b/server/site_tests/firmware_Cr50CCDFirmwareUpdate/firmware_Cr50CCDFirmwareUpdate.py
@@ -129,9 +129,9 @@
 
         # Fast open cr50 and check if testlab is enabled.
         self.fast_ccd_open(enable_testlab=True)
-        if self.servo.has_control('active_v4_device'):
+        if self.servo.has_control('active_dut_controller'):
             try:
-                self.servo.set('active_v4_device', 'ccd_cr50')
+                self.servo.set('active_dut_controller', 'ccd_cr50')
             except error.TestFail as e:
                 raise error.TestNAError('cannot change active_v4_device: %s' %
                                         str(e))
diff --git a/server/site_tests/firmware_Cr50CCDUartStress/firmware_Cr50CCDUartStress.py b/server/site_tests/firmware_Cr50CCDUartStress/firmware_Cr50CCDUartStress.py
index 1ae8494..07f3601 100644
--- a/server/site_tests/firmware_Cr50CCDUartStress/firmware_Cr50CCDUartStress.py
+++ b/server/site_tests/firmware_Cr50CCDUartStress/firmware_Cr50CCDUartStress.py
@@ -56,10 +56,10 @@
         logging.info('CCD opened.')
 
         # Change active device as ccd_cr50.
-        if self.servo.has_control('active_v4_device'):
+        if self.servo.has_control('active_dut_controller'):
             try:
                 self.active_dev = 'ccd_cr50'
-                self.servo.set('active_v4_device', self.active_dev)
+                self.servo.set('active_dut_controller', self.active_dev)
             except error.TestFail as e:
                 raise error.TestNAError('cannot change active_v4_device: %s' %
                                         str(e))
diff --git a/server/site_tests/firmware_Cr50CheckCap/firmware_Cr50CheckCap.py b/server/site_tests/firmware_Cr50CheckCap/firmware_Cr50CheckCap.py
index 4a79242..d50f230 100644
--- a/server/site_tests/firmware_Cr50CheckCap/firmware_Cr50CheckCap.py
+++ b/server/site_tests/firmware_Cr50CheckCap/firmware_Cr50CheckCap.py
@@ -108,7 +108,7 @@
                 self.servo.has_control('ec_board', self._ec_prefix))
         if self.check_ec_uart and self._ec_prefix:
             try:
-                self.servo.set('active_v4_device', self._ec_prefix)
+                self.servo.set('active_dut_controller', self._ec_prefix)
             except:
                 self.check_ec_uart = False
 
diff --git a/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py b/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
index bc988d3..fd767ee 100644
--- a/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
+++ b/server/site_tests/firmware_Cr50DeferredECReset/firmware_Cr50DeferredECReset.py
@@ -44,7 +44,7 @@
         else:
             # Stop power delivery to dut
             logging.info('Stop charging')
-            self.servo.set('servo_v4_role', 'snk')
+            self.servo.set('servo_pd_role', 'snk')
 
             # Battery Cutoff
             logging.info('Cut battery off')
@@ -54,7 +54,7 @@
 
             # Enable power delivery to dut
             logging.info('Start charging')
-            self.servo.set('servo_v4_role', 'src')
+            self.servo.set('servo_pd_role', 'src')
 
         time.sleep(self.PD_SETTLE_TIME)
 
@@ -111,14 +111,14 @@
             self.HAS_CR50_RESET_ODL = False
 
             # Test the external power delivery
-            self.servo.set('servo_v4_role', 'snk')
+            self.servo.set('servo_pd_role', 'snk')
             time.sleep(self.PD_SETTLE_TIME)
 
             if self.ac_is_plugged_in():
                 raise error.TestFail('Failed to set servo_v4_role sink')
 
             # Test stopping the external power delivery
-            self.servo.set('servo_v4_role', 'src')
+            self.servo.set('servo_pd_role', 'src')
             time.sleep(self.PD_SETTLE_TIME)
 
             if not self.ac_is_plugged_in():
@@ -246,7 +246,7 @@
             if self.HAS_CR50_RESET_ODL:
                 self.servo.set_nocheck('cr50_reset_odl', 'off')
             else:
-                self.servo.set_nocheck('servo_v4_role', 'src')
+                self.servo.set_nocheck('servo_pd_role', 'src')
 
             self.servo.set_dts_mode(self.dts_restore)
             time.sleep(1)
diff --git a/server/site_tests/servo_ConsoleStress/control.servo_v4 b/server/site_tests/servo_ConsoleStress/control.servo_v4
index cb6e5ff..46ea5de 100644
--- a/server/site_tests/servo_ConsoleStress/control.servo_v4
+++ b/server/site_tests/servo_ConsoleStress/control.servo_v4
@@ -28,7 +28,7 @@
     iterations = int(args_dict.get("iterations", 1))
     attempts = int(args_dict.get("attempts", 5000))
     cmd_type = args_dict.get("cmd_type", "servo")
-    cmd = args_dict.get("cmd", "servo_v4_version")
+    cmd = args_dict.get("cmd", "root.servo_fw_version")
 
     job.run_test("servo_ConsoleStress", host=host, cmdline_args=args,
                  full_args=args_dict, iterations=iterations,
