diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py
new file mode 100644
index 0000000..4396108
--- /dev/null
+++ b/src/osmo_gsm_tester/bts_octphy.py
@@ -0,0 +1,98 @@
+# osmo_gsm_tester: specifics for running an osmo-bts-octphy
+#
+# Copyright (C) 2016-2017 by sysmocom - s.f.m.c. GmbH
+#
+# Author: Neels Hofmeyr <neels@hofmeyr.de>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os
+from . import log, config, util, template, process
+
+class OsmoBtsOctphy(log.Origin):
+    suite_run = None
+    nitb = None
+    run_dir = None
+    inst = None
+    env = None
+
+    BIN_BTS_OCTPHY = 'osmo-bts-octphy'
+    CONF_BTS_OCTPHY = 'osmo-bts-octphy.cfg'
+
+    def __init__(self, suite_run, conf):
+        self.suite_run = suite_run
+        self.conf = conf
+        self.set_name(OsmoBtsOctphy.BIN_BTS_OCTPHY)
+        self.set_log_category(log.C_RUN)
+        self.env = {}
+
+    def start(self):
+        if self.nitb is None:
+            raise RuntimeError('BTS needs to be added to a NITB before it can be started')
+        self.suite_run.poll()
+
+        self.log('Starting to connect to', self.nitb)
+        self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
+        self.configure()
+
+        self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoBtsOctphy.BIN_BTS_OCTPHY)))
+        lib = self.inst.child('lib')
+        if not os.path.isdir(lib):
+            raise RuntimeError('No lib/ in %r' % self.inst)
+        self.env = { 'LD_LIBRARY_PATH': lib }
+
+        self.launch_process(OsmoBtsTrx.BIN_BTS_OCTPHY, '-r', '1', '-c', os.path.abspath(self.config_file))
+        self.suite_run.poll()
+
+    def launch_process(self, binary_name, *args):
+        binary = os.path.abspath(self.inst.child('bin', binary_name))
+        run_dir = self.run_dir.new_dir(binary_name)
+        if not os.path.isfile(binary):
+            raise RuntimeError('Binary missing: %r' % binary)
+        proc = process.Process(binary_name, run_dir,
+                               (binary,) + args,
+                               env=self.env)
+        self.suite_run.remember_to_stop(proc)
+        proc.launch()
+
+    def configure(self):
+        if self.nitb is None:
+            raise RuntimeError('BTS needs to be added to a NITB before it can be configured')
+        self.config_file = self.run_dir.new_file(OsmoBtsOctphy.CONF_BTS_OCTPHY)
+        self.dbg(config_file=self.config_file)
+
+        values = dict(osmo_bts_octphy=config.get_defaults('osmo_bts_octphy'))
+        config.overlay(values, self.suite_run.config())
+        config.overlay(values, dict(osmo_bts_octphy=dict(oml_remote_ip=self.nitb.addr())))
+        config.overlay(values, dict(osmo_bts_octphy=self.conf))
+        self.dbg(conf=values)
+
+        with open(self.config_file, 'w') as f:
+            r = template.render(OsmoBtsOctphy.CONF_BTS_OCTPHY, values)
+            self.dbg(r)
+            f.write(r)
+
+    def conf_for_nitb(self):
+        values = config.get_defaults('nitb_bts')
+        config.overlay(values, config.get_defaults('osmo_bts_octphy'))
+        config.overlay(values, self.conf)
+        # using type 'sysmobts' for osmo-bts-octphy
+        config.overlay(values, { 'type': 'sysmobts' })
+        self.dbg(conf=values)
+        return values
+
+    def set_nitb(self, nitb):
+        self.nitb = nitb
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index 2bdacec..417fbf2 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -1,4 +1,4 @@
-# osmo_gsm_tester: specifics for running a sysmoBTS
+# osmo_gsm_tester: specifics for running an osmo-bts-trx
 #
 # Copyright (C) 2016-2017 by sysmocom - s.f.m.c. GmbH
 #
@@ -31,10 +31,12 @@
     BIN_BTS_TRX = 'osmo-bts-trx'
     BIN_PCU = 'osmo-pcu'
 
+    CONF_BTS_TRX = 'osmo-bts-trx.cfg'
+
     def __init__(self, suite_run, conf):
         self.suite_run = suite_run
         self.conf = conf
