Have read all posts about Raspi's but still not found a solution. Trying to do the impossible: build a renderfarm with 24 PI's 2B+ (4 cores, 1 Gb mem, 8 Gb disk). To do some tests first about possible benefits, I've rendered an image of the standard cube with Cycles on my Mac (3.5 GHz I5, 32Gb 1600 MHz memory). Rendertime about a minute (Yes, yes, Eevee is much quicker but can not do that on my PI's). Then I've configured a headless PI (Raspbian BullsEye, need that for Kubernetes), installed Blender and CrowdRender, synced the node and rendered (with the Mac unsynced) only with the synced PI: rendertime a disapointing ~30 minutes. So I tried an other PI a BullsEye with graphics, installed Blender and started Blender GUI. Very slow UI but the render of the standard cube took only a surprising 5 minutes. Some difference is acceptable given some CrowdRender communication overhead but on the other hand the headless uses less ram because it does not have the GUI installed. So the GUI version beating the headless with factor 6 is a bit weird. So the first question is: how is this possible?
All Blender versions were 2.83.5, Python 3.9.2, and CR 3.1 on the PI and any version of CR on the Mac will do up until 4.1. I assume and hope that later versions of CR on the PI will perform better but I can not install them. Many errors.
First of all, when Python module pyzmq is not installed on the PI, you can't get CR to work at all. Took me some time to figure that out, but would have loved to see that in the requirements.
Blender 2.93.1 on the Mac (and BL041) was not syncing with the PI. No errors, just not syncing. That’s why I had to go back to Blender 2.83.5 on the Mac as well. The PI's do not go very much further anyway. Not really a problem. Blender 2.79 gave all sorts of unexpected errors so I abandoned that version on all machines.
On the Mac CR 4.1 can be installed but in the headless PI's I can not go further than CR 3.1 because . . .
CR032 gives "RuntimeError: unsupported operating system! : sys.version_info(major=3, minor=9, micro=2, releaselevel='final', serial=0) Linux, MacOS and Win64 are supported"
CR040 gives "NameError: name 'python_version' is not defined"
CR041 gives again the "unsupported OS" error.
CR030 and CR031 run but slooooooowwww :)))
How can I go from here or isn’t there any version of CR that can meet or beat the 5 minutes of the standalone GUI version on the PI?
TIA, Rob
Sorry, been trying to reply but seems our forum is a bit glitchy
Ok, so V0.4.1 is def the right choice since all the other versions don't package binaries for arm, and installing pyzmq yourself, though it might help in the cases of the older versions, the newer versions fix important issues, so its better to figure out what is broken with V0.4.1 on arm. Plus when you come to upgrade Blender and it uses a higher version of python, you'll need to remember to also upgrade pyzmq, which will be annoying to say the least.
I don't have any Pis to test with, but if you can maybe upload the contents of your console or do a screen capture showing how you installed and ran the addon/blender, I will do my best to help debug.
Hi Rob,
To answer some of my questions myself: obviously from CR032 onwards, it's been decided not to support armv7l anymore. When installing, in __INIT__.py all Linux archs except x86_64 and aarch64 became invalid. I've tried to bake sth myself from CR030 and CR041 but that did not go very well. Sync from my Mac (CR030 and CR041) does start (sometimes) but fails quickly.
def select_platform():
""" checks python/blender versions and sets import paths accordingly
"""
global cr_source
if platform.system() == 'Darwin' and platform.machine() == 'x86_64':
set_sys_path('Darwin_x86_64')
elif platform.system() == 'Darwin' and platform.machine() == 'arm64':
set_sys_path('Darwin_arm64')
elif platform.system() == 'Linux' and platform.machine() == 'x86_64':
set_sys_path('Linux_x86_64')
elif platform.system() == 'Linux' and platform.machine() == 'aarch64':
set_sys_path('Linux_aarch64')
""" add 32 bit architecture to include 32 bit ZMQ libraries
"""
elif platform.system() == 'Linux' and platform.machine() == 'armv7l':
set_sys_path('Linux_aarch32')
elif sys.platform.startswith('win'):
set_sys_path('Win64')
else:
raise RuntimeError(f" unsupported operating system! :\
{sys.version_info} Linux, MacOS and Win64 are supported")
from . import cr_source
Nowhere to go obviously. Probably abandoning this route. Cheers.