Code Monkey home page Code Monkey logo

snapos's Introduction

SnapOS

Snapcast OS is a collection of configurations for different buildsystems (at the beginning focused on Buildroot) to build an embedded Linux OS for Snapcast.

Buildsystems

SnapOS comes in different flavors. Choose your favorite from the list:

snapos's People

Contributors

badaix avatar davidandreoletti avatar hunterzero99 avatar joerg-krause avatar leosum8 avatar xabolcs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snapos's Issues

[question] Thoughts on building a Alpine Linux based Snapos

As far as I understood the main focus of badaix is developing the tool "snapcast" itself, not snapos, #10

This is nothing more than a small buildroot based Linux OS with pre installed snapclient or server.
I don't have the time to maintain this actively or release images for all of the different raspberry versions.
I recommend to build it by following the guide, or to use raspbian and install a snapclient or server deb package.

I'm a proficient Linux user, but not a programmer, distro or package maintainer. I'm also a user of Openwrt (also based on Buildroot).

But I have yet to find time to dabble with Buildroot and its ecosystem.
I understand its not the easiest one for beginners, but it shouldnt be rocket science either.

In the mean time I've seen a lot of things building upon Alpine Linux in the last times. PostmarketOS is one very interesting one.

The other day I was checking myMPDos, https://github.com/jcorporation/myMPDos and noticed that it also builds upon Alpine.

I then checked and saw that, https://pkgs.alpinelinux.org/packages?name=snapcast&branch=edge&repo=&arch=&maintainer=

Alpine linux itself provides stable well maintained snapcast packages for a plethora of architectures. They even provide both armv7h (raspberry 2) and even armhf (raspberry zero).

This is very interesting for the ones interesting and reusing (old) hardware, with the promise of long time support.

So I was just wondering if anyone has had any similar thoughts.
What are your ideas/comments about this ?

Is anyone here already using snapcast on a (minimal) Alpine setup ?
If so, how do you compare it to Snapos ?

Easier to maintain/update/customize ? Add extra multimedia tools ? How does it compare to something like Buildroot for less experienced users ?

Thanks in advance.

Feature request: Provide pre-built images

Hello! I've been testing out all the different Raspberry Pi systems available to approximate an "open source sonos", and I think your SnapOS might be the way to go! But I'm a novice and building an OS is a bit beyond me right now. I would love to flash one of your images though! :)

Documentation Info Request

This is asking about the buildroot files.
You have files for snapos_rpi_defconfig through snapos_rpi4_defconfig, do you have one for the zero or zero W or should the snapos_rpi_defconfig be used for these? Or do you not recommend using the zero/zero W as a client?

Update Compile README

Is there anyway we can get updated instructions for compiling for openwrt? The current instructions don't seem to work. Specifically "ln -s /openwrt package/snapcast" doesnt allow make menuconfig to see snapcast as a package

Wifi Config - Unknown Global Field ctrl_interface

Hi, i am trying to build snapOS for an RPi3, to try and reduce the vulnerabilities in my network, reduce attack surface etc.

I have built the images and flashed it successfully, now when i try and boot (after updating network details), i get the following warning:

Successfully initialized wpa_supplicant
Line 2: unknown global field 'ctrl_interface/var/run/wpa_supplicant'
Line 2: Invalid configuration line 'ctrl_interface/var/run/wpa_supplicant'
Failed to read or parse configuration '/etc/wpa_supplicant.comf'
FAIL

note: i ahve hand typed this, so there may be typo's.

Any help with what i am missing/doing wrong would be great.

thanks!

Compile error 'recipe for target aixlog-v1.2.1 failed'

https://github.com/badaix/aixlog/archive/v1.2.1.tar.gz

and the version corresponds to the commit hash

https://github.com/badaix/aixlog/commit/2e5ee0188650a254f76f7e735ef986f117dee71f

Software versions:

  • Lubuntu 18.04
  • buildroot-2018.05.1
  • GNU Wget 1.19.4
  • GNU Make 4.1

Full output log

