diff --git a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
index 3b81acb..86df388 100644
--- a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
+++ b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
@@ -116,7 +116,7 @@
 
     /**
      * Check if adb serial number, USB serial number, ro.serialno, and android.os.Build.SERIAL
-     * all matches and meets the format requirement [a-zA-Z0-9]{6,20}
+     * all matches and meets the format requirement [a-zA-Z0-9\\._\\-,]+
      */
     @AppModeInstant(reason = "only instant apps fail when reading serial")
     public void testInstantAppsCannotReadSerial() throws Exception {
@@ -127,7 +127,7 @@
 
     /**
      * Check if adb serial number, USB serial number, ro.serialno, and android.os.Build.SERIAL
-     * all matches and meets the format requirement [a-zA-Z0-9]{6,20}
+     * all matches and meets the format requirement [a-zA-Z0-9\\._\\-,]+
      */
     @AppModeFull(reason = "serial can not be read by instant apps")
     public void testUsbSerialReadOnDeviceMatches() throws Exception {
@@ -148,7 +148,7 @@
         CommandResult result = RunUtil.getDefault().runTimedCmd(15000, "lsusb", "-v");
         assertEquals("lsusb -v failed", result.getStatus(), CommandStatus.SUCCESS);
         String lsusbOutput = result.getStdout();
-        Pattern pattern = Pattern.compile("^\\s+iSerial\\s+\\d+\\s+([a-zA-Z0-9]{6,20})",
+        Pattern pattern = Pattern.compile("^\\s+iSerial\\s+\\d+\\s+([a-zA-Z0-9\\._\\-,]+)",
                 Pattern.MULTILINE);
         Matcher matcher = pattern.matcher(lsusbOutput);
         String usbSerial = "";
@@ -166,7 +166,7 @@
         runTestOnDevice("logSerial");
         String logs = mDevice.executeAdbCommand(
                 "logcat", "-v", "brief", "-d", "CtsUsbSerialTest:W", "*:S");
-        pattern = Pattern.compile("^.*CtsUsbSerialTest\\(.*\\):\\s+([a-zA-Z0-9]{6,20})",
+        pattern = Pattern.compile("^.*CtsUsbSerialTest\\(.*\\):\\s+([a-zA-Z0-9\\._\\-,]+)",
                 Pattern.MULTILINE);
         matcher = pattern.matcher(logs);
         String buildSerial = "";
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
index 8f1c622..31b1d1e 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
@@ -1202,10 +1202,8 @@
                 Build::getSerial);
         assertNotNull("Non-telephony devices must have a Build.getSerial() number.",
                 serial);
-        assertTrue("Hardware id must be no longer than 20 characters.",
-                serial.length() <= 20);
         assertTrue("Hardware id must be alphanumeric.",
-                Pattern.matches("[0-9A-Za-z]+", serial));
+                Pattern.matches("[0-9A-Za-z.,_-]+", serial));
     }
 
     private void assertMacAddress(String macAddress) {
