diff --git a/arch-wrs/include/ppsi-wrs.h b/arch-wrs/include/ppsi-wrs.h
index 8ba8b01e51424f1170fa8030d2645848c9bcc5b6..35c1fb8c3a906a6f6d661173479cc63ed7abed1f 100644
--- a/arch-wrs/include/ppsi-wrs.h
+++ b/arch-wrs/include/ppsi-wrs.h
@@ -62,6 +62,12 @@ static inline wrs_arch_data_t *WRS_ARCH_G(struct pp_globals *ppg)
 extern void wrs_main_loop(struct pp_globals *ppg);
 void set_param_global_prio1(struct pp_globals *ppg, int prio1);
 void set_param_global_prio2(struct pp_globals *ppg, int prio2);
+void set_param_inst_logMinDelayReqInterval(struct pp_instance *ppi,
+					   int logMinDelayReqInterval);
+void set_param_inst_logMinPdelayReqInterval(struct pp_instance *ppi,
+					    int logMinPdelayReqInterval);
+void set_param_inst_logSyncInterval(struct pp_instance *ppi,
+				    int logSyncInterval);
 
 extern void wrs_init_ipcserver(struct pp_globals *ppg, struct minipc_ch *ppsi_ch);
 
diff --git a/arch-wrs/include/ppsi_exports.h b/arch-wrs/include/ppsi_exports.h
index 815d3e73fbd8b4954e6f01f02443244779d62e1a..f4e7648bde10a7250004319f2c8266ac48de71e1 100644
--- a/arch-wrs/include/ppsi_exports.h
+++ b/arch-wrs/include/ppsi_exports.h
@@ -17,6 +17,10 @@
 #define PPSIEXP_PARAM_PRIORITY1_CMD				1
 #define PPSIEXP_PARAM_PRIORITY2_CMD				2
 
+/* Commands for ppsiexp_update_param_instance_cmd */
+#define PPSIEXP_PARAM_INST_DELAY_REQ_INT_CMD			1
+#define PPSIEXP_PARAM_INST_SYNC_INT_CMD				2
+
 /* Export structures, shared by server and client for argument matching */
 #ifdef PPSI_EXPORT_STRUCTURES
 
