Hi Alain, I'm technically still on vacation, but this issue annoyed me a lot. I had a look at other internal code and I'm relieved the code is correct. (Well there is one tiny little issue around calibration, which I will fix, but in practice only causes a tiny, tiny error). I don't know why I thought it was wrong. Likely I had worked on a patched kernel with some logic changed which caused these high values. In any case I mentioned how the ratio was around 60 on my DS4. It didn't make sense to me, but it is basically: 2000 / 32768 * 1024 (62.5). The 2000 is the range of the sensor, 32768 max value of 16-bit signed, 1024 the scaling factor we use in the driver. So basically:+ for (i = 0; i < ARRAY_SIZE(ds4->gyro_calib_data); i++) { + if (ds4->gyro_calib_data[i].sens_denom == 0) { + hid_warn(hdev, "Invalid gyro calibration data for axis (%d), disabling calibration.", + ds4->gyro_calib_data[i].abs_code); + ds4->gyro_calib_data[i].bias = 0; + ds4->gyro_calib_data[i].sens_numer = DS4_GYRO_RANGE; + ds4->gyro_calib_data[i].sens_denom = S16_MAX; + } + } The same for accelerometer. I will clean up the patch, add some other patches and send them out shortly. Thanks, Roderick On Thu, Jan 5, 2023 at 10:24 AM Alain Carlucci <alain.carlucci@xxxxxxxxx> wrote: > > Hi Roderick, > > I just tried to see with evtest the values of gyro/accel after > changing the driver so that follows the suggestion on the dsremap > website: dividing by two speed_2x: > speed_2x = (gyro_speed_plus + gyro_speed_minus) >> 1; > > The DS4 shows values no higher than 600000 (post-calibration) while > heavily shaking the joystick. For the record, the calibration is: > > gyro_pitch_plus: 8848 gyro_pitch_minus: -8853 > gyro_yaw_plus: 8833 gyro_yaw_minus: -8827 > gyro_roll_plus: 8856 gyro_roll_minus: -8841 > gyro_speed_plus: 540 gyro_speed_minus: 540 > acc_x_plus: 8107 acc_x_minus: -8107 > acc_y_plus: 8259 acc_y_minus: -8259 > acc_z_plus: 8187 acc_z_minus: -8186 > > This is an example of the output: > > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 128610 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 95747 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 61321 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 28864 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 874 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -27802 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -54949 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -82064 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -110398 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -138107 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -170345 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -205239 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -242320 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -281525 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -318043 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -356748 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -394453 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -430628 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -465428 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -496105 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -526469 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -551897 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -554865 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -522127 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -450933 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -323041 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -180404 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value -44859 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 71006 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 148353 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 202209 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 242757 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 274183 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 298456 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 316106 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 331569 > Event: time [...], type 3 (EV_ABS), code 3 (ABS_RX), value 338942 > > Thanks, > Alain