aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-04-20 12:30:15 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-04-21 10:14:27 -0400
commitec805aee2e1d1376f3f015116575369f44e5ad90 (patch)
tree88c3d43e5cffdfa6356b5396e1fa92ea0c9d371a /scripts
parent167b18b58f919da314266a359353a0bf8e33861b (diff)
downloadkutter-ec805aee2e1d1376f3f015116575369f44e5ad90.tar.gz
kutter-ec805aee2e1d1376f3f015116575369f44e5ad90.tar.xz
kutter-ec805aee2e1d1376f3f015116575369f44e5ad90.zip
scripts: Add octopi installation scripts
Add a system startup script so that Klipper can automatically start at boot time. Create an installation script that will install the system dependencies and the startup script. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/install-octopi.sh102
-rwxr-xr-xscripts/klipper-start.sh54
2 files changed, 156 insertions, 0 deletions
diff --git a/scripts/install-octopi.sh b/scripts/install-octopi.sh
new file mode 100755
index 00000000..024e83aa
--- /dev/null
+++ b/scripts/install-octopi.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# This script installs Klipper on a Raspberry Pi machine running the
+# OctoPi distribution.
+
+PYTHONDIR="${HOME}/klippy-env"
+
+# Step 1: Install system packages
+install_packages()
+{
+ # Packages for python cffi
+ PKGLIST="libffi-dev"
+ # kconfig requirements
+ PKGLIST="${PKGLIST} libncurses-dev"
+ # hub-ctrl
+ PKGLIST="${PKGLIST} libusb-dev"
+ # AVR chip installation and building
+ PKGLIST="${PKGLIST} avrdude gcc-avr binutils-avr avr-libc"
+ # ARM chip installation and building
+ PKGLIST="${PKGLIST} bossa-cli libnewlib-arm-none-eabi"
+
+ # Update system package info
+ report_status "Running apt-get update..."
+ sudo apt-get update
+
+ # Install desired packages
+ report_status "Installing packages..."
+ sudo apt-get install --yes ${PKGLIST}
+}
+
+# Step 2: Create python virtual environment
+create_virtualenv()
+{
+ report_status "Updating python virtual environment..."
+
+ # Create virtualenv if it doesn't already exist
+ [ ! -d ${PYTHONDIR} ] && virtualenv ${PYTHONDIR}
+
+ # Install/update dependencies
+ ${PYTHONDIR}/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10
+}
+
+# Step 3: Install startup script
+install_script()
+{
+ report_status "Installing system start script..."
+ sudo cp "${SRCDIR}/scripts/klipper-start.sh" /etc/init.d/klipper
+ sudo update-rc.d klipper defaults
+}
+
+# Step 4: Install startup script config
+install_config()
+{
+ DEFAULTS_FILE=/etc/default/klipper
+ [ -f $DEFAULTS_FILE ] && return
+
+ report_status "Installing system start configuration..."
+ sudo /bin/sh -c "cat > $DEFAULTS_FILE" <<EOF
+# Configuration for /etc/init.d/klipper
+
+KLIPPY_USER=$USER
+
+KLIPPY_EXEC=${PYTHONDIR}/bin/python
+
+KLIPPY_ARGS="${SRCDIR}/klippy/klippy.py ${HOME}/printer.cfg -l /tmp/klippy.log"
+
+EOF
+}
+
+# Step 5: Start host software
+start_software()
+{
+ report_status "Launching Klipper host software..."
+ sudo /etc/init.d/klipper restart
+}
+
+# Helper functions
+report_status()
+{
+ echo -e "\n\n###### $1"
+}
+
+verify_ready()
+{
+ if [ "$EUID" -eq 0 ]; then
+ echo "This script must not run as root"
+ exit -1
+ fi
+}
+
+# Force script to exit if an error occurs
+set -e
+
+# Find SRCDIR from the pathname of this script
+SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )"
+
+# Run installation steps defined above
+verify_ready
+install_packages
+create_virtualenv
+install_script
+install_config
+start_software
diff --git a/scripts/klipper-start.sh b/scripts/klipper-start.sh
new file mode 100755
index 00000000..53b19859
--- /dev/null
+++ b/scripts/klipper-start.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# System startup script for Klipper 3d-printer host code
+
+### BEGIN INIT INFO
+# Provides: klipper
+# Required-Start: $local_fs
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Klipper daemon
+# Description: Starts the Klipper daemon.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+DESC="klipper daemon"
+NAME="klipper"
+DEFAULTS_FILE=/etc/default/klipper
+PIDFILE=/var/run/klipper.pid
+
+. /lib/lsb/init-functions
+
+# Read defaults file
+[ -r $DEFAULTS_FILE ] && . $DEFAULTS_FILE
+
+case "$1" in
+start) log_daemon_msg "Starting klipper" $NAME
+ start-stop-daemon --start --quiet --exec $KLIPPY_EXEC \
+ --background --pidfile $PIDFILE --make-pidfile \
+ --chuid $KLIPPY_USER --user $KLIPPY_USER \
+ -- $KLIPPY_ARGS
+ log_end_msg $?
+ ;;
+stop) log_daemon_msg "Stopping klipper" $NAME
+ killproc -p $PIDFILE $KLIPPY_EXEC
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
+ log_end_msg $RETVAL
+ ;;
+restart) log_daemon_msg "Restarting klipper" $NAME
+ $0 stop
+ $0 start
+ ;;
+reload|force-reload)
+ log_daemon_msg "Reloading configuration not supported" $NAME
+ log_end_msg 1
+ ;;
+status)
+ status_of_proc -p $PIDFILE $KLIPPY_EXEC $NAME && exit 0 || exit $?
+ ;;
+*) log_action_msg "Usage: /etc/init.d/klipper {start|stop|status|restart|reload|force-reload}"
+ exit 2
+ ;;
+esac
+exit 0