diff --git a/src/third_party/starboard/rdk/shared/rdkservices.cc b/src/third_party/starboard/rdk/shared/rdkservices.cc
index 6355fe5..215ef9f 100644
--- a/src/third_party/starboard/rdk/shared/rdkservices.cc
+++ b/src/third_party/starboard/rdk/shared/rdkservices.cc
@@ -1161,6 +1161,8 @@
     needs_refresh_.store(true);
   }
 
+  bool GetBrandName(std::string& out);
+
 private:
   struct DeviceDetailsData : public Core::JSON::Container {
     DeviceDetailsData()
@@ -1252,6 +1254,7 @@
   ::starboard::Mutex mutex_;
 
   std::vector<SbMediaAudioConfiguration> audio_configurations_;
+  Core::OptionalType<std::string> brand_name_;
 
   static constexpr SbMediaAudioConnector kAudioConnectorUnknown = static_cast<SbMediaAudioConnector>(0);
 };
@@ -1432,6 +1435,33 @@
   return false;
 }
 
+bool DeviceInfoImpl::GetBrandName(std::string& out) {
+  if (!brand_name_.IsSet()) {
+    struct BrandNameInfo : public Core::JSON::Container {
+      BrandNameInfo() : Core::JSON::Container() {
+          Add(_T("brand"), &BrandName);
+      }
+      Core::JSON::String BrandName;
+    } info;
+    uint32_t rc = device_info_.Get(kDefaultTimeoutMs, "brandname", info);
+    if (Core::ERROR_NONE != rc) {
+      SB_LOG(ERROR) << "Failed to get '" << kDeviceInfoCallsign
+                    << ".brandname', rc=" << rc
+                    << " ( " << Core::ErrorToString(rc) << " ).";
+      if (rc == Core::ERROR_ASYNC_FAILED || rc == Core::ERROR_TIMEDOUT) {
+        brand_name_.Clear();
+      } else {
+      brand_name_ = "";
+      }
+    } else {
+      brand_name_ = info.BrandName.Value();
+      SB_LOG(INFO) << "Device brandname: " << brand_name_.Value();
+    }
+  }
+  out = brand_name_.Value();
+  return !out.empty();
+}
+
 }  // namespace
 
 ResolutionInfo DisplayInfo::GetResolution() {
@@ -1562,6 +1592,10 @@
   return GetDeviceInfo()->GetAudioConfiguration(index, out_audio_configuration);
 }
 
+bool DeviceInfo::GetBrandName(std::string& out) {
+  return GetDeviceInfo()->GetBrandName(out);
+}
+
 void TeardownJSONRPCLink() {
   GetDisplayInfo()->Teardown();
   GetTextToSpeech()->Teardown();
diff --git a/src/third_party/starboard/rdk/shared/rdkservices.h b/src/third_party/starboard/rdk/shared/rdkservices.h
index e317ebe..b7bccc8 100644
--- a/src/third_party/starboard/rdk/shared/rdkservices.h
+++ b/src/third_party/starboard/rdk/shared/rdkservices.h
@@ -115,6 +115,7 @@
 class DeviceInfo {
 public:
   static bool GetAudioConfiguration(int index, SbMediaAudioConfiguration* out_audio_configuration);
+  static bool GetBrandName(std::string& out);
 };
 
 void TeardownJSONRPCLink();
diff --git a/src/third_party/starboard/rdk/shared/system/system_get_property.cc b/src/third_party/starboard/rdk/shared/system/system_get_property.cc
index 6207ec2..c46abe5 100644
--- a/src/third_party/starboard/rdk/shared/system/system_get_property.cc
+++ b/src/third_party/starboard/rdk/shared/system/system_get_property.cc
@@ -139,7 +139,7 @@
 
 bool GetOperatorName(char* out_value, int value_length) {
   std::string prop;
-  if (SystemProperties::GetBrandName(prop)) {
+  if (SystemProperties::GetBrandName(prop) || DeviceInfo::GetBrandName(prop)) {
     return CopyStringAndTestIfSuccess(
       out_value, value_length, prop.c_str());
   }
