Hey everyone, this is OutsourcedGuru from the OctoPrint forum. I'm a software developer for 3D printers, for what it's worth.
I run my own printer on a Raspberry Pi 3 B (which has four cores rather than just one) and since I have a Conky-based LCD menu on the printer, I have real-time statistics about the CPU load.
There are several aspects to the load required for adding a camera:
- taking the snapshots and/or video stream
- streaming the video back via http
- writing the snapshots/video to disk
Since I watch the CPU load, I can definitively say that streaming the video pegs one of the Raspi 3's CPUs at 100%. IMHO, this isn't optimal for a single-board computer with one core that's also trying to manage the controller board via serial.
Since a Raspberry Pi Zero W is cheap enough, why not dedicate another (or several) and move the video activity off the main Raspi's plate? Then edit the main Raspi's settings to use the remote Raspi's video feed.
It looks like some juggling of the UARTs was suggested so that the "good" one is dedicated to the controller board. Technically, continuing to allow the native Bluetooth to use the "good" UART is unnecessary in your case—disabling it should put the good one over to `/dev/ttyAMA0` as you'd want with less work. disable Bluetooth
Note that the OctoPi image is the suggested distro on a Raspberry rather than OctoPrint itself.