/dev/video0 camera

This commit is contained in:
paukstelis
2022-11-08 13:03:56 -05:00
parent ea25d783fc
commit 95a90a0c12
2 changed files with 54 additions and 33 deletions

View File

@@ -26,10 +26,10 @@ These files provide a bash script for quickly deploying multiple octoprint insta
* To add more printers at a later date, just run the script again! * To add more printers at a later date, just run the script again!
* General Linux (Ubuntu/Mint/RPiOS/Debian/Fedora/Arch/etc.) * General Linux (Ubuntu/Mint/RPiOS/Debian/Fedora/Arch/etc.)
* __You do not need to install OctoPrint using any Wiki instructions, snap, etc. The script will do it for you.__ * __You do not need to install OctoPrint using any Wiki instructions, snap, etc. The script will do it for you.__
* octoprint_deploy uses systemd services, so avoid distros that do not use systemd by default (MX Linux) * octoprint_deploy uses systemd services, so avoid distros that do not use systemd by default (MX Linux or chroot based systems like Chrome+crouton)
* Basic guide video here: https://youtu.be/1YINWQ5fNn0 * Basic guide video here: https://youtu.be/1YINWQ5fNn0
* All commands assume you are operating out of your home directory. * All commands assume you are operating out of your home directory.
* Install Ubuntu 18-22.X, Mint 20.3+, Debian, DietPi, RPiOS, Armbian, Fedora35+, or ArchLinux on your system (make sure your user is admin for sudo). * Install Ubuntu 20+, Mint 20.3+, Debian, DietPi, RPiOS, Armbian, Fedora35+, or ArchLinux on your system (make sure your user is admin for sudo).
* Install git if it isn't already: `sudo apt install git` or `sudo dnf install git` or `sudo pacman -S git`. * Install git if it isn't already: `sudo apt install git` or `sudo dnf install git` or `sudo pacman -S git`.
* run the command `git clone https://github.com/paukstelis/octoprint_deploy.git`. * run the command `git clone https://github.com/paukstelis/octoprint_deploy.git`.
* run the command `sudo octoprint_deploy/octoprint_deploy.sh`. * run the command `sudo octoprint_deploy/octoprint_deploy.sh`.

View File

@@ -364,7 +364,7 @@ write_camera() {
} }
add_camera() { add_camera() {
PI=$1
if [ $SUDO_USER ]; then user=$SUDO_USER; fi if [ $SUDO_USER ]; then user=$SUDO_USER; fi
echo 'Adding camera' | log echo 'Adding camera' | log
if [ -z "$INSTANCE" ]; then if [ -z "$INSTANCE" ]; then
@@ -386,36 +386,33 @@ add_camera() {
done done
fi fi
dmesg -C if [ -z "$PI" ]; then
echo "Plug your camera in via USB now (detection time-out in 1 min)" detect_camera
counter=0
while [[ -z "$CAM" ]] && [[ $counter -lt 60 ]]; do #Failed state. Nothing detected
CAM=$(dmesg | sed -n -e 's/^.*SerialNumber: //p') if [ -z "$CAM" ] && [ -z "$TEMPUSBCAM" ] ; then
TEMPUSBCAM=$(dmesg | sed -n -e 's|^.*input:.*/\(.*\)/input/input.*|\1|p') echo
counter=$(( $counter + 1 )) echo -e "\033[0;31mNo camera was detected during the detection period.\033[0m"
if [[ -n "$TEMPUSBCAM" ]] && [[ -z "$CAM" ]]; then echo
break return
fi fi
sleep 1
done if [ -z "$CAM" ]; then
dmesg -C echo "Camera Serial Number not detected" | log
#Failed state. Nothing detected echo -e "Camera will be setup with physical USB address of \033[0;34m $TEMPUSBCAM.\033[0m" | log
if [ -z "$CAM" ] && [ -z "$TEMPUSBCAM" ] ; then echo "The camera will have to stay plugged into this location." | log
echo USBCAM=$TEMPUSBCAM
echo -e "\033[0;31mNo camera was detected during the detection period.\033[0m" else
echo echo -e "Camera detected with serial number: \033[0;34m $CAM \033[0m" | log
return check_sn "$CAM"
fi fi
if [ -z "$CAM" ]; then
echo "Camera Serial Number not detected" | log
echo -e "Camera will be setup with physical USB address of \033[0;34m $TEMPUSBCAM.\033[0m" | log
echo "The camera will have to stay plugged into this location." | log
USBCAM=$TEMPUSBCAM
else else
echo -e "Camera detected with serial number: \033[0;34m $CAM \033[0m" | log echo "Setting up a Pi camera service for /dev/video0"
check_sn "$CAM" echo "Please note that doing this with USB cameras may lead to issues."
echo "Don't expect extensive support for trying to fix these issues."
fi fi
echo "Camera Port (ENTER will increment last value in /etc/camera_ports):" echo "Camera Port (ENTER will increment last value in /etc/camera_ports):"
read CAMPORT read CAMPORT
if [ -z "$CAMPORT" ]; then if [ -z "$CAMPORT" ]; then
@@ -454,6 +451,10 @@ add_camera() {
#Need to check if this is a one-off install #Need to check if this is a one-off install
if [ -n "$camopt" ]; then if [ -n "$camopt" ]; then
write_camera write_camera
#Pi Cam setup, replace cam_INSTANCE with /dev/video0
if [ -n "$PI" ]; then
sed -i "s/cam_$INSTANCE/video0/" /etc/systemd/system/cam_$INSTANCE.service
fi
systemctl start cam_$INSTANCE.service systemctl start cam_$INSTANCE.service
systemctl enable cam_$INSTANCE.service systemctl enable cam_$INSTANCE.service
udevadm control --reload-rules udevadm control --reload-rules
@@ -480,6 +481,22 @@ detect_printer() {
dmesg -C dmesg -C
} }
detect_camera() {
dmesg -C
echo "Plug your camera in via USB now (detection time-out in 1 min)"
counter=0
while [[ -z "$CAM" ]] && [[ $counter -lt 60 ]]; do
CAM=$(dmesg | sed -n -e 's/^.*SerialNumber: //p')
TEMPUSBCAM=$(dmesg | sed -n -e 's|^.*input:.*/\(.*\)/input/input.*|\1|p')
counter=$(( $counter + 1 ))
if [[ -n "$TEMPUSBCAM" ]] && [[ -z "$CAM" ]]; then
break
fi
sleep 1
done
dmesg -C
}
remove_instance() { remove_instance() {
echo echo
echo echo
@@ -1133,7 +1150,7 @@ share_uploads() {
main_menu main_menu
break break
fi fi
if [ "$opt" == "Custom" ]; then if [ "$opt" == "Custom" ]; then
echo "Enter full path (should start /home/$user/):" echo "Enter full path (should start /home/$user/):"
read ULPATH read ULPATH
@@ -1150,9 +1167,9 @@ share_uploads() {
sudo -u $user mkdir $ULPATH sudo -u $user mkdir $ULPATH
opt=$ULPATH opt=$ULPATH
fi fi
else else
opt=/home/$user/.$opt/uploads opt=/home/$user/.$opt/uploads
fi fi
echo $opt echo $opt
echo echo
@@ -1371,4 +1388,8 @@ fi
if [ "$1" == replace ]; then if [ "$1" == replace ]; then
replace_id replace_id
fi fi
if [ "$1" == picam ]; then
add_camera true
fi
main_menu main_menu