Closed 4rianton closed 1 year ago
The problem is about camera-streamer not building. Crowsnest is still using an old branch of camera-streamer atm. That branch don't get any updates. Also the newest version of camera-streamer doesn't build atm under bookworm too, as you can read in this issue https://github.com/ayufan/camera-streamer/issues/107. So the current options we offer would be to stay on bullseye or try to use the legacy branch like described here (not tested under bookworm).
I was experiencing the same issue that @4rianton described. I tried everything to get Crowsnest v4 to work with no luck. I ultimately installed v3 and can confirm that it works with Raspberry Pi OS 12 - Bookworm.
I had the same issue as @4rianton, but unlike @ntressler7 I couldn't get the legacy/v3 branch to work with my setup either. Would love for an update to ensure compatibility with Raspi OS Bookworm :)
This is influenced by my personal experience and thoughts about that. I know users, especially new users, grabbing always the latest Software and expect not to face any issues.
So, here are my thoughts about that. You can't expect to have a flawless experience if an underlying OS changes that drastically, like Raspberry Pi OS did.
The major changes that are affecting "us" as a 3D Printer Community are A) Breaking changes in Libcamera, which camera-streamer heavily relies on. B) Choices of Devs to leave X11 and replace it with Wayland. This might/will have a huge impact on KlipperScreen, which by itself always was an 'enemy' of crowsnest because, in some combinations, it leads to more issues than I want to handle/want users to handle.
That said, I highly encourage you to use Bullseye as long as possible. We (and I as Core Maintainer of MainsailOS and Crowsnest) will not rush here to get compatibility, only to have it. We ( means I ) will do my best to provide support for it, in the long run, because also MainsailOS has to switch at some point. But this causes more trouble and frustration about choices made by others, than it is fun.
The switch from Buster to Bullseye was kinda disastrous for some crowds out there, I am not willing to do this another time.
Therefore I have to apologize that it isn't working that great currently, but we do this all in our free time to enjoy ourselfs or learn something new. This isn't a paid job and even it seems Crowsnest is the only valid option for our community, @mryel00 and I do our best to put all that developing thingys between a dayjob, family and friends.
I for myself will stay as long as possible on Bullseye based OSes because, I don't like the decisions made by Raspberry Pi Foundation. Bookworm kills every SBC that is older than a 3B+. On other Models is either the CPU not powerful enough or its lacking RAM. 512M is not enought for Bookworm, promised!
To get to an end and not rant any further here, we will provide functionality in Bookworm, but earliest will be to end of this year because there are to many moving parts that have to be addressed first. I can't provide Bookworm support if that means breaking crowsnest for other users. Also I am lacking time for that because of massive changes in my life. As I said, bookworm will be supported but we won't rush it.. I hope you understand my POV and decisions.
Thanks for your patience, regards Kwad
Edith says: Improved grammar and wording by @mryel00 and rick, thx guys.
The bookworm is supported by camera-streamer
if installed via prebuilt: https://github.com/ayufan/camera-streamer/releases/tag/v0.2.7.
The bookworm is supported by
camera-streamer
if installed via prebuilt: https://github.com/ayufan/camera-streamer/releases/tag/v0.2.7.
how can i make this work to be recognized by crowsnest? the build script seems to do statically without checking if it is already installed/available.
how can i make this work to be recognized by crowsnest?
Just install crowsnest like normal, after that is finished (after failing to build camera-streamer), you can just install camera-streamer with the prebuilt package and then create a symlink to ~/crowsnest/bin/camera-streamer/camera-streamer
.
So I think the correct command would be ln -s /usr/bin/camera-streamer ~/crowsnest/bin/camera-streamer/camera-streamer
to link the installation. After that you would have to add the moonraker entry manually.
Another option would be to use PR #137 or the duplicate #191. Using the PRs won't make it possible to update automatically, but crowsnest would be able to build camera-streamer (at least a high chance that it will work). Also I mentioned some reasons inside both PRs, why we won't just update the branch.
One last thing I should mention is that the copy-paste command of camera-streamer is currently broke. So there will be some problems, if you just want to copy and paste it.
the build script seems to do statically without checking if it is already installed/available.
The installation should be only done once or maybe again when you have some weird errors. So there is no reason to check for already available installations. A check like this will only introduce more error than it's of any use.
how can i make this work to be recognized by crowsnest?
Just install crowsnest like normal, after that is finished (after failing to build camera-streamer), you can just install camera-streamer with the prebuilt package and then create a symlink to
~/crowsnest/bin/camera-streamer/camera-streamer
. So I think the correct command would beln -s /usr/bin/camera-streamer ~/crowsnest/bin/camera-streamer/camera-streamer
to link the installation. Another option would be to use PR #137 or the duplicate #191. Using the PRs won't make it possible to update automatically, but crowsnest would be able to build camera-streamer (at least a high chance that it will work). Also I mentioned some reasons inside both PRs, why we won't just update the branch. One last thing I should mention is that the copy-paste command of camera-streamer is currently broke. So there will be some problems, if you just want to copy and paste it.the build script seems to do statically without checking if it is already installed/available.
The installation should be only done once or maybe again when you have some weird errors. So there is no reason to check for already available installations. A check like this will only introduce more error than it's of any use.
I looked at the PR and while checking the commit, it seems that the multiple references to the camera-streamer repo is not unified. some point to the -research account and some not :) Guess the last one wins all. I'll try the PR modifications. thanks for the hint to it :)
I just tried "sudo make install" on Raspberry newest updated "bookworm" and as described it failed building the camera-streamer. However the fix was easy.
The file ~/crowsnest/bin/camera-streamer/util/ffmpeg/remuxer.c has in line 97 the following:
AVInputFormat *input_format = av_find_input_format(remuxer->input_format);
However since av_find_input_format() is defined as returning a pointer to a "const"
/usr/include/aarch64-linux-gnu/libavformat/avformat.h:const AVInputFormat av_find_input_format(const char short_name);
and since the makefile compiles with treat warnings as errors, you need to prepend a "const" to the declaration in that line 97 as shown below:
const AVInputFormat *input_format = av_find_input_format(remuxer->input_format);
I know it is a problem for camera_streamer, but I thought some here may like to know how to fix it.
Regards Peter Maersk-Moller
Smaller correction. The correct fix is this if you have and older version of LIBAVFORMAT (Bookworm has not)
AVInputFormat *input_format;
const AVInputFormat *input_format;
input_format = av_find_input_format(remuxer->input_format);
For anyone else having this same issue, a better solution I have found is to point the installer to the main
repo of camera-streamer. Instead of modifying the source code, this will pull the latest version, which compiles without issue. To do so, make a file tools/.config with the following content:
CROWSNEST_CONFIG_PATH="/home/${BASE_USER}/printer_data/config"
CROWSNEST_LOG_PATH="/home/${BASE_USER}/printer_data/logs"
CROWSNEST_ENV_PATH="/home/${BASE_USER}/printer_data/systemd"
CROWSNEST_USTREAMER_REPO_SHIP="https://github.com/pikvm/ustreamer.git"
CROWSNEST_USTREAMER_REPO_BRANCH="master"
CROWSNEST_CAMERA_STREAMER_REPO_SHIP="https://github.com/ayufan/camera-streamer.git"
CROWSNEST_CAMERA_STREAMER_REPO_BRANCH="main"
The camer-streamer repo pointed to is from a secondary account of the creator (-research), also in at least one of the PRs it was mentioned, that changing the branch to a newer version would require additional camera-streamer settings, which are not in scope of crowsnest. (Some sort of IP stream access list)But such issues would also create issues here and also take a lot of free time of the crew.Additionally the build process of even the ‚newest’ camerastreamer has a ton of security related warnings (deprecation since SSLv3), so the other option would be to go with crowsnest v3 as stated from a different comment in this issue. Updating the base OS without checking compatibility is not even close to best practice.For those people i think MainsailOS is the correct way to go.Am 31.10.2023 um 04:30 schrieb gjsmo @.***>: For anyone else having this same issue, a better solution I have found is to point the installer to the main repo of camera-streamer. Instead of modifying the source code, this will pull the latest version, which compiles without issue. To do so, make a file tools/.config with the following content: CROWSNEST_CAMERA_STREAMER_REPO_BRANCH="main"
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
@Surion79 The repo I am using is the official ayufan/camera-streamer, however if you do try to go to ayufan-research/camera-streamer you'll find that it's a redirect to the first. As far as options for camera-streamer, I'm sure there's something different but it works just fine on multiple installations.
Regarding the OS version, this isn't necessarily a big deal for people who have a running printer, but it's a very big deal for people installing for the first time. Stock Raspberry Pi OS + KIAUH is a very common installation method, and as of right now that gets you Debian 12 and no working Crowsnest. This is a very bad user experience, especially if the advice is to either install an older version manually or just wait.
The repo I am using is the official ayufan/camera-streamer, however if you do try to go to ayufan-research/camera-streamer you'll find that it's a redirect to the first.
That's right and this will be fixed with the next update. This was just some oversite but shouldn't change anything in the result.
but it's a very big deal for people installing for the first time. Stock Raspberry Pi OS + KIAUH is a very common installation method, and as of right now that gets you Debian 12 and no working Crowsnest. This is a very bad user experience, especially if the advice is to either install an older version manually or just wait.
We know that it's a bad user experience and it's currently not optimal, especially for non techies. But you have to see it from our viewpoint. We don't want to push anything that could introduce bugs for new users and the same goes for old users. So we have to test every change in the install workflow extensively, as we got 3 different methods of installing:
sudo make install
As far as options for camera-streamer, I'm sure there's something different but it works just fine on multiple installations.
Just an overall change to main branch can introduce problems with parameters as I already mentioned in #137. If we would change it, there might be conflicts with the old version, if we want to provide the "correct" and "full" functionality for both versions. So a quick change of the branch isn't an option for us.
This is opensource, so everyone can contribute to it (at least in a way that suits our plans/ideas) or make their own fork. We are providing this for free and work on this in our free time. We know that this all could be already tested a lot sooner but we had other plans at first that didn't go as we wanted because of some personal stuff.
So @gjsmo as I already told you in #137, I'm already working on it and please just have patience. I know that I don't have to answer on everything coming here, but I feel like some people don't know what we have to consider and test just to make a small patch like this. For completion I will share my statement about the small patch I'm currently working on here too:
There will be soon an update to main branch, but Bookworm exclusive at first, as Crowsnest fails to build on Bookworm with master branch (https://github.com/mainsail-crew/crowsnest/issues/188). As we (more like me) currently think that the Bookworm Raspberry Pi image is more like in a testing phase for the software inside the klipper universe. So we will only update it for Bookworm that those people with Bookworm can use Crowsnest again. The Bookworm people will be like a testing group for this. We won't release it for Bullseye as we want to do enough testing on it first that we can assure that there aren't any issues like breaking changes or maybe missing features.
P.S. I'm basically doing the last few tests right now
What happened
Device: Raspberry pi 4 - 4GB, 1x ribbon camera, 1x logitech usb camera I am setting up a new machine and installing the essential programs using KIUAH on my newly flashed RPi Bookworm setup.
I was successfully able to install Klipper, Moonraker, Mainsail, and Fluidd but crowsnest install fails.
Here is the log:
What did you expect to happen
that crowsnest installs without issue.
I have tried: reinstalling, deleting the installation, rebooting the pi, and the usual troubleshooting.
How to reproduce
have Raspberry Pi OS Full Bookworm installation, install crowsnest, installation fails.
Additional information
No response