Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
344 commits
Select commit Hold shift + click to select a range
3e66ef2
chore: wip
mryel00 Mar 24, 2024
78ce013
chore: wip
mryel00 Mar 24, 2024
9511077
chore: wip
mryel00 Mar 24, 2024
da12c7e
Chore: wip
mryel00 Mar 25, 2024
71cfe6b
chore: wip
mryel00 Mar 25, 2024
09269e9
chore: wip
mryel00 Mar 25, 2024
48f7cd1
chore: wip
mryel00 Mar 26, 2024
19b7017
chore: wip
mryel00 Mar 26, 2024
55477a8
chore: wip
mryel00 Mar 27, 2024
bffdbb7
chore: wip
mryel00 Mar 27, 2024
70b9bf9
chore: wip
mryel00 Mar 30, 2024
6dd03ca
chore: wip
mryel00 Mar 30, 2024
b01bc7c
chore: wip
mryel00 Mar 30, 2024
d448568
chore: wip
mryel00 Mar 30, 2024
644495a
chore: wip
mryel00 Mar 31, 2024
a8ac087
Chore: wip
mryel00 Apr 3, 2024
390f32c
chore: wip
mryel00 Apr 3, 2024
03903d0
chore: wip
mryel00 Apr 3, 2024
364c74c
refactor: add abstract class inheritance
mryel00 Apr 3, 2024
f3d8908
chore: wip
mryel00 Apr 13, 2024
d6c725a
chore: wip
mryel00 Apr 25, 2024
90ea43b
chore: wip
mryel00 May 23, 2024
172716c
chore: wip
mryel00 May 23, 2024
1c6a620
chore: wip
mryel00 May 24, 2024
65a6d0c
chore: wip
mryel00 Jun 13, 2024
6d5dc81
chore: wip
mryel00 Jun 28, 2024
cf28a8c
refactor: add native comment support of ConfigParser
mryel00 Jun 28, 2024
77cc644
style: use guard clause
mryel00 Jul 8, 2024
48b4e32
chore: remove unnecessary code
mryel00 Jul 8, 2024
db64a79
fix: crash with no usb cam connected
mryel00 Jul 9, 2024
4dc8c26
fix: various issues with missing uvc cam
mryel00 Jul 9, 2024
74f14e9
fix: fix problems with some uvc cams
mryel00 Aug 31, 2024
11d45dc
refactor: use self.keyword instead of hardcoded name
mryel00 Aug 31, 2024
f4b1c41
feat: add spyglass support
mryel00 Sep 21, 2024
7e60446
fix: self-compiled search first
mryel00 Oct 3, 2024
9d28aa0
feat: log installed and supported streamer
mryel00 Oct 6, 2024
e38a5e8
Merge branch 'develop' into pynest
mryel00 Mar 4, 2025
7de7a87
chore: remove unused variable
mryel00 Mar 29, 2025
23e01f9
chore: remove name from Crowsnest section init
mryel00 Mar 29, 2025
914e9d0
refactor: refactor config parsing
mryel00 Mar 30, 2025
47eeb35
fix(crowsnest.py): fix load_component
mryel00 Mar 30, 2025
2c21526
fix(utils.py): fix converter return annotations
mryel00 Mar 30, 2025
ae5a92c
fix(uvc): fix tuple
mryel00 Mar 30, 2025
153e03d
fix: fix exit_gracefully
mryel00 Mar 30, 2025
52b8af3
fix(logging_helper): fix model assignment
mryel00 Mar 30, 2025
7e29a0a
fix(ustreamer): fix _set_v4l2_ctrl function call
mryel00 Mar 30, 2025
a6baaf9
chore(ustreamer): rename _set_v4l2ctrls to _set_v4l2_ctrls
mryel00 Mar 30, 2025
0978a2f
fix(camera-streamer): remove str conversion from str tuple
mryel00 Mar 30, 2025
f580ea6
fix(cam): fix streamer failed logging
mryel00 Mar 30, 2025
d3d419c
fix(uvc): ensure positive spacing for controls_string
mryel00 Mar 30, 2025
e70b027
fix: fix typing annotations
mryel00 Mar 30, 2025
0e9bda2
fix: fix ustreamer loading
mryel00 May 22, 2025
da4686b
refactor: use self.keyword instead of mode from config
mryel00 Sep 18, 2025
2901b78
chore: add some typing to streamer to make it more readable
mryel00 Sep 18, 2025
f5b7895
Merge branch 'master' into pynest
mryel00 Sep 22, 2025
2d42acb
feat: add new installer
mryel00 Oct 3, 2025
ea79de5
fix: remove tools/pkglist.sh from .gitignore
mryel00 Oct 3, 2025
f9c0ceb
chore: update to deb822 sources
mryel00 Oct 3, 2025
9caa20f
fix: skip not available repos
mryel00 Oct 4, 2025
4d1257d
chore: fix some syntax
mryel00 Oct 4, 2025
38c822e
chore: fix some more syntax
mryel00 Oct 4, 2025
bc3b414
chore: fix more shelcheck issues
mryel00 Oct 4, 2025
f74966f
fix: fix model logging
mryel00 Oct 4, 2025
b62be8c
fix: fix log if binary is missing
mryel00 Oct 4, 2025
1fe8eb3
chore: run isort and black
mryel00 Oct 4, 2025
d86b894
fix: fix cam starting without the streamer available
mryel00 Oct 4, 2025
12763dd
fix: fix "Parameter 'mode' is not supported by <streamer>"
mryel00 Oct 4, 2025
0db0550
chore: add status_msg to install_apps
mryel00 Oct 4, 2025
b34add5
chore: update dependencies
mryel00 Oct 5, 2025
bb68169
feat: add ustreamer installation
mryel00 Oct 5, 2025
4a475fa
chore: remove unused variable
mryel00 Oct 7, 2025
10d3b1c
fix: temporary repo change to fix moonraker entry until release
mryel00 Oct 7, 2025
1b09274
chore: wip
mryel00 Oct 15, 2025
be339f5
fix: always set self.cam
mryel00 Oct 15, 2025
25eb8fc
fix: fail if cam not available on start
mryel00 Oct 15, 2025
b7367b1
fix: add spyglass binary
mryel00 Oct 15, 2025
5dae241
fix: fix spyglass
mryel00 Oct 15, 2025
6b38528
fix: fix return typing
mryel00 Oct 25, 2025
d662598
feat: add generic source
mryel00 Oct 25, 2025
abbbbaa
fix: fix return typing
mryel00 Oct 25, 2025
fa16349
fix: fix return typing
mryel00 Oct 25, 2025
6d7f953
fix: fix return typing
mryel00 Oct 25, 2025
b611de4
fix: fix typing
mryel00 Oct 25, 2025
e88e010
chore: remove unused variable
mryel00 Oct 25, 2025
f62774e
fix: move venv into home folder
mryel00 Oct 27, 2025
2e9f7b8
fix: fix venv folder
mryel00 Oct 27, 2025
a9741f6
fix: fix manage_apps.sh permissions
mryel00 Oct 27, 2025
6114405
fix: revert manage_apps.sh calling
mryel00 Oct 27, 2025
f13dd57
fix: fix syntax
mryel00 Oct 27, 2025
ed943bf
chore: change syntax
mryel00 Oct 27, 2025
ffa1db4
fix: fix installation
mryel00 Oct 27, 2025
3ffa626
fix: fix syntax
mryel00 Oct 27, 2025
78c73f0
chore: make shellcheck happy
mryel00 Oct 27, 2025
cf5bcef
fix: fix script
mryel00 Oct 27, 2025
614690f
fix: fix various things
mryel00 Oct 27, 2025
325387e
chore: remove unused functions
mryel00 Oct 27, 2025
82c9f17
chore: fix shellcheck complaining
mryel00 Oct 28, 2025
3887938
feat: remove venv and uninstall apps
mryel00 Oct 29, 2025
292a40f
refactor: refactor some logging
mryel00 Oct 29, 2025
a546deb
chore: move ustreamer-www folder to resources
mryel00 Dec 13, 2025
b834da3
chore: move system-dependencies.json into root
mryel00 Dec 13, 2025
b5da377
chore: remove comment in moonraker_update.txt
mryel00 Dec 13, 2025
8b72afe
fix: add requirements.txt for moonraker
mryel00 Dec 13, 2025
8d4a3c8
feat: make venv configurable
mryel00 Dec 13, 2025
71e3eed
chore: remove log-example.md and ustreamer_manpage.md
mryel00 Dec 13, 2025
66c1a1d
fix: update make update for new installation method
mryel00 Dec 13, 2025
4c7285b
Merge branch 'develop' into pynest
mryel00 Dec 14, 2025
f333316
fix: fix crowsnest argument parsing
mryel00 Dec 14, 2025
dce16fc
refactor: move PKGLIST into install.sh
mryel00 Jan 8, 2026
f3b7885
refactor: use string instead of array for apt package installation
mryel00 Jan 8, 2026
50ed252
chore: remove old unused libs files
mryel00 Jan 8, 2026
82fc1e9
chore: remove unused Resolution class
mryel00 Jan 8, 2026
8e0af62
chore: remove unused files
mryel00 Jan 8, 2026
a694eb7
chore: remove unused functions
mryel00 Jan 8, 2026
20dbd97
fix: fix moonraker_update.txt
mryel00 Jan 8, 2026
4f91c72
fix: fix get_control_cur_value
mryel00 Jan 8, 2026
2daede0
fix: fix crowsnest config parsing
mryel00 Jan 8, 2026
773a7bb
fix: fix crowsnest no config logging
mryel00 Jan 8, 2026
33b8ec4
fix: add missing msg functions
mryel00 Jan 8, 2026
3fb9206
fix: make sure moonraker.conf ends in new line
mryel00 Jan 8, 2026
1fc2c1b
fix: fix manage_apps.sh to always get the correct directory
mryel00 Jan 8, 2026
2b01908
refactor: move ustreamer build dependencies to global vars
mryel00 Jan 8, 2026
3ce9bdc
fix: install ustreamer build dependencies
mryel00 Jan 8, 2026
4f3938d
fix: fix shellcheck warnning
mryel00 Jan 8, 2026
833463a
chore: remove build.sh
mryel00 Jan 8, 2026
e5ec306
chore: remove unused file
mryel00 Jan 8, 2026
8585413
fix: add disable shellcheck
mryel00 Jan 8, 2026
56f6def
refactor: adjust service to only restart 3 times on fail with 30s del…
mryel00 Jan 21, 2026
9604f21
fix: fix import paths in manage_apps
mryel00 Jan 25, 2026
cd5806f
chore: remove crudini from runtime dependencies
mryel00 Jan 25, 2026
87da889
fix: fix reinstall
mryel00 Jan 25, 2026
4d7dbf3
fix: remove trailing comma in system-dependencies.json
mryel00 Jan 25, 2026
cf17c42
chore: fix typoes
mryel00 Jan 25, 2026
f322c09
chore: rename str to format_str in ctl.py
mryel00 Jan 25, 2026
fe7906f
fix: fix stepwise string in utils.py
mryel00 Jan 25, 2026
f002909
fix: uncomment http-listen for camera-streamer
mryel00 Jan 25, 2026
074afd7
chore: remove unused imports
mryel00 Jan 25, 2026
94d7aca
refactor: add super initializer to libcamera and uvc cams
mryel00 Jan 25, 2026
6c6e418
refactor: create a typical module directory structure
mryel00 Jan 25, 2026
bac9cc3
fix: don't use global but pass variables
mryel00 Jan 25, 2026
d516a01
fix: fix wrong attribute
mryel00 Jan 25, 2026
e885a7b
fix: change pylibs import to crowsnest
mryel00 Jan 25, 2026
29d9737
refactor: use asyncio.run
mryel00 Jan 26, 2026
3db82dd
fix: fix service and env problems
mryel00 Jan 26, 2026
761c0b9
fix: replace PYTHON_VENV placeholder with real path in service
mryel00 Jan 26, 2026
7937947
chore: adjust -s help text to be in line with old text
mryel00 Jan 26, 2026
49638c0
refactor: remove before nginx from service
mryel00 Jan 26, 2026
25bed25
chore: remove unused file
mryel00 Jan 28, 2026
b0e4c79
fix: add sanity check that streamer exists
mryel00 Jan 28, 2026
7f78ce7
fix: fix potential security issue
mryel00 Jan 28, 2026
55e788b
fix: fix service not calling the python binary
mryel00 Jan 28, 2026
4d00f0f
fix: fix venv deletion before installing it
mryel00 Jan 28, 2026
ff5b167
fix: fix ownership of venv to base user
mryel00 Jan 28, 2026
d585ac0
fix: fix potential crash during logging host info
mryel00 Jan 28, 2026
d559bde
fix: fix some v4l2 ctl implementation issues
mryel00 Jan 28, 2026
570b5e0
refactor: remove crowsnest section from configparser
mryel00 Jan 28, 2026
4ab48d1
fix: add sighup for unix like systems
mryel00 Jan 28, 2026
e917224
chore: log that we got a termination signal
mryel00 Jan 28, 2026
4468357
chore: move some logic out of try block
mryel00 Jan 28, 2026
dbf515d
fix: move PKGLIST_USTREAMER into manage_apps.sh
mryel00 Jan 28, 2026
916e583
chore: rename VENV to CROWSNEST_VENV_PATH
mryel00 Jan 29, 2026
25b8667
fix: update configure.sh to support newest version
mryel00 Jan 29, 2026
6a205ec
fix: remove camera-streamer repo from configure.sh
mryel00 Jan 31, 2026
4a8c37c
fix: remove unavailable camera-streamer options
mryel00 Jan 31, 2026
d078c9f
chore: update crowsnest.conf comments
mryel00 Jan 31, 2026
ae20bdc
chore: remove unused log_path option from config
mryel00 Jan 31, 2026
4bb54cf
fix: make no_proxy configurable through crowsnest section
mryel00 Jan 31, 2026
70f1489
chore: remove unused import
mryel00 Jan 31, 2026
671519f
feat: add CROWSNEST_SKIP_REBOOT_PROMPT support
mryel00 Jan 31, 2026
59b8932
fix: remove pkglist.sh references
mryel00 Jan 31, 2026
bcf3c4c
fix: remove quotation marks for package installation
mryel00 Jan 31, 2026
c459d5f
fix: remove unused logic
mryel00 Jan 31, 2026
0d80418
chore: adjust an install message
mryel00 Jan 31, 2026
b952ece
fix: set default value for CROWSNEST_SKIP_REBOOT_PROMPT
mryel00 Jan 31, 2026
e0c53fd
chore: remove unused logrotate
mryel00 Feb 1, 2026
37e68fc
fix: fix crowsnest.env LOGPATH substitution
mryel00 Feb 1, 2026
51f3f52
chore: fix small typo
mryel00 Feb 1, 2026
5f2a63e
fix: fix uvc cameras for identical cameras
mryel00 Feb 2, 2026
034e705
fix: fix device handler opening
mryel00 Feb 4, 2026
74ad5a5
fix: add back in is_os_release()
mryel00 Feb 12, 2026
5686b02
fix: skip camera-streamer execution on Pi5 and CM5
mryel00 Feb 20, 2026
a435c8c
fix: fix potential globbing
mryel00 Feb 20, 2026
3cc2834
fix: fix array expansion
mryel00 Feb 20, 2026
210b34c
fix: add CM5 detection to installer
mryel00 Feb 20, 2026
9562ffa
fix: do not install camera-streamer on Pi5 and CM5
mryel00 Feb 20, 2026
2b9c41d
fix: fix "directory already exists" message logic
mryel00 Feb 21, 2026
99ffc31
fix: add stricter rules when to install spyglass package
mryel00 Feb 21, 2026
05019d2
fix: add --device option to spyglass
mryel00 Feb 21, 2026
d55f017
fix: fix ConfigParser error handling
mryel00 Feb 21, 2026
c59e859
chore: remove unused file
mryel00 Feb 21, 2026
5162d47
chore: remove unnecessary shebang lines
mryel00 Feb 21, 2026
62364ba
chore: adjust, fix and add copyright
mryel00 Feb 21, 2026
f5daa1b
chore: add shebang line to __main__.py
mryel00 Feb 21, 2026
c883a0b
chore: update README.md
mryel00 Feb 21, 2026
5da31c1
fix: add _blockyfix for legacy picams
mryel00 Feb 21, 2026
c0ef1a5
fix: fix int string comparison
mryel00 Feb 21, 2026
316f0fc
fix: initialize logger outside of setup_logging
mryel00 Feb 21, 2026
0405dfa
chore: rename variable to prevent shadowing
mryel00 Feb 21, 2026
ce3984e
refactor: do not add cam to self in spyglass
mryel00 Feb 21, 2026
8d1389a
chore: print warning if camera is not detected
mryel00 Feb 21, 2026
0c44664
fix: fix log_legacy_cam expecting wrong parameter
mryel00 Feb 21, 2026
f969bc0
fix: exit with exit code 1 if no cameras available
mryel00 Feb 21, 2026
7e9cc13
fix: check if log_path is set in env file
mryel00 Feb 21, 2026
77f34ec
chore: add small todo comment for future improvement
mryel00 Feb 21, 2026
c03f70b
fix: add actual log rotation
mryel00 Feb 21, 2026
db99b78
chore: increase log rotation file size
mryel00 Feb 21, 2026
534ca39
chore: increase backup amount of log files to 5
mryel00 Feb 21, 2026
666229c
fix: fix file descriptor leak
mryel00 Mar 25, 2026
4339dde
fix(v4l2): fix ZeroDivisionError
mryel00 Mar 25, 2026
f6044dc
fix(v4l2): fix flags parsing
mryel00 Mar 25, 2026
53e4f60
fix(cam): fix logging if no streamer was loaded
mryel00 Mar 25, 2026
b0a315c
fix(streamer): don't use relative file path
mryel00 Mar 25, 2026
509db89
refactor(camera_manager): refactor camera_manager cameras list
mryel00 Mar 27, 2026
df609d4
refactor: refactor some conditional looping
mryel00 Mar 27, 2026
0b09623
refactor(libcamera): shorten the try except
mryel00 Mar 27, 2026
0b31be7
refactor(libcamera): remove code duplication
mryel00 Mar 27, 2026
a04f7d1
refactor(uvc): refactor more conditional loops
mryel00 Mar 27, 2026
78f5e2b
chore(camera-streamer): update Pi5/CM5 text
mryel00 Mar 27, 2026
c2a19a5
refactor: refactor small code snippets
mryel00 Mar 27, 2026
903ae49
chore(camera-streamer): remove old comments
mryel00 Mar 27, 2026
95cb413
refactor(streamer): use format strings
mryel00 Mar 27, 2026
0594a57
refactor(ustreamer): small refactor
mryel00 Mar 28, 2026
3cb16f4
refactor(v4l2): small refactors
mryel00 Mar 28, 2026
e2eb061
chore(logger): remove comments
mryel00 Mar 28, 2026
eedbfea
refactor(utils): simplify log_level_converter
mryel00 Mar 28, 2026
b28556d
chore: update moonraker update_manager text
mryel00 Mar 28, 2026
826c359
refactor(section): small refactor
mryel00 Mar 28, 2026
7ef4eeb
chore: update Crowsnest parser description
mryel00 Mar 28, 2026
42b3410
chore: update master reference in config
mryel00 Apr 5, 2026
de40b41
ci: update ci and use ff-only merge
mryel00 Apr 5, 2026
bc9c297
ci: remove dependency of first job
mryel00 Apr 5, 2026
3c874e5
refactor: improve readability with strip in streamer.py
mryel00 Apr 5, 2026
e4ed028
fix: fix load_streamer path
mryel00 Apr 5, 2026
b1a38de
chore: remove old comment
mryel00 Apr 5, 2026
b79f6a4
feat: replace delete_log with rollover_on_start
mryel00 Apr 8, 2026
02f6adb
fix: reuse parsed_qc in uvc.py
mryel00 Apr 8, 2026
dc25e44
fix: fix make update to use sudo
mryel00 Apr 13, 2026
4d3f57a
chore: remove legacy code
mryel00 Apr 13, 2026
bbaf098
chore: update comment in crowsnest.conf
mryel00 Apr 14, 2026
4fc808b
Merge branch 'develop' into pynest
mryel00 Apr 16, 2026
4dc5358
fix: fix rollover_on_start
mryel00 Apr 16, 2026
a321b81
fix: fix python_venv variable in service
mryel00 Apr 16, 2026
492463e
fix: fix suffix removal
mryel00 Apr 16, 2026
60a4e4d
fix: fix potential crash on watchdog removal
mryel00 Apr 16, 2026
389b6c8
chore: remove unused global
mryel00 Apr 16, 2026
24e9c47
fix(v4l2): catch all OSError not just FileNotFoundError
mryel00 Apr 16, 2026
07bc2ed
refactor: make streamer fail fast if camera is not found
mryel00 Apr 16, 2026
e106a94
fix: fix potential dead lock
mryel00 Apr 17, 2026
bab3b67
Merge branch 'develop' into pynest
mryel00 Apr 17, 2026
fd35fd1
fix: remove make upgrade
mryel00 Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ leftover*
# tmp file workaround
lost*

