From b041d459fc3de702eea88ebcadef74b68eea8683 Mon Sep 17 00:00:00 2001 From: probonopd Date: Fri, 2 May 2025 21:43:16 +0200 Subject: [PATCH 1/4] Don't print "Time exceeded (0)" messages [ci skip] --- syslogserver.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/syslogserver.py b/syslogserver.py index feffaa6..0dcd050 100644 --- a/syslogserver.py +++ b/syslogserver.py @@ -34,6 +34,9 @@ class SyslogServer: def handle_message(self, data): message = data[2:].decode('utf-8').strip() + if "Time exceeded (0)" in message: + return + if self.start_time is None: self.start_time = time.time() relative_time = "0:00:00.000" @@ -57,4 +60,4 @@ class SyslogServer: if __name__ == "__main__": server = SyslogServer() server.start() - print("Syslog server stopped.") \ No newline at end of file + print("Syslog server stopped.") From 7bc6ca4d72ed7d98d1f2bcb5ec50c174e5bc9844 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sat, 3 May 2025 11:10:45 +0200 Subject: [PATCH 2/4] Stop more reliably [ci skip] --- syslogserver.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/syslogserver.py b/syslogserver.py index 0dcd050..db45e7f 100644 --- a/syslogserver.py +++ b/syslogserver.py @@ -15,6 +15,7 @@ class SyslogServer: self.port = port self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.server.bind((self.host, self.port)) + self.server.settimeout(0.5) # Set timeout to allow checking self.running self.start_time = None self.running = True @@ -28,6 +29,8 @@ class SyslogServer: try: data, address = self.server.recvfrom(1024) self.handle_message(data) + except socket.timeout: + continue # Check self.running again except KeyboardInterrupt: self.running = False From 021bc962b8269d195e6126f6d463b35f15a8da6b Mon Sep 17 00:00:00 2001 From: probonopd Date: Sat, 3 May 2025 11:15:20 +0200 Subject: [PATCH 3/4] Make more robust [ci skip] --- updater.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/updater.py b/updater.py index 30e6749..bc33058 100644 --- a/updater.py +++ b/updater.py @@ -345,13 +345,18 @@ if __name__ == "__main__": print(f"\nUploaded {file} to {selected_ip}.") except ftplib.all_errors as e: print(f"FTP error: {e}") + ftp = None # Mark ftp as unusable + # Only attempt to send BYE if ftp is connected and has a socket try: - ftp.sendcmd("BYE") - print(f"Disconnected from {selected_ip}.") - except ftplib.all_errors as e: - if str(e).strip().lower() == "timed out": - # Suppress expected timeout after BYE + if ftp is not None and getattr(ftp, 'sock', None) is not None: + ftp.sendcmd("BYE") print(f"Disconnected from {selected_ip}.") + else: + print(f"No active FTP connection to disconnect from.") + except (*ftplib.all_errors, AttributeError) as e: + # Handle timeout or already closed connection + if isinstance(e, TimeoutError) or (str(e).strip().lower() == "timed out"): + print(f"Disconnected from {selected_ip} (timeout after BYE, device likely restarted).") else: print(f"FTP error after BYE: {e}") From 1ec9cb2d4026feb0b9652ed20b6a0d982df97c8d Mon Sep 17 00:00:00 2001 From: probonopd Date: Sat, 3 May 2025 13:16:31 +0200 Subject: [PATCH 4/4] Skip ./circle-stdlib/libs/circle/boot (it fails) (#906) Use boot.zip instead --- .github/workflows/build.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f3a2fd..33f24a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,11 +64,15 @@ jobs: run: | set -ex export PATH=$(readlink -f ./gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin):$PATH - cd ./circle-stdlib/libs/circle/boot - make - make armstub64 - cd - - cp -r ./circle-stdlib/libs/circle/boot/* sdcard + # cd ./circle-stdlib/libs/circle/boot + # make + # make armstub64 + # cd - + # cp -r ./circle-stdlib/libs/circle/boot/* sdcard + cd ./sdcard + wget https://github.com/probonopd/MiniDexed/releases/download/assets/boot.zip + unzip boot.zip && rm boot.zip + cd .. rm -rf sdcard/config*.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux cp ./src/config.txt ./src/minidexed.ini ./src/performance.ini sdcard/ cp ./getsysex.sh sdcard/