diff --git a/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info.go b/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info.go
index 979bb54..5d51357 100644
--- a/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info.go
+++ b/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info.go
@@ -47,6 +47,7 @@
 	PowerUnitHostName   string
 	PowerUnitOutlet     string
 	HydraHostName       string
+	SimInfos            []string
 }
 
 // joinHostAndPort joins host and port to a single address.
@@ -103,9 +104,13 @@
 	}
 
 	cacheInfo := dut.GetCacheServer()
-
 	addr := joinHostAndPort(chromeOS.Ssh)
 
+	var SimInfos []string
+	if chromeOS.GetSimInfos() != nil && len(chromeOS.GetSimInfos()) > 0 {
+		SimInfos = simInfoConverter(chromeOS.GetSimInfos())
+	}
+
 	// Servo address.
 	var servo string
 	var servoHostname string
@@ -273,6 +278,7 @@
 		PowerUnitHostName:   powerUnitHostName,
 		PowerUnitOutlet:     powerUnitOutlet,
 		HydraHostName:       hydraHostName,
+		SimInfos:            SimInfos,
 	}, nil
 }
 
@@ -359,9 +365,65 @@
 		labels = append(labels, fmt.Sprintf("working_bluetooth_btpeer:%v", dut.BTPeers))
 	}
 
+	if dut.SimInfos != nil && len(dut.SimInfos) > 0 {
+		labels = append(labels, dut.SimInfos...)
+	}
+
 	return attrMap, labels, nil
 }
 
+// simInfoConverter converts SIMInfo labels to Autotest labels
+// converter logic is copied from go/src/infra/libs/skylab/inventory/autotest/labels/siminfo.go
+func simInfoConverter(simInfos []*labapi.SIMInfo) []string {
+	var labels []string
+	for _, s := range simInfos {
+		sim_id := ""
+		if v := s.GetSlotId(); v != 0 {
+			sim_id = strconv.Itoa(int(v))
+			lv := "sim_slot_id:" + sim_id
+			labels = append(labels, lv)
+		}
+		if v := s.GetType(); v != *labapi.SIMType_SIM_UNKNOWN.Enum() {
+			lv := "sim_" + sim_id + "_type:" + v.String()
+			labels = append(labels, lv)
+		}
+		if eid := s.GetEid(); eid != "" {
+			lv := "sim_" + sim_id + "_eid:" + eid
+			labels = append(labels, lv)
+		}
+		if s.GetTestEsim() {
+			lv := "sim_" + sim_id + "_test_esim:True"
+			labels = append(labels, lv)
+		}
+		lv := "sim_" + sim_id + "_num_profiles:" + strconv.Itoa(len(s.GetProfileInfo()))
+		labels = append(labels, lv)
+		for j, p := range s.GetProfileInfo() {
+			profile_id := strconv.Itoa(j)
+			if k := p.GetIccid(); k != "" {
+				lv := "sim_" + sim_id + "_" + profile_id + "_iccid:" + k
+				labels = append(labels, lv)
+			}
+			if k := p.GetSimPin(); k != "" {
+				lv := "sim_" + sim_id + "_" + profile_id + "_pin:" + k
+				labels = append(labels, lv)
+			}
+			if k := p.GetSimPuk(); k != "" {
+				lv := "sim_" + sim_id + "_" + profile_id + "_puk:" + k
+				labels = append(labels, lv)
+			}
+			if k := p.GetCarrierName(); k != *labapi.NetworkProvider_NETWORK_OTHER.Enum() {
+				lv := "sim_" + sim_id + "_" + profile_id + "_carrier_name:" + k.String()
+				labels = append(labels, lv)
+			}
+			if k := p.GetOwnNumber(); k != "" {
+				lv := "sim_" + sim_id + "_" + profile_id + "_own_number:" + k
+				labels = append(labels, lv)
+			}
+		}
+	}
+	return labels
+}
+
 // FillAndroidInfo extraction Android information from a device.
 func FillAndroidInfo(device *api.CrosTestRequest_Device) *AndroidInfo {
 	android := device.Dut.GetAndroid()
diff --git a/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info_test.go b/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info_test.go
index 2a10499..c4b1dec 100644
--- a/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info_test.go
+++ b/src/chromiumos/test/execution/cmd/cros-test/internal/device/dut_info_test.go
@@ -72,6 +72,14 @@
 			ServoHostname:   "c6-r9-r7-labstation",
 			ServoPort:       "9996",
 			Phase:           "PHASE_UNSPECIFIED",
+			SimInfos: []string{
+				"sim_slot_id:1", "sim_1_num_profiles:1", "sim_1_0_iccid:1", "sim_1_0_pin:1111",
+				"sim_1_0_puk:49830420", "sim_1_0_carrier_name:NETWORK_TMOBILE",
+				"sim_1_0_own_number:6507891159", "sim_slot_id:2", "sim_2_type:SIM_PHYSICAL",
+				"sim_2_num_profiles:1", "sim_2_0_iccid:2", "sim_2_0_pin:2222",
+				"sim_2_0_puk:49830420", "sim_2_0_carrier_name:NETWORK_ATT",
+				"sim_2_0_own_number:6507891159",
+			},
 		},
 		{
 			Addr:            "[0:0:0:0:0:ffff:7f00:1]:2",
@@ -116,6 +124,34 @@
 								Port:    9996,
 							},
 						},
