Skip to content

Conversation

@xabolcs
Copy link
Contributor

@xabolcs xabolcs commented Oct 30, 2025

📦 Package Details

Maintainer:

Description:
A straightforward update from 0.28.0 (2024-03-19) to 0.34.0 (2025-10-12).
Notable change is the configurable OpenSSL support (BUILD_WITH_SSL) for both snapserver and snapclient.
They will be enabled once I introduce the flavours.

Compare link is here.


🧪 Run Testing Details

  • OpenWrt Version: SNAPSHOT
  • OpenWrt Target/Subtarget: ath79/nand
  • OpenWrt Device: GL-AR300M
BusyBox v1.37.0 (2025-10-04 22:17:02 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r31331-18bdeda011
 -----------------------------------------------------
 | Machine: GL.iNet GL-AR300M (NAND)                 |
 | Uptime: 0d, 00:09:49                              |
 | Load: 0.16 0.25 0.18                              |
 | Flash: total: 102.9MB, free: 93.0MB, used: 5%     |
 | Memory: total: 116.3MB, free: 92.9MB, used: 20%   |
 | WAN:                                              |
 | LAN: 192.168.1.1, leases: 0                       |
 | radio0: mode: sta, ssid: OpenWrt, channel: 1, conn: 0 |
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# logread -e snapclient
Thu Oct 30 07:51:52 2025 user.warn snapclient[1617]: (Snapclient) Options '--host' and '--port' are deprecated. Please add the server URI as last command line argument
Thu Oct 30 07:51:55 2025 user.info snapclient[1617]: (Snapclient) Version 0.34.0
Thu Oct 30 07:51:55 2025 user.info snapclient[1617]: (Connection) Resolving host IP for: snapcast
Thu Oct 30 07:52:00 2025 user.err snapclient[1617]: (Connection) Failed to resolve host 'snapcast', error: Host not found (non-authoritative), try again later
Thu Oct 30 07:52:00 2025 user.err snapclient[1617]: (Controller) Error: Host not found (non-authoritative), try again later
Thu Oct 30 07:52:00 2025 user.info snapclient[1617]: (Controller) Reconnecting
Thu Oct 30 07:52:01 2025 user.info snapclient[1617]: (Connection) Resolving host IP for: snapcast
Thu Oct 30 07:52:01 2025 user.info snapclient[1617]: (Connection) Connecting to host: 192.168.xxx.yyy:1704, port: 1704, protocol: tcp
Thu Oct 30 07:52:01 2025 user.notice snapclient[1617]: (Connection) Connected to snapcast
Thu Oct 30 07:52:01 2025 user.info snapclient[1617]: (Connection) My MAC: "de:4d:be:ef:bf:5f", socket: 8
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Controller) ServerSettings - buffer: 1000, latency: 0, volume: 100, muted: 0
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Controller) Codec: flac, sampleformat: 44100:16:2
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Player) Player name: alsa, device: default, description: Default Audio Device, idx: 1, sharing mode: unspecified, parameters: <none>
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Player) Mixer mode: software, parameters: <none>
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Player) Sampleformat: 44100:16:2, stream: 44100:16:2
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Alsa) Using default buffer_time: 80 ms, default fragments: 4
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Alsa) Period time too small, changing from 20000 to 21333
Thu Oct 30 07:52:02 2025 user.info snapclient[1617]: (Alsa) PCM name: default, sample rate: 44100 Hz, channels: 2, buffer time: 85328 us, periods: 4, period time: 21333 us, period frames: 940
Thu Oct 30 07:52:03 2025 user.info snapclient[1617]: (Alsa) Failed to get chunk
Thu Oct 30 07:52:03 2025 user.info snapclient[1617]: (Controller) diff to server [ms]: 1.65944e+10
Thu Oct 30 08:13:03 2025 user.info snapclient[1617]: (TimeProvider) Last time sync older than a minute. Clearing time buffer
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# logread -e snapserver
Thu Oct 30 07:51:46 2025 user.notice snapserver: Disabled in /etc/config/snapserver
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Snapserver) Version 0.34.0
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Snapserver) Stream plugin directory: '"/usr/share/snapserver/plug-ins"', sandbox directory: '"/usr/share/snapserver/sandbox"'
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Snapserver) Adding source: pipe:///tmp/snapfifo?name=default
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Snapserver) Using HTTP host name: GL-AR300M-F5E-NAND
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (PcmStream) PcmStream: default, sampleFormat: 48000:16:2
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (PipeStream) PipeStream mode: create
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Server) Stream: {"fragment":"","host":"","path":"/tmp/snapfifo","query":{"chunk_ms":"20","codec":"flac","name":"default","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo?chunk_ms=20&codec=flac&name=default&sampleformat=48000%3A16%3A2","scheme":"pipe"}
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (FlacEnc) Init - compression level: 2
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (ControlServer) Creating TCP control acceptor for address: ::, port: 1705
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (ControlServer) Creating HTTP acceptor for address: ::, port: 1780
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (StreamServer) Creating TCP stream acceptor for address: ::, port: 1704
Thu Oct 30 08:16:20 2025 user.info snapserver[2610]: (Snapserver) Number of threads: 2, hw threads: 1
Thu Oct 30 08:16:20 2025 user.err snapserver[2610]: (AsioStream) Error reading message: End of file, length: 0, ec: asio.misc:2
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 
root@GL-AR300M-F5E-NAND:~# 

✅ Formalities

  • I have reviewed the CONTRIBUTING.md file for detailed contributing guidelines.

Dependencies

Sort CMAKE_OPTIONS by alphabet and save a few bytes with tab character,
instead of repeating "CMAKE_OPTIONS +="

Signed-off-by: Szabolcs Hubai <[email protected]>
@xabolcs xabolcs force-pushed the snapcast/update-to-0.34.0 branch 2 times, most recently from 1cd9ea7 to ead6d89 Compare October 31, 2025 00:20
@xabolcs
Copy link
Contributor Author

xabolcs commented Oct 31, 2025

snapcast: update to Git v0.34.0 (2025-10-02)

I'm unsure about using update_git_source_package.sh from maintainer-tools, as-is at least.
I mean: it's too much commit and the issue / PR references are obviously wrong.

Should I migrate away from PKG_SOURCE_PROTO:=git? Snapcast is full of health again (🙏) so no need to stick to git development branch / versions.

@xabolcs
Copy link
Contributor Author

xabolcs commented Oct 31, 2025

snapcast: sort and reformat CMAKE_OPTIONS

In upstream CMakeLists.txt there are BUILD_SERVER and BUILD_CLIENT and I got confused how they are built in all the combinations (CONFIG_PACKAGE_snapclient=..., CONFIG_PACKAGE_snapserver=...)?
Because of they are always enabled in CMakeLists.txt they will be both built, once any of them got selected? 🤔

@xabolcs xabolcs marked this pull request as ready for review October 31, 2025 13:25
@1715173329
Copy link
Member

I'm unsure about using update_git_source_package.sh from maintainer-tools, as-is at least. I mean: it's too much commit and the issue / PR references are obviously wrong.

Yep it could be a bit noisy, I guess that script is mainly designed for OpenWrt's own git projects.

Should I migrate away from PKG_SOURCE_PROTO:=git? Snapcast is full of health again (🙏) so no need to stick to git development branch / versions.

You have the say ;)

