diff --git a/bin/ipmi_bt.py b/bin/ipmi_bt.py
new file mode 100644
index 0000000..8e4566e
--- /dev/null
+++ b/bin/ipmi_bt.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+import sys
+import subprocess
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import xml.etree.ElementTree as ET
+
+if (len(sys.argv) < 2):
+	print "Usage:  ipmi_bt.py [system name]"
+	exit(1)
+
+System = __import__(sys.argv[1])
+import Openbmc
+
+DBUS_NAME = 'org.openbmc.control.IpmiBt'
+OBJ_NAME = '/org/openbmc/control/IpmiBt'
+
+class IpmiBt(dbus.service.Object):
+	def __init__(self,bus,name):
+		dbus.service.Object.__init__(self,bus,name)
+	
+	@dbus.service.signal(DBUS_NAME)
+	def UpdateFru(self, iid, message):
+ 		pass
+
+	@dbus.service.signal(DBUS_NAME)
+	def UpdateSensor(self, iid, message):
+ 		pass
+
+	@dbus.service.method(DBUS_NAME)
+	def emitUpdateFru(self,ipmi_id,mfg):
+		data = {
+			'manufacturer' : mfg
+		}
+        	self.UpdateFru(ipmi_id,data)
+        	return 'Signal emitted'
+
+	@dbus.service.method(DBUS_NAME)
+	def emitUpdateSensor(self,ipmi_id,data):
+        	self.UpdateSensor(ipmi_id,int(data))
+		print "update sensor emitted"
+        	return 'Signal emitted'
+
+	def getSensor(self,ipmi_id):
+		obj =  bus.get_object('org.openbmc.managers.IpmiTranslator',
+				'/org/openbmc/managers/IpmiTranslator/Barreleye')
+		intf = dbus.Interface(obj, 'org.openbmc.managers.IpmiTranslator' )
+		return intf.getSensor(ipmi_id)
+
+
+if __name__ == '__main__':
+
+	cmd = sys.argv[2]
+	ipmi_id = int(sys.argv[3])
+	if (len(sys.argv)>4):
+		data = sys.argv[4]
+
+	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+	bus = dbus.SessionBus()
+	name = dbus.service.BusName(DBUS_NAME,bus)
+	obj = IpmiBt(bus,OBJ_NAME)
+	mainloop = gobject.MainLoop()
+
+	if (cmd == 'updatefru'):
+		obj.emitUpdateFru(ipmi_id,data)
+	elif (cmd == 'setsensor'):
+		obj.emitUpdateSensor(ipmi_id,data)
+	elif (cmd == 'getsensor'):
+		print obj.getSensor(ipmi_id)
+		
+
+    #mainloop.run()
+