>>> aixlog v1.2.1 Downloading
PATH="/home/user/Downloads/buildroot-2018.05.1/output/host/bin:/home/user/Downloads/buildroot-2018.05.1/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" BR2_DL_DIR="/home/user/Downloads/buildroot-2018.05.1/dl" BUILD_DIR=/home/user/Downloads/buildroot-2018.05.1/output/build O=/home/user/Downloads/buildroot-2018.05.1/output flock /home/user/Downloads/buildroot-2018.05.1/dl/aixlog/ support/download/dl-wrapper -c 'v1.2.1' -d '/home/user/Downloads/buildroot-2018.05.1/dl/aixlog' -D '/home/user/Downloads/buildroot-2018.05.1/dl' -f 'aixlog-v1.2.1.tar.gz' -H '/home/user/Downloads/snapos/buildroot-external/package/aixlog//aixlog.hash' -n 'aixlog-v1.2.1' -N 'aixlog' -o '/home/user/Downloads/buildroot-2018.05.1/dl/aixlog/aixlog-v1.2.1.tar.gz'  -u https+https://github.com/badaix/aixlog/archive/v1.2.1 -u http\|urlencode+http://sources.buildroot.net/aixlog -u http\|urlencode+http://sources.buildroot.net  -- 
--2018-08-17 20:33:35--  https://github.com/badaix/aixlog/archive/v1.2.1/aixlog-v1.2.1.tar.gz
Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/badaix/aixlog/tar.gz/v1.2.1/aixlog-v1.2.1 [following]
--2018-08-17 20:33:36--  https://codeload.github.com/badaix/aixlog/tar.gz/v1.2.1/aixlog-v1.2.1
Resolving codeload.github.com (codeload.github.com)... 192.30.253.121, 192.30.253.120
Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-08-17 20:33:37 ERROR 404: Not Found.

--2018-08-17 20:33:37--  http://sources.buildroot.net/aixlog/aixlog-v1.2.1.tar.gz
Resolving sources.buildroot.net (sources.buildroot.net)... 104.25.210.19, 104.25.211.19, 2400:cb00:2048:1::6819:d313, ...
Connecting to sources.buildroot.net (sources.buildroot.net)|104.25.210.19|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-08-17 20:33:37 ERROR 404: Not Found.

--2018-08-17 20:33:37--  http://sources.buildroot.net/aixlog-v1.2.1.tar.gz
Resolving sources.buildroot.net (sources.buildroot.net)... 104.25.211.19, 104.25.210.19, 2400:cb00:2048:1::6819:d213, ...
Connecting to sources.buildroot.net (sources.buildroot.net)|104.25.211.19|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-08-17 20:33:38 ERROR 404: Not Found.

package/pkg-generic.mk:135: recipe for target '/home/user/Downloads/buildroot-2018.05.1/output/build/aixlog-v1.2.1/.stamp_downloaded' failed
make[1]: *** [/home/user/Downloads/buildroot-2018.05.1/output/build/aixlog-v1.2.1/.stamp_downloaded] Error 1
Makefile:79: recipe for target '_all' failed
make: *** [_all] Error 2

Compilation Error: Multiple Definition of `yylloc`

Build Environment
OS: Ubuntu 21.04
GCC: 10.3.0 (Ubuntu 10.3.0-1ubuntu1)

I tried following the buildroot instructions, but the build would fail in error:

  HOSTCC  scripts/dtc/dtc-lexer.lex.o
  HOSTCC  scripts/extract-cert
  HOSTCC  scripts/dtc/dtc-parser.tab.o
  HOSTLD  scripts/dtc/dtc
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[4]: *** [scripts/Makefile.host:99: scripts/dtc/dtc] Error 1
make[3]: *** [scripts/Makefile.build:544: scripts/dtc] Error 2
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [Makefile:1067: scripts] Error 2
make[1]: *** [package/pkg-generic.mk:294: /home/kenny/Downloads/SnapOS-build/buildroot/output/build/linux-custom/.stamp_built] Error 2

Should I be compiling this with an older version of gcc?

Build Error on OpenWRT 23.05.0

Hello

I tried to compile snapcast for OpenWRT 23.05.0 and I faced an error

Fortunatly it was at the end, during install step of Makefile.

Here is a dirty workaround :

# Copy snapclient.default to files
cp snapos/debian/snapclient.default snapos/openwrt/snapcast/file
# adjust permission
chmod 0755 snapos/openwrt/snapcast/file/snapclient.default

