diff --git a/shodan_infrastructure/MatchaI2S.cs b/shodan_infrastructure/MatchaI2S.cs
index 918ca12..33cf190 100644
--- a/shodan_infrastructure/MatchaI2S.cs
+++ b/shodan_infrastructure/MatchaI2S.cs
@@ -219,13 +219,6 @@
             txThread.Start();
         }
 
-        private void StartLoopback()
-        {
-            this.Log(LogLevel.Info, "Starting loopback.");
-            loopbackThread = machine.ObtainManagedThread(LoopbackFrame, SampleFrequencyHz);
-            loopbackThread.Start();
-        }
-
         private void StopThread(ref IManagedThread thread)
         {
             thread?.Stop();
@@ -289,14 +282,6 @@
             }
         }
 
-        private void LoopbackFrame()
-        {
-            if ((rxBuffer.Count >= 0) && (txBuffer.Count <= 1)) {
-                ulong sample = rxBuffer.Read();
-                txBuffer.Write(sample);
-            }
-        }
-
         private void CreateRegisters()
         {
             Registers.IrqState.Define(this)
@@ -346,18 +331,7 @@
                             StopThread(ref rxThread);
                         }
                     })
-                .WithFlag(2, out loopbackEnable, name: "SLPBK",
-                    writeCallback: (_, val) => {
-                        if (val) {
-                            StartRx();
-                            StartTx();
-                            StartLoopback();
-                        } else {
-                            StopThread(ref rxThread);
-                            StopThread(ref txThread);
-                            StopThread(ref loopbackThread);
-                        }
-                    })
+                .WithFlag(2, out loopbackEnable, name: "SLPBK")
                 .WithReservedBits(3, 15)
                 .WithValueField(18, 6, out rxClkDivide, name: "NCO_RX")
                 .WithValueField(25, 6, out txClkDivide, name: "NCO_TX");
@@ -460,7 +434,6 @@
 
         private IManagedThread rxThread;
         private IManagedThread txThread;
-        private IManagedThread loopbackThread;
         private PCMDecoder decoder;
         private PCMEncoder encoder;
 
