diff --git a/tv/cec/1.0/default/HdmiCecDefault.cpp b/tv/cec/1.0/default/HdmiCecDefault.cpp
index c8dd511..8ce4d11 100644
--- a/tv/cec/1.0/default/HdmiCecDefault.cpp
+++ b/tv/cec/1.0/default/HdmiCecDefault.cpp
@@ -36,6 +36,9 @@
 namespace V1_0 {
 namespace implementation {
 
+// When set to false, all the CEC commands are discarded. True by default after initialization.
+bool mCecEnabled;
+
 int mCecFd;
 int mExitFd;
 pthread_t mEventThread;
@@ -44,6 +47,7 @@
 HdmiCecDefault::HdmiCecDefault() {
     mCecFd = -1;
     mExitFd = -1;
+    mCecEnabled = false;
     mCallback = nullptr;
 }
 
@@ -156,6 +160,10 @@
 }
 
 Return<SendMessageResult> HdmiCecDefault::sendMessage(const CecMessage& message) {
+    if (!mCecEnabled) {
+        return SendMessageResult::FAIL;
+    }
+
     struct cec_msg cecMsg;
     memset(&cecMsg, 0, sizeof(cec_msg));
 
@@ -230,7 +238,15 @@
     return Void();
 }
 
-Return<void> HdmiCecDefault::setOption(OptionKey /*key*/, bool /*value*/) {
+Return<void> HdmiCecDefault::setOption(OptionKey key, bool value) {
+    switch (key) {
+        case OptionKey::ENABLE_CEC:
+            LOG(DEBUG) << "setOption: Enable CEC: " << value;
+            mCecEnabled = value;
+            break;
+        default:
+            break;
+    }
     return Void();
 }
 
@@ -300,6 +316,7 @@
         return Result::FAILURE_NOT_SUPPORTED;
     }
 
+    mCecEnabled = true;
     return Result::SUCCESS;
 }
 
@@ -315,6 +332,7 @@
     if (mCecFd > 0) {
         close(mCecFd);
     }
+    mCecEnabled = false;
     setCallback(nullptr);
     return Void();
 }
@@ -345,6 +363,10 @@
             struct cec_event ev;
             ret = ioctl(mCecFd, CEC_DQEVENT, &ev);
 
+            if (!mCecEnabled) {
+                continue;
+            }
+
             if (ret) {
                 LOG(ERROR) << "CEC_DQEVENT failed, Error = " << strerror(errno);
                 continue;
@@ -366,6 +388,10 @@
             struct cec_msg msg = {};
             ret = ioctl(mCecFd, CEC_RECEIVE, &msg);
 
+            if (!mCecEnabled) {
+                continue;
+            }
+
             if (ret) {
                 LOG(ERROR) << "CEC_RECEIVE failed, Error = " << strerror(errno);
                 continue;