And you'll have to change line 112 on Makefile (snapos/openwrt/snapcast/Makefile) (the original is commented)

    # $(INSTALL_BIN) $(PKG_BUILD_DIR)/debian/snapclient.default $(1)/etc/default/snapclient
    $(INSTALL_BIN) ./files/snapclient.default $(1)/etc/default/snapclient

Thanks for your marvelous work, it allows to keep my pogoplug up to date !

Bests

Read-only FS for SD card

Hi! I was wondering how well does snapos handle SD card problem of exceeding maximum ammount of writes to the FS? Is it possible to make the FS read-only?

Can't compile

Hi guys!
Nice work, congrats!

Please I'm trying to put snapcast client inside one of my openwrt boxes. After follow the guide and start compilation process it stops showing this:+

make[3]: Entering directory '/media/data/git.Wispeak/src/snapos/openwrt/aixlog' Makefile:43: *** Download/default is missing the FILE field.. Stop. make[3]: Leaving directory '/media/data/git.Wispeak/src/snapos/openwrt/aixlog' package/Makefile:192: recipe for target 'package/snapos/aixlog/compile' failed make[2]: *** [package/snapos/aixlog/compile] Error 2 make[2]: Leaving directory '/media/data/git.Wispeak/src/openwrt.1' package/Makefile:189: recipe for target '/media/data/git.Wispeak/src/openwrt.1/staging_dir/target-mips_34kc_musl-1.1.12/stamp/.package_compile' failed make[1]: *** [/media/data/git.Wispeak/src/openwrt.1/staging_dir/target-mips_34kc_musl-1.1.12/stamp/.package_compile] Error 2 make[1]: Leaving directory '/media/data/git.Wispeak/src/openwrt.1' /media/data/git.Wispeak/src/openwrt.1/include/toplevel.mk:192: fallo en las instrucciones para el objetivo 'world' make: *** [world] Error 2

As far I can see it is messing with aixlog but can't figure out where the problem is. Please any help on how to debug gurther this issue?
Regards,

Consider moving config from /etc/default to /etc/config for inclusion in OpenWRT backup archive

Thanks for this great piece of software!

Currently, snapclient on openwrt installs a config file in /etc/default/snapclient. This file is lost on OpenWRT upgrade (sysupgrade). By moving the config file to /etc/config, it gets included and restored through the OpenWRT config backup mechanism.
Alternatively, a symlink from /etc/default/snapclient could be made to /etc/config/snapclient.

OpenWrt flavored SnapOS problem

Hello,

I tried to build snapclient for OpenWrt with the two methods: "OpenWrt build system setup" and "Alternative: Using OpenWRT-SDK"

Both fail because, if I get it correctly, "https://git.xiph.org" moved to "https://gitlab.xiph.org/xiph"

here is my " make -j1 V=sc " output:

