diff --git a/packages/py-pynn/package.py b/packages/py-pynn/package.py
index 2e050512361ff4502e9263bde73e899ea220c15c..ff55a19063a30a00b67daf1fb744acdbfed31722 100644
--- a/packages/py-pynn/package.py
+++ b/packages/py-pynn/package.py
@@ -69,6 +69,7 @@ class PyPynn(PythonPackage):
     depends_on("py-pytest",             type='test', when="@0.11.0:")
 
     patch('pynn-0.9.6-python3.patch', when='@0.9.6 ^python@3:')
+    patch('pynn-0.12.2-arbor-0.9.0.patch', when='@0.12.2')
 
     # neuroml and nineml are optional dependencies. Leave out of import_modules to avoid errors in tests
     skip_modules = ['pyNN.neuroml', 'pyNN.nineml', 'pyNN.hardware']
diff --git a/packages/py-pynn/pynn-0.12.2-arbor-0.9.0.patch b/packages/py-pynn/pynn-0.12.2-arbor-0.9.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4a6d1757fde933f233ae5b7eed1eb1fbbc57b03e
--- /dev/null
+++ b/packages/py-pynn/pynn-0.12.2-arbor-0.9.0.patch
@@ -0,0 +1,13 @@
+diff --git a/pyNN/arbor/simulator.py b/pyNN/arbor/simulator.py
+index 69c7eab9..528e8d4d 100644
+--- a/pyNN/arbor/simulator.py
++++ b/pyNN/arbor/simulator.py
+@@ -186,7 +186,7 @@ class State(common.control.BaseState):
+             comm = arbor.mpi_comm(MPI.COMM_WORLD)
+         else:
+             comm = None
+-        self.arbor_context = arbor.context(alloc, comm)
++        self.arbor_context = arbor.context(alloc, mpi=comm)
+         # unclear if we can create the recipe now, or if we have to
+         # construct it only when we've assembled the whole network
+         self.network = NetworkRecipe()