diff --git a/src/drivers/imu/bmi160/bmi160.cpp b/src/drivers/imu/bmi160/bmi160.cpp
index df2ed343a057ee80d80232bed8383615f89dd15f..9b3759e8f1ac47b157680ce2b3b9ab3a5e07d25d 100644
--- a/src/drivers/imu/bmi160/bmi160.cpp
+++ b/src/drivers/imu/bmi160/bmi160.cpp
@@ -655,14 +655,12 @@ BMI160::ioctl(struct file *filp, int cmd, unsigned long arg)
 					// adjust filters
 					float cutoff_freq_hz = _accel_filter_x.get_cutoff_freq();
 					float sample_rate = 1.0e6f / ticks;
-					_set_dlpf_filter(cutoff_freq_hz);
 					_accel_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 
 
 					float cutoff_freq_hz_gyro = _gyro_filter_x.get_cutoff_freq();
-					_set_dlpf_filter(cutoff_freq_hz_gyro);
 					_gyro_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
diff --git a/src/drivers/imu/mpu6000/mpu6000.cpp b/src/drivers/imu/mpu6000/mpu6000.cpp
index eba3c372ea5881bef02d03145f07075ce8f1d2e6..ec59fbd00f8f5d0086c249e54059350c08f2a77a 100644
--- a/src/drivers/imu/mpu6000/mpu6000.cpp
+++ b/src/drivers/imu/mpu6000/mpu6000.cpp
@@ -815,9 +815,6 @@ int MPU6000::reset()
 	_set_sample_rate(_sample_rate);
 	usleep(1000);
 
