diff --git a/apps/trx/ctrl_if_bb.py b/apps/trx/ctrl_if_bb.py
index 1705cf1..b0d54f9 100644
--- a/apps/trx/ctrl_if_bb.py
+++ b/apps/trx/ctrl_if_bb.py
@@ -25,12 +25,14 @@
 from ctrl_if import CTRLInterface
 
 class CTRLInterfaceBB(CTRLInterface):
-	def __init__(self, remote_addr, remote_port, bind_port, tb):
+	def __init__(self, remote_addr, remote_port, bind_port, tb, pm):
 		print("[i] Init CTRL interface")
 		CTRLInterface.__init__(self, remote_addr, remote_port, bind_port)
 
 		# Set link to the follow graph (top block)
 		self.tb = tb
+		# Power measurement
+		self.pm = pm
 
 	def shutdown(self):
 		print("[i] Shutdown CTRL interface")
@@ -116,6 +118,19 @@
 
 			return 0
 
+		# Power measurement
+		elif self.verify_cmd(request, "MEASURE", 1):
+			print("[i] Recv MEASURE cmd")
+
+			# TODO: check freq range
+			meas_freq = int(request[1]) * 1000
+
+			# HACK: send fake low power values
+			# until actual power measurement is implemented
+			meas_dbm = str(self.pm.measure(meas_freq))
+
+			return (0, [meas_dbm])
+
 		# Misc
 		elif self.verify_cmd(request, "ECHO", 0):
 			print("[i] Recv ECHO cmd")
diff --git a/apps/trx/fake_pm.py b/apps/trx/fake_pm.py
new file mode 100644
index 0000000..1d76916
--- /dev/null
+++ b/apps/trx/fake_pm.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+
+# Virtual Um-interface (fake transceiver)
+# Power measurement emulation for BB
+#
+# (C) 2017 by Vadim Yanitskiy <axilirator@gmail.com>
+#
+# All Rights Reserved
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from random import randint
+
+class FakePM:
+	# Freq. list for good power level
+	bts_list = []
+
+	def __init__(self, noise_min, noise_max, bts_min, bts_max):
+		# Save power level ranges
+		self.noise_min = noise_min
+		self.noise_max = noise_max
+		self.bts_min = bts_min
+		self.bts_max = bts_max
+
+	def measure(self, bts):
+		if bts in self.bts_list:
+			return randint(self.bts_min, self.bts_max)
+		else:
+			return randint(self.noise_min, self.noise_max)
+
+	def update_bts_list(self, new_list):
+		self.bts_list = new_list
+
+	def add_bts_list(self, add_list):
+		self.bts_list += add_list
+
+	def del_bts_list(self, del_list):
+		for item in del_list:
+			if item in self.bts_list:
+				self.bts_list.remove(item)
diff --git a/apps/trx/grgsm_trx.py b/apps/trx/grgsm_trx.py
index dbc1c9f..fbc9350 100755
--- a/apps/trx/grgsm_trx.py
+++ b/apps/trx/grgsm_trx.py
@@ -27,6 +27,7 @@
 
 from ctrl_if_bb import CTRLInterfaceBB
 from radio_if import RadioInterface
+from fake_pm import FakePM
 
 COPYRIGHT = \
 	"Copyright (C) 2016-2017 by Vadim Yanitskiy <axilirator@gmail.com>\n" \
@@ -60,9 +61,15 @@
 			self.phy_sample_rate, self.phy_gain, self.phy_ppm,
 			self.remote_addr, self.base_port)
 
+		# Power measurement emulation
+		# Noise: -120 .. -105
+		# BTS: -75 .. -50
+		self.pm = FakePM(-120, -105, -75, -50)
+
 		# Init TRX CTRL interface
 		self.server = CTRLInterfaceBB(self.remote_addr,
-			self.base_port + 101, self.base_port + 1, self.radio)
+			self.base_port + 101, self.base_port + 1,
+			self.radio, self.pm)
 
 		print("[i] Init complete")
 