-        self.set_name('osmo-bts-trx')
+        self.set_name(OsmoBtsTrx.BIN_BTS_TRX)
         self.set_log_category(log.C_RUN)
         self.env = {}
 
@@ -47,7 +49,7 @@
         self.run_dir = util.Dir(self.suite_run.trial.get_run_dir().new_dir(self.name()))
         self.configure()
 
-        self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts-trx')))
+        self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst(OsmoBtsTrx.BIN_BTS_TRX)))
         lib = self.inst.child('lib')
         if not os.path.isdir(lib):
             raise RuntimeError('No lib/ in %r' % self.inst)
@@ -72,7 +74,7 @@
     def configure(self):
         if self.nitb is None:
             raise RuntimeError('BTS needs to be added to a NITB before it can be configured')
-        self.config_file = self.run_dir.new_file('osmo-bts-trx.cfg')
+        self.config_file = self.run_dir.new_file(OsmoBtsTrx.CONF_BTS_TRX)
         self.dbg(config_file=self.config_file)
 
         values = dict(osmo_bts_trx=config.get_defaults('osmo_bts_trx'))
@@ -82,14 +84,15 @@
         self.dbg(conf=values)
 
         with open(self.config_file, 'w') as f:
-            r = template.render('osmo-bts-trx.cfg', values)
+            r = template.render(OsmoBtsTrx.CONF_BTS_TRX, values)
             self.dbg(r)
             f.write(r)
 
     def conf_for_nitb(self):
         values = config.get_defaults('nitb_bts')
-        config.overlay(values, config.get_defaults('osmo_bts_sysmo'))
+        config.overlay(values, config.get_defaults('osmo_bts_trx'))
         config.overlay(values, self.conf)
+        # using type 'sysmobts' for osmo-bts-trx
         config.overlay(values, { 'type': 'sysmobts' })
         self.dbg(conf=values)
         return values
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index dc8435e..5cfbeaf 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -51,10 +51,10 @@
         'nitb_iface[].addr': schema.IPV4,
         'bts[].label': schema.STR,
         'bts[].type': schema.STR,
-        'bts[].unit_id': schema.INT,
+        'bts[].ipa_unit_id': schema.INT,
         'bts[].addr': schema.IPV4,
         'bts[].band': schema.BAND,
-        'bts[].trx[].hwaddr': schema.HWADDR,
+        'bts[].trx[].hw_addr': schema.HWADDR,
         'arfcn[].arfcn': schema.INT,
         'arfcn[].band': schema.BAND,
         'modem[].label': schema.STR,
@@ -270,7 +270,7 @@
 
     def find(self, want, skip_if_marked=None, do_copy=True):
         matches = {}
-        for key, want_list in want.items():
+        for key, want_list in sorted(want.items()): # sorted for deterministic test results
           with log.Origin(want=key):
             my_list = self.get(key)
 
@@ -301,7 +301,7 @@
             # figure out who gets what
             solution = solve(all_matches)
             picked = [ my_list[i] for i in solution if i is not None ]
-            log.dbg(None, None, 'Picked', pprint.pformat(picked))
+            log.dbg(None, None, 'Picked', config.tostr(picked))
             matches[key] = picked
 
         return Resources(matches, do_copy=do_copy)
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl
new file mode 100644
index 0000000..90d6092
--- /dev/null
+++ b/src/osmo_gsm_tester/templates/osmo-bts-octphy.cfg.tmpl
@@ -0,0 +1,32 @@
+!
+! OsmoBTS () configuration saved from vty
+!!
+!
+log stderr
+  logging color 1
+  logging timestamp 0
+  logging level all everything
+  logging level rsl info
+  logging level oml info
+  logging level rll notice
+  logging level rr notice
+  logging level meas notice
+  logging level pag info
+  logging level l1c info
+  logging level l1p info
+  logging level dsp info
+  logging level abis notice
+!
+line vty
+ no login
+!
+phy 0
+ octphy hw-addr ${osmo_bts_octphy.hw_addr}
+ octphy net-device ${osmo_bts_octphy.net_device}
+ instance 0
+bts 0
+ band ${osmo_bts_octphy.band}
+ ipa unit-id ${osmo_bts_octphy.ipa_unit_id} 0
+ oml remote-ip ${osmo_bts_octphy.oml_remote_ip}
+ trx 0
+  phy 0 instance 0