# ignore bin paths
# Ignore bin paths
bin/ustreamer
bin/camera-streamer

Expand All @@ -28,5 +28,5 @@ bin/rtsp-simple-server/*.yml
tools/config.local
tools/.config

# Ignore pkglist
tools/pkglist.sh
# Ignore pycache
**/__pycache__/
9 changes: 1 addition & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,6 @@ install: ## Install crowsnest (needs leading sudo)
uninstall: ## Uninstall crowsnest
@bash -c 'tools/uninstall.sh'

build: ## Compile backends / streamer
bash -c 'bin/build.sh --build'

buildclean: ## Clean backends / streamer (for rebuilding)
bash -c 'bin/build.sh --clean'

clean: ## Clean .config
@if [ -f tools/.config ]; then rm -f tools/.config; fi
@printf "Removed installer config file ...\n"
Expand All @@ -41,8 +35,7 @@ help: ## Shows this help

update: ## Update crowsnest (fetches and pulls repository changes)
@git fetch && git pull
@bash -c 'bin/build.sh --reclone'
${MAKE} build
@bash -c 'tools/libs/manage_apps.sh --reinstall'

report: ## Generate report.txt
@if [ -f ~/report.txt ]; then rm -f ~/report.txt; fi
Expand Down
70 changes: 13 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,14 @@

