Ultimaker Cura for ARM64 based Single Board Computers
Purpose of this repository is to share Ultimaker Cura AppImage for ARM64 devices and instructions to build both Ultimaker Cura and AppImage.
These instruction are made with Orange Pi 5 Pro 16GB board running Ubuntu Jammy (Orange Pi OS version). Here are the steps that I did, some might be unnecessary but these should get build complete and Cura running.
In this build Cura git clone is made in ~/Development so build dir is ~/Development/Cura and Qt6 is installed in /opt/Qt (Online installer needs to run with sudo)
- Python 3.10.12
- Pip 24.1.1 (default was 22.x, need to upgrade after first failed build)
https://www.qt.io/download-qt-installer-oss
At least under additional libraries all should be checked.
pip install conan==1.64
conan config install https://github.com/ultimaker/conan-config.git
conan profile new default --detect --force
In .conan/conan.conf change level-option in [log]-section, this helps to see when build will wait for license input. If not stopped, it stays there waiting forever and consumes all RAM and in the end, your machines is not responsive anymore.
[log]
run_to_output = True # environment CONAN_LOG_RUN_TO_OUTPUT
run_to_file = False # environment CONAN_LOG_RUN_TO_FILE
level = 10 # environment CONAN_LOGGING_LEVEL, default is warn
print_run_commands = True # environment CONAN_PRINT_RUN_COMMANDS
git clone https://github.com/Ultimaker/Cura.git
cd Cura
Add Qt install path to PATH and set makeflags to compile with all processors to speed up build (optional)
export PATH=/opt/Qt/6.7.0/gcc_arm64/bin:/opt/Qt/6.7.0/gcc_arm64/lib:$PATH
export MAKEFLAGS="-j$(nproc)"
If you prefer, you can build specific version with
conan install . cura/5.7.2@ultimaker/stable --build=missing --update -g VirtualPythonEnv
or build latest from master branch with
conan install . --build=missing --update -o cura:devtools=True -g VirtualPythonEnv
Note: I tested clean build to 5.7.2 stable, and it did not create UltiMaker-Cura.spec file that is needed in later step to build standaone UltiMaker-Cura folder! Then I run it again with latter command and it create spec-file. After that building with 5.7.2 stable was successful.
Once build hangs on PyQt6 license checking, stop building with 'Ctrl+C'
~/Development/Cura/venv/bin/python -m pip install --upgrade pip
First, remove/comment out all PyQt6 modules except PyQt6 itself and PyQt6-sip from Cura and Uranium requirements.txt files
~/Development/Cura/requirements.txt
find ~/.conan/ -name requirements.txt # I have this at path ~/.conan/data/uranium/5.7.0/_/_/package/e541e632dd3ca870d37dab822cdf6eaa3df15dca/pip_requirements/requirements.txt
--hash=sha256:3d31b2c59dc378ee26e16586d9469842483588142fc377280aad22aaf2fa6235
sudo rm -r venv/lib/python3.10/site-packages/PyQt6*
~/Development/Cura/venv/bin/pip cache purge
~/Development/Cura/venv/bin/pip install PyQt6==6.7.0 --force-reinstall --config-settings --confirm-license= --verbose
conan install . --build=missing --update -o cura:devtools=True -g VirtualPythonEnv
source venv/bin/activate
python cura_app.py
Tested with:
- Orange Pi 5 Pro
- Orange Pi Ubuntu Jammy
cd ~/Development/Cura
pyinstaller venv/conan/UltiMaker-Cura.spec
If you get error message about Qt5 you need to exclude it in 'Analysis' section in the end of UltiMaker-Cura.spec-file
excludes=['PyQt5'],
PyInstaller will create folder 'dist/UltiMaker-Cura' where all files will be. Now you can test if it is working
dist/UltiMaker-Cura/UltiMaker-Cura
Next we need also to add cura.desktop-file and cura-icon.png before building AppImage.
cd dist/
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-aarch64.AppImage
chmod +x appimagetool-aarch64.AppImage
cp ~/Development/Cura/resources/images/cura-icon.png UltiMaker-Cura/
nano UltiMaker-Cura/cura.desktop
[Desktop Entry]
Name=UltiMaker Cura
Name[de]=UltiMaker Cura
GenericName=3D Printing Software
GenericName[de]=3D-Druck-Software
GenericName[nl]=3D-Print Software
Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
Exec=UltiMaker-Cura %F
Icon=cura-icon
Terminal=false
Type=Application
MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip;
Categories=Graphics;
Keywords=3D;Printing;
X-AppImage-Version=5.7.0
Path=
StartupNotify=false
ln -sf UltiMaker-Cura UltiMaker-Cura/AppRun
ARCH=aarch64 ./appimagetool-aarch64.AppImage UltiMaker-Cura
That's it! Now you can copy/move AppImage to somewhere and use .desktop file to launch AppImage!