diff --git a/OWNERS b/OWNERS
index 53e5f73..98ec162 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,3 @@
-zachoverflow@google.com
 elaurent@google.com
 jpawlowski@google.com
 malchev@google.com
diff --git a/include_all/hardware/sensors.h b/include_all/hardware/sensors.h
index 5f490b5..9b3e333 100644
--- a/include_all/hardware/sensors.h
+++ b/include_all/hardware/sensors.h
@@ -97,6 +97,11 @@
 #define SENSOR_PERMISSION_BODY_SENSORS "android.permission.BODY_SENSORS"
 
 /*
+ * The permission to use for reading heart rate sensors.
+ */
+#define SENSOR_PERMISSION_READ_HEART_RATE "android.permission.health.READ_HEART_RATE"
+
+/*
  * sensor flags legacy names
  *
  * please use SENSOR_FLAG_* directly for new implementation.
diff --git a/modules/sensors/dynamic_sensor/Android.bp b/modules/sensors/dynamic_sensor/Android.bp
index dbb3d93..00de46d 100644
--- a/modules/sensors/dynamic_sensor/Android.bp
+++ b/modules/sensors/dynamic_sensor/Android.bp
@@ -143,7 +143,9 @@
 cc_binary_host {
     name: "hidrawsensor_host_test",
     defaults: ["dynamic_sensor_defaults"],
-
+    static_libs: [
+        "libutils_binder",
+    ],
     srcs: [
         "HidRawSensor.cpp",
         "BaseSensorObject.cpp",
@@ -159,7 +161,9 @@
 cc_binary_host {
     name: "hidrawdevice_host_test",
     defaults: ["dynamic_sensor_defaults"],
-
+    static_libs: [
+        "libutils_binder",
+    ],
     srcs: [
         "HidRawDevice.cpp",
         "HidRawSensor.cpp",
diff --git a/modules/sensors/dynamic_sensor/HidRawDevice.cpp b/modules/sensors/dynamic_sensor/HidRawDevice.cpp
index 6032ed9..ae763e1 100644
--- a/modules/sensors/dynamic_sensor/HidRawDevice.cpp
+++ b/modules/sensors/dynamic_sensor/HidRawDevice.cpp
@@ -215,7 +215,7 @@
     }
     if (mIoBuffer.front() != id) {
         LOG_E << "HidRawDevice::getFeature: get feature " << static_cast<int>(id)
-              << " result has header " << mIoBuffer.front() << LOG_ENDL;
+              << " result has header " << static_cast<int>(mIoBuffer.front()) << LOG_ENDL;
     }
     out->resize(size - 1);
     std::copy(mIoBuffer.begin() + 1, mIoBuffer.begin() + size, out->begin());
diff --git a/modules/sensors/dynamic_sensor/HidRawSensor.cpp b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
index b61185d..d9c1e66 100644
--- a/modules/sensors/dynamic_sensor/HidRawSensor.cpp
+++ b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
@@ -18,6 +18,7 @@
 
 #include <android-base/properties.h>
 #include <utils/Errors.h>
+#include <utils/Unicode.h>
 #include <com_android_libhardware_dynamic_sensors_flags.h>
 #include "HidLog.h"
 
@@ -421,7 +422,14 @@
 
 void HidRawSensor::initFeatureValueFromHidDeviceInfo(
         FeatureValue *featureValue, const HidDevice::HidDeviceInfo &info) {
-    featureValue->name = info.name;
+    const uint8_t *str8 = (uint8_t *)info.name.c_str();
+    const ssize_t len16 = utf8_to_utf16_length(str8, info.name.size());
+    if (len16 != -1) {
+        featureValue->name = info.name;
+    } else {
+        LOG_E << "Received an invalid sensor name" << LOG_ENDL;
+        featureValue->name = "Invalid sensor name";
+    }
 
     std::ostringstream ss;
     ss << info.busType << " "
@@ -988,12 +996,13 @@
     SP(HidDevice) device = PROMOTE(mDevice);
 
     if (device == nullptr) {
-        LOG_E << "enable: no device" << LOG_ENDL;
+        LOG_E << "enable(" << enable << "): no device" << LOG_ENDL;
         return NO_INIT;
     }
 
     if (enable == mEnabled) {
-        LOG_D << "enable: already in desired state" << LOG_ENDL;
+        LOG_D << "enable(" << enable << "): already in desired state"
+              << LOG_ENDL;
         return NO_ERROR;
     }
 
@@ -1002,10 +1011,10 @@
     bool setReportingOk = setReportingState(device, enable);
     if (setPowerOk && setReportingOk && setLeAudioTransportOk) {
         mEnabled = enable;
-        LOG_I << "enable: success" << LOG_ENDL;
+        LOG_I << "enable(" << enable << "): success" << LOG_ENDL;
         return NO_ERROR;
     } else {
-        LOG_E << "enable: set feature failed" << LOG_ENDL;
+        LOG_E << "enable(" << enable << "): set feature failed" << LOG_ENDL;
         return INVALID_OPERATION;
     }
 }
@@ -1047,10 +1056,10 @@
                               mLeTransportBitOffset, mLeTransportBitSize);
             success = device->setFeature(id, buffer);
             if (!success) {
-              LOG_E << "enable: setFeature VENDOR LE TRANSPORT failed" << LOG_ENDL;
+              LOG_E << "enable(" << enable << "): setFeature LE TRANSPORT failed" << LOG_ENDL;
             }
         } else {
-            LOG_E << "enable: changing VENDOR LE TRANSPORT failed" << LOG_ENDL;
+            LOG_E << "enable(" << enable << "): changing LE TRANSPORT failed" << LOG_ENDL;
         }
     }
     return success;
@@ -1070,10 +1079,10 @@
                               0, mPowerStateBitOffset, mPowerStateBitSize);
             success = device->setFeature(id, buffer);
             if (!success) {
-              LOG_E << "enable: setFeature POWER STATE failed" << LOG_ENDL;
+              LOG_E << "enable(" << enable << "): setFeature POWER STATE failed" << LOG_ENDL;
             }
         } else {
-            LOG_E << "enable: changing POWER STATE failed" << LOG_ENDL;
+            LOG_E << "enable(" << enable << "): changing POWER STATE failed" << LOG_ENDL;
         }
     }
     return success;
@@ -1094,10 +1103,10 @@
                               mReportingStateBitOffset, mReportingStateBitSize);
             success = device->setFeature(id, buffer);
             if (!success) {
-              LOG_E << "enable: setFeature REPORTING STATE failed" << LOG_ENDL;
+              LOG_E << "enable(" << enable << "): setFeature REPORTING STATE failed" << LOG_ENDL;
             }
         } else {
-            LOG_E << "enable: changing REPORTING STATE failed" << LOG_ENDL;
+            LOG_E << "enable(" << enable << "): changing REPORTING STATE failed" << LOG_ENDL;
         }
     }
     return success;
@@ -1133,6 +1142,13 @@
                               0, mReportIntervalBitOffset,
                               mReportIntervalBitSize);
             ok = device->setFeature(id, buffer);
+            if (!ok) {
+                LOG_E << "batch(" << samplingPeriod << ", " << batchingPeriod << "): "
+                      << "setFeature failed" << LOG_ENDL;
+            }
+        } else {
+            LOG_E << "batch(" << samplingPeriod << ", " << batchingPeriod << "): "
+                  << "invalid getFeature result (buffer.size: " << buffer.size() << ")" << LOG_ENDL;
         }
     }
 
