feat: add Orange Pi / non-RPi SBC compatibility and dashboard stream fixes#203
Conversation
…d dashboard stream stability
1345395 to
3915987
Compare
|
Hi @geezacoleman — just opened this PR to add Orange Pi Zero 2 + USB webcam support, tested on OPi Zero 2 with Logitech C270. Happy to make any changes you'd like before merge. Thanks! |
|
This is awesome! Thanks so much for contributing it. Let me test it out at home over the weekend on a Pi here (I unfortunately don't have an Orange Pi at hand), and I'll let you know how it goes. Makes a lot of sense to improve the flexibility of this across platforms. Would you be open to sharing some photos/insight on the community page? I'm sure people would be really interested in hearing about it. |
Thanks! I’d be happy to share some photos and notes on the community page once I have things a bit more stable. Right now I’m testing across multiple operating systems and boards. I’ve also tested it on a second Orange Pi, this time running Armbian. It does work, but I’m still not fully happy with the performance yet, so I’m continuing to test before I suggest any changes to the current patch. There may still be a few small improvements needed around USB camera handling, but I now have USB cameras working on my builds without too much trouble. I’ll confirm this with a few more tests, but so far Logitech cameras appear to integrate almost seamlessly. Once I have the setup more repeatable, I’ll put together some photos, notes, and hardware details for the community. |
Summary
Adds compatibility for non-Raspberry Pi single-board computers, specifically tested on Orange Pi Zero 2 running Orange Pi OS (Bookworm), with a Logitech C270 USB webcam (046d:0825).
OWL previously failed on non-Pi SBCs due to hard dependencies on Raspberry Pi-only tools and assumptions. This PR removes those blockers.
Changes
USB Camera (video_manager.py)
cv2.CAP_V4L2backend on Linux for reliable USB webcam detection_init_usb_camera()to try multiple/dev/videoXcandidates sequentially — fixes SBC codec node conflicts where/dev/video0is not always a capture deviceRaspberry Pi Detection (input_manager.py, output_manager.py, directory_manager.py)
/proc/device-tree/modelcheck — more accurate across SBC typesnon-rpiinstead ofrpi-otherRPi.GPIO Dependency (owl_setup.sh, requirements.txt)
RPi.GPIOfrom base requirementsowl_setup.shnow conditionally installs it only on Raspberry Pi — prevents setup failure on other SBCsDashboard Stream (standalone.py)
frametoFRAMEfor stream stabilityvcgencmdtemperature check now only runs if/usr/bin/vcgencmdexists — prevents crash on non-Pi boardsTested On
Notes