NOTE: Do not try this at home. It voids your warranty.
I had good success using
pd~ to utilize the four cores of the Organelle M in my patches. At some point though the main core that gathers the voices starts being the bottleneck. Especially when using ORAC 2 which needs one of the cores much more than the rest.
So I thought: what else can we do?
Well, we can overclock the CPU of the Organelle M by editing
/boot/config.txt. Note that doing this already voids warranty as the CPU will set a bit to indicate it was overclocked.
The Organelle M comes with a Raspberry Pi CM3+ Lite module that runs at 1.2GHz from the factory:
Its desktop equivalent, the Pi 3B+, runs at 1.4GHz. However, simply bumping the frequency won’t be enough as the module will likely overheat, and then start throttling performance to cool down, or worse yet: burn out.
So I thought: let’s add a heatsink from Balena.io to the compute module! I ordered one and installed it as described, looks pretty slick:
The kit comes with a set of spacers (washers) and screws. You need to buy your own thermal compound though:
I used two washers per screw as the CM3+ is already pretty high. The holes in the module allow the screw to be screwed in directly, making the nuts redundant. I didn’t use those then.
However, there’s a problem. Turns out the battery compartment is spaced really tightly with the rest of the chassis. There is already a bit of it shaved by C&G to fit the large 100uF capacitor on the left. So I had to shave off some too which ended up being cleaner as a full on hole in the battery compartment:
With this the chassis closes fine with no surface tension. But it’s obviously very much out of warranty now.
It does! After 30 minutes of uptime with ORAC 2 fully filled with Plaits and FX:
$ /usr/bin/vcgencmd measure_temp && vcgencmd measure_clock arm temp=48.3'C frequency(45)=1500002000
Overclocking to 1.5GHz (like Raspberry Pi 4) gives enough headroom for three Plaits not to cause buffer underruns.
This ran successfully now for a consecutive 12 hours without any issues. The temperature rose to 51.5℃ which means it’s stable enough.
To really push it to the limit, I opened VNC and 2 SSH sessions on the Organelle, replaced one of the ORAC 2 Plaits with Koto (which uses another CPU core for computation), and sequenced the three ORAC 2 modules with pretty dense sequences. Two modules were sequenced using different MIDI IN channels, and the Koto with the built-in euclidean sequencer with clock slaved to MIDI. After adding all that the long-term load of the box was still reported at a paltry 1.09. The temperature pretty quickly rose to 61.2℃ but stayed at that level. It was stable like that for another 12 hours. No issues whatsoever.
At this point I went overboard and on top of all of the above I made
lxterminal in the VNC connection stream random color text constantly. This turned out to be just the thing to push the compute module to its limits. After 15 minutes of this, the temperature was at 80.1℃, the reported box load at around 3.75. The screw in the battery compartment was too hot to touch.
ONLY THEN the compute module started throttling performance to keep the temperature down. I started seeing clock speeds reported at 1195000000 compared to the previous 1500002000. Amazingly, this was enough to keep the machine in check at a stable 80.6℃ with full-blown load over the four cores.
What’s funny is that Raspberry Pi slowed down to what was its original clock speed before the overclocking. And that was enough to keep the temperature at bay. There are no audio hiccups, MIDI is processed normally the entire time. Note that this stress test scenario isn’t representative of typical Organelle usage. Under normal circumstances you will never see this kind of sustained load over all four cores.
All this is measured in a room with ambient temperature at around 26℃ (Summer’s coming here!) and humidity at 45%.
This stress test has been running for 24 hours straight at this point. I think this hack is a keeper. But again, it’s very hard to get replacement compute modules these days so unless you have a backup one, and are comfortable voiding your warranty, don’t do it. And whatever you do, don’t put batteries into an overclocked 'nelle! The heatsink is a large source of heat too close to the battery compartment.