diff --git a/quad/src/virt_quad/hw_impl_unix.c b/quad/src/virt_quad/hw_impl_unix.c
index d3607f17e16deffee36a4cefe64a6b0a55f15943..e1dbcf9e2469368ce7d14fc0b2bd8ed857f790bf 100644
--- a/quad/src/virt_quad/hw_impl_unix.c
+++ b/quad/src/virt_quad/hw_impl_unix.c
@@ -28,6 +28,7 @@ struct RCReceiverDriver create_unix_rc_receiver() {
 struct I2CDriver create_unix_i2c() {
   struct I2CDriver i2c;
   i2c.state = NULL;
+  i2c.busId = 0;
   i2c.reset = unix_i2c_reset;
   i2c.write = unix_i2c_write;
   i2c.read = unix_i2c_read;
diff --git a/quad/src/virt_quad/main.c b/quad/src/virt_quad/main.c
index 0937f9f9a299c6e14cda1a6f2e48948ab17effeb..9b0c676afb405b3adee7b1adeb6eefc549c66644 100644
--- a/quad/src/virt_quad/main.c
+++ b/quad/src/virt_quad/main.c
@@ -32,6 +32,7 @@ void help_sub_command(char *argv[]);
  */
 int setup_hardware(hardware_t *hardware) {
   hardware->i2c_0 = create_unix_i2c();
+  hardware->i2c_1 = create_unix_i2c();
   hardware->rc_receiver = create_unix_rc_receiver();
   hardware->motors = create_unix_motors();
   hardware->uart = create_unix_uart();
@@ -40,7 +41,7 @@ int setup_hardware(hardware_t *hardware) {
   hardware->mio7_led = create_unix_mio7_led();
   hardware->sys = create_unix_system();
   hardware->imu = create_unix_imu(&hardware->i2c_0);
-  hardware->lidar = create_unix_lidar(&hardware->i2c_0);
+  hardware->lidar = create_unix_lidar(&hardware->i2c_1);
   hardware->of = create_unix_optical_flow(&hardware->i2c_0);
   return 0;
 }
@@ -121,6 +122,7 @@ void open_new_shm_io() {
   pthread_mutex_init(&virt_quad_io->led_lock, &attr);
   pthread_mutex_init(&virt_quad_io->motors_lock, &attr);
   pthread_mutex_init(&virt_quad_io->rc_lock, &attr);
+  pthread_mutex_init(&virt_quad_io->i2c_lock, &attr);
 }
 
 void open_existing_shm_io() {