diff --git a/include/hidl/HidlSupport.h b/include/hidl/HidlSupport.h
index 6b88664..791c3b3 100644
--- a/include/hidl/HidlSupport.h
+++ b/include/hidl/HidlSupport.h
@@ -239,23 +239,31 @@
 
 #define DECLARE_REGISTER_AND_GET_SERVICE(INTERFACE)                                      \
     static ::android::sp<I##INTERFACE> getService(                                       \
-            const std::string &serviceName);                                             \
+            const std::string &serviceName, bool getStub=false);                         \
     status_t registerAsService(                                                          \
             const std::string &serviceName);                                             \
 
 #define IMPLEMENT_REGISTER_AND_GET_SERVICE(INTERFACE, LIB)                               \
     ::android::sp<I##INTERFACE> I##INTERFACE::getService(                                \
-            const std::string &serviceName)                                              \
+            const std::string &serviceName, bool getStub)                                \
     {                                                                                    \
         sp<I##INTERFACE> iface;                                                          \
-        const sp<IServiceManager> sm = defaultServiceManager();                          \
-        if (sm != nullptr) {                                                             \
-            sp<IBinder> binderIface = sm->checkService(String16(serviceName.c_str()),    \
-                                                       I##INTERFACE::version);           \
-            iface = IHw##INTERFACE::asInterface(binderIface);                            \
-        }                                                                                \
-        if (iface != nullptr) {                                                          \
-            return iface;                                                                \
+        const struct timespec DELAY {1,0};                                               \
+        unsigned retries = 3;                                                            \
+        if (!getStub) {                                                                  \
+            do {                                                                         \
+                const sp<IServiceManager> sm = defaultServiceManager();                  \
+                if (sm != nullptr) {                                                     \
+                    sp<IBinder> binderIface =                                            \
+                            sm->checkService(String16(serviceName.c_str()),              \
+                                             I##INTERFACE::version);                     \
+                    iface = IHw##INTERFACE::asInterface(binderIface);                    \
+                }                                                                        \
+                if (iface != nullptr) {                                                  \
+                    return iface;                                                        \
+                }                                                                        \
+                TEMP_FAILURE_RETRY(nanosleep(&DELAY, nullptr));                          \
+            } while (retries--);                                                         \
         }                                                                                \
         int dlMode = RTLD_LAZY;                                                          \
         void *handle = dlopen(HAL_LIBRARY_PATH_ODM LIB, dlMode);                         \
