Remote Patching (using X11)

Id like to occasionally edit patches directly on the Organelle, but I dont want the hassle of plugging in an HDMI display/keyboard etc.

so I thought Id use X11 remote display (with macOS) , which Ive basically got to work, but have an issue , see end :wink:

heres what Ive done:

on organelle:
edit /etc/sshd_config , change

AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

on client (so macOS)
install XQuartz (ok, I had it already, but I’ll try to list complete steps)
edit .ssh/config

ForwardX11 yes

now in XQuartz, start terminal

xhost +
ssh -X root@organelle
export DISPLAY=

and viola, launch a patch and bang it appears on my mac :slight_smile:

this is all well and good, but this export DISPLAY should not be needed, the ForwardX11 should do this automatically!

Ive tried using ssh -Y and also enabling ForwardX11Trusted, but its the same issue.
Ive also tried the same thing from a Linux client machine, and it has the same issue.
so although it appears to be a client issue (lacking ForwardX11) , I suspect it some odd arch linux setting.

ok, its not a big deal, as I can get it to work… but perhaps its something that someone already has banged their head against, and fixed :slight_smile:


update to this, due to the readonly nature of / , you also need to make the following changes


PermitUserEnvironment yes

add a file ~/.ssh/environment, and add


as with all changes to sshd config, then you will need to reboot, or restart sshd using

 systemctl restart sshd

@oweno, perhaps these changes should be part of a OS update… not a security risk, and means users will be able to simply log on via an X client from the computer (either XQuartxon a mac, or something like Putty on windows)
(oh, and we should probably remove your global git config, so users dont accidentally checkin using C&G names/emails :))

1 Like

This looks cool! I’d love to try it out. Being able to edit patches remotely would be a huge improvement, so including this stuff is probably a good idea.

Another thing I was looking into was running the pd-gui itself on a separate machine. The pd gui and pd engine are two separate processes that communicate using sockets, so in theory you should be able to run them over the network on different machines. I haven’t got it to work yet, and might require tweaking the way pd starts up since it launches the gui and connects. I was also looking at this rewrite of the pd gui purr-data. It would be great to be able to launch pd gui on one machine and then connect to different instruments on the network…

(and yes, lets get that git config out of there!)

1 Like

oh, thats cool… i didn’t realise PD worked like that ( so a bit like Supercollider)
it would make perfect sense to just run the engine on organelle and gui elsewhere, it might mean you can also keep the audio buffers smaller.

yeah, purr-data and also libpd are interesting ideas for organelle.

is purr-data stable enough now?
or perhaps keep supplying vanilla pd, and purr-data as another option?

k, so I took a looked at purr-data…
I think the ‘remote gui’ is something that it will enable with time (due to tech it uses) , but doesn’t appear to be possibility now - similarly although PD has a split ui/engine, apparently its tangled up a bit, which seems to be one of the challenges that faced purr-data.

perhaps purr-data’s really advantage is it does come with quite alot of libraries (so is also a big install!), so its likely many patchers could just rely on those rather than shipping externals. (and I guess increasingly 3rd party patches will become compatible)

hmm… so I don’t think helps the remote side…

perhaps its easier, to improve the ‘desktop mother’ to be full featured and just make the patch transfer/synchronisation a bit easier? (the new multi page menus, make it pretty awkward to test on pc/mac at the moment)

one other thought i had, which is a bit ‘wild’ … is perhaps make windows/mac version of Organelle_UI/Controller…

Organelle_UI would not need much to change to make it work (paths mainly, which Ive already abstracted).
OrganelleController could be a simple JUCE C++ app, which had a mock up of an organelle, with encoders and oled etc
the interface between it and Organelle_UI is very well defined, so would be very 'compatible’
C&G could even use this as ‘sales/marketing’ , basically a kind of demo product… run Organelle on your PC/Mac, then buy the hardware.
the nice thing about this approach, is the default mother.pd path will then just work, you dont need a ‘desktop mother’

1 Like

About pd’s gui, keep an eye on the incoming 0.48 :slight_smile:

The Pd API allows starting and/or shutting down the GUI dynamically while Pd is running.

Just ordered my organelle!

I know Pure Data well (there is an mjwlib still kicking around that I made) - I’m just wondering about setting up a patching environment.

How are you ssh’ing in to it - just over USB? thetechnobear - are those sshd changes in your beta OS? or would I need to make those changes myself? edit - ah no - looks from another post like you are setting up a USB/network device or wifi…

