From 2363ed0b72fc15a5a1d2ef735f6d25e92f8ec50d Mon Sep 17 00:00:00 2001 From: Carl Chalmers Date: Sat, 8 Aug 2026 17:23:02 +0100 Subject: [PATCH 1/2] setup: enable Wi-Fi radio before hotspot prompt + fix model download paths --- setup script/sparrow_setup.sh | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/setup script/sparrow_setup.sh b/setup script/sparrow_setup.sh index b491cb7..4470afa 100644 --- a/setup script/sparrow_setup.sh +++ b/setup script/sparrow_setup.sh @@ -234,6 +234,17 @@ install_network_manager() { systemctl enable --now NetworkManager } +# Some fresh Trixie installs ship with wifi soft-blocked (rfkill) or with +# `nmcli radio wifi` off — either state makes the hotspot setup on line 813 +# fail with a confusing NetworkManager error and no clear signal to the +# operator. Toggle both on unconditionally; both are idempotent when wifi +# is already enabled. +enable_wifi_radio() { + log "Ensuring Wi-Fi radio is enabled..." + rfkill unblock wifi 2>/dev/null || true + nmcli radio wifi on 2>/dev/null || true +} + ############################################################################### # I2C enablement ############################################################################### @@ -381,7 +392,7 @@ setup_persistent_wifi_hotspot() { # Models + repo ############################################################################### download_model() { - local dir="$SYSTEM_FOLDER/Models/megadetectorv6/$MODEL_DIR_NAME" + local dir="$SYSTEM_FOLDER/Models/tritonserver/model_repository/megadetectorv6/$MODEL_DIR_NAME" local tmp="$dir/$MODEL_FILENAME_TEMP" fin="$dir/$MODEL_FILENAME_FINAL" mkdir -p "$dir" while true; do @@ -394,7 +405,7 @@ download_model() { } download_model_ai4g() { - local dir="$SYSTEM_FOLDER/Models/AI4GAmazonClassification/$AI4G_MODEL_DIR_NAME" + local dir="$SYSTEM_FOLDER/Models/tritonserver/model_repository/AI4GAmazonClassification/$AI4G_MODEL_DIR_NAME" local tmp="$dir/$AI4G_MODEL_FILENAME_TEMP" fin="$dir/$AI4G_MODEL_FILENAME_FINAL" mkdir -p "$dir" while true; do @@ -407,7 +418,7 @@ download_model_ai4g() { } download_model_audio_birds() { - local dir="$SYSTEM_FOLDER/Models/megadetector_birds_v1/$AUDIO_BIRDS_MODEL_DIR_NAME" + local dir="$SYSTEM_FOLDER/Models/tritonserver/model_repository/megadetector_birds_v1/$AUDIO_BIRDS_MODEL_DIR_NAME" local tmp="$dir/$AUDIO_BIRDS_MODEL_FILENAME_TEMP" fin="$dir/$AUDIO_BIRDS_MODEL_FILENAME_FINAL" mkdir -p "$dir" while true; do @@ -588,9 +599,9 @@ create_folders() { uh=$(eval echo ~"${SUDO_USER:-$USER}") SYSTEM_FOLDER="$uh/Desktop/system" - mkdir -p "$SYSTEM_FOLDER/Models/megadetectorv6/$MODEL_DIR_NAME" - mkdir -p "$SYSTEM_FOLDER/Models/AI4GAmazonClassification/$AI4G_MODEL_DIR_NAME" - mkdir -p "$SYSTEM_FOLDER/Models/megadetector_birds_v1/$AUDIO_BIRDS_MODEL_DIR_NAME" + mkdir -p "$SYSTEM_FOLDER/Models/tritonserver/model_repository/megadetectorv6/$MODEL_DIR_NAME" + mkdir -p "$SYSTEM_FOLDER/Models/tritonserver/model_repository/AI4GAmazonClassification/$AI4G_MODEL_DIR_NAME" + mkdir -p "$SYSTEM_FOLDER/Models/tritonserver/model_repository/megadetector_birds_v1/$AUDIO_BIRDS_MODEL_DIR_NAME" CLONE_DIR="$SYSTEM_FOLDER" @@ -809,6 +820,7 @@ else _progress "Installing Docker Engine + Compose..." install_docker_pi_debian fi +enable_wifi_radio prompt_hotspot_password setup_persistent_wifi_hotspot From ec0dafa96f9eccfc447741ed035a2b7e6f5dcf2f Mon Sep 17 00:00:00 2001 From: Carl Chalmers Date: Sun, 9 Aug 2026 01:15:47 +0100 Subject: [PATCH 2/2] setup: survive SSH session drops via trap '' HUP PIPE --- setup script/sparrow_setup.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/setup script/sparrow_setup.sh b/setup script/sparrow_setup.sh index 4470afa..53581a1 100644 --- a/setup script/sparrow_setup.sh +++ b/setup script/sparrow_setup.sh @@ -11,6 +11,13 @@ set -euo pipefail export GTK_A11Y=none +# Survive SSH session drops (e.g. Pi Connect terminal glitches, network blips): +# ignore SIGHUP so the parent shell dying doesn't kill this script mid-install, +# and ignore SIGPIPE so a write to a dead terminal doesn't take us down either. +# Without this, a session drop during a slow apt step (docker-ce download on +# a poor field link is minutes long) silently aborts setup with no error log. +trap '' HUP PIPE + ############################################################################### # 0. -- GUI HELPERS -- ###############################################################################