# crowsnest

A wrapper script for webcam streaming on Raspberry Pi OS Lite images like [MainsailOS](https://github.com/mainsail-crew/MainsailOS). Mainly written in bash.
A wrapper script for webcam streaming on Debian based images, especially for Raspberry Pi OS Lite images like [MainsailOS](https://github.com/mainsail-crew/MainsailOS). Mainly written in Python.

- [Why is it called crowsnest?](#why-is-it-called-crowsnest)
- [Support](#support)
- [Documentation](#documentation)
- [Compatibility](#compatibility)
- [Contribute](#contribute)
- [How to support us?](#how-to-support-us)
- [CustomPiOS-module](#custompios-module)
- [What 'Backends' does crowsnest use](#what-backends-does-crowsnest-use)
- [Credits](#credits)

Expand All @@ -39,103 +38,60 @@ So, this will be the 'lookout point' for your printer.

Please read carefully on [how to configure](https://crowsnest.mainsail.xyz/) crowsnest to your needs! Check out the [FAQ](https://crowsnest.mainsail.xyz/) section for first aid or join our [Discord](https://discord.gg/mainsail) server if you need further help. For some topics that are not covered in the documentation, just read below.

_**PS: Do not open issues that are based on misconfiguration! This makes it harder for me to keep track of problems in my code.**_
_**PS: Do not open issues that are based on misconfiguration! The issue tracker is only there to track actual bugs in the code and feature requests.**_

---

## Documentation

We have decided to move crowsnest's documentation to a new location.\
Please go to [https://crowsnest.mainsail.xyz/](https://crowsnest.mainsail.xyz/)
The crowsnest's documentation can be found at [https://crowsnest.mainsail.xyz/](https://crowsnest.mainsail.xyz/)

If there is something in our documentation that is not covered, is described in a way that is misunderstood, or simply is missing, please let us know!

---

## Compatibility

Tested on the following distributions:
To be able to use all features and streamers you need a Raspberry Pi with a Raspberry Pi OS based image with at least Python 3.10.

**Legend:** \
Tested and work as intended: :heavy_check_mark: \
Tested and/or did not work: :x: \
Should work but not tested: :question: \
Not available: :heavy_minus_sign:
For other systems we recommend Debian based images, as they come with `bash` and the `apt` package manager that we rely on for installation.

| Operating System | X86 Architecture | ARM Architecture |
| :-------------------------------: | :----------------: | :-----------------------------------------: |
| Raspberry Pi OS (buster) | :heavy_minus_sign: | :x: ([Hint](#hint-buster)) |
| Raspberry Pi OS (bullseye) | :heavy_minus_sign: | :heavy_check_mark: |
| Raspberry Pi OS (bookworm) | :heavy_minus_sign: | :heavy_check_mark: ([Hint](#hint-bookworm)) |
| MainsailOS (<0.7.1) | :heavy_minus_sign: | :x: ([Hint](#hint-buster)) |
| MainsailOS (>1.0.0) | :heavy_minus_sign: | :heavy_check_mark: (rpi) |
| Armbian | :question: | :heavy_check_mark: |
| DietPi | :question: | :heavy_check_mark: (rpi) |
| Ubuntu Server 20.04 | :heavy_check_mark: | :question: |
| Ubuntu Server 22.04 LTS | :heavy_check_mark: | :heavy_check_mark: (rpi) |
| Ubuntu Server 23.10 | :question: | :heavy_check_mark: (rpi) |
| Linux Mint 21 (codename: vanessa) | :heavy_check_mark: | :question: |
| Archlinux (and derivatives) | :x: | :x: |
| Alpine Linux | :x: | :x: |

_If you test that on other distributions, feel free to open a Pull Request to enhance documentation._

#### Hint Buster

OS images that are based on Debian 10 (codename 'buster') are no longer supported with Crowsnest version 4 (current `master` branch)!

Please use the `legacy/v3` branch for these OS types.\
See the [README.md](https://github.com/mainsail-crew/crowsnest/tree/legacy/v3) of this branch for usage instructions.

#### Hint Bookworm

Raspberry Pi OS images that are based on Debian 12 (codename 'bookworm') currently use a different branch of [camera-streamer](https://github.com/ayufan/camera-streamer)!
The Raspberry Pi 5 has only [ustreamer](https://github.com/pikvm/ustreamer) support! This is due to the missing JPEG and H264 Hardware encoders.
Non Debian based images are not officially supported and never will be.

---

## Contribute

1. Create an Issue related to your topic.
2. Prepare an _tested_ Pull Request against the `develop` branch
1. Create an [Issue](https://github.com/mainsail-crew/crowsnest/issues) related to your topic.
2. Prepare a _tested_ Pull Request against the `develop` branch
- Please use commits formatted according to [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- Make sure you do not ignore the code formatting as provided by the [_.editorconfig_](.editorconfig) of this repo
3. Be patient. Every PR has to go through some sort of "internal gates" before it reaches the master branch, unless an immediate response is crucial.
3. Be patient. Every PR has to go through some sort of "internal gates" before it reaches the current default branch, unless an immediate response is crucial.

---

## How to support us

Buy [KwadFan](https://github.com/KwadFan) a coffee at [ko-fi.com](https://ko-fi.com/KwadFan) or [support the mainsail project](https://docs.mainsail.xyz/about/sponsors#support-mainsail)
[Support the mainsail project](https://docs.mainsail.xyz/about/sponsors#support-mainsail)

Please consider hitting the :star: button in the upper right hand corner to show some love for this project.

---

## CustomPIOS Module

I have decided to provide a [CustomPiOS Module](https://github.com/guysoft/CustomPiOS) to make it easier to integrate with other distributions like MainsailOS or similar. \
Please see [README.md](./custompios/README.md) in the module folder for more information.

---

## What 'Backends' does crowsnest use?

Please see the according [FAQ](https://crowsnest.mainsail.xyz/faq/backends-from-crowsnest) section in our documentation.
Please see the according [FAQ](https://crowsnest.mainsail.xyz/faq/backends) section in our documentation.

---

## Credits

I want to give a huge shoutout to [_lixxbox_](https://github.com/lixxbox) and [_alexz_](https://github.com/zellneralex) from the [mainsail-crew](https://github.com/orgs/mainsail-crew/people). \
A huge thank you to [_KwadFan_](https://github.com/KwadFan/) for the [original bash implementation](https://github.com/mainsail-crew/v4), and a huge shoutout to [_lixxbox_](https://github.com/lixxbox) and [_alexz_](https://github.com/zellneralex) from the [mainsail-crew](https://github.com/orgs/mainsail-crew/people), who gave KwadFan ideas for improvements and tested the original code. \
Without these guys it simply were not possible to get that done.

They both mentioned improvements and tested a heck out of there machines to get this all functioning well. \
Thank you, mates :) Proud to be a part of.

Thanks to [Pedro Lamas](https://github.com/pedrolamas), for the ISSUE_TEMPLATES.

Thanks to [ayufan](https://github.com/ayufan) for keep going on camera-streamer, even I stressed him to get rid of some bugs ;)
Thanks to [ayufan](https://github.com/ayufan) for helping with the original camera-streamer implementation.

---

Expand Down
4 changes: 4 additions & 0 deletions bin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore every file in this folder
*
# Except this one
!.gitignore
Loading
Loading