I presume if I want to make patches locally I need 0.47-1 ?

is there something in .47-1 related to remote patching? has anyone tried .48? I’d like to see what that dynamic start stop gui is all about…

sorry - my question was just a basic one - I was downloading the latest pd (I’m afraid after many years of PD use I defected to Max when they had a subscription model :slight_smile: ) - just seeing if that version was ok

oh cool, Pd on the Organelle is .46 so anything after that should be fine.

1 Like

@junklight Organelle is running 0.46, but your probably going to be fine running 0.47 etc.
to use ssh, yes, you need to do it over a wifi dongle, or I guess a usb ethernet dongle (I don’t have one to test) …

(unfortunately organelle doesn’t have a usb device port (only host), so its not possible to tether with RNDIS)

I recently found, unfortunately, you’ll need to connect organelle to a display to do this… as I cannot script it… as the root user needs a password set, and for security reasons this cant be done running from a script (using chpasswd, at least it didn’t work for me when I tried)
the rest of the setup we can probably script, and the same for the X11 setup… i’ll look at this for a release.

@oweno yeah, that’s interesting… as they explicitly say its in the api, I guess its only available to externals, but simple enough to write one to expose it. is it possible to change the audio buffer size via the api? (we’d need that too)
… also, I noticed that whilst they say 0.48 is available for testing on the MP website he has listed it as stable, so I guess its release is 'imminent ? might be good to upgrade to 48.0 when released… or wait a while for bugs to be fixed.

EDIT: perhaps better to have a discussion on 0.48 in a separate topic, so I created on

1 Like

hmm - did all these things but no display! checked and double checked - all seems right and no clues either so not quite sure what to try next

do you need to do startx on the organelle? I did try that on the off chance but that did give me a load of errors (mostly complaining about no process called pd)

no you don’t need to startx on organelle, as its going to use a remote xserver automatically when you start an X application.

Ive just released 22.b9 which should now include everything required to get remote X11 working.

once this is installed what you need to do is:

on mac:

  • run terminal , enter:
  • xhost + (this will also start Xquartz)
  • ssh -x root@organelle , (password is now organelle)
  • export DISPLAY= (substitute for your macs IP address)
  • ~/scripts/
  • on organelle, launch a patch, and PD will automatically start on your mac screen

when you start the patch, you should see in the mac terminal something like:
Checking for Patch File: /sdcard/Patches/Critter/Drums/Drummy/main.pd
X server found…
starting in GMainMenu mode

if its starts in non-gui mode, then either display is not correct, or you have not done xhost + so it doesn’t have permissions.

you can also test the X11 setup by running

  • xprop -root

this will either given an error, or a bunch of details about the X11 display.

hmm - I didn’t do that restart mother stage

anyway thank you and I’ll give it a go later on

oops, sorry missed that step… I’ll update
I restart mother so frequently for dev purposes, i kind of do it on autopilot
its needed so that it can inherit the DISPLAY variable

if you always use the same computer, with a fixed IP , you could put this in your .bashrc or bashprofile,
then you wont need to set display or restart mother, as it will already be there from booting.
(dont worry, it wont start the remote X, unless your mac has an xserver running)

yep that was the missing step!

thank you for all your help - all set to go now

1 Like

Hi guys,

I am having some difficulties here.

If I try to set up the display as described here then all I get is the dreaded “couldn’t connect to display error”

So I set up X11 forwarding on the organelle so it uses the default "localhost:10.0’ and I can start xterm and pd on the organelle and everything works fine on the Mac.

Until that is I select a patch from the organelle, the current pd window is closed but the loaded one is not started.

Anyone any ideas?



with 3.0 you should not need to do any of this anymore, so i suggest you reinstall that…

then all you need to do is to set DISPLAY correctly, and restart mother

(localhost is not correct, you need your ip/hostname of your mac)

Hi Mark,

thanks for the reply, I am on 3.0

If I set DISPLAY correctly:


And restart mother it was not working, nothing on the mac.

Also when sshing with -Y or -X from the mac and say trying to run xterm then that was also not working.

Only enabling X11 forwarding could I get any Xwindows stuff working from the organelle.

hmm, i thought this was already enabled… i’ll double check on a ‘clean organelle’, perhaps ive forgotten something that’s enabled on my ‘dev’ machine…

on the mac, you will also need to have xquartz installed , and then type
xhost +

(can you double check you have followed my instructions in the first post, I’m pretty sure I walked this thru to check it… but it was a long time ago ;))