diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index b33c48d..6336386 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -199,6 +199,11 @@
       break;
   }
 
+  ready_ = imu_zeroer_.Zeroed();
+
+  // TODO(james): How aggressively can we fault here? If we fault to
+  // aggressively, we might have issues during startup if wpilib_interface takes
+  // too long to start publishing IMU measurements.
   if (monotonic_now > last_gyro_time_ + chrono::milliseconds(20)) {
     last_gyro_rate_ = 0.0;
   }
@@ -463,6 +468,15 @@
     status->Send(builder.Finish());
   }
 
+  // If the filters aren't ready/valid, then disable all outputs (currently,
+  // this only happens if the IMU is faulted or has not zeroed).
+  // TODO(james): Add exceptions so that during competitive play the driver
+  // can retain minimal control of the robot.
+  if (!filters_.Ready()) {
+    output_struct.left_voltage = 0.0;
+    output_struct.right_voltage = 0.0;
+  }
+
   double left_voltage = 0.0;
   double right_voltage = 0.0;
   if (output) {
diff --git a/frc971/control_loops/drivetrain/drivetrain.h b/frc971/control_loops/drivetrain/drivetrain.h
index f979eb9..9a23edd 100644
--- a/frc971/control_loops/drivetrain/drivetrain.h
+++ b/frc971/control_loops/drivetrain/drivetrain.h
@@ -96,6 +96,8 @@
   // Returns the current uncapped voltage from the kalman filter.
   double DrivetrainUUncapped(int index) const { return kf_.U_uncapped(index); }
 
+  bool Ready() const { return ready_; }
+
  private:
   // Returns the current controller index for the current gear.
   int ControllerIndexFromGears() const;
@@ -132,6 +134,8 @@
   double last_accel_ = 0.0;
   double last_gyro_rate_ = 0.0;
 
+  bool ready_ = false;
+
   // Last applied voltage.
   Eigen::Matrix<double, 2, 1> last_voltage_;
   Eigen::Matrix<double, 2, 1> last_last_voltage_;
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index b378484..b3097ec 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -191,6 +191,38 @@
   VerifyDownEstimator();
 }
 
+// Tests that the drivetrain disables itself when the IMU errors.
+TEST_F(DrivetrainTest, DisablesOnImuError) {
+  SetEnabled(true);
+  {
+    auto builder = drivetrain_goal_sender_.MakeBuilder();
+    Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
+    goal_builder.add_left_goal(-1.0);
+    goal_builder.add_right_goal(1.0);
+    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+  }
+
+  // Sanity check that the drivetrain is indeed commanding voltage while the IMU
+  // is healthy.
+  for (int i = 0; i < 50; ++i) {
+    RunFor(dt());
+    ASSERT_TRUE(drivetrain_output_fetcher_.Fetch());
+    EXPECT_NE(0.0, drivetrain_output_fetcher_->left_voltage());
+    EXPECT_NE(0.0, drivetrain_output_fetcher_->right_voltage());
+  }
+
+  // Fault the IMU and confirm that we disable the outputs.
+  drivetrain_plant_.set_imu_faulted(true);
+
+  for (int i = 0; i < 500; ++i) {
+    RunFor(dt());
+    ASSERT_TRUE(drivetrain_output_fetcher_.Fetch());
+    EXPECT_EQ(0.0, drivetrain_output_fetcher_->left_voltage());
+    EXPECT_EQ(0.0, drivetrain_output_fetcher_->right_voltage());
+  }
+}
+
 // Tests that the drivetrain converges on a goal when under the effect of a
 // voltage offset/disturbance.
 TEST_F(DrivetrainTest, ConvergesWithVoltageError) {
@@ -960,6 +992,8 @@
   const double estimated_y = drivetrain_status_fetcher_->y();
   const ::Eigen::Vector2d actual = drivetrain_plant_.GetPosition();
   // Expect the x position comparison to fail; everything else to succeed.
+  spline_estimate_tolerance_ = 0.11;
+  spline_control_tolerance_ = 0.11;
   EXPECT_GT(std::abs(estimated_x - expected_x), spline_control_tolerance_);
   EXPECT_NEAR(estimated_y, expected_y, spline_control_tolerance_);
   EXPECT_NEAR(actual(0), estimated_x, spline_estimate_tolerance_);
diff --git a/frc971/control_loops/drivetrain/drivetrain_test_lib.cc b/frc971/control_loops/drivetrain/drivetrain_test_lib.cc
index 4ff71d6..fb685f3 100644
--- a/frc971/control_loops/drivetrain/drivetrain_test_lib.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_test_lib.cc
@@ -193,8 +193,22 @@
     return;
   }
   auto builder = imu_sender_.MakeBuilder();
+
+  frc971::ADIS16470DiagStat::Builder diag_stat_builder =
+      builder.MakeBuilder<frc971::ADIS16470DiagStat>();
+  diag_stat_builder.add_clock_error(false);
+  diag_stat_builder.add_memory_failure(imu_faulted_);
+  diag_stat_builder.add_sensor_failure(false);
+  diag_stat_builder.add_standby_mode(false);
+  diag_stat_builder.add_spi_communication_error(false);
+  diag_stat_builder.add_flash_memory_update_error(false);
+  diag_stat_builder.add_data_path_overrun(false);
+
+  const auto diag_stat_offset = diag_stat_builder.Finish();
+
   frc971::IMUValues::Builder imu_builder =
       builder.MakeBuilder<frc971::IMUValues>();
+  imu_builder.add_self_test_diag_stat(diag_stat_offset);
   const Eigen::Vector3d gyro =
       dt_config_.imu_transform.inverse() *
       Eigen::Vector3d(0.0, 0.0,
diff --git a/frc971/control_loops/drivetrain/drivetrain_test_lib.h b/frc971/control_loops/drivetrain/drivetrain_test_lib.h
index e443ba1..2075e66 100644
--- a/frc971/control_loops/drivetrain/drivetrain_test_lib.h
+++ b/frc971/control_loops/drivetrain/drivetrain_test_lib.h
@@ -79,6 +79,10 @@
     send_messages_ = send_messages;
   }
 
+  void set_imu_faulted(const bool fault_imu) {
+    imu_faulted_ = fault_imu;
+  }
+
  private:
   // Sends out the position queue messages.
   void SendPositionMessage();
@@ -103,6 +107,8 @@
       drivetrain_status_fetcher_;
   ::aos::Sender<::frc971::IMUValuesBatch> imu_sender_;
 
+  bool imu_faulted_ = false;
+
   DrivetrainConfig<double> dt_config_;
 
   DrivetrainPlant drivetrain_plant_;