@xabolcs xabolcs marked this pull request as draft November 7, 2025 02:41
@hnyman
Copy link
Contributor

hnyman commented Nov 30, 2025

You might need to explicitly define alsa support as enabled/disabled, and add dependency if you enable it.

I noticed this in one buildbot instancentoday:

https://downloads.openwrt.org/snapshots/faillogs/arm_cortex-a7_vfpv4/packages/snapcast/compile.txt

Package snapserver is missing dependencies for the following libraries:
libasound.so.2
make[3]: *** [Makefile:117: /builder/shared-workdir/build/sdk/bin/packages/arm_cortex-a7_vfpv4/packages/snapserver-0.28.0-r2.apk] Error 1

On some build runs, alsa is built (as required by other packages), and if it is built before snapcast, it may be detected, if the feature is not explicitly disabled in CMakeLists.txt.

@xabolcs
Copy link
Contributor Author

xabolcs commented Nov 30, 2025

I noticed this in one buildbot instance today

Thank you hnyman for catching this! 🙏

need to explicitly define alsa support as enabled/disabled

But there is already +AUDIO_SUPPORT:alsa-lib about that. 🤔
Ohh, looks like I have to reread the dependency types.
So you suggest that I should drop the AUDIO_SUPPORT: part for now?

@hnyman
Copy link
Contributor

