diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c
index ce66808..7d9a520 100644
--- a/openbsc/src/bsc_init.c
+++ b/openbsc/src/bsc_init.c
@@ -787,9 +787,12 @@
 	struct gsm_bts *bts = trx->bts;
 	int rc;
 
-	rc = gsm_generate_si(bts, i);
-	if (rc < 0)
-		return rc;
+	/* Only generate SI if this SI is not in "static" (user-defined) mode */
+	if (!(bts->si_mode_static & (1 << i))) {
+		rc = gsm_generate_si(bts, i);
+		if (rc < 0)
+			return rc;
+	}
 
 	DEBUGP(DRR, "SI%s: %s\n", gsm_sitype_name(i),
 		hexdump(GSM_BTS_SI(bts, i), GSM_MACBLOCK_LEN));
@@ -821,26 +824,31 @@
 			ms_pwr_ctl_lvl(bts->band, bts->ms_max_power);
 	bts->si_common.cell_sel_par.neci = bts->network->neci;
 
+	/* First, we determine which of the SI messages we actually need */
+
 	if (trx == bts->c0) {
-		for (i = SYSINFO_TYPE_1; i <= SYSINFO_TYPE_4; i++) {
-			rc = generate_and_rsl_si(trx, i);
-			if (rc < 0)
-				goto err_out;
-		}
-		if (bts->gprs.mode != BTS_GPRS_NONE) {
-			rc = generate_and_rsl_si(trx, SYSINFO_TYPE_13);
-			if (rc < 0)
-				goto err_out;
-		}
+		/* 1...4 are always present on a C0 TRX */
+		for (i = SYSINFO_TYPE_1; i <= SYSINFO_TYPE_4; i++)
+			bts->si_valid |= (1 << i);
+
+		/* 13 is always present on a C0 TRX of a GPRS BTS */
+		if (bts->gprs.mode != BTS_GPRS_NONE)
+			bts->si_valid |= (1 << SYSINFO_TYPE_13);
 	}
 
-	rc = generate_and_rsl_si(trx, SYSINFO_TYPE_5);
-	if (rc < 0)
-		goto err_out;
+	/* 5 and 6 are always present on every TRX */
+	bts->si_valid |= (1 << SYSINFO_TYPE_5);
+	bts->si_valid |= (1 << SYSINFO_TYPE_6);
 
-	rc = generate_and_rsl_si(trx, SYSINFO_TYPE_6);
-	if (rc < 0)
-		goto err_out;
+	/* Second, we generate and send the selected SI via RSL */
+	for (i = SYSINFO_TYPE_1; i < _MAX_SYSINFO_TYPE; i++) {
+		if (!(bts->si_valid & (1 << i)))
+			continue;
+
+		rc = generate_and_rsl_si(trx, i);
+		if (rc < 0)
+			goto err_out;
+	}
 
 	return 0;
 err_out:
