diff --git a/src/shared/sensors/iNemo.h b/src/shared/sensors/iNemo.h
index baa9301c15f3f21eb53cd56a1bbc593c86ddbc02..3d1315693a77cae10252e54d495dc82437d68403 100644
--- a/src/shared/sensors/iNemo.h
+++ b/src/shared/sensors/iNemo.h
@@ -76,19 +76,33 @@ public:
         //accelerometer configuration
         //reset internal memory
         BusXM::write(CTRL_REG0_XM, 0x80);
+
+        uint8_t timeout = 10;
+
+        while(BusXM::read(CTRL_REG0_XM) != 0x00 && --timeout > 0)
+            Thread::sleep(1);
+
+        if(timeout == 0)
+        {
+            last_error = ERR_RESET_TIMEOUT;
+            return false;
+        }
+
         //100Hz data rate, continuous update, xyz enabled
         BusXM::write(CTRL_REG1_XM,0x67);
         //antialias filter 773 Hz, normal mode no test
-        BusXM::write(CTRL_REG2_XM,0x00 | (accelFS<<3));   
+        BusXM::write(CTRL_REG2_XM,(0x01 << 6) | (accelFS << 3));   
 
         //interrupt not enabled
         BusXM::write(CTRL_REG3_XM,0x00);
         BusXM::write(CTRL_REG4_XM,0x00);
-        //temperature sensor enabled, 100hz magnetic data rate, 2 gauss
-        BusXM::write(CTRL_REG5_XM,0xF4);
+
+        //temperature sensor enabled, 50hz magnetic data rate, 2 gauss
+        BusXM::write(CTRL_REG5_XM,0xF0);
+
         // 2 gauss 
         BusXM::write(CTRL_REG6_XM,0x00 | (compassFS<<5));  
-        BusXM::write(CTRL_REG7_XM,0x00);
+        BusXM::write(CTRL_REG7_XM,0x80);
 
         return true;
     }
@@ -116,9 +130,11 @@ public:
     {
         const auto& r = req.readResponseFromPeripheral();
 
-        int16_t data[3];
+        int16_t data[3] = {0};
         memcpy(data, &r[1], r.size()-1);
-        // printf("ID: %d  --> ", req.id()); memDump(r.data(), r.size());
+        //printf("ID: %d  --> %+05d,%+05d,%+05d -> ", 
+        //  req.id(),data[0],data[1],data[2]);
+        //memDump(r.data(),r.size());
 
         switch(req.id())
         {