hnyman commented Nov 30, 2025

I think that you could drop that AUDIO_SUPPORT conditional.
AUDIO_SUPPORT is selected e.g. if USB_SUPPORT is selected, so it is not that big restriction.

And I think that it would be better to explicitly specify the feature for cmake, if you want it enabled.
Now it apparently gets often disabled in buildbot (as there is no warning in most build rounds?)

I am not familiar with sounds packages, so I have no knowledge if that lib is core or extra for this package.

@xabolcs
Copy link
Contributor Author

xabolcs commented Nov 30, 2025

Thank you for your suggetions!
Going to implement them in this PR before making ready to review again!

As Hannu Nyman pointed out, in some cases the build of the package is
able to fail:

Package snapserver is missing dependencies for the following libraries:
libasound.so.2

He said: on some build runs, alsa is built (as required by other
packages), and if it is built before snapcast, it may be detected,
if the feature is not explicitly disabled in CMakeLists.txt.

Also: "I think that you could drop that AUDIO_SUPPORT conditional.
AUDIO_SUPPORT is selected e.g. if USB_SUPPORT is selected,
so it is not that big restriction."

Suggested-by: Hannu Nyman <[email protected]>
Signed-off-by: Szabolcs Hubai <[email protected]>
A straightforward update from 0.28.0 (2024-03-19, [1])
to 0.34.0 (2025-10-12, [2]) with almost 400 commits. [3]

Notable change is the configurable OpenSSL support (BUILD_WITH_SSL)
for both snapserver and snapclient.
They will be enabled once I introduce the flavours.

In the mean time upsteam moved to it's own organization. [4]

Upstream changelog:
https://github.com/snapcast/snapcast/blob/v0.34.0/changelog.md

[1]: https://github.com/snapcast/snapcast/releases/tag/v0.28.0
[2]: https://github.com/snapcast/snapcast/releases/tag/v0.34.0
[3]: snapcast/snapcast@v0.28.0...v0.34.0
[4]: https://github.com/snapcast

Signed-off-by: Szabolcs Hubai <[email protected]>
@xabolcs xabolcs force-pushed the snapcast/update-to-0.34.0 branch 5 times, most recently from d7acf5c to 054ec87 Compare December 7, 2025 22:03
@xabolcs
Copy link
Contributor Author

xabolcs commented Dec 7, 2025

mips_24kc failed on libsqlite3-0:

Testing package libsqlite3-0 in version 3.51.1 from libs/sqlite3
No pre-test.sh script available
(1/1) Installing libsqlite3-0 (3.51.1-r1)
Bus error (core dumped)
Error: Process completed with exit code 138.

@hnyman
Copy link
Contributor

hnyman commented Dec 8, 2025

mips_24kc failed

Mips_24kc currently fails almost all PRs that involve larger dependencies. We can ignore that CI error.

@xabolcs
Copy link
Contributor Author

xabolcs commented Dec 8, 2025

Run tested artifact: mips_24kc-PR27728-be284b3de-packages

$ unzip -l mips_24kc-PR27728-be284b3de-packages.zip 'snap*0.34.0*'
Archive:  mips_24kc-PR27728-be284b3de-packages.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   307702  2025-12-07 23:01   snapclient-0.34.0-r1.apk
   579324  2025-12-07 23:01   snapserver-0.34.0-r1.apk
