diff --git a/lib/libdvben50221/en50221_stdcam_llci.c b/lib/libdvben50221/en50221_stdcam_llci.c
--- a/lib/libdvben50221/en50221_stdcam_llci.c
+++ b/lib/libdvben50221/en50221_stdcam_llci.c
@@ -32,7 +32,7 @@
 #include "en50221_app_tags.h"
 #include "en50221_stdcam.h"
 
-#define LLCI_RESPONSE_TIMEOUT_MS 1000
+#define LLCI_RESPONSE_TIMEOUT_MS 10*1000
 #define LLCI_POLL_DELAY_MS 100
 
 /* resource IDs we support */
@@ -207,7 +207,16 @@ static void en50221_stdcam_llci_destroy(
 		en50221_app_mmi_destroy(llci->stdcam.mmi_resource);
 
 	if (closefd)
+	{
+		// Read the buffer before closing the device to remove the last polling answer
+		uint8_t r_slot_id;
+		uint8_t connection_id;
+		uint8_t data[4096];
+		dvbca_link_read(llci->cafd, &r_slot_id,
+			&connection_id,
+			data, sizeof(data));
 		close(llci->cafd);
+	}
 
 	free(llci);
 }
@@ -243,9 +252,14 @@ static enum en50221_stdcam_status en5022
 	if (llci->datetime_session_number != -1) {
 		time_t cur_time = time(NULL);
 		if (llci->datetime_response_interval && (cur_time > llci->datetime_next_send)) {
-			en50221_app_datetime_send(llci->datetime_resource,
-						llci->datetime_session_number,
-						llci->datetime_dvbtime, 0);
+			if (llci->datetime_dvbtime>0)
+				en50221_app_datetime_send(llci->datetime_resource,
+							llci->datetime_session_number,
+							llci->datetime_dvbtime, -1);
+			else
+				en50221_app_datetime_send(llci->datetime_resource,
+							llci->datetime_session_number,
+							time(NULL), -1);
 			llci->datetime_next_send = cur_time + llci->datetime_response_interval;
 		}
 	}
@@ -334,12 +348,14 @@ static int llci_lookup_callback(void *ar
 					return -3;
 				break;
 			case EN50221_APP_CA_RESOURCEID:
-				if (llci->stdcam.ca_session_number != -1)
-					return -3;
+				// As ressources are declared when used but not when released, limiting session is buggy...
+				// if (llci->stdcam.ca_session_number != -1)
+				//	return -3;
 				break;
 			case EN50221_APP_MMI_RESOURCEID:
-				if (llci->stdcam.mmi_session_number != -1)
-					return -3;
+				// As ressources are declared when used but not when released, limiting session is buggy...
+				// if (llci->stdcam.mmi_session_number != -1)
+				//	return -3;
 				break;
 			}
 
@@ -377,9 +393,7 @@ static int llci_session_callback(void *a
 		break;
 
 	case S_SCALLBACK_REASON_CLOSE:
-		if (resource_id == EN50221_APP_MMI_RESOURCEID) {
-			llci->stdcam.mmi_session_number = -1;
-		} else if (resource_id == EN50221_APP_DATETIME_RESOURCEID) {
+		if (resource_id == EN50221_APP_DATETIME_RESOURCEID) {
 			llci->datetime_session_number = -1;
 		} else if (resource_id == EN50221_APP_AI_RESOURCEID) {
 			llci->stdcam.ai_session_number = -1;
@@ -438,7 +452,10 @@ static int llci_datetime_enquiry_callbac
 	if (response_interval) {
 		llci->datetime_next_send = time(NULL) + response_interval;
 	}
-	en50221_app_datetime_send(llci->datetime_resource, session_number, llci->datetime_dvbtime, 0);
+	if (llci->datetime_dvbtime>0)
+		en50221_app_datetime_send(llci->datetime_resource, session_number, llci->datetime_dvbtime, -1);
+	else
+		en50221_app_datetime_send(llci->datetime_resource, session_number, time(NULL), -1);
 
 	return 0;
 }
