diff --git a/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v b/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
index 3c55d7227e0002bd3a7e7e91ab6e1acd04988a06..14a54314ee9d63da2dfbf841a379985d862808e6 100644
--- a/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
+++ b/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
@@ -115,9 +115,9 @@ module nanosoc_chip #(
   assign SYS_SCANENABLE   = scan_enable;
   assign SYS_TESTMODE     = scan_mode;
   assign SYS_SCANINHCLK   = 1'b1;
-  assign scan_out         = scan_in;
+///  assign scan_out         = scan_in;
   assign bist_out         = bist_in;
-  assign uart_txd_o       = uart_rxd_i;
+///  assign uart_txd_o       = uart_rxd_i;
 `else
   assign SYS_SCANENABLE   = test_i & swdio_i; 
   assign SYS_TESTMODE     = test_i;   
@@ -171,7 +171,10 @@ module nanosoc_chip #(
   assign        p1_e[3] = 1'b1; 
   assign        p1_z[3] = 1'b0;
 
-  assign        P1_IN_MUX[15:4] = p1_i[15:4]; // IO MUX controlled bidirectionals
+  assign        P1_IN_MUX[4] = (alt_mode) ? uart_txd_i : p1_i[4]; // RXD2
+  assign        uart_txd_o = P1_OUT_MUX[5]; // TXD2
+
+  assign        P1_IN_MUX[15:5] = p1_i[15:5]; // IO MUX controlled bidirectionals
   assign        p1_o[15:4] = P1_OUT_MUX[15:4];    
   assign        p1_e[15:4] = P1_OUT_EN_MUX[15:4];
   assign        p1_z[15:4] = ~P1_OUT_EN_MUX[15:4];
diff --git a/nanosoc/nanosoc_control/verilog/nanosoc_clkctrl.v b/nanosoc/nanosoc_control/verilog/nanosoc_clkctrl.v
index 98d947856d6ccd496fad72549370f932f30fed17..7a1d68d8074f68002ff73a40c341fcd035a48e9e 100644
--- a/nanosoc/nanosoc_control/verilog/nanosoc_clkctrl.v
+++ b/nanosoc/nanosoc_control/verilog/nanosoc_clkctrl.v
@@ -96,7 +96,7 @@ module nanosoc_clkctrl #(
     reset_sync_reg <= nxt_reset_sync;
   end
 
-  assign reset_n = reset_sync_reg[2];
+  assign reset_n = (RSTBYPASS) ? NRST : reset_sync_reg[2];
 
 `ifdef CORTEX_M0DESIGNSTART
   // AHB HRESETn