---------                     -------
   887026                     2 files

OpenWrt version: OpenWrt SNAPSHOT, r32241-cc20942931
Platform, arch: ath79/nand, mips_24kc
Machine: GL.iNet GL-AR300M (NOR)

Install:

root@GL-AR300M-F5E-NAND:~# apk add --allow-untrusted /tmp/snapserver-0.34.0-r1.apk 
(1/1) Upgrading snapserver (0.28.0-r2 -> 0.34.0-r1)
snapserver-0.34.0-r1: installing file to etc/config/snapserver.apk-new
snapserver-0.34.0-r1.post-upgrade: Executing script...
OK: 27 MiB in 151 packages
root@GL-AR300M-F5E-NAND:~# apk add --allow-untrusted /tmp/snapclient-0.34.0-r1.apk 
(1/1) Upgrading snapclient (0.28.0-r2 -> 0.34.0-r1)
snapclient-0.34.0-r1: installing file to etc/config/snapclient.apk-new
snapclient-0.34.0-r1.post-upgrade: Executing script...
OK: 27 MiB in 151 packages
root@GL-AR300M-F5E-NAND:~# 

Run test - snapserver:

root@GL-AR300M-F5E-NAND:~# logread -e snapserver
Mon Dec  8 13:40:34 2025 user.info snapserver[1688]: (Snapserver) Version 0.34.0
Mon Dec  8 13:40:34 2025 user.info snapserver[1688]: (Snapserver) Stream plugin directory: '"/usr/share/snapserver/plug-ins"', sandbox directory: '"/usr/share/snapserver/sandbox"'
Mon Dec  8 13:40:34 2025 user.info snapserver[1688]: (Snapserver) Adding source: pipe:///tmp/snapfifo?name=default
Mon Dec  8 13:40:34 2025 user.info snapserver[1688]: (Snapserver) Using HTTP host name: GL-AR300M-F5E-NAND
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (PcmStream) PcmStream: default, sampleFormat: 48000:16:2
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (PipeStream) PipeStream mode: create
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (Server) Stream: {"fragment":"","host":"","path":"/tmp/snapfifo","query":{"chunk_ms":"20","codec":"flac","name":"default","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo?chunk_ms=20&codec=flac&name=default&sampleformat=48000%3A16%3A2","scheme":"pipe"}
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (FlacEnc) Init - compression level: 2
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (ControlServer) Creating TCP control acceptor for address: ::, port: 1705
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (ControlServer) Creating HTTP acceptor for address: ::, port: 1780
Mon Dec  8 13:40:35 2025 user.info snapserver[1688]: (StreamServer) Creating TCP stream acceptor for address: ::, port: 1704
Mon Dec  8 13:40:36 2025 user.info snapserver[1688]: (Snapserver) Number of threads: 2, hw threads: 1
Mon Dec  8 13:40:36 2025 user.err snapserver[1688]: (AsioStream) Error reading message: End of file, length: 0, ec: asio.misc:2
Mon Dec  8 13:40:36 2025 user.info snapserver[1688]: (AsioStream) No data since 120 ms, switching to idle

Run test - snapclient: connected to another snapserver on the network

root@GL-AR300M-F5E-NAND:~# logread -e snapclient
Mon Dec  8 13:40:33 2025 user.warn snapclient[1633]: (Snapclient) Options '--host' and '--port' are deprecated. Please add the server URI as last command line argument
Mon Dec  8 13:40:36 2025 user.info snapclient[1633]: (Snapclient) Version 0.34.0
Mon Dec  8 13:40:36 2025 user.info snapclient[1633]: (Connection) Resolving host IP for: snapcast
Mon Dec  8 13:40:41 2025 user.err snapclient[1633]: (Connection) Failed to resolve host 'snapcast', error: Host not found (non-authoritative), try again later
Mon Dec  8 13:40:41 2025 user.err snapclient[1633]: (Controller) Error: Host not found (non-authoritative), try again later
Mon Dec  8 13:40:41 2025 user.info snapclient[1633]: (Controller) Reconnecting
Mon Dec  8 13:40:42 2025 user.info snapclient[1633]: (Connection) Resolving host IP for: snapcast
Mon Dec  8 13:40:47 2025 user.err snapclient[1633]: (Connection) Failed to resolve host 'snapcast', error: Host not found (non-authoritative), try again later
Mon Dec  8 13:40:47 2025 user.err snapclient[1633]: (Controller) Error: Host not found (non-authoritative), try again later
Mon Dec  8 13:40:47 2025 user.info snapclient[1633]: (Controller) Reconnecting
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Connection) Resolving host IP for: snapcast
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Connection) Connecting to host: 192.168.xxx.yyy:1704, port: 1704, protocol: tcp
Mon Dec  8 13:40:48 2025 user.notice snapclient[1633]: (Connection) Connected to snapcast
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Connection) My MAC: "de:ad:be:ef:bf:5f", socket: 8
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Controller) ServerSettings - buffer: 1000, latency: 0, volume: 100, muted: 0
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Controller) Codec: flac, sampleformat: 44100:16:2
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Player) Player name: alsa, device: default, description: Default Audio Device, idx: 1, sharing mode: unspecified, parameters: <none>
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Player) Mixer mode: software, parameters: <none>
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Player) Sampleformat: 44100:16:2, stream: 44100:16:2
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Alsa) Using default buffer_time: 80 ms, default fragments: 4
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Alsa) Period time too small, changing from 20000 to 21333
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Alsa) PCM name: default, sample rate: 44100 Hz, channels: 2, buffer time: 85328 us, periods: 4, period time: 21333 us, period frames: 940
Mon Dec  8 13:40:48 2025 user.info snapclient[1633]: (Alsa) Failed to get chunk
Mon Dec  8 13:42:24 2025 user.info snapclient[1633]: (TimeProvider) Last time sync older than a minute. Clearing time buffer
Mon Dec  8 13:42:24 2025 user.info snapclient[1633]: (Controller) diff to server [ms]: 3.99654e+08
Mon Dec  8 13:42:29 2025 user.notice snapclient[1633]: (Alsa) No chunk received for 5000ms. Closing ALSA.
Mon Dec  8 13:43:10 2025 user.info snapclient[1633]: (Alsa) Period time too small, changing from 20000 to 21333
Mon Dec  8 13:43:10 2025 user.info snapclient[1633]: (Alsa) PCM name: default, sample rate: 44100 Hz, channels: 2, buffer time: 85328 us, periods: 4, period time: 21333 us, period frames: 940