+						SimInfos: []*labapi.SIMInfo{
+							{
+								SlotId: 1,
+								Type:   *labapi.SIMType_SIM_UNKNOWN.Enum(),
+								ProfileInfo: []*labapi.SIMProfileInfo{
+									{
+										Iccid:       "1",
+										SimPin:      "1111",
+										SimPuk:      "49830420",
+										CarrierName: *labapi.NetworkProvider_NETWORK_TMOBILE.Enum(),
+										OwnNumber:   "6507891159",
+									},
+								},
+							},
+							{
+								SlotId: 2,
+								Type:   *labapi.SIMType_SIM_PHYSICAL.Enum(),
+								ProfileInfo: []*labapi.SIMProfileInfo{
+									{
+										Iccid:       "2",
+										SimPin:      "2222",
+										SimPuk:      "49830420",
+										CarrierName: *labapi.NetworkProvider_NETWORK_ATT.Enum(),
+										OwnNumber:   "6507891159",
+									},
+								},
+							},
+						},
 					},
 				},
 			},
@@ -210,6 +246,14 @@
 			HwIDList:            []string{"hwid_component:hwid123"},
 			CacheServer:         "cache1:8001",
 			HWID:                "Atlas 123-34",
+			SimInfos: []string{
+				"sim_slot_id:1", "sim_1_num_profiles:1", "sim_1_0_iccid:1", "sim_1_0_pin:1111",
+				"sim_1_0_puk:49830420", "sim_1_0_carrier_name:NETWORK_TMOBILE",
+				"sim_1_0_own_number:6507891159", "sim_slot_id:2", "sim_2_type:SIM_PHYSICAL",
+				"sim_2_num_profiles:1", "sim_2_0_iccid:2", "sim_2_0_pin:2222",
+				"sim_2_0_puk:49830420", "sim_2_0_carrier_name:NETWORK_ATT",
+				"sim_2_0_own_number:6507891159",
+			},
 		},
 	}
 	input := []*api.CrosTestRequest_Device{
@@ -257,6 +301,34 @@
 						Sku:           "123",
 						HwidComponent: []string{"hwid123"},
 						Hwid:          "Atlas 123-34",
+						SimInfos: []*labapi.SIMInfo{
+							{
+								SlotId: 1,
+								Type:   *labapi.SIMType_SIM_UNKNOWN.Enum(),
+								ProfileInfo: []*labapi.SIMProfileInfo{
+									{
+										Iccid:       "1",
+										SimPin:      "1111",
+										SimPuk:      "49830420",
+										CarrierName: *labapi.NetworkProvider_NETWORK_TMOBILE.Enum(),
+										OwnNumber:   "6507891159",
+									},
+								},
+							},
+							{
+								SlotId: 2,
+								Type:   *labapi.SIMType_SIM_PHYSICAL.Enum(),
+								ProfileInfo: []*labapi.SIMProfileInfo{
+									{
+										Iccid:       "2",
+										SimPin:      "2222",
+										SimPuk:      "49830420",
+										CarrierName: *labapi.NetworkProvider_NETWORK_ATT.Enum(),
+										OwnNumber:   "6507891159",
+									},
+								},
+							},
+						},
 					},
 				},
 				CacheServer: &labapi.CacheServer{Address: &labapi.IpEndpoint{Address: "cache1", Port: 8001}},