diff --git a/arch-wrs/wrs-ipcserver.c b/arch-wrs/wrs-ipcserver.c
index 26ab3a41bc8e599cd821e5cce9ca8b50df3c9c7d..7efbecafab75ba117eeeca47b4c5e6f8af78f206 100644
--- a/arch-wrs/wrs-ipcserver.c
+++ b/arch-wrs/wrs-ipcserver.c
@@ -109,6 +109,49 @@ static int update_param_instance_cmd(const struct minipc_pd *pd,
 	struct pp_instance *ppi;
 
 	switch (param_type) {
+	case PPSIEXP_PARAM_INST_DELAY_REQ_INT_CMD:
+		ppi = INST(ppg_local, param_instance);
+		pp_diag(ppi, config, 2,
+			"%s: cmd %d (PPSIEXP_PARAM_INST_DELAY_REQ_INT_CMD) "
+			"instance %d, port %s, value %d\n", __func__,
+			param_type, param_instance, ppi->iface_name, param_val);
+		if (!check_range_inst_logMinDelayReqInterval(ppi->cfg.profile,
+							     param_val)) {
+			pp_diag(ppi, config, 1,
+				"Param update Error: value of "
+				"logMinDelayReqInterval (%d) not in range! "
+				"cmd %d (PPSIEXP_PARAM_INST_DELAY_REQ_INT_CMD) "
+				"instance %d, port %s\n",
+				param_val, param_type, param_instance, ppi->iface_name);
+			rval = PPSIEXP_RET_ERROR_VAL;
+			break;
+		}
+
+		set_param_inst_logMinDelayReqInterval(ppi, param_val);
+
+		break;
+
+	case PPSIEXP_PARAM_INST_SYNC_INT_CMD:
+		ppi = INST(ppg_local, param_instance);
+		pp_diag(ppi, config, 2,
+			"%s: cmd %d (PPSIEXP_PARAM_INST_SYNC_INT_CMD) "
+			"instance %d, port %s, value %d\n", __func__,
+			param_type, param_instance, ppi->iface_name, param_val);
+		if (!check_range_inst_logSyncInterval(ppi->cfg.profile,
+						      param_val)) {
+			pp_diag(ppi, config, 1,
+				"Param update Error: value of "
+				"logSyncInterval (%d) not in range! "
+				"cmd %d (PPSIEXP_PARAM_INST_SYNC_INT_CMD) "
+				"instance %d, port %s\n",
+				param_val, param_type, param_instance, ppi->iface_name);
+			rval = PPSIEXP_RET_ERROR_VAL;
+			break;
+		}
+
+		set_param_inst_logSyncInterval(ppi, param_val);
+
+		break;
 
 	default:
 		ppi = INST(ppg_local, param_instance);
diff --git a/arch-wrs/wrs-startup.c b/arch-wrs/wrs-startup.c
index 93c95ff359e76a7e6b7c117ce24608586432f03f..65cd11e66d523ca58a95e484f41f6b185d05f827 100644
--- a/arch-wrs/wrs-startup.c
+++ b/arch-wrs/wrs-startup.c
@@ -114,6 +114,47 @@ void set_param_global_prio2(struct pp_globals *ppg, int prio2)
 	bmc_apply_configured_device_attributes(ppg);
 }
 
+/* Functions to set parameters specific to instance */
+
+void set_param_inst_logMinDelayReqInterval(struct pp_instance *ppi,
+					   int logMinDelayReqInterval)
+{
+	int millisec;
+
+	DSPOR(ppi)->logMinDelayReqInterval = logMinDelayReqInterval;
+	ppi->cfg.min_delay_req_interval = logMinDelayReqInterval;
+	millisec = pp_timeout_log_to_ms(logMinDelayReqInterval);
+
+	if (is_delayMechanismE2E(ppi))
+		pp_timeout_set_rename(ppi, PP_TO_REQUEST, millisec);
+}
+
+void set_param_inst_logMinPdelayReqInterval(struct pp_instance *ppi,
+					    int logMinPdelayReqInterval)
+{
+	int millisec;
+
+	DSPOR(ppi)->logMinPdelayReqInterval = logMinPdelayReqInterval;
+	ppi->cfg.min_pdelay_req_interval = logMinPdelayReqInterval;
+
+	millisec = pp_timeout_log_to_ms(logMinPdelayReqInterval);
+
+	if (is_delayMechanismP2P(ppi))
+		pp_timeout_set_rename(ppi, PP_TO_REQUEST, millisec);
+}
+
+void set_param_inst_logSyncInterval(struct pp_instance *ppi,
+				    int logSyncInterval)
+{
+	int millisec;
+
+	DSPOR(ppi)->logSyncInterval = logSyncInterval;
+	ppi->cfg.sync_interval = logSyncInterval;
+
+	millisec = pp_timeout_log_to_ms(logSyncInterval);
+	pp_timeout_set_rename(ppi, PP_TO_SYNC_SEND, millisec);
+}
+
 static char *strCodeOpt="CODEOPT=("
 #if CONFIG_HAS_CODEOPT_EPC_ENABLED
 		" EPC"
diff --git a/include/ppsi/conf.h b/include/ppsi/conf.h
index cec99b1cf21dba4153d930664cc7626ec1df2643..bf174337d623c8932bd35a02397dcce6dfd1528b 100644
--- a/include/ppsi/conf.h
+++ b/include/ppsi/conf.h
@@ -195,3 +195,8 @@ extern int f_simple_int(struct pp_argline *l, int lineno,
 			struct pp_globals *ppg, union pp_cfg_arg *arg);
 
 int in_range(int val, int min, int max);
+int check_range_inst_logMinDelayReqInterval(int profile,
+					    int logMinDelayReqInterval);
+int check_range_inst_logMinPdelayReqInterval(int profile,
+					     int logMinPdelayReqInterval);
+int check_range_inst_logSyncInterval(int profile, int logSyncInterval);
diff --git a/include/ppsi/constants.h b/include/ppsi/constants.h
index a03619696126c6493f06a699058759fec44aa3a5..5c14f3bf961be569f77af53c95b0fee18a728e2e 100644
--- a/include/ppsi/constants.h
+++ b/include/ppsi/constants.h
@@ -51,14 +51,26 @@
 #define PP_MIN_MIN_DELAY_REQ_INTERVAL		0
 #define PP_MAX_MIN_DELAY_REQ_INTERVAL		5
 
+#define PP_DEFAULT_MIN_DELAY_REQ_INTERVAL_CUSTOM	PP_DEFAULT_MIN_DELAY_REQ_INTERVAL
+#define PP_MIN_MIN_DELAY_REQ_INTERVAL_CUSTOM		-6
+#define PP_MAX_MIN_DELAY_REQ_INTERVAL_CUSTOM		PP_MAX_MIN_DELAY_REQ_INTERVAL
+
 #define PP_DEFAULT_MIN_PDELAY_REQ_INTERVAL	0
 #define PP_MIN_MIN_PDELAY_REQ_INTERVAL		0
 #define PP_MAX_MIN_PDELAY_REQ_INTERVAL		5
 
+#define PP_DEFAULT_MIN_PDELAY_REQ_INTERVAL_CUSTOM	PP_DEFAULT_MIN_PDELAY_REQ_INTERVAL
+#define PP_MIN_MIN_PDELAY_REQ_INTERVAL_CUSTOM		-6
+#define PP_MAX_MIN_PDELAY_REQ_INTERVAL_CUSTOM		PP_MAX_MIN_PDELAY_REQ_INTERVAL
+
 #define PP_DEFAULT_SYNC_INTERVAL		    0	/* -7 in 802.1AS */
 #define PP_MIN_SYNC_INTERVAL		       -1
 #define PP_MAX_SYNC_INTERVAL		        1
 
+#define PP_DEFAULT_SYNC_INTERVAL_CUSTOM			PP_DEFAULT_SYNC_INTERVAL
+#define PP_MIN_SYNC_INTERVAL_CUSTOM			-6
+#define PP_MAX_SYNC_INTERVAL_CUSTOM			PP_MAX_SYNC_INTERVAL
+
 /* Min/max values for delay coefficient */
 #define PP_MIN_DELAY_COEFFICIENT_AS_RELDIFF  (((int64_t)-1)<<REL_DIFF_FRACBITS)
 #define PP_MAX_DELAY_COEFFICIENT_AS_RELDIFF  (((int64_t) 1)<<REL_DIFF_FRACBITS)
diff --git a/lib/conf.c b/lib/conf.c
index 43980efcd015fc130409d13f12e861fcde9fc837..90505e6637b13662168019adcf95ff78cb6d22d7 100644
--- a/lib/conf.c
+++ b/lib/conf.c
@@ -756,3 +756,43 @@ int in_range(int val, int min, int max)
 	return 0;
     return 1;
 }