@xabolcs xabolcs marked this pull request as ready for review December 8, 2025 14:20
-DBUILD_WITH_ALSA=ON \
-DBUILD_WITH_AVAHI=OFF \
-DBUILD_WITH_JACK=OFF \
-DBUILD_WITH_PIPEWIRE=OFF \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xabolcs Out of curiosity, why is snapcast built with ALSA only and not also with the more modern tooling Pipewire/jack ?

Otherwise, the PR is good to go :-)

Copy link
Contributor Author

@xabolcs xabolcs Dec 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity, why is snapcast built with ALSA only

Because this is Spartaaaaaaaaa! 😉

Those JACK and PipeWire backends are not implemented (packaged in OpenWrt) yet, and in the end OpenWrt is still an embedded distribution.

But as in the earlier PR I already wrote: I plan a minimal and a full flavour for these!
A slim with ALSA and a heavier with Pulse (and other) backend(s)!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because this is Spartaaaaaaaaa!

I hope I was not the messenger ! LOL!

Those JACK and PipeWire backends are not implemented (packaged in OpenWrt)

It makes sense now.

@hnyman hnyman merged commit ba55134 into openwrt:master Dec 8, 2025
12 of 13 checks passed
@xabolcs xabolcs deleted the snapcast/update-to-0.34.0 branch December 8, 2025 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants