diff --git a/wrc_ptp_ppsi.c b/wrc_ptp_ppsi.c
index 23a4348265c0ce8b8b29d9b05a7470843ca8d39d..83ad1b006761f77c4f49bce975bc41170f7efbf0 100644
--- a/wrc_ptp_ppsi.c
+++ b/wrc_ptp_ppsi.c
@@ -135,6 +135,15 @@ int wrc_ptp_get_mode()
 int wrc_ptp_start()
 {
 	struct pp_instance *ppi = &ppi_static;
+
+	pp_open_instance(ppi, 0 /* no opts */);
+	OPTS(ppi)->e2e_mode = 1;
+
+	/* Call the state machine. Being it in "Initializing" state, make
+	 * ppsi initialize what is necessary */
+	delay_ms = pp_state_machine(ppi, NULL, 0);
+	start_tics = timer_get_tics();
+
 	DSPOR(ppi)->linkUP = FALSE;
 	wr_servo_reset();
 
@@ -146,6 +155,7 @@ int wrc_ptp_stop()
 {
 	ptp_enabled = 0;
 	wr_servo_reset();
+	pp_close_instance(&ppi_static);
 	return 0;
 }