diff --git a/litex_boards/platforms/mnt_rkx7.py b/litex_boards/platforms/mnt_rkx7.py
index f612bc5f763fe783a5a889cf3cade5210938c592..3ac2b6ffa47b537fd4e73e61dcaedbaa6dcca2e6 100644
--- a/litex_boards/platforms/mnt_rkx7.py
+++ b/litex_boards/platforms/mnt_rkx7.py
@@ -28,6 +28,12 @@ _io = [
         IOStandard("LVCMOS33")
     ),
 
+    ("litescope_serial", 0,
+        Subsignal("tx", Pins("C17")),
+        Subsignal("rx", Pins("C16")),
+        IOStandard("LVCMOS33")
+    ),
+
     # SPIFlash
     ("spiflash4x", 0,  # clock needs to be accessed through STARTUPE2
         Subsignal("cs_n", Pins("C23")),
diff --git a/litex_boards/targets/mnt_rkx7.py b/litex_boards/targets/mnt_rkx7.py
index fb9ee302296f07cb952ec6ec70bf3587d71b0fa8..b4eddf924b25e7b53effd2877b2d0512c775b107 100755
--- a/litex_boards/targets/mnt_rkx7.py
+++ b/litex_boards/targets/mnt_rkx7.py
@@ -117,6 +117,12 @@ class BaseSoC(SoCCore):
         self.submodules.i2c1 = I2CMaster(platform.request("i2c", 1))
         self.submodules.i2c2 = I2CMaster(platform.request("i2c", 2))
 
+        # JTAG
+        #self.add_jtagbone()
+
+        # LiteScope UART
+        self.add_uartbone(name="litescope_serial")
+
         # MIPI DSI ---------------------------------------------------------------------------------
         dsi = platform.request("dsi")
         self.comb += dsi.refclk.eq(self.crg.cd_dsiref.clk)
@@ -144,7 +150,10 @@ class BaseSoC(SoCCore):
         self.comb += usb_pipe_ctrl.phy_reset_n.eq(usb2_phy_reset_n)
         self.comb += usb_pipe_ctrl.power_down.eq(usb2_powerdown)
         self.comb += usb_enable.eq(usb2_enable)
-        #self.comb += usb_pipe_ctrl.tx_elecidle.eq(Signal(reset=0))
+        self.comb += usb_pipe_ctrl.tx_elecidle.eq(Signal(reset=0))
+        self.comb += usb_pipe_ctrl.tx_detrx_lpbk.eq(Signal(reset=0))
+
+        usb_pipe_status = platform.request("usb_pipe_status")
 
         # External verilog sources of ultraembedded's USB Host and ULPI/UTMI wrapper
         platform.add_verilog_include_path(os.path.join("core_usb_host", "src_v"))
@@ -232,6 +241,9 @@ class BaseSoC(SoCCore):
         # Wire for USB host interrupt line
         usb_host_intr = Signal()
 
+        usbh_dbg_state = Signal(4)
+        usbh_dbg_token = Signal(16)
+
         usb_host = Instance(
             "usbh_host",
 
@@ -239,6 +251,9 @@ class BaseSoC(SoCCore):
             i_rst_i = Signal(reset=0),
             o_intr_o = usb_host_intr,
 
+            o_dbg_state_o = usbh_dbg_state,
+            o_dbg_token_o = usbh_dbg_token,
+
             # UTMI
             i_utmi_data_in_i    = utmi.data_in,
             i_utmi_txready_i    = utmi.txready,
@@ -279,6 +294,32 @@ class BaseSoC(SoCCore):
         # Connection of USB Host interrupt to CPU (yet unused)
         self.comb += self.cpu.interrupt[16].eq(usb_host_intr)
 
+        # LiteScope
+
+        analyzer_signals = [
+            ulpi_data.din,
+            #ulpi_data.dout,
+            utmi.linestate,
+            utmi.data_out,
+            utmi.txvalid,
+            utmi.rxerror,
+            utmi.rxvalid,
+            usb_ulpi.dir,
+            usb_ulpi.stp,
+            usb_ulpi.nxt,
+            usbh_dbg_state,
+            usb_pipe_status.pwr_present,
+            usb_pipe_status.phy_status,
+            usb_pipe_status.rx_status,
+            usb_pipe_status.rx_elecidle,
+            ]
+
+        from litescope import LiteScopeAnalyzer
+        self.submodules.analyzer = LiteScopeAnalyzer(analyzer_signals,
+                                                     depth        = 512,
+                                                     clock_domain = "ulpi",
+                                                     csr_csv      = "analyzer.csv")
+
 # Build --------------------------------------------------------------------------------------------
 
 def main():
@@ -308,6 +349,9 @@ def main():
         soc.add_spi_sdcard()
     if args.with_sdcard:
         soc.add_sdcard()
+
+    args.csr_csv="csr.csv"
+
     builder = Builder(soc, **builder_argdict(args))
     builder.build(run=args.build)