Date: 2026-07-18 GPU: NVIDIA Quadro RTX 5000 Mobile (hybrid PRIME offload, driver 580.173.02) OS: Pop!_OS 24.04 LTS, Wayland (COSMIC compositor) Kernel: 7.0.11-76070011-generic Printer: Creality Ender 3 (CH340 USB-serial, idVendor=1a86, idProduct=7523) Device: /dev/ttyUSB0 (USB-A port via adapter, bus 1 port 3)
Printer connected and executing a print via USB from Cura 5.13 flatpak.
STL: Pokemon Go Revive crystal (revive.stl, 3.6K)
Sliced and sent to printer via /dev/ttyUSB0.
| Application | Flatpak ID | Version | Purpose |
|---|---|---|---|
| UltiMaker Cura | com.ultimaker.cura |
5.13.0 | Slicer, print preparation |
| PrusaSlicer | com.prusa3d.PrusaSlicer |
latest | Slicer, broad printer support |
| Blender | org.blender.Blender |
latest | Mesh modeling, STL repair, sculpting |
| FreeCAD | org.freecad.FreeCAD |
latest | Parametric CAD |
| OpenSCAD | org.openscad.OpenSCAD |
latest | Programmatic/code-based CAD |
flatpak install --user --assumeyes --noninteractive flathub com.ultimaker.cura
flatpak install --user --assumeyes --noninteractive flathub com.prusa3d.PrusaSlicer org.freecad.FreeCAD org.blender.Blender org.openscad.OpenSCADThe flatpak nvidia GL runtime must match the host kernel driver version exactly.
Host driver: 580.173.02
Installed runtime: org.freedesktop.Platform.GL.nvidia-580-173-02
flatpak install --user --assumeyes --noninteractive flathub org.freedesktop.Platform.GL.nvidia-580-173-02Stale runtimes to clean up:
flatpak uninstall --user org.freedesktop.Platform.GL.nvidia-580-159-03 org.freedesktop.Platform.GL.nvidia-580-82-07 org.freedesktop.Platform.GL.nvidia-580-82-09All 3D applications are configured to render on the discrete NVIDIA GPU via PRIME offload
environment variables, with --device=all for USB printer access.
# Apply to all 3D apps
for app in com.ultimaker.cura com.prusa3d.PrusaSlicer org.blender.Blender org.freecad.FreeCAD org.openscad.OpenSCAD; do
flatpak override --user \
--device=all \
--env=__NV_PRIME_RENDER_OFFLOAD=1 \
--env=__VK_LAYER_NV_optimus=NVIDIA_only \
--env=__GLX_VENDOR_LIBRARY_NAME=nvidia \
"$app"
doneCura — Force X11 backend (OpenGL viewport fails on Wayland with nvidia):
flatpak override --user --env=QT_QPA_PLATFORM=xcb com.ultimaker.curaPrusaSlicer — Disable Wayland socket (hangs at startup with nvidia PRIME on Wayland):
flatpak override --user --nosocket=wayland com.prusa3d.PrusaSlicerflatpak override --user --show com.ultimaker.cura
flatpak override --user --show com.prusa3d.PrusaSlicer
flatpak override --user --show org.blender.Blender
flatpak override --user --show org.freecad.FreeCAD
flatpak override --user --show org.openscad.OpenSCAD# com.ultimaker.cura
[Context]
devices=all;
[Environment]
__VK_LAYER_NV_optimus=NVIDIA_only
__GLX_VENDOR_LIBRARY_NAME=nvidia
__NV_PRIME_RENDER_OFFLOAD=1
QT_QPA_PLATFORM=xcb
# com.prusa3d.PrusaSlicer
[Context]
devices=all;
sockets=!wayland;
[Environment]
__VK_LAYER_NV_optimus=NVIDIA_only
__GLX_VENDOR_LIBRARY_NAME=nvidia
__NV_PRIME_RENDER_OFFLOAD=1
# org.blender.Blender, org.freecad.FreeCAD, org.openscad.OpenSCAD
[Context]
devices=all;
[Environment]
__VK_LAYER_NV_optimus=NVIDIA_only
__GLX_VENDOR_LIBRARY_NAME=nvidia
__NV_PRIME_RENDER_OFFLOAD=1usb 1-3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
usb 1-3: Product: USB Serial
ch341 1-3:1.0: ch341-uart converter detected
usb 1-3: ch341-uart converter now attached to ttyUSB0
Permissions after udev rules applied:
crw-rw-rw- 1 root dialout 188, 0 Jul 18 16:24 /dev/ttyUSB0
sudo usermod -aG dialout usrbinkat
# Requires logout/login or reboot to take effect
# Verified active: groups output includes 'dialout'File: /etc/udev/rules.d/99-3dprinter.rules
# 3D Printer USB serial device access rules
# Grants read/write to dialout group for common printer USB-serial chips
# Prusa printers (Prusa Research)
SUBSYSTEM=="tty", ATTRS{idVendor}=="2c99", MODE="0666", GROUP="dialout"
# CH340/CH341 USB-serial (Creality, Ender, many Chinese boards)
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", MODE="0666", GROUP="dialout"
# FTDI USB-serial (many printers, CNC controllers)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", MODE="0666", GROUP="dialout"
# Arduino/Genuino (Marlin firmware boards)
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", MODE="0666", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2a03", MODE="0666", GROUP="dialout"
# STMicroelectronics (SKR, BTT boards with STM32)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", MODE="0666", GROUP="dialout"
# Silicon Labs CP210x (some printer boards, Smoothieboard)
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", MODE="0666", GROUP="dialout"
# Digi International (XBee, some wireless print servers)
SUBSYSTEM=="tty", ATTRS{idVendor}=="1d6b", MODE="0666", GROUP="dialout"
# WCH CH9102 (newer Creality boards)
SUBSYSTEM=="tty", ATTRS{idVendor}=="4348", MODE="0666", GROUP="dialout"
# Prolific PL2303 (some older printer cables)
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", MODE="0666", GROUP="dialout"
# MicroPython/CircuitPython boards (Klipper MCUs)
SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", MODE="0666", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", MODE="0666", GROUP="dialout"
# Raspberry Pi Pico (Klipper MCU)
SUBSYSTEM=="tty", ATTRS{idVendor}=="2e8a", MODE="0666", GROUP="dialout"
# OpenMoko (some CAN bus adapters for Klipper)
SUBSYSTEM=="tty", ATTRS{idVendor}=="1d50", MODE="0666", GROUP="dialout"
# BigTreeTech USB devices
SUBSYSTEM=="tty", ATTRS{idVendor}=="1eaf", MODE="0666", GROUP="dialout"
Reload after install:
sudo udevadm control --reload-rules
sudo udevadm trigger| Board | Chip | Device Path |
|---|---|---|
| Creality 4.2.2 (8-bit) | CH340 | /dev/ttyUSB0 |
| Creality 4.2.7 (32-bit) | CH340 | /dev/ttyUSB0 |
| BTT SKR / STM32 boards | CDC ACM | /dev/ttyACM0 |
Note: USB-A port via USB-C adapter on bus 1 port 3 is the working connection. USB-C ports directly did not enumerate the device.
Printer added: Creality → Ender-3
Build volume: 220 × 220 × 250 mm
Connection: USB /dev/ttyUSB0 at 115200 baud
After first launch:
- Edit → Preferences → System
- Cycles Render Devices → select OptiX
- Check "Quadro RTX 5000"
- OptiX uses hardware RT cores on RTX — significantly faster than CUDA for ray tracing
# Cura with STL file
flatpak run com.ultimaker.cura /path/to/model.stl
# Cura standalone
flatpak run com.ultimaker.cura
# PrusaSlicer
flatpak run com.prusa3d.PrusaSlicer
# Blender
flatpak run org.blender.Blender
# FreeCAD
flatpak run org.freecad.FreeCAD
# OpenSCAD
flatpak run org.openscad.OpenSCADCause: NVIDIA proprietary driver EGL implementation incompatible with Qt's Wayland backend.
Fix: QT_QPA_PLATFORM=xcb forces XWayland (already set via flatpak override).
Reference: Ultimaker/Cura#18891
Cause: USB Printing plugin scans all /dev/tty* devices on startup, blocking UI thread.
Fix: Disconnect printer USB before loading files, or disable USB Printing plugin in
Cura → Marketplace → Installed → USB Printing (toggle off) when not actively printing.
Reference: Ultimaker/Cura#15292
Cause: GTK3/OpenGL initialization deadlocks when __NV_PRIME_RENDER_OFFLOAD=1 is set under native Wayland.
Fix: --nosocket=wayland forces XWayland rendering (already set via flatpak override).
Reference: prusa3d/PrusaSlicer#13945
Cause: Missing nvidia GL runtime inside flatpak sandbox (version mismatch).
Fix: Ensure org.freedesktop.Platform.GL.nvidia-580-173-02 is installed (matches host driver).
Reference: https://community.osarch.org/discussion/1446/blender-how-to-use-nvidia-gpu-in-blender-flatpak-version-linux-gnu
Cause: Flatpak sandboxed paths differ from system installs.
Fix: In FreeCAD preferences, set OpenSCAD executable to /app/bin/openscad (both must be flatpak).
Reference: FreeCAD/FreeCAD#17889
Cause: User not in dialout group, or missing udev rules, or charge-only cable.
Fix: sudo usermod -aG dialout usrbinkat + install udev rules + re-login.
Note: USB-C ports on this laptop do not enumerate the CH340. Use USB-A (via adapter if needed).
Reference: https://github.com/hroncok/3dprinter-udev-rules
Cause: Flatpak sandbox PipeWire socket timing race. Fix: Cosmetic — audio still initializes via fallback. No action needed.
Model: Pokemon Go Revive crystal (revive.stl)
Source: Thingiverse #1688494
Size: 3.6K STL file
Sliced in Cura 5.13, sent to Ender 3 via USB direct print.
Status: Printing successfully.
flatpak override --user --reset com.ultimaker.curaflatpak uninstall --user com.ultimaker.cura com.prusa3d.PrusaSlicer org.blender.Blender org.freecad.FreeCAD org.openscad.OpenSCADsudo rm /etc/udev/rules.d/99-3dprinter.rules
sudo udevadm control --reload-rulessudo gpasswd -d usrbinkat dialoutCREATED /etc/udev/rules.d/99-3dprinter.rules
CREATED ~/ultimaker.md
Flatpak override state stored in:
~/.local/share/flatpak/overrides/com.ultimaker.cura
~/.local/share/flatpak/overrides/com.prusa3d.PrusaSlicer
~/.local/share/flatpak/overrides/org.blender.Blender
~/.local/share/flatpak/overrides/org.freecad.FreeCAD
~/.local/share/flatpak/overrides/org.openscad.OpenSCAD
gamemode (apt, for Minecraft FeralGamemode support)