-	// FS & DLPF   FS=2000 deg/s, DLPF = 20Hz (low pass filter)
-	// was 90 Hz, but this ruins quality and does not improve the
-	// system response
 	_set_dlpf_filter(MPU6000_DEFAULT_ONCHIP_FILTER_FREQ);
 
 	if (is_icm_device()) {
@@ -1409,19 +1406,12 @@ MPU6000::ioctl(struct file *filp, int cmd, unsigned long arg)
 					// adjust filters
 					float cutoff_freq_hz = _accel_filter_x.get_cutoff_freq();
 					float sample_rate = 1.0e6f / ticks;
-					_set_dlpf_filter(cutoff_freq_hz);
-
-					if (is_icm_device()) {
-						_set_icm_acc_dlpf_filter(cutoff_freq_hz);
-					}
 
 					_accel_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 
-
 					float cutoff_freq_hz_gyro = _gyro_filter_x.get_cutoff_freq();
-					_set_dlpf_filter(cutoff_freq_hz_gyro);
 					_gyro_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
diff --git a/src/drivers/imu/mpu6000/mpu6000.h b/src/drivers/imu/mpu6000/mpu6000.h
index 6af00b27f71d460ccc3e717c19a768a47da4d562..a5e38f25ba6fda3bc51e4379f228b6c31fcd42bb 100644
--- a/src/drivers/imu/mpu6000/mpu6000.h
+++ b/src/drivers/imu/mpu6000/mpu6000.h
@@ -114,13 +114,13 @@
 #define MPUREG_TRIM2			0x0E
 #define MPUREG_TRIM3			0x0F
 #define MPUREG_TRIM4			0x10
-#define MPU_GYRO_DLPF_CFG_256HZ_NOLPF2	0x00
-#define MPU_GYRO_DLPF_CFG_188HZ		0x01
-#define MPU_GYRO_DLPF_CFG_98HZ		0x02
-#define MPU_GYRO_DLPF_CFG_42HZ		0x03
-#define MPU_GYRO_DLPF_CFG_20HZ		0x04
-#define MPU_GYRO_DLPF_CFG_10HZ		0x05
-#define MPU_GYRO_DLPF_CFG_5HZ		0x06
+#define MPU_GYRO_DLPF_CFG_256HZ_NOLPF2	0x00  // delay: 0.98ms
+#define MPU_GYRO_DLPF_CFG_188HZ	0x01  // delay: 1.9ms
+#define MPU_GYRO_DLPF_CFG_98HZ		0x02  // delay: 2.8ms
+#define MPU_GYRO_DLPF_CFG_42HZ		0x03  // delay: 4.8ms
+#define MPU_GYRO_DLPF_CFG_20HZ		0x04  // delay: 8.3ms
+#define MPU_GYRO_DLPF_CFG_10HZ		0x05  // delay: 13.4ms
+#define MPU_GYRO_DLPF_CFG_5HZ		0x06  // delay: 18.6ms
 #define MPU_GYRO_DLPF_CFG_2100HZ_NOLPF	0x07
 #define MPU_DLPF_CFG_MASK		0x07
 
@@ -210,7 +210,7 @@
 #define MPU6000_GYRO_MAX_OUTPUT_RATE				MPU6000_ACCEL_MAX_OUTPUT_RATE
 #define MPU6000_GYRO_DEFAULT_DRIVER_FILTER_FREQ		30
 
-#define MPU6000_DEFAULT_ONCHIP_FILTER_FREQ			42
+#define MPU6000_DEFAULT_ONCHIP_FILTER_FREQ			98
 
 #ifdef PX4_SPI_BUS_EXT
 #define EXTERNAL_BUS PX4_SPI_BUS_EXT
diff --git a/src/drivers/imu/mpu9250/mpu9250.cpp b/src/drivers/imu/mpu9250/mpu9250.cpp
index af5bc1e7130991998420a64a96d69f2146ce0417..1d81b57289c1cdbad416ecfa394690b73874d313 100644
--- a/src/drivers/imu/mpu9250/mpu9250.cpp
+++ b/src/drivers/imu/mpu9250/mpu9250.cpp
@@ -462,9 +462,6 @@ int MPU9250::reset_mpu()
 	// SAMPLE RATE
 	_set_sample_rate(_sample_rate);
 
-	// FS & DLPF   FS=2000 deg/s, DLPF = 20Hz (low pass filter)
-	// was 90 Hz, but this ruins quality and does not improve the
-	// system response
 	_set_dlpf_filter(MPU9250_DEFAULT_ONCHIP_FILTER_FREQ);
 
 	// Gyro scale 2000 deg/s ()
@@ -830,14 +827,12 @@ MPU9250::ioctl(struct file *filp, int cmd, unsigned long arg)
 					// adjust filters
 					float cutoff_freq_hz = _accel_filter_x.get_cutoff_freq();
 					float sample_rate = 1.0e6f / ticks;
-					_set_dlpf_filter(cutoff_freq_hz);
 					_accel_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 					_accel_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz);
 
 
 					float cutoff_freq_hz_gyro = _gyro_filter_x.get_cutoff_freq();
-					_set_dlpf_filter(cutoff_freq_hz_gyro);
 					_gyro_filter_x.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_y.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
 					_gyro_filter_z.set_cutoff_frequency(sample_rate, cutoff_freq_hz_gyro);
diff --git a/src/drivers/imu/mpu9250/mpu9250.h b/src/drivers/imu/mpu9250/mpu9250.h
index cd546c4f4d725d67ab478a2c9ff294a79c834a26..3fe12022ba1dfc1c28bf29271e4e9de30a762964 100644
--- a/src/drivers/imu/mpu9250/mpu9250.h
+++ b/src/drivers/imu/mpu9250/mpu9250.h
@@ -188,7 +188,7 @@
 #define MPU9250_GYRO_MAX_OUTPUT_RATE			MPU9250_ACCEL_MAX_OUTPUT_RATE
 #define MPU9250_GYRO_DEFAULT_DRIVER_FILTER_FREQ 30
 
-#define MPU9250_DEFAULT_ONCHIP_FILTER_FREQ	41
+#define MPU9250_DEFAULT_ONCHIP_FILTER_FREQ	92
 
 #define MPUIOCGIS_I2C	(unsigned)(DEVIOCGDEVICEID+100)