diff --git a/conf/iCubFindDependencies.cmake b/conf/iCubFindDependencies.cmake
index 0883557200..9fa6cff6c8 100644
--- a/conf/iCubFindDependencies.cmake
+++ b/conf/iCubFindDependencies.cmake
@@ -72,8 +72,8 @@ checkandset_dependency(Qt5)
 
 if(icub_firmware_shared_FOUND AND ICUB_USE_icub_firmware_shared)
   # icub-firmware-shared 4.0.7 was actually a wrong version exported by icub-firmware-shared <= 1.15
-  if(icub_firmware_shared_VERSION VERSION_GREATER 4 OR icub_firmware_shared_VERSION VERSION_LESS 1.20.2)
-    message(FATAL_ERROR "An old version of icub-firmware-shared has been detected, but at least 1.20.2 is required")
+  if(icub_firmware_shared_VERSION VERSION_GREATER 4 OR icub_firmware_shared_VERSION VERSION_LESS 1.21.0)
+    message(FATAL_ERROR "An old version of icub-firmware-shared has been detected, but at least 1.21.0 is required")
   endif()
 endif()
 
diff --git a/src/libraries/icubmod/embObjLib/serviceParser.cpp b/src/libraries/icubmod/embObjLib/serviceParser.cpp
index 1d3e5b8a00..95e1d9981e 100755
--- a/src/libraries/icubmod/embObjLib/serviceParser.cpp
+++ b/src/libraries/icubmod/embObjLib/serviceParser.cpp
@@ -1792,6 +1792,8 @@ bool ServiceParser::parse_encoder_port(std::string const &fromstring, eObrd_etht
 {
     const char *t = fromstring.c_str();
 
+    yInfo() << "ServiceParser::parse_encoder_port(): ===========================> " << eomc_encoder2string(type, false);
+
     bool ret = false;
     switch(type)
     {
@@ -1810,6 +1812,7 @@ bool ServiceParser::parse_encoder_port(std::string const &fromstring, eObrd_etht
         } break;
 
         case eomc_enc_aea:
+        case eomc_enc_aea3:
         case eomc_enc_amo:
         case eomc_enc_qenc:
         case eomc_enc_spichainof2:
diff --git a/src/libraries/icubmod/embObjMotionControl/embObjMotionControl.cpp b/src/libraries/icubmod/embObjMotionControl/embObjMotionControl.cpp
index 733892be07..50964b38d0 100644
--- a/src/libraries/icubmod/embObjMotionControl/embObjMotionControl.cpp
+++ b/src/libraries/icubmod/embObjMotionControl/embObjMotionControl.cpp
@@ -1054,6 +1054,9 @@ void embObjMotionControl::updateDeadZoneWithDefaultValues(void)
             case eomc_enc_aea:
                 _deadzone[i] = eomc_defaultValue::DeadZone::jointWithAEA;// 0.0494;
                 break;
+            case eomc_enc_aea3:
+                _deadzone[i] = eomc_defaultValue::DeadZone::jointWithAEA3;// TODO: temporary equal to 0.0 (fixit!)
+                break;
             case eomc_enc_amo:
                 _deadzone[i] = eomc_defaultValue::DeadZone::jointWithAMO;//  0.0055;
                 break;
diff --git a/src/libraries/icubmod/embObjMotionControl/motionControlDefaultValues.h b/src/libraries/icubmod/embObjMotionControl/motionControlDefaultValues.h
index 6542d264f5..ecbb36faca 100644
--- a/src/libraries/icubmod/embObjMotionControl/motionControlDefaultValues.h
+++ b/src/libraries/icubmod/embObjMotionControl/motionControlDefaultValues.h
@@ -29,6 +29,7 @@ namespace eomc_defaultValue
     namespace DeadZone
     {
         const double jointWithAEA = 0.0494;
+        const double jointWithAEA3 = 0.0; // TODO: fix
         const double jointWithAMO = 0.0055;
     }
 }