diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
index fd6afee..1d0e2aa 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
@@ -214,6 +214,14 @@
 	talloc_free(cmd);
 }
 
+void bsc_gen_location_state_trap(struct gsm_bts *bts)
+{
+	struct osmo_msc_data *msc;
+
+	llist_for_each_entry(msc, &bts->network->bsc_data->mscs, entry)
+		generate_location_state_trap(bts, msc->msc_con);
+}
+
 static int location_equal(struct bts_location *a, struct bts_location *b)
 {
 	return ((a->tstamp == b->tstamp) && (a->valid == b->valid) && (a->lat == b->lat) &&
@@ -279,10 +287,8 @@
 static int set_bts_loc(struct ctrl_cmd *cmd, void *data)
 {
 	char *saveptr, *lat, *lon, *height, *tstamp, *valid, *tmp;
-	struct osmo_msc_data *msc;
 	struct bts_location *curloc, *lastloc;
 	int ret;
-	struct gsm_network *gsmnet = (struct gsm_network *)data;
 	struct gsm_bts *bts = (struct gsm_bts *) cmd->node;
 	if (!bts) {
 		cmd->reply = "bts not found.";
@@ -322,8 +328,7 @@
 	ret = get_bts_loc(cmd, data);
 
 	if (!location_equal(curloc, lastloc))
-		llist_for_each_entry(msc, &gsmnet->bsc_data->mscs, entry)
-			generate_location_state_trap(bts, msc->msc_con);
+		bsc_gen_location_state_trap(bts);
 
 	cleanup_locations(&bts->loc_list);
 
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_vty.c b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
index 4fac8ea..94a92f1 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_vty.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
@@ -1,6 +1,6 @@
 /* Osmo BSC VTY Configuration */
-/* (C) 2009-2011 by Holger Hans Peter Freyther
- * (C) 2009-2011 by On-Waves
+/* (C) 2009-2014 by Holger Hans Peter Freyther
+ * (C) 2009-2014 by On-Waves
  * All Rights Reserved
  *
  * This program is free software; you can redistribute it and/or modify
@@ -19,6 +19,7 @@
  */
 
 #include <openbsc/gsm_data.h>
+#include <openbsc/osmo_bsc.h>
 #include <openbsc/osmo_msc_data.h>
 #include <openbsc/vty.h>
 
@@ -670,6 +671,28 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(gen_position_trap,
+      gen_position_trap_cmd,
+      "generate-location-state-trap <0-255>",
+      "Generate location state report\n"
+      "BTS to report\n")
+{
+	int bts_nr;
+	struct gsm_bts *bts;
+	struct gsm_network *net = bsc_gsmnet;
+
+	bts_nr = atoi(argv[0]);
+	if (bts_nr >= net->num_bts) {
+		vty_out(vty, "%% can't find BTS '%s'%s", argv[0],
+			VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	bts = gsm_bts_num(net, bts_nr);
+	bsc_gen_location_state_trap(bts);
+	return CMD_SUCCESS;
+}
+
 int bsc_vty_init_extra(void)
 {
 	install_element(CONFIG_NODE, &cfg_net_msc_cmd);
@@ -718,5 +741,7 @@
 	install_element_ve(&show_mscs_cmd);
 	install_element_ve(&show_pos_cmd);
 
+	install_element(ENABLE_NODE, &gen_position_trap_cmd);
+
 	return 0;
 }
