diff --git a/kernel/kmod.c b/kernel/kmod.c
index 875c2dc1d8f393acaeea192ec5aef3bc166ea5f8..d36d71b35f67fbc0905942e3c69fbcf1d41d2432 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -76,13 +76,20 @@ static enum hrtimer_restart timer_callback(struct hrtimer *timer) {
     return HRTIMER_RESTART;
 }
 
+static void send_bit(uint8_t bit) {
+    gpio_set_value(GPIO_PIN, bit);
+    udelay(1);
+}
+
 static void send_byte(uint8_t byte) {
+    send_bit(0);
+
     for (int i = 0; i < 8; i++) {
         int bit = (byte >> (7 - i)) & 1;
-
-        gpio_set_value(GPIO_PIN, bit);
-        udelay(1);
+        send_bit(bit);
     }
+
+    send_bit(1);
 }
 
 static void send_data(const void *data, size_t length) {
@@ -170,7 +177,7 @@ static int __init lkm_init(void)
         printk(KERN_ALERT "Failed to request GPIO pin\n");
         return -1;
     }
-    gpio_direction_output(GPIO_PIN, 0);
+    gpio_direction_output(GPIO_PIN, 1);
 
     timed_thread = kthread_run(timed_thread_fn, NULL, "timed_thread");
     if (IS_ERR(timed_thread)) {