diff --git a/system/clearpilot/on_start.sh b/system/clearpilot/on_start.sh index 6009e52..dff5b0a 100755 --- a/system/clearpilot/on_start.sh +++ b/system/clearpilot/on_start.sh @@ -7,20 +7,5 @@ bash /data/openpilot/system/clearpilot/startup_logo/set_logo.sh nmcli radio wifi on 2>/dev/null if [ ! -f /data/quick_boot ]; then - # No quick_boot flag — wait for internet connectivity (up to 30s) - echo "Waiting for internet connectivity (up to 30s)..." - for i in $(seq 1 30); do - if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then - echo "Internet connectivity detected after ${i}s" - break - fi - sleep 1 - done - - # If online, run provision - if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then - bash /data/openpilot/system/clearpilot/provision.sh - else - echo "No internet connectivity after 30s, skipping provision" - fi + /data/openpilot/system/clearpilot/tools/qt_shell "/data/openpilot/system/clearpilot/provision_wrapper.sh" --title="ClearPilot Provision" fi diff --git a/system/clearpilot/provision.sh b/system/clearpilot/provision.sh index 81488d6..47eb723 100644 --- a/system/clearpilot/provision.sh +++ b/system/clearpilot/provision.sh @@ -3,46 +3,78 @@ # ClearPilot provision script # Runs on first boot (no /data/quick_boot) when internet is available. # Sets up SSH, installs packages, pulls latest code, and builds. +# Output is displayed on screen via qt_shell. # Dongle gate dongle_id=$(cat /data/params/d/DongleId 2>/dev/null) if [[ ! $dongle_id == 90bb71* ]]; then - echo "provision: dongle ID not recognized, skipping" + echo "Dongle ID not recognized, skipping provision" + sleep 3 exit 0 fi -echo "provision: starting" +echo "Dongle ID: $dongle_id" -# 1. SSH authorized keys and service +# 1. SSH +echo "Setting up SSH authorized keys..." cat /data/openpilot/system/clearpilot/dev/GithubSshKeys > /data/params/d/GithubSshKeys echo -n 1 > /data/params/d/SshEnabled sudo systemctl enable ssh 2>/dev/null sudo systemctl start ssh +echo "SSH enabled and started" -# 2. Remount / read-write and install packages +# 2. Wait for internet connectivity +echo "Waiting for internet connectivity (up to 30s)..." +ONLINE=0 +for i in $(seq 1 30); do + if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then + echo "Online after ${i}s" + ONLINE=1 + break + fi + sleep 1 +done + +if [ "$ONLINE" -eq 0 ]; then + echo "No internet after 30s, skipping packages and updates" + sleep 3 + exit 0 +fi + +# 3. Install packages +echo "Remounting / read-write..." sudo mount -o remount,rw / +echo "Installing packages..." sudo apt-get update -qq sudo apt-get install -y openvpn +echo "Packages installed" -# 3. Pull latest from remote (remote always wins) +# 4. Pull latest from remote (remote always wins) +echo "Checking for updates..." cd /data/openpilot git fetch origin clearpilot LOCAL=$(git rev-parse HEAD) REMOTE=$(git rev-parse origin/clearpilot) if [ "$LOCAL" != "$REMOTE" ]; then - echo "provision: updating from $LOCAL to $REMOTE" + echo "Updating: $(git log --oneline -1 HEAD) -> $(git log --oneline -1 origin/clearpilot)" git reset --hard origin/clearpilot sudo chown -R comma:comma /data/openpilot + echo "Update complete" +else + echo "Already up to date" fi -# 4. Build -echo "provision: running build" +# 5. Build +echo "" +echo "Starting build..." su - comma -c "bash /data/openpilot/build_only.sh" if [ $? -eq 0 ]; then - echo "provision: build succeeded" + echo "Build succeeded" touch /data/quick_boot else - echo "provision: build failed" + echo "Build failed" + sleep 10 fi -echo "provision: complete" +echo "Provision complete" +sleep 2 diff --git a/system/clearpilot/provision_wrapper.sh b/system/clearpilot/provision_wrapper.sh new file mode 100644 index 0000000..2dfa0b2 --- /dev/null +++ b/system/clearpilot/provision_wrapper.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec bash /data/openpilot/system/clearpilot/provision.sh 2>&1