diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index 84ce90f..2fa0408 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -293,17 +293,49 @@
 	return str_cur - string;
 }
 
-#define MI_SIZE 20
+/* Chapter 9.2.10 */
+static int mm_tx_identity_req(struct gsm_lchan *lchan, u_int8_t id_type)
+{
+	struct msgb *msg = gsm48_msgb_alloc();
+	struct gsm48_hdr *gh;
 
+	msg->lchan = lchan;
+
+	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 1);
+	gh->proto_discr = GSM48_PDISC_MM;
+	gh->msg_type = GSM48_MT_MM_ID_REQ;
+	gh->data[0] = id_type;
+
+	return gsm0408_sendmsg(msg);
+}
+
+#define MI_SIZE 32
+
+/* Chapter 9.2.11 */
+static int mm_rx_id_resp(struct msgb *msg)
+{
+	struct gsm48_hdr *gh = msgb_l3(msg);
+	u_int8_t mi_type = gh->data[1] & GSM_MI_TYPE_MASK;
+	char mi_string[MI_SIZE];
+
+	mi_to_string(mi_string, sizeof(mi_string), &gh->data[1], gh->data[0]);
+	DEBUGP(DMM, "IDENTITY RESPONSE: mi_type=0x%02x (MI(%s)\n",
+		mi_type, mi_string);
+
+	/* FIXME: update subscribe <-> IMEI mapping */
+}
+
+#define MI_SIZE 32
 /* Chapter 9.2.15 */
-static int mm_loc_upd_req(struct msgb *msg)
+static int mm_rx_loc_upd_req(struct msgb *msg)
 {
 	struct gsm48_hdr *gh = msgb_l3(msg);
 	struct gsm_bts *bts = msg->trx->bts;
 	struct gsm48_loc_upd_req *lu;
 	struct gsm_subscriber *subscr;
 	u_int8_t mi_type;
-	char mi_string[20];
+	char mi_string[MI_SIZE];
+	int rc;
 
  	lu = (struct gsm48_loc_upd_req *) gh->data;
 
@@ -311,18 +343,22 @@
 
 	mi_to_string(mi_string, sizeof(mi_string), lu->mi, lu->mi_len);
 
-	DEBUGP(DMM, "LUPDREQ: mi_type = 0x%02x MI(%s)\n", mi_type, mi_string);
+	DEBUGP(DMM, "LUPDREQ: mi_type=0x%02x MI(%s)\n", mi_type, mi_string);
 	switch (mi_type) {
 	case GSM_MI_TYPE_IMSI:
+		/* we always want the IMEI, too */
+		rc = mm_tx_identity_req(msg->lchan, GSM_MI_TYPE_IMEISV);
 		/* look up subscriber based on IMSI */
 		subscr = subscr_get_by_imsi(lu->mi);
 		break;
 	case GSM_MI_TYPE_TMSI:
+		/* we always want the IMEI, too */
+		rc = mm_tx_identity_req(msg->lchan, GSM_MI_TYPE_IMEISV);
 		/* look up the subscriber based on TMSI, request IMSI if it fails */
 		subscr = subscr_get_by_tmsi(lu->mi);
 		if (!subscr) {
-			/* FIXME: send IDENTITY REQUEST message to get IMSI */
-			//gsm0408_identity_request(...GSM_MI_TYPE_IMSI);
+			/* send IDENTITY REQUEST message to get IMSI */
+			rc = mm_tx_identity_req(msg->lchan, GSM_MI_TYPE_IMSI);
 		}
 		break;
 	case GSM_MI_TYPE_IMEI:
@@ -378,16 +414,21 @@
 	switch (gh->msg_type & 0xbf) {
 	case GSM48_MT_MM_LOC_UPD_REQUEST:
 		DEBUGP(DMM, "LOCATION UPDATE REQUEST\n");
-		rc = mm_loc_upd_req(msg);
+		rc = mm_rx_loc_upd_req(msg);
 		break;
 	case GSM48_MT_MM_ID_RESP:
-	case GSM48_MT_MM_TMSI_REALL_COMPL:
-	case GSM48_MT_MM_AUTH_RESP:
-	case GSM48_MT_MM_IMSI_DETACH_IND:
+		rc = mm_rx_id_resp(msg);
+		break;
 	case GSM48_MT_MM_CM_SERV_REQ:
 		rc = gsm48_rx_mm_serv_req(msg);
 		break;
+	case GSM48_MT_MM_STATUS:
+		DEBUGP(DMM, "MM STATUS: FIXME parse error cond.\n");
+		break;
 	case GSM48_MT_MM_CM_REEST_REQ:
+	case GSM48_MT_MM_TMSI_REALL_COMPL:
+	case GSM48_MT_MM_AUTH_RESP:
+	case GSM48_MT_MM_IMSI_DETACH_IND:
 		fprintf(stderr, "Unimplemented GSM 04.08 MM msg type 0x%02x\n",
 			gh->msg_type);
 		break;
