diff --git a/Linux_x86/phDal4Nfc.c b/Linux_x86/phDal4Nfc.c
index 3e031f1..4086434 100644
--- a/Linux_x86/phDal4Nfc.c
+++ b/Linux_x86/phDal4Nfc.c
@@ -543,17 +543,17 @@
    /* Retrieve the hw module from the Android NFC HAL */
    ret = hw_get_module(NFC_HARDWARE_MODULE_ID, &hw_module);
    if (ret) {
-       LOGE("hw_get_module() failed");
+       ALOGE("hw_get_module() failed");
        return NFCSTATUS_FAILED;
    }
    ret = nfc_pn544_open(hw_module, &pn544_dev);
    if (ret) {
-       LOGE("Could not open pn544 hw_module");
+       ALOGE("Could not open pn544 hw_module");
        return NFCSTATUS_FAILED;
    }
    config->deviceNode = pn544_dev->device_node;
    if (config->deviceNode == NULL) {
-       LOGE("deviceNode NULL");
+       ALOGE("deviceNode NULL");
        return NFCSTATUS_FAILED;
    }
 
@@ -721,7 +721,7 @@
     if (gDalContext.pDev != NULL) {
         i2c_workaround = gDalContext.pDev->enable_i2c_workaround;
     } else {
-        LOGE("gDalContext.pDev is not set");
+        ALOGE("gDalContext.pDev is not set");
         return NFCSTATUS_FAILED;
     }
 
diff --git a/Linux_x86/phDal4Nfc_uart.c b/Linux_x86/phDal4Nfc_uart.c
index e8dbce9..520ab9c 100644
--- a/Linux_x86/phDal4Nfc_uart.c
+++ b/Linux_x86/phDal4Nfc_uart.c
@@ -423,19 +423,19 @@
     DAL_DEBUG("phDal4Nfc_uart_reset, VEN level = %ld", level);
 
     if (snprintf(buffer, sizeof(buffer), "%u", (unsigned int)level) != 1) {
-        LOGE("Bad nfc power level (%u)", (unsigned int)level);
+        ALOGE("Bad nfc power level (%u)", (unsigned int)level);
         goto out;
     }
 
     fd = open(NFC_POWER_PATH, O_WRONLY);
     if (fd < 0) {
-        LOGE("open(%s) for write failed: %s (%d)", NFC_POWER_PATH,
+        ALOGE("open(%s) for write failed: %s (%d)", NFC_POWER_PATH,
                 strerror(errno), errno);
         goto out;
     }
     sz = write(fd, &buffer, sizeof(buffer) - 1);
     if (sz < 0) {
-        LOGE("write(%s) failed: %s (%d)", NFC_POWER_PATH, strerror(errno),
+        ALOGE("write(%s) failed: %s (%d)", NFC_POWER_PATH, strerror(errno),
              errno);
         goto out;
     }
diff --git a/Linux_x86/phOsalNfc.c b/Linux_x86/phOsalNfc.c
index 1fd2288..3f4542d 100644
--- a/Linux_x86/phOsalNfc.c
+++ b/Linux_x86/phOsalNfc.c
@@ -144,8 +144,8 @@
 
     if(eExceptionType == phOsalNfc_e_UnrecovFirmwareErr)
     {
-        LOGE("HCI Timeout - Exception raised");
-        LOGE("Force restart of NFC Service");
+        ALOGE("HCI Timeout - Exception raised");
+        ALOGE("Force restart of NFC Service");
         abort();
     }
 }
diff --git a/src/phHal4Nfc.c b/src/phHal4Nfc.c
index a579811..0f6ce2b 100644
--- a/src/phHal4Nfc.c
+++ b/src/phHal4Nfc.c
@@ -316,20 +316,20 @@
 
     void *handle = dlopen(FW_PATH, RTLD_NOW);
     if (handle == NULL) {
-        LOGE("Could not open %s", FW_PATH);
+        ALOGE("Could not open %s", FW_PATH);
         return -1;
     }
 
     p = dlsym(handle, "nxp_nfc_full_version");
     if (p == NULL) {
-        LOGE("Could not link nxp_nfc_full_version");
+        ALOGE("Could not link nxp_nfc_full_version");
         return -1;
     }
     nxp_nfc_full_version = (unsigned char *)p;
 
     p = dlsym(handle, "nxp_nfc_fw");
     if (p == NULL) {
-        LOGE("Could not link nxp_nfc_fw");
+        ALOGE("Could not link nxp_nfc_fw");
         return -1;
     }
     nxp_nfc_fw = (unsigned char *)p;
diff --git a/src/phLlcNfc_Interface.c b/src/phLlcNfc_Interface.c
index 9e92163..7f3336d 100644
--- a/src/phLlcNfc_Interface.c
+++ b/src/phLlcNfc_Interface.c
@@ -807,7 +807,7 @@
                 }
                 else
                 {
-                    LOGE("max LLC retries exceeded, stack restart");
+                    ALOGE("max LLC retries exceeded, stack restart");
                     result = phLlcNfc_Interface_Read (ps_llc_ctxt, 
                                 PH_LLCNFC_READWAIT_OFF, 
                                 (uint8_t *)&(ps_recv_pkt->s_llcbuf.llc_length_byte), 
@@ -832,7 +832,7 @@
             else if (ps_frame_info->recv_error_count >= 
                     PH_LLCNFC_MAX_REJ_RETRY_COUNT)
             {
-                LOGE("max LLC retries exceeded, stack restart");
+                ALOGE("max LLC retries exceeded, stack restart");
                 result = phLlcNfc_Interface_Read (ps_llc_ctxt, 
                         PH_LLCNFC_READWAIT_OFF, 
                         (uint8_t *)&(ps_recv_pkt->s_llcbuf.llc_length_byte), 
@@ -855,7 +855,7 @@
                 (PH_LLCNFC_MAX_BUFLEN_RECV_SEND > pCompInfo->length) && 
                 (pCompInfo->length != ps_recv_pkt->s_llcbuf.llc_length_byte))
             {
-                LOGE("bad LLC length1 %d", pCompInfo->length);
+                ALOGE("bad LLC length1 %d", pCompInfo->length);
                 ps_frame_info->recv_error_count = (uint8_t)
                                     (ps_frame_info->recv_error_count + 1);
                 libnfc_llc_error_count++;
