Hi Bruno, I hope you're well.
After wasting some time writing scripting for reading sensor values with the wire library and finding out Kriswiner has done it already, link: https://github.com/kriswiner/LSM9DS1
I finally tested the 400khz wire clock with the following settings.
uint8_t Gscale = GFS_2000DPS;// gyro full scale
uint8_t Godr = GODR_119Hz; // gyro data sample rate
uint8_t Gbw = GBW_med; // gyro data bandwidth
uint8_t Ascale = AFS_4G; // accel full scale
uint8_t Aodr = AODR_119Hz; // accel data sample rate
uint8_t Abw = ABW_50Hz; // accel data bandwidth
uint8_t Mscale = MFS_4G; // mag full scale
uint8_t Modr = MODR_80Hz; // mag data sample rate
uint8_t Mmode = MMode_HighPerformance; // magnetometer operation mode
Kalman Filter Frequency = 450 Hz --> Filter.update(450);
The results are far better and I can say it's okay when I'm moving the sensor but still I have some problems with leaving the sensor steel on the desk, Unfortunately I have some yaw drift but it corrects itself quickly. For example it drifts 2-3 degrees and corrects exactly with the same values, whole drift and correction process takes about 6-10 seconds. I think it's related to IMU calibration, but I don't know which exact sensor is causing the problem, I think it should be Magnetometer or Gyroscope.
I forgot to say when I'm using the data order you sent, all these problem are kind of okay but I do have some noisy output with a little bit of yaw drift which leads to wrong provided data order. Actually the only problem I have after using your data order is yaw drift.
I just wanted to let you know where I am.
Also I'm grateful for all your helps, even adafruit's community is not responding. I thinks this is the difference between open source communities and other ones. I appreciate.