diff --git a/debian/arduino-app-cli/DEBIAN/postinst b/debian/arduino-app-cli/DEBIAN/postinst index 8dbe7413..da060a89 100755 --- a/debian/arduino-app-cli/DEBIAN/postinst +++ b/debian/arduino-app-cli/DEBIAN/postinst @@ -4,3 +4,4 @@ chown -R arduino:arduino /home/arduino/.local/share/arduino-app-cli systemctl enable arduino-app-cli systemctl enable arduino-burn-bootloader +systemctl enable arduino-avahi-serial.service diff --git a/debian/arduino-app-cli/DEBIAN/prerm b/debian/arduino-app-cli/DEBIAN/prerm index 44e8a76c..6d35c65c 100755 --- a/debian/arduino-app-cli/DEBIAN/prerm +++ b/debian/arduino-app-cli/DEBIAN/prerm @@ -2,3 +2,4 @@ systemctl disable arduino-app-cli systemctl disable arduino-burn-bootloader +systemctl disable arduino-avahi-serial.service diff --git a/debian/arduino-app-cli/etc/systemd/system/arduino-avahi-serial.service b/debian/arduino-app-cli/etc/systemd/system/arduino-avahi-serial.service new file mode 100644 index 00000000..f25ef825 --- /dev/null +++ b/debian/arduino-app-cli/etc/systemd/system/arduino-avahi-serial.service @@ -0,0 +1,17 @@ +[Unit] +Description=Configure Avahi with board serial number +Before=avahi-daemon.service +ConditionPathExists=!/var/lib/arduino-app-cli/avahi_serial_configured.flag + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStart=/var/lib/arduino-app-cli/arduino-avahi-serial.sh +ExecStartPost=/bin/mkdir -p /var/lib/arduino-app-cli +ExecStartPost=/bin/touch /var/lib/arduino-app-cli/avahi_serial_configured.flag + +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh b/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh new file mode 100755 index 00000000..77b5a81b --- /dev/null +++ b/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Configure Avahi with the serial number. + + +TARGET_FILE="/etc/avahi/services/arduino.service" +SERIAL_NUMBER_PATH="/sys/devices/soc0/serial_number" + +echo "Configuring Avahi with serial number for network discovery..." + +if [ ! -f "$SERIAL_NUMBER_PATH" ]; then + echo "Error: Serial number path not found at $SERIAL_NUMBER_PATH." >&2 + exit 1 +fi + + +if [ ! -w "$TARGET_FILE" ]; then + echo "Error: Target file $TARGET_FILE not found or not writable." >&2 + exit 1 +fi + +SERIAL_NUMBER=$(cat "$SERIAL_NUMBER_PATH") + +if [ -z "$SERIAL_NUMBER" ]; then + echo "Error: Serial number file is empty." >&2 + exit 1 +fi + +if grep -q "serial_number=" "$TARGET_FILE"; then + echo "Serial number ($SERIAL_NUMBER) already configured." + exit 0 +fi + +echo "Adding serial number to $TARGET_FILE..." +sed -i "/<\/service>/i serial_number=${SERIAL_NUMBER}<\/txt-record>" "$TARGET_FILE" + +echo "Avahi configuration attempt finished." +exit 0 \ No newline at end of file