diff --git a/src/tests/drivers/test-lsm9ds1.cpp b/src/tests/drivers/test-lsm9ds1.cpp
index 7967308a440b1437312a7eb383c43cb14ab5b6e3..3a01ac312fab82029f25827413bd12da20c1ce97 100644
--- a/src/tests/drivers/test-lsm9ds1.cpp
+++ b/src/tests/drivers/test-lsm9ds1.cpp
@@ -25,6 +25,7 @@
 
 #include "drivers/spi/SPIDriver.h"
 #include "sensors/LSM9DS1/LSM9DS1_AxelGyro.h"
+#include "sensors/LSM9DS1/LSM9DSI_Magneto.h"
 
 using namespace miosix;
 
@@ -33,13 +34,18 @@ typedef Gpio<GPIOA_BASE, 6> GpioMiso;
 typedef Gpio<GPIOA_BASE, 7> GpioMosi;
 
 static const bool FIFO_ENABLED = false;
-Vec3 adata, gdata;
+Vec3 adata, gdata, mdata;
 float tdata; 
 
 //SPI
 SPIBus bus(SPI1);
 SPIBusConfig cfg;
 GpioPin cs_XLG(GPIOE_BASE, 7);
+GpioPin cs_M(GPIOE_BASE, 8);
+
+//LEDs
+GpioPin LED1(GPIOD_BASE, 15);
+GpioPin LED2(GPIOD_BASE, 13);
 
 
 
@@ -57,6 +63,7 @@ int main(){
         GpioMosi::mode(Mode::ALTERNATE);
         
         cs_XLG.mode(Mode::OUTPUT);
+        cs_M.mode(Mode::OUTPUT); 
 
         GpioSck::alternateFunction(5);
         GpioMiso::alternateFunction(5);
@@ -64,9 +71,13 @@ int main(){
 
         GpioSck::speed(Speed::_25MHz); 
 
+        LED1.mode(Mode::OUTPUT);
+        LED2.mode(Mode::OUTPUT);
+
     }
 
     cs_XLG.high();
+    cs_M.high(); 
 
 //dump regiters
 /*
@@ -81,7 +92,7 @@ int main(){
     
     
   
-    LSM9DS1_XLG lsm9ds1(
+    LSM9DS1_XLG lsm9ds1X(
                     bus,
                     cs_XLG,
                     cfg,
@@ -90,23 +101,37 @@ int main(){
                     LSM9DS1_XLG::ODR::ODR_952
                     );
 
+    LSM9DS1_M lsm9ds1M(
+                    bus,
+                    cs_M,
+                    LSM9DS1_M::MagFSR::FS_8,
+                    LSM9DS1_M::ODR::ODR_20
+                    );
+
+    while(!lsm9ds1X.init()){}
+    LED1.high();
 
-    while(!lsm9ds1.init()){}
+    while(!lsm9ds1M.init()){}
+    LED2.high();
 
     Thread::sleep(500);
-    printf("ax,ay,az,gx,gy,gz,t\n");
+    
+    printf("time,ax,ay,az,gx,gy,gz,mx,my,mz,t\n");
     long long first_tick = getTick();  
     for(;;)
     {   
         long long last_tick = getTick(); 
-        lsm9ds1.onSimpleUpdate();
-        adata = *(lsm9ds1.accelDataPtr());
-        gdata = *(lsm9ds1.gyroDataPtr());
-        tdata = *(lsm9ds1.tempDataPtr());
-        printf("%d;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.1f\n",
+        lsm9ds1X.onSimpleUpdate();
+        adata = *(lsm9ds1X.accelDataPtr());
+        gdata = *(lsm9ds1X.gyroDataPtr());
+        tdata = *(lsm9ds1X.tempDataPtr());
+        lsm9ds1M.onSimpleUpdate(); 
+        mdata = *(lsm9ds1M.compassDataPtr());
+        printf("%d,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.1f\n",
                 (int)(last_tick - first_tick), 
                 adata.getX(), adata.getY(), adata.getZ(),
                 gdata.getX(), gdata.getY(), gdata.getZ(),
+                mdata.getX(), mdata.getY(), mdata.getZ(),
                 tdata);
     }