diff --git a/nearby/service/java/com/android/server/nearby/provider/Utils.java b/nearby/service/java/com/android/server/nearby/provider/Utils.java
index 867774c..ca0a390 100644
--- a/nearby/service/java/com/android/server/nearby/provider/Utils.java
+++ b/nearby/service/java/com/android/server/nearby/provider/Utils.java
@@ -27,19 +27,69 @@
     static Rpcs.GetObservedDeviceResponse convert(
             FastPairAntispoofkeyDeviceMetadataParcel metadata) {
         return Rpcs.GetObservedDeviceResponse.newBuilder()
-          .setDevice(
-              Rpcs.Device.newBuilder()
-              .setAntiSpoofingKeyPair(
-                  Rpcs.AntiSpoofingKeyPair.newBuilder()
-                  .setPublicKey(ByteString.copyFrom(metadata.antiSpoofPublicKey))
+          .setDevice(Rpcs.Device.newBuilder()
+                  .setAntiSpoofingKeyPair(Rpcs.AntiSpoofingKeyPair.newBuilder()
+                          .setPublicKey(ByteString.copyFrom(metadata.antiSpoofPublicKey))
+                          .build())
+                  .setTrueWirelessImages(
+                          Rpcs.TrueWirelessHeadsetImages.newBuilder()
+                                  .setLeftBudUrl(
+                                          metadata.deviceMetadata.trueWirelessImageUrlLeftBud)
+                                  .setRightBudUrl(
+                                          metadata.deviceMetadata.trueWirelessImageUrlRightBud)
+                                  .setCaseUrl(metadata.deviceMetadata.trueWirelessImageUrlCase)
+                                  .build())
+                  .setImageUrl(metadata.deviceMetadata.imageUrl)
+                  .setIntentUri(metadata.deviceMetadata.intentUri)
+                  .setBleTxPower(metadata.deviceMetadata.bleTxPower)
+                  .setTriggerDistance(metadata.deviceMetadata.triggerDistance)
+                  .setDeviceType(Rpcs.DeviceType.forNumber(metadata.deviceMetadata.deviceType))
                   .build())
-              .setImageUrl(metadata.deviceMetadata.imageUrl)
-              .setIntentUri(metadata.deviceMetadata.intentUri)
-              .setBleTxPower(metadata.deviceMetadata.bleTxPower)
-              .setTriggerDistance(metadata.deviceMetadata.triggerDistance)
-              .setDeviceType(Rpcs.DeviceType.forNumber(metadata.deviceMetadata.deviceType))
-              .build())
           .setImage(ByteString.copyFrom(metadata.deviceMetadata.image))
-          .build();
+          .setStrings(Rpcs.ObservedDeviceStrings.newBuilder()
+                  .setAssistantSetupHalfSheet(metadata.deviceMetadata.assistantSetupHalfSheet)
+                  .setAssistantSetupNotification(metadata.deviceMetadata.assistantSetupNotification)
+                  .setConfirmPinDescription(metadata.deviceMetadata.confirmPinDescription)
+                  .setConfirmPinTitle(metadata.deviceMetadata.confirmPinTitle)
+                  .setConnectSuccessCompanionAppInstalled(
+                          metadata.deviceMetadata.connectSuccessCompanionAppInstalled)
+                  .setConnectSuccessCompanionAppNotInstalled(
+                          metadata.deviceMetadata.connectSuccessCompanionAppNotInstalled)
+                  .setDownloadCompanionAppDescription(
+                          metadata.deviceMetadata.downloadCompanionAppDescription)
+                  .setFailConnectGoToSettingsDescription(
+                          metadata.deviceMetadata.failConnectGoToSettingsDescription)
+                  .setFastPairTvConnectDeviceNoAccountDescription(
+                          metadata.deviceMetadata.fastPairTvConnectDeviceNoAccountDescription)
+                  .setInitialNotificationDescription(
+                          metadata.deviceMetadata.initialNotificationDescription)
+                  .setInitialNotificationDescriptionNoAccount(
+                          metadata.deviceMetadata.initialNotificationDescriptionNoAccount)
+                  .setInitialPairingDescription(metadata.deviceMetadata.initialPairingDescription)
+                  .setLocale(metadata.deviceMetadata.locale)
+                  .setOpenCompanionAppDescription(
+                          metadata.deviceMetadata.openCompanionAppDescription)
+                  .setRetroactivePairingDescription(
+                          metadata.deviceMetadata.retroactivePairingDescription)
+                  .setSubsequentPairingDescription(
+                          metadata.deviceMetadata.subsequentPairingDescription)
+                  .setSyncContactsDescription(
+                          metadata.deviceMetadata.syncContactsDescription)
+                  .setSyncContactsTitle(
+                          metadata.deviceMetadata.syncContactsTitle)
+                  .setSyncSmsDescription(
+                          metadata.deviceMetadata.syncSmsDescription)
+                  .setSyncSmsTitle(
+                          metadata.deviceMetadata.syncSmsTitle)
+                  .setUnableToConnectDescription(
+                          metadata.deviceMetadata.unableToConnectDescription)
+                  .setUnableToConnectTitle(
+                          metadata.deviceMetadata.unableToConnectTitle)
+                  .setUpdateCompanionAppDescription(
+                          metadata.deviceMetadata.updateCompanionAppDescription)
+                  .setWaitLaunchCompanionAppDescription(
+                          metadata.deviceMetadata.waitLaunchCompanionAppDescription)
+                  .build())
+                .build();
     }
 }
