Index: src/mixer.c =================================================================== --- src/mixer.c (revision 286) +++ src/mixer.c (working copy) @@ -22,10 +22,10 @@ }; static const motorMixer_t mixerQuadX[] = { - { 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R - { 1.0f, -1.0f, -1.0f, 1.0f }, // FRONT_R - { 1.0f, 1.0f, 1.0f, 1.0f }, // REAR_L - { 1.0f, 1.0f, -1.0f, -1.0f }, // FRONT_L + { 1.0f, -0.5f, 0.5f, -0.5f }, // REAR_R + { 1.0f, -0.5f, -0.5f, 0.5f }, // FRONT_R + { 1.0f, 0.5f, 0.5f, 0.5f }, // REAR_L + { 1.0f, 0.5f, -0.5f, -0.5f }, // FRONT_L }; static const motorMixer_t mixerBi[] = { @@ -374,14 +374,22 @@ for (i = 0; i < numberMotor; i++) { if (maxMotor > cfg.maxthrottle) // this is a way to still have good gyro corrections if at least one motor reaches its max. motor[i] -= maxMotor - cfg.maxthrottle; - motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle); - if ((rcData[THROTTLE]) < cfg.mincheck) { + + //motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle); + if ((rcData[THROTTLE]) > 1500){ + motor[i] = constrain(motor[i], 1530, cfg.maxthrottle); + }else{ + motor[i] = constrain(motor[i], cfg.mincommand, 1470); + } + + if ((rcData[THROTTLE]) < cfg.mincheck) { if (!feature(FEATURE_MOTOR_STOP)) motor[i] = cfg.minthrottle; else motor[i] = cfg.mincommand; } + if (!f.ARMED) - motor[i] = cfg.mincommand; - } + //motor[i] = cfg.mincommand; + motor[i] = 1500;} } Index: src/mw.c =================================================================== --- src/mw.c (revision 286) +++ src/mw.c (working copy) @@ -268,7 +268,10 @@ // TODO clean this up. computeRC should handle this check if (!feature(FEATURE_SPEKTRUM)) computeRC(); - + + if (!rcOptions[BOXARM]) ///////////////////// important to be always able to disarm + f.ARMED = 0; + // Failsafe routine if (feature(FEATURE_FAILSAFE)) { if (failsafeCnt > (5 * cfg.failsafe_delay) && f.ARMED) { // Stabilize, and set Throttle to specified level @@ -288,7 +291,7 @@ failsafeCnt++; } - if (rcData[THROTTLE] < cfg.mincheck) { + if (rcData[THROTTLE] > 1450 && rcData[THROTTLE] <1550) { errorGyroI[ROLL] = 0; errorGyroI[PITCH] = 0; errorGyroI[YAW] = 0;