diff --git a/boards/microbit/Makefile.dep b/boards/microbit/Makefile.dep
index e54ceaf6ecb71770b2727908080e6c9d830d0b04..cb0306f5bf4e7139283aff33c993a9adbe282ead 100644
--- a/boards/microbit/Makefile.dep
+++ b/boards/microbit/Makefile.dep
@@ -5,6 +5,7 @@ endif
 
 ifneq (,$(filter saul_default,$(USEMODULE)))
   USEMODULE += saul_gpio
+  USEMODULE += mma8x5x
 endif
 
 ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE)))
diff --git a/boards/microbit/include/board.h b/boards/microbit/include/board.h
index c2c0d8daa48a874c34668619f6d6777c1e73fb2c..653428601393e53d365d83003a3230094d0b4616 100644
--- a/boards/microbit/include/board.h
+++ b/boards/microbit/include/board.h
@@ -69,7 +69,6 @@ extern "C" {
  */
 #define MMA8X5X_PARAM_I2C           I2C_DEV(0)
 #define MMA8X5X_PARAM_ADDR          0x1d
-#define MMA8X5X_PARAM_TYPE          0x5a
 /** @} */
 
 /**
diff --git a/drivers/include/mma8x5x.h b/drivers/include/mma8x5x.h
index 7c9abf29fa4c6cb1f13740e27def5812a05f0c63..fccc843a5a77f2175418339eb217ad916743a003 100644
--- a/drivers/include/mma8x5x.h
+++ b/drivers/include/mma8x5x.h
@@ -95,7 +95,6 @@ enum {
 typedef struct {
     i2c_t i2c;                  /**< I2C bus the device is connected to */
     uint8_t addr;               /**< I2C bus address of the device */
-    uint8_t type;               /**< device type */
     uint8_t rate;               /**< sampling rate to use */
     uint8_t range;              /**< scale range to use */
     uint8_t offset[3];          /**< data offset in X, Y, and Z direction */
diff --git a/drivers/mma8x5x/include/mma8x5x_params.h b/drivers/mma8x5x/include/mma8x5x_params.h
index e9170afb23fae85df1e816fe9bfa5c4593032a70..e2bc23969106adc27012a3d53c25ed25f2d665f7 100644
--- a/drivers/mma8x5x/include/mma8x5x_params.h
+++ b/drivers/mma8x5x/include/mma8x5x_params.h
@@ -37,9 +37,6 @@ extern "C" {
 #ifndef MMA8X5X_PARAM_ADDR
 #define MMA8X5X_PARAM_ADDR      (MMA8X5X_I2C_ADDRESS)
 #endif
-#ifndef MMA8X5X_PARAM_TYPE
-#define MMA8X5X_PARAM_TYPE      (MMA8X5X_TYPE_MMA8652)
-#endif
 #ifndef MMA8X5X_PARAM_RATE
 #define MMA8X5X_PARAM_RATE      (MMA8X5X_RATE_200HZ)
 #endif
@@ -53,13 +50,12 @@ extern "C" {
 #ifndef MMA8X5X_PARAMS
 #define MMA8X5X_PARAMS          { .i2c    = MMA8X5X_PARAM_I2C,   \
                                   .addr   = MMA8X5X_PARAM_ADDR,  \
-                                  .type   = MMA8X5X_PARAM_TYPE,  \
                                   .rate   = MMA8X5X_PARAM_RATE,  \
                                   .range  = MMA8X5X_PARAM_RANGE, \
                                   .offset = MMA8X5X_PARAM_OFFSET }
 #endif
 #ifndef MMA8X5X_SAUL_INFO
-#define MMA8X5X_SAUL_INFO       { .name = "mma8652" }
+#define MMA8X5X_SAUL_INFO       { .name = "mma8x5x" }
 #endif
 /**@}*/
 
diff --git a/drivers/mma8x5x/mma8x5x.c b/drivers/mma8x5x/mma8x5x.c
index a18939cf822e13c5a69874320b1d48e5875eb4c8..3850d23453f2b22a699e8a4fcc3e2818c8cc75d6 100644
--- a/drivers/mma8x5x/mma8x5x.c
+++ b/drivers/mma8x5x/mma8x5x.c
@@ -51,11 +51,18 @@ int mma8x5x_init(mma8x5x_t *dev, const mma8x5x_params_t *params)
 
     /* test if the target device responds */
     i2c_read_reg(BUS, ADDR, MMA8X5X_WHO_AM_I, &reg, 0);
-    if (reg != dev->params.type) {
-        i2c_release(BUS);
-        DEBUG("[mma8x5x] init - error: invalid WHO_AM_I value [0x%02x]\n",
-               (int)reg);
-        return MMA8X5X_NODEV;
+    switch (reg) {
+        case MMA8X5X_TYPE_MMA8451:
+        case MMA8X5X_TYPE_MMA8452:
+        case MMA8X5X_TYPE_MMA8453:
+        case MMA8X5X_TYPE_MMA8652:
+        case MMA8X5X_TYPE_MMA8653:
+            break;
+        default: /* invalid device type */
+            i2c_release(BUS);
+            DEBUG("[mma8x5x] init - error: invalid WHO_AM_I value [0x%02x]\n",
+                  (int)reg);
+            return MMA8X5X_NODEV;
     }
 
     /* reset the device */
diff --git a/tests/driver_mma8x5x/Makefile b/tests/driver_mma8x5x/Makefile
index e9fc4637bece54498b4e99236f303212b72d07b1..ffce5c5daed4e25af474c86c7dbbdc8679755cbb 100644
--- a/tests/driver_mma8x5x/Makefile
+++ b/tests/driver_mma8x5x/Makefile
@@ -1,6 +1,6 @@
 include ../Makefile.tests_common
 
-USEMODULE += mma8x5x
+USEMODULE += mma8x5x  # will work with all variants
 USEMODULE += xtimer
 
 include $(RIOTBASE)/Makefile.include
diff --git a/tests/driver_mma8x5x/README.md b/tests/driver_mma8x5x/README.md
index e94a61c2f0982aa6dbe8f51fd2752cc4f2348aad..11c3bc3694eb0618afa0c9c6a5774872ea1fb45a 100644
--- a/tests/driver_mma8x5x/README.md
+++ b/tests/driver_mma8x5x/README.md
@@ -3,14 +3,13 @@ This is a manual test application for the MMA8x5x accelerometer driver.
 
 # Usage
 This test application will initialize the MMA8x5x sensor with the following parameters:
- - default device type: MMA8652
  - full scale parameter set to +/-2 g
  - 200 Hz output data-rate
 
 To change these parameters, you can override them by setting their corresponding
 defines in your build environment, e.g.
 ```bash
-CFLAGS=-DMMA8X5X_PARAM_TYPE=MMA8X5X_TYPE_MMA8451 make ...
+CFLAGS=-DMMA8X5X_PARAM_ADDR=0x1d make ...
 ```
 See RIOT/drivers/mma8x5x_params.h for the default configuration.