I probably should have said I am doing this on an old Pi 2B, so ARM 7 (I am now getting no matching manifest for linux/arm/v7 in the manifest list entries). I am using this as a replacement to an old setup I had for 2 outdoor speakers I had running using two instances of Snapcast.
Changing the permissions, I can now connect to MA, and can connect to the speakers, but I get a JBL Flip 6 @ rpi-outsidespeakers lost bridge transport error, but I do get an audio sink.
Logs:
2026-03-23 20:13:09,729 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 576, in <module>
2026-03-23 20:13:09,731 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: main()
2026-03-23 20:13:09,733 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 572, in main
2026-03-23 20:13:09,733 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: asyncio.run(_run(params))
2026-03-23 20:13:09,736 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run
2026-03-23 20:13:09,737 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return runner.run(main)
2026-03-23 20:13:09,739 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^^
2026-03-23 20:13:09,740 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
2026-03-23 20:13:09,742 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return self._loop.run_until_complete(task)
2026-03-23 20:13:09,742 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-03-23 20:13:09,744 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
2026-03-23 20:13:09,746 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return future.result()
2026-03-23 20:13:09,748 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^
2026-03-23 20:13:09,749 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 374, in _run
2026-03-23 20:13:09,751 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.daemon.daemon import DaemonArgs
2026-03-23 20:13:09,753 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/daemon/daemon.py", line 28, in <module>
2026-03-23 20:13:09,755 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.audio_connector import AudioStreamHandler
2026-03-23 20:13:09,756 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/audio_connector.py", line 18, in <module>
2026-03-23 20:13:09,758 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.decoder import FlacDecoder
2026-03-23 20:13:09,759 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/decoder.py", line 9, in <module>
2026-03-23 20:13:09,760 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: import av
2026-03-23 20:13:09,762 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/av/__init__.py", line 3, in <module>
2026-03-23 20:13:09,765 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from av._core import time_base, library_versions, ffmpeg_version_info
2026-03-23 20:13:09,768 - __main__ - ERROR - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ImportError: libavformat.so.61: cannot open shared object file: No such file or directory
2026-03-23 20:13:10,013 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:10,032 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:11,081 - __main__ - WARNING - Daemon subprocess died unexpectedly, restarting in 1s...
2026-03-23 20:13:12,013 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:12,038 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:12,088 - __main__ - INFO - Starting Sendspin player 'JBL Flip 6 @ rpi-outsidespeakers' with auto-discovery (port 8928)
2026-03-23 20:13:12,090 - __main__ - INFO - [JBL Flip 6 @ rpi-outsidespeakers] Subprocess PULSE_SINK=bluez_sink.F8_5C_7E_2A_0B_E0.a2dp_sink
2026-03-23 20:13:12,101 - __main__ - INFO - Sendspin daemon subprocess started (PID 844) for 'JBL Flip 6 @ rpi-outsidespeakers'
2026-03-23 20:13:14,012 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:14,028 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:16,008 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:16,027 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:18,009 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:18,026 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:20,018 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:20,035 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:22,016 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:22,033 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:24,017 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:24,036 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:26,017 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:26,036 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:28,011 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:28,027 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:28,167 - services.ma_runtime_state - INFO - MA syncgroup cache updated: 0 mapped, 1 total group(s)
2026-03-23 20:13:30,008 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:30,025 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:30,084 - __main__ - ERROR - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: Traceback (most recent call last):
2026-03-23 20:13:30,085 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "<frozen runpy>", line 198, in _run_module_as_main
2026-03-23 20:13:30,085 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "<frozen runpy>", line 88, in _run_code
2026-03-23 20:13:30,086 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 576, in <module>
2026-03-23 20:13:30,087 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: main()
2026-03-23 20:13:30,088 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 572, in main
2026-03-23 20:13:30,089 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: asyncio.run(_run(params))
2026-03-23 20:13:30,090 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run
2026-03-23 20:13:30,092 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return runner.run(main)
2026-03-23 20:13:30,093 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^^
2026-03-23 20:13:30,094 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
2026-03-23 20:13:30,095 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return self._loop.run_until_complete(task)
2026-03-23 20:13:30,096 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-03-23 20:13:30,097 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
2026-03-23 20:13:30,098 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: return future.result()
2026-03-23 20:13:30,100 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ^^^^^^^^^^^^^^^
2026-03-23 20:13:30,100 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/app/services/daemon_process.py", line 374, in _run
2026-03-23 20:13:30,103 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.daemon.daemon import DaemonArgs
2026-03-23 20:13:30,104 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/daemon/daemon.py", line 28, in <module>
2026-03-23 20:13:30,106 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.audio_connector import AudioStreamHandler
2026-03-23 20:13:30,107 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/audio_connector.py", line 18, in <module>
2026-03-23 20:13:30,109 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from sendspin.decoder import FlacDecoder
2026-03-23 20:13:30,110 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/sendspin/decoder.py", line 9, in <module>
2026-03-23 20:13:30,112 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: import av
2026-03-23 20:13:30,113 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: File "/usr/local/lib/python3.12/site-packages/av/__init__.py", line 3, in <module>
2026-03-23 20:13:30,114 - __main__ - WARNING - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: from av._core import time_base, library_versions, ffmpeg_version_info
2026-03-23 20:13:30,117 - __main__ - ERROR - [JBL Flip 6 @ rpi-outsidespeakers] daemon stderr: ImportError: libavformat.so.61: cannot open shared object file: No such file or directory
2026-03-23 20:13:32,013 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:32,034 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:32,114 - __main__ - WARNING - Daemon subprocess died unexpectedly, restarting in 1s...
2026-03-23 20:13:33,119 - __main__ - INFO - Starting Sendspin player 'JBL Flip 6 @ rpi-outsidespeakers' with auto-discovery (port 8928)
2026-03-23 20:13:33,121 - __main__ - INFO - [JBL Flip 6 @ rpi-outsidespeakers] Subprocess PULSE_SINK=bluez_sink.F8_5C_7E_2A_0B_E0.a2dp_sink
2026-03-23 20:13:33,131 - __main__ - INFO - Sendspin daemon subprocess started (PID 883) for 'JBL Flip 6 @ rpi-outsidespeakers'
2026-03-23 20:13:34,010 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:34,026 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:36,018 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:36,034 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
2026-03-23 20:13:38,010 - config - INFO - Loaded config from /config/config.json
2026-03-23 20:13:38,028 - config - INFO - Loaded config from /config/config.json
Failed to load cookie file from cookie: No such file or directory
Failed to load cookie file from cookie: No such file or directory
EDIT: Just realised the version of ffmpeg I installed seems to be older than the version required, so I have an older library file. Looking at options…