mirror of
https://github.com/cjfranko/NTP-Timeturner.git
synced 2025-11-08 18:32:02 +00:00
125 lines
5.5 KiB
Bash
125 lines
5.5 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
|
||
echo ""
|
||
echo "─────────────────────────────────────────────"
|
||
echo " Welcome to the NTP TimeTurner Installer"
|
||
echo "─────────────────────────────────────────────"
|
||
echo ""
|
||
echo "\"It's a very complicated piece of magic...\" – Hermione Granger"
|
||
echo "Preparing the Ministry-grade temporal interface..."
|
||
echo ""
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 1: Update and upgrade packages
|
||
# ---------------------------------------------------------
|
||
echo "Step 1: Updating package lists and upgrading..."
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 2: Install core tools and Python dependencies
|
||
# ---------------------------------------------------------
|
||
echo "Step 2: Installing required tools..."
|
||
sudo apt install -y git curl python3 python3-pip build-essential cmake \
|
||
python3-serial libusb-dev
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 2.5: Install teensy-loader-cli from source
|
||
# ---------------------------------------------------------
|
||
echo "Installing teensy-loader-cli manually from source..."
|
||
cd "$HOME"
|
||
if [ ! -d teensy_loader_cli ]; then
|
||
git clone https://github.com/PaulStoffregen/teensy_loader_cli.git
|
||
fi
|
||
cd teensy_loader_cli
|
||
make
|
||
sudo install -m 755 teensy_loader_cli /usr/local/bin/teensy-loader-cli
|
||
|
||
echo "Verifying teensy-loader-cli..."
|
||
teensy-loader-cli --version || echo "⚠️ teensy-loader-cli failed to install properly"
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 2.6: Install udev rules for Teensy
|
||
# ---------------------------------------------------------
|
||
echo "Installing udev rules for Teensy access..."
|
||
cd "$HOME"
|
||
wget -O 49-teensy.rules https://www.pjrc.com/teensy/49-teensy.rules
|
||
sudo cp 49-teensy.rules /etc/udev/rules.d/
|
||
sudo udevadm control --reload-rules
|
||
sudo udevadm trigger
|
||
echo "✅ Teensy udev rules installed. Reboot required to take full effect."
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 3: Install Arduino CLI manually (latest version)
|
||
# ---------------------------------------------------------
|
||
echo "Step 3: Downloading and installing arduino-cli..."
|
||
cd "$HOME"
|
||
curl -fsSL https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_ARM64.tar.gz -o arduino-cli.tar.gz
|
||
tar -xzf arduino-cli.tar.gz
|
||
sudo mv arduino-cli /usr/local/bin/
|
||
rm arduino-cli.tar.gz
|
||
|
||
echo "Verifying arduino-cli install..."
|
||
arduino-cli version || echo "⚠️ arduino-cli install failed or not found in PATH"
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 4: Download and apply splash screen
|
||
# ---------------------------------------------------------
|
||
echo "Step 4: Downloading and applying splash screen..."
|
||
cd "$HOME"
|
||
wget -O splash.png https://raw.githubusercontent.com/cjfranko/NTP-Timeturner/master/splash.png
|
||
|
||
if [ -f splash.png ]; then
|
||
sudo cp splash.png /usr/share/plymouth/themes/pix/splash.png
|
||
sudo chmod 644 /usr/share/plymouth/themes/pix/splash.png
|
||
echo "✅ Splash screen applied."
|
||
else
|
||
echo "⚠️ splash.png not found — skipping."
|
||
fi
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 4.5: Configure Plymouth to stay on screen longer
|
||
# ---------------------------------------------------------
|
||
echo "Step 4.5: Configuring splash screen timing..."
|
||
|
||
# Ensure 'quiet splash' is in /boot/cmdline.txt
|
||
sudo sed -i 's/\(\s*\)console=tty1/\1quiet splash console=tty1/' /boot/cmdline.txt
|
||
echo "✅ Set 'quiet splash' in /boot/cmdline.txt"
|
||
|
||
# Update Plymouth config
|
||
sudo sed -i 's/^Theme=.*/Theme=pix/' /etc/plymouth/plymouthd.conf
|
||
sudo sed -i 's/^ShowDelay=.*/ShowDelay=0/' /etc/plymouth/plymouthd.conf || echo "ShowDelay=0" | sudo tee -a /etc/plymouth/plymouthd.conf
|
||
sudo sed -i 's/^DeviceTimeout=.*/DeviceTimeout=10/' /etc/plymouth/plymouthd.conf || echo "DeviceTimeout=10" | sudo tee -a /etc/plymouth/plymouthd.conf
|
||
sudo sed -i 's/^DisableFadeIn=.*/DisableFadeIn=true/' /etc/plymouth/plymouthd.conf || echo "DisableFadeIn=true" | sudo tee -a /etc/plymouth/plymouthd.conf
|
||
echo "✅ Updated /etc/plymouth/plymouthd.conf"
|
||
|
||
# Create autostart delay to keep splash visible until desktop is ready
|
||
mkdir -p "$HOME/.config/autostart"
|
||
cat << EOF > "$HOME/.config/autostart/delayed-plymouth-exit.desktop"
|
||
[Desktop Entry]
|
||
Type=Application
|
||
Name=Delayed Plymouth Exit
|
||
Exec=/bin/sh -c "sleep 3 && /usr/bin/plymouth quit"
|
||
X-GNOME-Autostart-enabled=true
|
||
EOF
|
||
echo "✅ Splash screen will exit 3 seconds after desktop starts"
|
||
|
||
# ---------------------------------------------------------
|
||
# Step 5: Download Teensy firmware
|
||
# ---------------------------------------------------------
|
||
echo "Step 5: Downloading Teensy firmware..."
|
||
cd "$HOME"
|
||
wget -O ltc_audiohat_lock.ino.hex https://raw.githubusercontent.com/cjfranko/NTP-Timeturner/master/firmware/ltc_audiohat_lock.ino.hex
|
||
|
||
# ---------------------------------------------------------
|
||
# Final Message & Reboot
|
||
# ---------------------------------------------------------
|
||
echo ""
|
||
echo "─────────────────────────────────────────────"
|
||
echo " Setup Complete — Rebooting in 15 seconds..."
|
||
echo "─────────────────────────────────────────────"
|
||
echo "NOTE: Teensy firmware ready in $HOME, but not auto-flashed."
|
||
echo "Boot splash will remain until desktop loads. "
|
||
echo ""
|
||
sleep 15
|
||
sudo reboot
|