HEAD is now at f2405c4a bump version to v0.15.0
Submodule 'externals/aixlog' (https://github.com/badaix/aixlog.git) registered for path 'externals/aixlog'
Submodule 'externals/asio' (https://github.com/chriskohlhoff/asio.git) registered for path 'externals/asio'
Submodule 'externals/flac' (https://git.xiph.org/flac.git) registered for path 'externals/flac'
Submodule 'externals/ogg' (https://git.xiph.org/ogg.git) registered for path 'externals/ogg'
Submodule 'externals/popl' (https://github.com/badaix/popl.git) registered for path 'externals/popl'
Submodule 'externals/tremor' (https://git.xiph.org/tremor.git) registered for path 'externals/tremor'
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/aixlog'...
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/asio'...
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/flac'...
fatal: unable to access 'https://git.xiph.org/flac.git/': Failed to connect to git.xiph.org port 443: Connection refused
fatal: clone of 'https://git.xiph.org/flac.git' into submodule path '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/flac' failed
Failed to clone 'externals/flac'. Retry scheduled
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/ogg'...
fatal: unable to access 'https://git.xiph.org/ogg.git/': Failed to connect to git.xiph.org port 443: Connection refused
fatal: clone of 'https://git.xiph.org/ogg.git' into submodule path '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/ogg' failed
Failed to clone 'externals/ogg'. Retry scheduled
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/popl'...
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/tremor'...
fatal: unable to access 'https://git.xiph.org/tremor.git/': Failed to connect to git.xiph.org port 443: Connection refused
fatal: clone of 'https://git.xiph.org/tremor.git' into submodule path '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/tremor' failed
Failed to clone 'externals/tremor'. Retry scheduled
Cloning into '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/flac'...
fatal: unable to access 'https://git.xiph.org/flac.git/': Failed to connect to git.xiph.org port 443: Connection refused
fatal: clone of 'https://git.xiph.org/flac.git' into submodule path '/home/admin/openwrtbuild/openwrt/tmp/dl/snapcast-0.15.0/externals/flac' failed
Failed to clone 'externals/flac' a second time, aborting
make[3]: *** [Makefile:130: /home/admin/openwrtbuild/openwrt/dl/snapcast-0.15.0.tar.xz] Error 1
make[3]: Leaving directory '/home/admin/openwrt/snapos-0.15.0/openwrt/snapcast'
time: package/snapcast/snapcast/compile#12.62#2.63#17.04
ERROR: package/snapcast/snapcast failed to build.
make[2]: *** [package/Makefile:116: package/snapcast/snapcast/compile] Error 1
make[2]: Leaving directory '/home/admin/openwrtbuild/openwrt'
make[1]: *** [package/Makefile:110: /home/admin/openwrtbuild/openwrt/staging_dir/target-mips_24kc_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/admin/openwrtbuild/openwrt'
make: *** [/home/admin/openwrtbuild/openwrt/include/toplevel.mk:230: world] Error 2

Thank you for your work!

0.22 upgrade package specs :)

i wanted to upgrade my WiP SnapOS build with the today released snapcast 0.22 version,but build fails and i am not the programmer guy to know, whats the issue. Perhaps you can give me a hint or update the package files for 0.22 ?

The error is:

/usr/bin/make  -f CMakeFiles/Makefile2 all
make[2]: Entering directory '/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0'
/usr/bin/make  -f common/CMakeFiles/common.dir/build.make common/CMakeFiles/common.dir/depend
make[3]: Entering directory '/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0'
cd /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0 && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0 /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/common /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0 /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/common /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/common/CMakeFiles/common.dir/DependInfo.cmake
make[3]: Leaving directory '/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0'
/usr/bin/make  -f common/CMakeFiles/common.dir/build.make common/CMakeFiles/common.dir/build
make[3]: Entering directory '/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0'
[  5%] Building CXX object common/CMakeFiles/common.dir/resampler.cpp.o
cd /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/common && /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/host/bin/arm-buildroot-linux-gnueabihf-g++ --sysroot=/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/host/arm-buildroot-linux-gnueabihf/sysroot  -DBOOST_ERROR_CODE_HEADER_ONLY -DHAS_ALSA -DHAS_DAEMON -DHAS_EXPAT -DHAS_FLAC -DHAS_OGG -DHAS_OPUS -DHAS_VORBIS -DHAS_VORBIS_ENC -DVERSION=\"0.22.0\" -I/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0 -I/usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/include  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os  -DNDEBUG   -std=gnu++14 -o CMakeFiles/common.dir/resampler.cpp.o -c /usr/local/src/SNAPCAST-SRC/buildbot/buildroot-2020.08/output/build/snapcast-v0.22.0/common/resampler.cpp
resampler.cpp: In constructor ‘Resampler::Resampler(const SampleFormat&, const SampleFormat&)’:
resampler.cpp:59:15: error: ‘SnapException’ was not declared in this scope
   59 |         throw SnapException("Resampling requested, but not supported");
      |               ^~~~~~~~~~~~~
make[3]: *** [common/CMakeFiles/common.dir/build.make:83: common/CMakeFiles/common.dir/resampler.cpp.o] Error 1

Add opus to list of needed packges?

Opus is a codec that offers a great compromise between quality and latency.

I suggest adding it to the list of packages the Snapos builds, for instance adding BR2_PACKAGE_OPUS to package/snapcast/Config.in.
(BR2_PACKAGE_OPUS_TOOLS might be the one needed, I need to check)

It uses very little extra space and makes the built-in snapcast more robust, I think.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.