diff --git a/example/resources.conf b/example/resources.conf
index 0260815..a09e80a 100644
--- a/example/resources.conf
+++ b/example/resources.conf
@@ -17,8 +17,16 @@
 - label: Ettus B210
   type: osmo-bts-trx
   ipa_unit_id: 6
-  addr: 10.42.42.116
+  addr: 10.42.42.50
   band: GSM-1800
+  launch_trx: true
+
+- label: sysmoCell 5000
+  type: osmo-bts-trx
+  ipa_unit_id: 7
+  addr: 10.42.42.51
+  band: GSM-1800
+  trx_remote_ip: 10.42.42.112
 
 arfcn:
   - arfcn: 512
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index 9795a58..b5262a2 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -41,8 +41,17 @@
         self.env = {}
 
     def remote_addr(self):
-        # FIXME
-        return '127.0.0.1'
+        return self.conf.get('addr')
+
+    def trx_remote_ip(self):
+        conf_ip = self.conf.get('trx_remote_ip', None)
+        if conf_ip is not None:
+            return conf_ip
+        # if 'trx_remote_ip' is not configured, use same IP as BTS
+        return self.remote_addr()
+
+    def launch_trx_enabled(self):
+        return util.str2bool(self.conf.get('launch_trx'))
 
     def start(self):
         if self.bsc is None:
@@ -53,10 +62,11 @@
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
         self.configure()
 
-        self.trx = OsmoTrx(self.suite_run)
-        self.trx.start()
-        self.log('Waiting for osmo-trx to start up...')
-        event_loop.wait(self, self.trx.trx_ready)
+        if self.launch_trx_enabled():
+            self.trx = OsmoTrx(self.suite_run, self.trx_remote_ip(), self.remote_addr())
+            self.trx.start()
+            self.log('Waiting for osmo-trx to start up...')
+            event_loop.wait(self, self.trx.trx_ready)
 
         self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoBtsTrx.BIN_BTS_TRX)))
         lib = self.inst.child('lib')
@@ -93,6 +103,8 @@
         config.overlay(values, {
                         'osmo_bts_trx': {
                             'oml_remote_ip': self.bsc.addr(),
+                            'trx_local_ip': self.remote_addr(),
+                            'trx_remote_ip': self.trx_remote_ip(),
                             'pcu_socket_path': os.path.join(str(self.run_dir), 'pcu_bts')
                         }
         })
@@ -124,17 +136,19 @@
 
     BIN_TRX = 'osmo-trx'
 
-    def __init__(self, suite_run):
+    def __init__(self, suite_run, listen_ip, bts_ip):
         super().__init__(log.C_RUN, OsmoTrx.BIN_TRX)
         self.suite_run = suite_run
         self.env = {}
+        self.listen_ip = listen_ip
+        self.bts_ip = bts_ip
 
     def start(self):
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
         self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoTrx.BIN_TRX)))
         lib = self.inst.child('lib')
         self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
-        self.proc_trx = self.launch_process(OsmoTrx.BIN_TRX, '-x')
+        self.proc_trx = self.launch_process(OsmoTrx.BIN_TRX, '-x', '-j', self.listen_ip, '-i', self.bts_ip)
 
     def launch_process(self, binary_name, *args):
         binary = os.path.abspath(self.inst.child('bin', binary_name))
diff --git a/src/osmo_gsm_tester/config.py b/src/osmo_gsm_tester/config.py
index 20ae83e..f6e81ac 100644
--- a/src/osmo_gsm_tester/config.py
+++ b/src/osmo_gsm_tester/config.py
@@ -271,5 +271,4 @@
             dest[i] = overlay(dest[i], src[i])
         return dest
     return src
-
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index 8eec71e..9470f48 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -54,6 +54,8 @@
         'bts[].ipa_unit_id': schema.INT,
         'bts[].addr': schema.IPV4,
         'bts[].band': schema.BAND,
+        'bts[].trx_remote_ip': schema.IPV4,
+        'bts[].launch_trx': schema.BOOL_STR,
         'bts[].trx_list[].hw_addr': schema.HWADDR,
         'bts[].trx_list[].net_device': schema.STR,
         'arfcn[].arfcn': schema.INT,
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index d652aa7..4c9b9cd 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -20,7 +20,7 @@
 import re
 
 from . import log
-from .util import is_dict, is_list
+from .util import is_dict, is_list, str2bool
 
 KEY_RE = re.compile('[a-zA-Z][a-zA-Z0-9_]*')
 IPV4_RE = re.compile('([0-9]{1,3}.){3}[0-9]{1,3}')
@@ -63,21 +63,25 @@
 
 INT = 'int'
 STR = 'str'
+BOOL_STR = 'bool_str'
 BAND = 'band'
 IPV4 = 'ipv4'
 HWADDR = 'hwaddr'
 IMSI = 'imsi'
 KI = 'ki'
 MSISDN = 'msisdn'
+TRX_REMOTE_IP = 'trx_remote_ip'
 SCHEMA_TYPES = {
         INT: int,
         STR: str,
+        BOOL_STR: str2bool,
         BAND: band,
         IPV4: ipv4,
         HWADDR: hwaddr,
         IMSI: imsi,
         KI: ki,
         MSISDN: msisdn,
+        TRX_REMOTE_IP: ipv4,
     }
 
 def validate(config, schema):
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
index ddfd483..950c03e 100644
--- a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
@@ -17,6 +17,8 @@
  instance 0
  osmotrx rx-gain 25
  osmotrx tx-attenuation oml
+ osmotrx ip local ${osmo_bts_trx.trx_local_ip}
+ osmotrx ip remote ${osmo_bts_trx.trx_remote_ip}
 bts 0
  band ${osmo_bts_trx.band}
  ipa unit-id ${osmo_bts_trx.ipa_unit_id} 0
diff --git a/src/osmo_gsm_tester/util.py b/src/osmo_gsm_tester/util.py
index 602ae45..af6a2f0 100644
--- a/src/osmo_gsm_tester/util.py
+++ b/src/osmo_gsm_tester/util.py
@@ -305,4 +305,13 @@
     input_thread.join()
     return input_thread.result
 
+def str2bool(val):
+    if val is None or not val:
+        return False
+    if val.upper() in ['FALSE', 'NO', 'OFF']:
+        return False
+    if val.upper() in ['TRUE','YES', 'ON']:
+        return True
+    raise ValueError('Invalid BOOL field: %r' % val)
+
 # vim: expandtab tabstop=4 shiftwidth=4
