From 4a07b297287a542991c72ac6317b184435e51cb7 Mon Sep 17 00:00:00 2001 From: Chris Frankland-Wright Date: Sun, 31 Aug 2025 18:42:58 +0100 Subject: [PATCH 1/3] removed captive portal for now --- README.md | 16 ++++ setup.sh | 235 +----------------------------------------------------- 2 files changed, 19 insertions(+), 232 deletions(-) diff --git a/README.md b/README.md index 9102675..8d9f429 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,22 @@ The installation script automates the following steps: After installation is complete, the script will provide instructions to start the service manually or to run the application in its interactive terminal mode. +```bash +The working directory is /opt/timeturner. +Default 'config.yml' installed to /opt/timeturner. + +To start the service, run: + sudo systemctl start timeturner.service + +To view live logs, run: + journalctl -u timeturner.service -f + +To run the interactive TUI instead, simply run from the project directory: + cargo run +Or from anywhere after installation: + timeturner +``` + --- ## πŸ”„ Updating diff --git a/setup.sh b/setup.sh index 93cb02a..9be2334 100644 --- a/setup.sh +++ b/setup.sh @@ -97,7 +97,7 @@ echo "Common build dependencies installed." # --- Install Python dependencies for testing --- echo "🐍 Installing Python dependencies for test scripts..." if [ "$PKG_MANAGER" == "apt" ]; then - # python3-serial is the name for pyserial in apt + # We no longer need hotspot dependencies sudo apt install -y python3 python3-pip python3-serial elif [ "$PKG_MANAGER" == "dnf" ]; then # python3-pyserial is the name for pyserial in dnf @@ -217,237 +217,8 @@ else fi -# --- Install and configure WiFi hotspot and captive portal --- -echo "πŸ“‘ Installing and configuring WiFi hotspot and captive portal..." +# --- The entire WiFi hotspot and captive portal section has been removed --- -if [ "$PKG_MANAGER" == "apt" ]; then - # Stop the service if it's running from a previous installation to prevent "Text file busy" error. - echo "Stopping existing nodogsplash service before installation..." - sudo systemctl stop nodogsplash || true - - # We will use dnsmasq for DHCP, as the compiled nodogsplash version may not support the internal DHCP server. - # sudo apt-get remove --purge -y dnsmasq || true # This line is no longer needed. - - # Install dependencies for hotspot and for building nodogsplash. - # ifupdown is needed to manage /etc/network/interfaces - sudo apt install -y hostapd dnsmasq git libmicrohttpd-dev libjson-c-dev iptables ifupdown - - # Force iptables-legacy for nodogsplash - echo "Setting iptables-legacy mode for nodogsplash..." - sudo update-alternatives --set iptables /usr/sbin/iptables-legacy - sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy - - echo "Building and installing nodogsplash from source..." - # Create a temporary directory for the build - BUILD_DIR=$(mktemp -d) - git clone https://github.com/nodogsplash/nodogsplash.git "$BUILD_DIR" - - # Run the build in a subshell to isolate the directory change - ( - cd "$BUILD_DIR" - make - sudo make install - - # Manually install the systemd service file as 'make install' might not do it. - # This makes the script more robust. - if [ -f "debian/nodogsplash.service" ]; then - echo "Manually installing systemd service file..." - sudo cp debian/nodogsplash.service /etc/systemd/system/nodogsplash.service - # Reload systemd to recognize the new service - sudo systemctl daemon-reload - else - echo "⚠️ Warning: nodogsplash.service file not found in source. Cannot set up as a service." - fi - ) - - # Clean up the build directory - sudo rm -rf "$BUILD_DIR" - echo "βœ… nodogsplash installed successfully." - - # Disable the standalone hostapd service to let NetworkManager manage it. - # We are now using the classic hostapd service, so unmask it. - sudo systemctl unmask hostapd - sudo systemctl enable hostapd - sudo systemctl enable nodogsplash -else - echo "This script is designed for Debian-based systems like Raspberry Pi OS." - echo "Skipping WiFi hotspot setup." -fi - -# Stop services to configure -# Ensure services exist before trying to stop them -sudo systemctl stop hostapd || true -sudo systemctl stop dnsmasq || true - -# --- Configure networking for AP mode --- - -# Set the WiFi country code to prevent radio issues. This is a critical step. -echo "Setting WiFi Country Code to US..." -sudo raspi-config nonint do_wifi_country US - -# Tell NetworkManager to ignore wlan0 completely to prevent conflicts. -echo "Configuring NetworkManager to ignore wlan0..." -sudo tee /etc/NetworkManager/conf.d/99-unmanaged-wlan0.conf > /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null; then - echo "Attempting to start nodogsplash service..." - if ! sudo systemctl restart nodogsplash; then - echo "❌ nodogsplash service failed to start. Displaying logs..." - # Give a moment for logs to be written - sleep 2 - sudo journalctl -u nodogsplash.service --no-pager -n 50 - echo "" - echo "To debug further, run nodogsplash in the foreground with this command:" - echo " sudo /usr/bin/nodogsplash -f -d 7" - echo "" - exit 1 - fi - echo "βœ… nodogsplash service started successfully." - fi -else - echo "❌ Error: wlan0 failed to get the static IP 10.0.252.1. Found: '$IP_CHECK'." - echo "Please check 'sudo systemctl status hostapd' and 'cat /etc/network/interfaces'." - exit 1 -fi - -echo "βœ… WiFi hotspot and captive portal configured. SSID: Fetch-Hachi, IP: 10.0.252.1" -echo "Clients will be redirected to http://10.0.252.1/static/index.html" # 1. Build the release binary echo "πŸ“¦ Building release binary with Cargo..." @@ -476,7 +247,7 @@ if [[ "$(uname)" == "Linux" ]]; then echo "βš™οΈ Installing systemd service for Linux..." sudo cp timeturner.service /etc/systemd/system/ sudo systemctl daemon-reload - sudo systemctl enable timeturner.service + sudo systemctl enable tim_turner.service echo "βœ… Systemd service installed and enabled." else echo "⚠️ Skipping systemd service installation on non-Linux OS." From 3e423416a8747d69016eadecbb616f4980d34164 Mon Sep 17 00:00:00 2001 From: Chris Frankland-Wright Date: Sun, 31 Aug 2025 21:54:18 +0100 Subject: [PATCH 2/3] fixed error in naming of service --- setup.sh | 2 +- update.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index 9be2334..0b68c12 100644 --- a/setup.sh +++ b/setup.sh @@ -247,7 +247,7 @@ if [[ "$(uname)" == "Linux" ]]; then echo "βš™οΈ Installing systemd service for Linux..." sudo cp timeturner.service /etc/systemd/system/ sudo systemctl daemon-reload - sudo systemctl enable tim_turner.service + sudo systemctl enable timeturner.service echo "βœ… Systemd service installed and enabled." else echo "⚠️ Skipping systemd service installation on non-Linux OS." diff --git a/update.sh b/update.sh index 666471e..ad9fcb9 100644 --- a/update.sh +++ b/update.sh @@ -13,11 +13,11 @@ cargo build --release # 3. Stop the currently running service to release the file lock echo "πŸ›‘ Stopping TimeTurner service..." -sudo systemctl stop timeturner.service +sudo systemctl stop timeturner.service || true # 4. Copy the new binary to the installation directory echo "πŸš€ Deploying new binary..." -sudo cp target/release/timeturner /opt/timeturner/timeturner +sudo cp target/release/ntp_timeturner /opt/timeturner/timeturner # 5. Restart the service with the new binary echo "βœ… Restarting TimeTurner service..." From 2e8bc9ac5ee49ff41812c9881d254a104ee37df4 Mon Sep 17 00:00:00 2001 From: Chris Frankland-Wright Date: Sun, 31 Aug 2025 22:13:47 +0100 Subject: [PATCH 3/3] updated some masthead and readme --- README.md | 12 ++++++------ static/index.html | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8d9f429..5f94e52 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ Hachi synchronises timecode-locked systems by decoding incoming LTC (Linear Time Code) and broadcasting it as NTP/PTP β€” with the dedication our namesake would insist upon. -Created by Chris Frankland-Wright and John Rogers +Created by Chris Frankland-Wright and Chaos Rogers --- ## πŸ“¦ Hardware Requirements -- Raspberry Pi 5 (Dev Platform) but should be supported by Pi v3 (or better) +- Raspberry Pi 5 2GB (Dev Platform) but should be supported by Pi v3 (or better) - Debian Bookworm (64-bit recommended) - Teensy 4.0 - https://thepihut.com/products/teensy-4-0-headers - Audio Adapter Board for Teensy 4.0 (Rev D) - https://thepihut.com/products/audio-adapter-board-for-teensy-4-0 @@ -32,7 +32,7 @@ Created by Chris Frankland-Wright and John Rogers ## πŸ–₯️ Web Interface & API -When running as a background daemon, TimeTurner provides a web interface for monitoring and configuration. +When running as a background daemon, Hachi provides a web interface for monitoring and configuration. - **Access**: The web UI is available at `http://:8080`. - **Functionality**: You can view the real-time sync status, see logs, and change all configuration options directly from your browser. @@ -50,7 +50,7 @@ When running as a background daemon, TimeTurner provides a web interface for mon ## πŸš€ Installation -The `setup.sh` script compiles and installs the TimeTurner application. You can run it by cloning the repository with `git` or by using the `curl` command below for a git-free installation. +The `setup.sh` script compiles and installs the Hachi application. You can run it by cloning the repository with `git` or by using the `curl` command below for a git-free installation. ### Prerequisites @@ -106,7 +106,7 @@ Or from anywhere after installation: ## πŸ”„ Updating -If you installed TimeTurner by cloning the repository with `git`, you can use the `update.sh` script to easily update to the latest version. +If you installed Hachi by cloning the repository with `git`, you can use the `update.sh` script to easily update to the latest version. **Note**: This script will not work if you used the `curl` one-line command for installation, as that method does not create a Git repository. @@ -129,7 +129,7 @@ chronyc tracking | NTP Tracking sudo nano /etc/chrony/chrony.conf | Default Chrony Conf File Add to top: -# Serve the system clock as a reference at stratumβ€―10 +# Serve the system clock as a reference at stratumβ€―1 server 127.127.1.0 allow 127.0.0.0/8 local stratum 1 diff --git a/static/index.html b/static/index.html index deb683d..02bb279 100644 --- a/static/index.html +++ b/static/index.html @@ -3,7 +3,7 @@ - NTP TimeTurner + Fetch | Hachi @@ -129,7 +129,7 @@