+
+/* Functions to check ranges of parameters specific to instance */
+
+int check_range_inst_logMinDelayReqInterval(int profile,
+					    int logMinDelayReqInterval)
+{
+	if (profile == PPSI_PROFILE_CUSTOM)
+		return in_range(logMinDelayReqInterval,
+				PP_MIN_MIN_DELAY_REQ_INTERVAL_CUSTOM,
+				PP_MAX_MIN_DELAY_REQ_INTERVAL_CUSTOM);
+
+	return in_range(logMinDelayReqInterval,
+			PP_MIN_MIN_DELAY_REQ_INTERVAL,
+			PP_MAX_MIN_DELAY_REQ_INTERVAL);
+}
+
+int check_range_inst_logMinPdelayReqInterval(int profile,
+					    int logMinPdelayReqInterval)
+{
+	if (profile == PPSI_PROFILE_CUSTOM)
+		return in_range(logMinPdelayReqInterval,
+				PP_MIN_MIN_PDELAY_REQ_INTERVAL_CUSTOM,
+				PP_MAX_MIN_PDELAY_REQ_INTERVAL_CUSTOM);
+
+	return in_range(logMinPdelayReqInterval,
+			PP_MIN_MIN_PDELAY_REQ_INTERVAL,
+			PP_MAX_MIN_PDELAY_REQ_INTERVAL);
+}
+
+int check_range_inst_logSyncInterval(int profile, int logSyncInterval)
+{
+	if (profile == PPSI_PROFILE_CUSTOM)
+		return in_range(logSyncInterval,
+				PP_MIN_SYNC_INTERVAL_CUSTOM,
+				PP_MAX_SYNC_INTERVAL_CUSTOM);
+
+	return in_range(logSyncInterval,
+			PP_MIN_SYNC_INTERVAL,
+			PP_MAX_SYNC_INTERVAL);
+}
diff --git a/tools/ppsi_conf.c b/tools/ppsi_conf.c
index 6cb8bb7b56d6f9593c9966afb2d72b2472e2bd1e..99a140f632f68685edcce0d76f5cd81cc746f1f4 100644
--- a/tools/ppsi_conf.c
+++ b/tools/ppsi_conf.c
@@ -26,21 +26,25 @@ static struct minipc_ch *ptp_ch;
 
 enum input_arg {
 	arg_help = 'Z' + 1, /* avoid conflicts with short options */
+	arg_delay_req_interval,
 	arg_instance,
 	arg_prio1,
 	arg_prio2,
+	arg_sync_interval,
 	arg_tracking,
 	arg_verbose,
 };
 	
 static struct option long_opts[] = {
 	{"help",	                no_argument,       NULL, arg_help},
+	{"delay-req-interval",          required_argument, NULL, arg_delay_req_interval},
 	{"instance",                    required_argument, NULL, arg_instance},
 	{"ppi",                         required_argument, NULL, arg_instance},
 	{"prio1",                       required_argument, NULL, arg_prio1},
 	{"priority1",                   required_argument, NULL, arg_prio1},
 	{"prio2",                       required_argument, NULL, arg_prio2},
 	{"priority2",                   required_argument, NULL, arg_prio2},
+	{"sync-interval",               required_argument, NULL, arg_sync_interval},
 	{"tracking",                    required_argument, NULL, arg_tracking},
 	{"verbose",                     optional_argument, NULL, arg_verbose},
 	{NULL, 0, NULL, 0}
@@ -65,6 +69,12 @@ void help(char *prgname)
 		"Parameters specific for PPSi instance:\n"
 		"  --instance=<num>\n"
 		"  --ppi=<num>       - Select PPSi instance\n"
+		"  --delay-req-interval=<num>\n"
+		"                    - sets logarithm to the base 2 of the mean interval of delay"
+		"                      request message transmission; used when a port is in Slave state\n"
+		"  --sync-interval=<num>\n"
+		"                    - sets logarithm to the base 2 of the mean interval of sync"
+		"                      message transmission; used when a port is in Master state\n"
 	);
 	exit(1);
 }
