From 1eec4a23425c65566a8f8a6455c1fa2872f97782 Mon Sep 17 00:00:00 2001 From: Smittix Date: Sun, 8 Feb 2026 16:36:13 +0000 Subject: [PATCH] Fix stdout buffering: use PYTHONUNBUFFERED for grgsm_scanner grgsm_scanner is a Python/GNU Radio script, so stdbuf has no effect. Setting PYTHONUNBUFFERED=1 in the subprocess env forces Python to flush stdout on every write, enabling real-time scan output. Co-Authored-By: Claude Opus 4.6 --- routes/gsm_spy.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/routes/gsm_spy.py b/routes/gsm_spy.py index 8974273..252bf50 100644 --- a/routes/gsm_spy.py +++ b/routes/gsm_spy.py @@ -373,9 +373,7 @@ def start_scanner(): return jsonify({'error': 'grgsm_scanner not found. Please install gr-gsm.'}), 500 try: - # Use stdbuf to force line-buffered stdout - grgsm_scanner - # fully buffers stdout when piped, preventing real-time output - cmd = ['stdbuf', '-oL', 'grgsm_scanner'] + cmd = ['grgsm_scanner'] # Add device argument (--args for RTL-SDR device selection) cmd.extend(['--args', f'rtl={device_index}']) @@ -1235,7 +1233,9 @@ def scanner_thread(cmd, device_index): # Start scanner process # Set OSMO_FSM_DUP_CHECK_DISABLED to prevent libosmocore # abort on duplicate FSM registration (common with apt gr-gsm) - env = dict(os.environ, OSMO_FSM_DUP_CHECK_DISABLED='1') + env = dict(os.environ, + OSMO_FSM_DUP_CHECK_DISABLED='1', + PYTHONUNBUFFERED='1') process = subprocess.Popen( cmd, stdout=subprocess.PIPE,