@@ -168,6 +178,26 @@ int main(int argc, char *argv[])
 	while ((opt = getopt_long(argc, argv, "vh", long_opts, NULL)) != -1) {
 
 		switch (opt) {
+		case arg_delay_req_interval:
+			/* Check if an instance is set. If not exit. */
+			check_instance(ppsi_instance);
+			tmp = atoi(optarg);
+			if (verbose)
+				printf("Setting delay request interval for "
+				       "instance %d to %d\n",
+				       ppsi_instance, tmp);
+			ret = ppsi_set_param_instance(
+					PPSIEXP_PARAM_INST_DELAY_REQ_INT_CMD,
+					ppsi_instance,
+					tmp);
+			if (ret) {
+				fprintf(stderr, "Error setting delay request "
+					"interval for instance %d to %d\n",
+				        ppsi_instance, tmp);
+				exit (1);
+			}
+			break;
+
 		case arg_instance:
 			ppsi_instance = atoi(optarg);
 			if (verbose)
@@ -197,6 +227,26 @@ int main(int argc, char *argv[])
 			}
 			break;
 
+		case arg_sync_interval:
+			/* Check if an instance is set. If not exit. */
+			check_instance(ppsi_instance);
+			tmp = atoi(optarg);
+			if (verbose)
+				printf("Setting sync interval for instance %d "
+				       "to %d\n",
+				       ppsi_instance, tmp);
+			ret = ppsi_set_param_instance(
+					PPSIEXP_PARAM_INST_SYNC_INT_CMD,
+					ppsi_instance,
+					tmp);
+			if (ret) {
+				fprintf(stderr, "Error setting sync interval "
+					"for instance %d to %d\n",
+				        ppsi_instance, tmp);
+				exit (1);
+			}
+			break;
+
 		case arg_tracking:
 			{
 				int tracking;