├── .devcontainer ├── devcontainer.json └── prepare-devcontainer ├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── use_templates.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Changelog ├── FEATURE_REQUESTS.md ├── LICENSE ├── README.md ├── black-1x1.png ├── brdir ├── build-all ├── build-config ├── build-release ├── build-test-config ├── buildroot ├── Config.in ├── board │ ├── raspberrypi │ │ ├── genimage-raspberrypi.cfg │ │ ├── genimage-raspberrypi0.cfg │ │ ├── genimage-raspberrypi0w.cfg │ │ ├── genimage-raspberrypi2.cfg │ │ ├── genimage-raspberrypi3-64.cfg │ │ ├── genimage-raspberrypi3.cfg │ │ ├── genimage-raspberrypi4-64.cfg │ │ ├── genimage-raspberrypi4.cfg │ │ └── overlay │ │ │ └── etc │ │ │ ├── dbus-1 │ │ │ └── system-local.conf │ │ │ ├── fstab │ │ │ ├── ssh │ │ │ └── sshd_config │ │ │ └── sysctl.d │ │ │ └── hifiberry.conf │ ├── raspberrypi0w │ ├── raspberrypi2 │ ├── raspberrypi3 │ └── raspberrypi4 ├── buildroot-2019.08.3.patch ├── buildroot-2020.05.patch ├── buildroot-2020.08.patch ├── buildroot-2020.11.patch ├── buildroot-2021.02-rc2.patch ├── buildroot-2021.05.patch ├── buildroot-2021.11-rc2.patch ├── buildroot-2021.11.patch ├── buildroot-2023.02.3.patch ├── buildroot-dev.patch ├── configs │ ├── hifiberry-os-20190503 │ ├── hifiberry-os-20190604 │ ├── hifiberry-os-roon │ ├── hifiberry-os-roon-mpd │ ├── hifiberryos │ ├── hifiberryos-20190827 │ ├── hifiberryos-20190912 │ ├── hifiberryos_defconfig │ ├── minimal_config │ ├── productiontest │ ├── streaming_config │ ├── test-dacadc │ └── users ├── disable-drivers.fragment ├── external.desc ├── external.mk ├── package │ ├── alsa-eq │ │ ├── Config.in │ │ ├── alsa-eq.mk │ │ └── asound.conf.eq │ ├── audiocontrol2 │ │ ├── Config.in │ │ ├── audiocontrol2.conf │ │ ├── audiocontrol2.mk │ │ ├── audiocontrol2.service │ │ ├── git-update-audiocontrol │ │ ├── override.conf │ │ ├── privacy.html │ │ └── src │ │ │ ├── audiocontrol2.py │ │ │ ├── metadata.py │ │ │ ├── mpris.py │ │ │ └── webserver.py │ ├── beocreate-music │ │ ├── Config.in │ │ └── beocreate-music.mk │ ├── beocreate │ │ ├── Config.in │ │ ├── beocreate.mk │ │ ├── beocreate2.service │ │ ├── git-update-beocreate │ │ ├── override.conf │ │ ├── sound.json │ │ ├── sources.json │ │ └── system.json │ ├── brutefir │ │ ├── Config.in │ │ ├── README.brutefir │ │ ├── brutefir.mk │ │ ├── brutefir_mpd_config │ │ └── mpd.conf │ ├── btspeaker │ │ ├── Config.in │ │ ├── a2dp-agent.py │ │ ├── a2dp-agent.service │ │ ├── bluetoothd.service │ │ ├── btagent.service │ │ ├── btagent.sh │ │ ├── btinterface.service │ │ ├── btspeaker.mk │ │ ├── btuart.service │ │ ├── btuart.sh │ │ ├── checkpi.sh │ │ ├── config.ini │ │ └── main.conf │ ├── configtxt │ │ ├── Config.in │ │ ├── cmdline.quiet │ │ ├── cmdline.verbose │ │ └── configtxt.mk │ ├── copy-overlays │ │ ├── Config.in │ │ └── copy-overlays.mk │ ├── disable-samba │ │ ├── Config.in │ │ └── disable-samba.mk │ ├── dlnampris │ │ ├── Config.in │ │ ├── dlnampris.conf │ │ ├── dlnampris.mk │ │ └── dlnampris.service │ ├── dsp-promo │ │ ├── Config.in │ │ └── dsp-promo.mk │ ├── dspprofiles │ │ ├── Changelog │ │ ├── Config.in │ │ ├── beocreate.settings │ │ ├── beocreate2dacdsp.sh │ │ ├── dacdsp-14.xml │ │ ├── dsp-addon-96-11.xml │ │ ├── dsp-addon-96-12.xml │ │ ├── dsp-addon-96-13.xml │ │ ├── dsp-i2s-slave │ │ ├── dspdac-10.xml │ │ ├── dspdac-11.xml │ │ ├── dspdac-12.xml │ │ ├── dspdac-13.xml │ │ ├── dspdac-96-11.xml │ │ ├── dspdac.settings │ │ ├── dspmodule.settings │ │ ├── dspprofiles.mk │ │ ├── fix-dsp-profile │ │ ├── generic192.xml │ │ ├── generic96.xml │ │ └── src │ │ │ ├── BeocreateUniversal-v10.dspproj.gz │ │ │ ├── dacdsp-v11.dspproj.gz │ │ │ └── dsp-addon-v12.dspproj.gz │ ├── dsptoolkit │ │ ├── 4way-iir.xml │ │ ├── Config.in │ │ ├── S90sigmatcp │ │ ├── create-dspvolume │ │ ├── dspdac.txt │ │ ├── dsptoolkit.mk │ │ ├── dspvolume.ctl │ │ ├── dump-spdif-status.sh │ │ ├── muted.txt │ │ ├── sigmatcp.conf │ │ ├── sigmatcp.service │ │ ├── spdif2pi │ │ └── spdifclockgen.service │ ├── enable-arm7 │ │ ├── Config.in │ │ └── enable-arm7.mk │ ├── enable-vc4kms │ │ ├── 60-drm.rules │ │ ├── Config.in │ │ └── enable-vc4kms.mk │ ├── extensions │ │ ├── Config.in │ │ ├── extensions.conf │ │ ├── extensions.mk │ │ └── extensions.service │ ├── hattools │ │ ├── Config.in │ │ └── hattools.mk │ ├── hifiberry-all │ │ └── Config.in │ ├── hifiberry-alsaloop │ │ ├── Config.in │ │ ├── alsaloop.service │ │ └── hifiberry-alsaloop.mk │ ├── hifiberry-analytics │ │ ├── Config.in │ │ └── hifiberry-analytics.mk │ ├── hifiberry-automount │ │ ├── 99-usbmount.rules │ │ ├── Config.in │ │ ├── hifiberry-automount.mk │ │ ├── list-smb-servers │ │ ├── list-usb-storage │ │ ├── mount-all.sh │ │ ├── mount-data.service │ │ ├── mount-data.sh │ │ ├── mount-smb.sh │ │ ├── mount-usb.sh │ │ └── usbmount@.service │ ├── hifiberry-base │ │ ├── Config.in │ │ └── hifiberry-base.mk │ ├── hifiberry-bluezalsa │ │ ├── 0001-pause.patch │ │ ├── Config.in │ │ ├── bluealsa-aplay-start │ │ ├── bluealsa-aplay.service │ │ ├── bluealsa.service │ │ ├── bluez-alsa.hash │ │ └── hifiberry-bluezalsa.mk │ ├── hifiberry-docker │ │ ├── Config.in │ │ ├── containers.service │ │ ├── hifiberry-docker.mk │ │ └── start-containers │ ├── hifiberry-gmrender │ │ ├── Config.in │ │ └── hifiberry-gmrender.mk │ ├── hifiberry-gstreamer │ │ ├── Config.in │ │ ├── hifiberry-gstreamer.mk │ │ └── typelib │ │ │ ├── Gst-1.0.typelib │ │ │ ├── GstAllocators-1.0.typelib │ │ │ ├── GstApp-1.0.typelib │ │ │ ├── GstAudio-1.0.typelib │ │ │ ├── GstBase-1.0.typelib │ │ │ ├── GstCheck-1.0.typelib │ │ │ ├── GstController-1.0.typelib │ │ │ ├── GstNet-1.0.typelib │ │ │ ├── GstPbutils-1.0.typelib │ │ │ ├── GstRtp-1.0.typelib │ │ │ ├── GstRtsp-1.0.typelib │ │ │ ├── GstSdp-1.0.typelib │ │ │ ├── GstTag-1.0.typelib │ │ │ └── GstVideo-1.0.typelib │ ├── hifiberry-localbrowser │ │ ├── Config.in │ │ ├── cog.service │ │ ├── hifiberry-localbrowser.mk │ │ └── localbrowser.service │ ├── hifiberry-measurements │ │ ├── Config.in │ │ ├── analyze │ │ │ ├── Makefile │ │ │ └── analyze.c │ │ ├── audio-inputs │ │ ├── frequency-demo.json │ │ ├── hifiberry-measurements.mk │ │ ├── input-level │ │ ├── record-sweep │ │ ├── room-measure │ │ ├── roomeq-optimize │ │ ├── roomeq-preset │ │ ├── roomeq-range │ │ ├── roomeq.conf │ │ ├── roomeq.md │ │ ├── run-measurement │ │ ├── supported-mics │ │ └── testtone │ ├── hifiberry-mpd │ │ ├── 0001-pause.patch │ │ ├── Config.in │ │ ├── hifiberry-mpd.mk │ │ ├── mpd-update-notifier │ │ ├── mpd-update-notifier.service │ │ ├── mpd.conf │ │ ├── mpd.service │ │ ├── pause-state-file │ │ ├── radio.md │ │ ├── radio │ │ │ ├── bytefm.m3u │ │ │ ├── dlf.m3u │ │ │ └── dlkkultur.m3u │ │ ├── update-covers │ │ └── update-mpd-db │ ├── hifiberry-postgres │ │ ├── Config.in │ │ ├── create-hbdb │ │ ├── hifiberry-postgres.mk │ │ ├── postgresql.service │ │ ├── show-scrobbles │ │ └── show-tags │ ├── hifiberry-powercontroller │ │ ├── Config.in │ │ ├── hifiberry-finish.service │ │ ├── hifiberry-powercontroller.mk │ │ ├── pc-shutdown.service │ │ ├── pc-startup-finish.service │ │ ├── pc-startup.service │ │ ├── pc-write │ │ └── write-firmware │ ├── hifiberry-psplash │ │ ├── Config.in │ │ ├── black.png │ │ ├── fb0.rules │ │ ├── hifiberry-psplash.mk │ │ ├── hifiberryos-black.jpg │ │ ├── hifiberryos-logo-black.png │ │ ├── make-image-header.sh │ │ ├── psplash-bar-img.h │ │ ├── psplash-bar-img.h.orig │ │ ├── psplash-colors.h │ │ ├── psplash-config.h │ │ ├── psplash-poky-img.h │ │ ├── psplash-poky-img.h.orig │ │ ├── psplash-quit.service │ │ ├── psplash-start.service │ │ └── psplash-start.vc4.service │ ├── hifiberry-shairport │ │ ├── Config.in │ │ ├── dbus.conf │ │ ├── hifiberry-shairport.mk │ │ ├── shairport-sync.conf │ │ └── shairport-sync.service │ ├── hifiberry-squeezelite │ │ ├── 0001-pause.patch │ │ ├── Config.in │ │ ├── S99squeezelite │ │ ├── hifiberry-squeezelite.mk │ │ ├── squeezelite-start │ │ ├── squeezelite.service │ │ └── volume-control-name │ ├── hifiberry-systemd │ │ ├── Config.in │ │ ├── autostart.service │ │ ├── autostart.sh │ │ ├── fix-ntp.service │ │ ├── fix-ntp.sh │ │ └── hifiberry-systemd.mk │ ├── hifiberry-test │ │ ├── 4output.xml │ │ ├── Config.in │ │ ├── S99testamp100 │ │ ├── S99testamp2 │ │ ├── S99testamp4 │ │ ├── S99testamp4pro │ │ ├── S99testbeocreate │ │ ├── S99testdac2hd │ │ ├── S99testdac2pro │ │ ├── S99testdac2proxlr │ │ ├── S99testdacadc │ │ ├── S99testdacadcpro │ │ ├── S99testdacadcproxlr │ │ ├── S99testdacdsp │ │ ├── S99testdacdspadc │ │ ├── S99testdacrtc │ │ ├── S99testdigi2pro │ │ ├── S99testdigi2standard │ │ ├── S99testdspaddon │ │ ├── S99testkaddsp │ │ ├── S99testpowercontroller │ │ ├── S99testusb │ │ ├── beov10.xml │ │ ├── dacadcaddon-test.xml │ │ ├── dspdac.xml │ │ ├── eeprom │ │ │ ├── amp100.eep │ │ │ ├── amp100.txt │ │ │ ├── amp4.eep │ │ │ ├── amp4.txt │ │ │ ├── beocreate2.eep │ │ │ ├── beocreate2.txt │ │ │ ├── compile-eep │ │ │ ├── dac2.txt │ │ │ ├── dac2hd.eep │ │ │ ├── dac2hd.txt │ │ │ ├── dac2pro.eep │ │ │ ├── dac2pro.txt │ │ │ ├── dacplus.eep │ │ │ ├── dacplus.txt │ │ │ ├── dacplusadc.eep │ │ │ ├── dacplusadc.txt │ │ │ ├── dacplusadcpro.eep │ │ │ ├── dacplusadcpro.txt │ │ │ ├── digi2pro.eep │ │ │ ├── digi2pro.txt │ │ │ ├── digi2standard.eep │ │ │ ├── digi2standard.txt │ │ │ ├── digiplus.eep │ │ │ ├── digiplus.txt │ │ │ ├── digipro.eep │ │ │ ├── digipro.txt │ │ │ ├── dtoverlay │ │ │ ├── eepdump │ │ │ ├── eepflash.sh │ │ │ └── eepmake │ │ ├── flash.sh │ │ ├── hbflash.sh │ │ ├── hbfw_usb2i2s_100.bin │ │ ├── hifiberry-dacplusadc.dtbo │ │ ├── hifiberry-dacplusadcpro.dtbo │ │ ├── hifiberry-dacplushd.dtbo │ │ ├── hifiberry-test.mk │ │ ├── pc-firmware-1.hex │ │ ├── pc-firmware-2.hex │ │ ├── sine1k.wav │ │ └── spi_flash │ ├── hifiberry-tools │ │ ├── Config.in │ │ ├── S60initial-volume │ │ ├── S98hifiberry-detect │ │ ├── S99x-myip │ │ ├── activate-data-partition │ │ ├── activate-data-partition.service │ │ ├── alsa-mode │ │ ├── alsa-state │ │ ├── bootmsg │ │ ├── check-compatibility │ │ ├── check-daemons │ │ ├── check-system │ │ ├── conf │ │ │ ├── asound.conf.dmix_softvol │ │ │ ├── asound.conf.dmix_softvol.lite │ │ │ └── asound.conf.exclusive │ │ ├── configure-players.service │ │ ├── configure-system.service │ │ ├── debuginfo │ │ ├── detect-hifiberry │ │ ├── enable-mdns │ │ ├── enable-updi │ │ ├── fix-dacadcpro-mixer │ │ ├── fix-unused-volume │ │ ├── hifiberry-cardid │ │ ├── hifiberry-detect.service │ │ ├── hifiberry-finish.service │ │ ├── hifiberry-tools.mk │ │ ├── hifiberry.conf.sample │ │ ├── hifiberry.target │ │ ├── initial-volume.service │ │ ├── journald.conf │ │ ├── myip │ │ ├── myip.service │ │ ├── myurl │ │ ├── pause-all │ │ ├── readhat │ │ ├── reboot.service │ │ ├── reconfigure-players │ │ ├── reset-amp100 │ │ ├── reset-system │ │ ├── resize-partitions │ │ ├── resize-partitions.service │ │ ├── restore-config │ │ ├── restore-volume │ │ ├── restore-volume.service │ │ ├── save-config │ │ ├── set-host-ip │ │ ├── set-initial-volume │ │ ├── shutdown-system │ │ ├── snd_soc_core_disable_pm.conf │ │ ├── speaker-role │ │ ├── sshdconfig │ │ ├── sshdconfig.service │ │ ├── stop-all-players │ │ ├── store-volume │ │ ├── store-volume.service │ │ ├── store-volume.timer │ │ └── unmute-amp100 │ ├── hifiberry-updater │ │ ├── Config.in │ │ ├── after-update │ │ ├── backup-config │ │ ├── config-files │ │ ├── extract-update │ │ ├── hifiberry-updater.mk │ │ ├── partitions │ │ ├── reactivate-previous-release │ │ ├── restore-config │ │ ├── services │ │ ├── update │ │ ├── update-firmware │ │ ├── updater.service │ │ └── updater.timer │ ├── hifiberry-upmpdcli │ │ ├── Config.in │ │ ├── description.xml │ │ ├── forward.html │ │ ├── hifiberry-upmpdcli.mk │ │ ├── openhome-room │ │ ├── upmpdcli-user │ │ ├── upmpdcli.conf │ │ └── upmpdcli.service │ ├── hifiberry-users │ │ ├── Config.in │ │ ├── create-users │ │ ├── hifiberry-users.mk │ │ ├── sysgroups.txt │ │ └── sysusers.txt │ ├── hifiberry-watchdog │ │ ├── Config.in │ │ ├── hifiberry-watchdog.mk │ │ ├── watchdog.conf │ │ ├── watchdog.service │ │ └── watchdog.sh │ ├── hifiberry-weston │ │ ├── Config.in │ │ ├── enable-vc │ │ ├── hifiberry-weston.mk │ │ ├── weston.ini │ │ └── weston.service │ ├── hifiberry-ympd │ │ ├── Config.in │ │ ├── hifiberry-ympd.mk │ │ ├── ympd-bin │ │ └── ympd.service │ ├── ir-remote │ │ ├── Config.in │ │ ├── ir-remote.mk │ │ ├── ir.service │ │ └── keymap.toml │ ├── librespot │ │ ├── Config.in │ │ └── librespot.mk │ ├── lmsmpris │ │ ├── Config.in │ │ ├── lmsmpris.mk │ │ ├── lmsmpris.service │ │ └── src │ │ │ ├── audiocontrol2.py │ │ │ ├── metadata.py │ │ │ ├── mpris.py │ │ │ └── webserver.py │ ├── mopidy-alsamixer │ │ ├── Config.in │ │ └── mopidy-alsamixer.mk │ ├── mopidy-gmusic │ │ ├── Config.in │ │ └── mopidy-gmusic.mk │ ├── mopidy-iris │ │ ├── Config.in │ │ └── mopidy-iris.mk │ ├── mopidy-local │ │ ├── Config.in │ │ └── mopidy-local.mk │ ├── mopidy-mpd │ │ ├── Config.in │ │ └── mopidy-mpd.mk │ ├── mopidy-mpris │ │ ├── Config.in │ │ └── mopidy-mpris.mk │ ├── mopidy-musicbox-webclient │ │ ├── Config.in │ │ └── mopidy-musicbox-webclient.mk │ ├── mopidy-radionet │ │ ├── Config.in │ │ └── mopidy-radionet.mk │ ├── mopidy-soundcloud │ │ ├── Config.in │ │ └── mopidy-soundcloud.mk │ ├── mopidy-youtube │ │ ├── Config.in │ │ └── mopidy-youtube.mk │ ├── mopidy │ │ ├── Config.in │ │ ├── mopidy.conf │ │ ├── mopidy.mk │ │ └── mopidy.service │ ├── mpd-mpris │ │ ├── 0001-add-url.patch │ │ ├── Config.in │ │ ├── mpd-mpris.mk │ │ └── mpd-mpris.service │ ├── mpris-proxy │ │ ├── Config.in │ │ ├── dbus.conf │ │ ├── mpris-proxy.mk │ │ └── mpris-proxy.service │ ├── musicfiletools │ │ ├── Config.in │ │ └── musicfiletools.mk │ ├── nqptp │ │ ├── Config.in │ │ ├── nqptp.mk │ │ └── nqptp.service │ ├── pigpiod-systemd │ │ ├── Config.in │ │ ├── pigpiod.mk │ │ ├── pigpiod.service │ │ └── start-pigpiod │ ├── piversion │ │ └── Config.in │ ├── plexamp │ │ ├── Config.in │ │ ├── extensions.conf │ │ └── plexamp.mk │ ├── python-bottle-websocket │ │ ├── Config.in │ │ ├── python-bottle-websocket.hash │ │ └── python-bottle-websocket.mk │ ├── python-bs4 │ │ ├── Config.in │ │ ├── python-bs4.hash │ │ └── python-bs4.mk │ ├── python-cachetools │ │ ├── Config.in │ │ └── python-cachetools.mk │ ├── python-cythont │ │ ├── Config.in │ │ ├── python-cython.hash │ │ └── python-cythont.mk │ ├── python-expiringdict │ │ ├── Config.in │ │ ├── python-expiringdict.hash │ │ └── python-expiringdict.mk │ ├── python-gevent-websocket │ │ ├── Config.in │ │ ├── python-gevent-websocket.hash │ │ └── python-gevent-websocket.mk │ ├── python-gevent │ │ ├── Config.in │ │ ├── python-gevent.hash │ │ └── python-gevent.mk │ ├── python-gmusicapi │ │ ├── Config.in │ │ ├── python-gmusicapi.hash │ │ └── python-gmusicapi.mk │ ├── python-gpsoauth │ │ ├── Config.in │ │ ├── python-gpsoauth.hash │ │ └── python-gpsoauth.mk │ ├── python-gstreamer-player │ │ ├── Config.in │ │ ├── python-gstreamer-player.hash │ │ └── python-gstreamer-player.mk │ ├── python-hidapi │ │ ├── Config.in │ │ ├── python-hidapi.hash │ │ └── python-hidapi.mk │ ├── python-keyboard │ │ ├── Config.in │ │ └── python-keyboard.mk │ ├── python-levenshtein │ │ ├── Config.in │ │ ├── python-levenshtein.hash │ │ └── python-levenshtein.mk │ ├── python-mechanicalsoup │ │ ├── Config.in │ │ ├── python-mechanicalsoup.hash │ │ └── python-mechanicalsoup.mk │ ├── python-mock │ │ ├── Config.in │ │ └── python-mock.mk │ ├── python-musicbrainz-ngs │ │ ├── 0001-reduce-retries.patch │ │ ├── Config.in │ │ └── python-musicbrainz-ngs.mk │ ├── python-oauth2client │ │ ├── Config.in │ │ ├── python-oauth2client.hash │ │ └── python-oauth2client.mk │ ├── python-pg8000 │ │ ├── Config.in │ │ ├── python-pg8000.hash │ │ └── python-pg8000.mk │ ├── python-proboscis │ │ ├── Config.in │ │ ├── python-proboscis.hash │ │ └── python-proboscis.mk │ ├── python-pydbus │ │ ├── Config.in │ │ ├── python-pydbus.hash │ │ └── python-pydbus.mk │ ├── python-pyedbglib │ │ ├── Config.in │ │ └── python-pymcuprog.mk │ ├── python-pygobject │ │ ├── Config.in │ │ ├── python-pygobject.hash │ │ └── python-pygobject.mk │ ├── python-pykka │ │ ├── Config.in │ │ ├── python-pykka.hash │ │ └── python-pykka.mk │ ├── python-pyky040 │ │ ├── Config.in │ │ ├── python-pyky040.hash │ │ └── python-pyky040.mk │ ├── python-pylast │ │ ├── Config.in │ │ ├── python-pylast.hash │ │ └── python-pylast.mk │ ├── python-pymcuprog │ │ ├── Config.in │ │ └── python-pymcuprog.mk │ ├── python-pyserial │ │ ├── Config.in │ │ ├── python-pyserial.hash │ │ └── python-pyserial.mk │ ├── python-pyupdi │ │ ├── 0001-remove-pylint.patch │ │ ├── Config.in │ │ ├── python-mpd2.hash │ │ └── python-pyupdi.mk │ ├── python-scramp │ │ ├── Config.in │ │ ├── python-scramp.hash │ │ └── python-scramp.mk │ ├── python-tzupdate │ │ ├── Config.in │ │ ├── python-tzupdate.hash │ │ ├── python-tzupdate.mk │ │ └── tzupdate.service │ ├── python-uritools │ │ ├── Config.in │ │ └── python-uritools.mk │ ├── python-usagedata │ │ ├── Config.in │ │ ├── datacollector.service │ │ ├── privacy.html │ │ ├── pushdata.service │ │ ├── pushdata.timer │ │ ├── python-usagedata.mk │ │ ├── report-activation │ │ ├── report-deactivation │ │ ├── report-dump │ │ └── report-usage │ ├── python-validictory │ │ ├── Config.in │ │ ├── python-validictory.hash │ │ └── python-validictory.mk │ ├── python-youtube-dl │ │ ├── Config.in │ │ ├── python-youtube-dl.hash │ │ └── python-youtube-dl.mk │ ├── python-zopeevent │ │ ├── Config.in │ │ ├── python-zopeevent.hash │ │ └── python-zopeevent.mk │ ├── raat │ │ ├── Config.in │ │ ├── configure-raat │ │ ├── raat.mk │ │ ├── raat.service │ │ ├── raat_app │ │ ├── raat_app.aarch64 │ │ ├── raatool │ │ └── raatool.aarch64 │ ├── raspi-wifi │ │ ├── Config.in │ │ ├── S30copy-wifi-config │ │ ├── copy-config │ │ ├── copy-config.service │ │ ├── dnsmasq.conf │ │ ├── hostapd.conf │ │ ├── interfaces │ │ ├── raspi-wifi.mk │ │ ├── resolved.conf │ │ ├── tempap-dnsmasq.service │ │ ├── tempap-hostapd.service │ │ ├── tempap.service │ │ ├── wireless.network │ │ ├── wpa_supplicant.conf │ │ └── wpa_supplicant@wlan0.service │ ├── smbtools │ │ ├── Config.in │ │ └── smbtools.mk │ ├── snapcast │ │ ├── 0001-disable-syslog.patch │ │ ├── Config.in │ │ └── snapcast.mk │ ├── snapcastmpris │ │ ├── Config.in │ │ ├── snapcastmpris.conf │ │ ├── snapcastmpris.mk │ │ └── snapcastmpris.service │ ├── spotifyd │ │ ├── Config.in │ │ ├── S99spotify │ │ ├── S99spotify-watchdog │ │ ├── compile.sh │ │ ├── dbus-spotify.conf │ │ ├── dbus.conf │ │ ├── spotify-start │ │ ├── spotify-watchdog │ │ ├── spotify-watchdog-systemd │ │ ├── spotify.service │ │ ├── spotifyd-0.2.10 │ │ ├── spotifyd-0.2.18 │ │ ├── spotifyd-0.2.19 │ │ ├── spotifyd-0.2.20-patched │ │ ├── spotifyd-0.2.24-patched │ │ ├── spotifyd-2019-02-25 │ │ ├── spotifyd-2019-06-19 │ │ ├── spotifyd-bin-mk │ │ ├── spotifyd-notification │ │ ├── spotifyd.conf │ │ └── spotifyd.mk │ ├── vollibrespot │ │ ├── Config.in │ │ ├── vollibrespot.conf │ │ ├── vollibrespot.mk │ │ └── vollibrespot.service │ └── webradio │ │ ├── Config.in │ │ ├── start-radio │ │ └── webradio.mk ├── patches │ ├── global_patches_stored_here │ └── linux-custom │ │ ├── 001-disable_pm.patch │ │ └── 002-amp3.patch.ignore └── uncompressed-modules.fragment ├── clean ├── clean-images ├── clean-package ├── compile ├── compile-all ├── config ├── configs ├── config0w ├── config2 ├── config3 ├── config4 ├── devpackages ├── hifiberryos-gui ├── hifiberryos-nogui ├── override-test.conf ├── override.conf ├── remove-slowpi └── testimage ├── create-brpatch ├── create-image ├── create-python-package ├── create-updater ├── doc ├── alsa-eq.md ├── architecture.md ├── architecture.odg ├── architecture.png ├── building.md ├── contributed.md ├── contributions.md ├── dbus.md ├── docker.md ├── extensions.md ├── guidelines.md ├── hacks.md ├── hardware.md ├── known-problems.md ├── links.md ├── microphones.md ├── mpris.md ├── multiroom.md ├── ports.md ├── ramdisk.md ├── readme.md ├── resampling.md ├── roomeq.md ├── services.md ├── setupdev.md ├── updater.md ├── usbboot.md └── wishlist.md ├── download-sources ├── fix-fs ├── get-buildroot ├── helpers └── default-30db.sh ├── hifiberry.jpg ├── hifiberryos-black.jpg ├── hifiberryos-white.jpg ├── prepare-software ├── publish-dev ├── scripts ├── install-dacdsp13.sh └── updater.sh ├── secrets.template ├── update-pi ├── update-ts └── userdoc ├── ir.md ├── powermanagememt.md ├── raspberry1.md ├── smbmounts.md ├── spotify.md └── troubleshooting.md /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/.gitattributes -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/use_templates.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Use the templates above! 3 | about: Issues that do not use the templates will be closed without further notice 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | DO NOT use this, but create either a bug report or feature request 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | buildroot/PIVERSION 2 | configs/hifiberryos.bak 3 | .piversion 4 | images 5 | update-pi3 6 | buildroot/VERSION 7 | gui.txt 8 | userstories.txt 9 | build.log 10 | publish-files.sh 11 | debug 12 | a 13 | b 14 | notify 15 | publish-files 16 | update-all 17 | secrets 18 | buildtime* 19 | -------------------------------------------------------------------------------- /black-1x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/black-1x1.png -------------------------------------------------------------------------------- /brdir: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname $0` 3 | 4 | if [ "$1" == "" ]; then 5 | VERSION=`cat .piversion` 6 | else 7 | VERSION=$1 8 | fi 9 | if [ ! -d ../buildroot-${VERSION} ]; then 10 | mkdir ../buildroot-${VERSION} 11 | fi 12 | 13 | cd ../buildroot-${VERSION} 14 | if [ "$?" != "0" ]; then 15 | echo /tmp 16 | exit 1 17 | fi 18 | 19 | pwd 20 | 21 | 22 | -------------------------------------------------------------------------------- /build-all: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname $0` 3 | TS=`date +%Y%m%d` 4 | NICE=10 5 | for i in 2 3 4 0 02; do 6 | if [ "$1" == "parallel" ]; then 7 | screen -d -m nice -n $NICE ./build-release $i $TS 8 | echo "Started $i build with nice level $NICE" 9 | NICE=$((NICE-1)) 10 | sleep 60 11 | else 12 | ./build-release $i $TS 13 | fi 14 | done 15 | -------------------------------------------------------------------------------- /build-release: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" == "" ]; then 4 | echo Command line argumnents: piversion [timestamp] 5 | exit 1 6 | fi 7 | 8 | if [ "$2" == "" ]; then 9 | TS=`date +%Y%m%d` 10 | else 11 | TS=$2 12 | fi 13 | 14 | cd `dirname $0` 15 | clear 16 | echo Buildung for Raspberry Pi $1 17 | echo ============================ 18 | echo 19 | date > buildtime.$1 20 | ./build-config $1 21 | ./clean $1 22 | ./compile $1 23 | # For some reason, first build sometimes fails 24 | ./compile $1 25 | #./create-image $1 $TS 26 | date >> buildtime.$1 27 | -------------------------------------------------------------------------------- /build-test-config: -------------------------------------------------------------------------------- 1 | build-config -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/genimage-raspberrypi0.cfg: -------------------------------------------------------------------------------- 1 | image boot.vfat { 2 | vfat { 3 | files = { 4 | "bcm2708-rpi-zero.dtb", 5 | "rpi-firmware/bootcode.bin", 6 | "rpi-firmware/cmdline.txt", 7 | "rpi-firmware/config.txt", 8 | "rpi-firmware/fixup.dat", 9 | "rpi-firmware/start.elf", 10 | "zImage" 11 | } 12 | } 13 | size = 32M 14 | } 15 | 16 | image sdcard.img { 17 | hdimage { 18 | } 19 | 20 | partition boot { 21 | partition-type = 0xC 22 | bootable = "true" 23 | image = "boot.vfat" 24 | } 25 | 26 | partition rootfs { 27 | partition-type = 0x83 28 | image = "rootfs.ext4" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/genimage-raspberrypi4-64.cfg: -------------------------------------------------------------------------------- 1 | image boot.vfat { 2 | vfat { 3 | files = { 4 | "bcm2711-rpi-4-b.dtb", 5 | "rpi-firmware/cmdline.txt", 6 | "rpi-firmware/config.txt", 7 | "rpi-firmware/fixup4.dat", 8 | "rpi-firmware/start4.elf", 9 | "rpi-firmware/overlays", 10 | "Image" 11 | } 12 | } 13 | size = 32M 14 | } 15 | 16 | image sdcard.img { 17 | hdimage { 18 | } 19 | 20 | partition boot { 21 | partition-type = 0xC 22 | bootable = "true" 23 | image = "boot.vfat" 24 | } 25 | 26 | partition rootfs { 27 | partition-type = 0x83 28 | image = "rootfs.ext4" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/genimage-raspberrypi4.cfg: -------------------------------------------------------------------------------- 1 | image boot.vfat { 2 | vfat { 3 | files = { 4 | "bcm2711-rpi-4-b.dtb", 5 | "rpi-firmware/cmdline.txt", 6 | "rpi-firmware/config.txt", 7 | "rpi-firmware/fixup4.dat", 8 | "rpi-firmware/start4.elf", 9 | "rpi-firmware/overlays", 10 | "zImage" 11 | } 12 | } 13 | size = 64M 14 | } 15 | 16 | image sdcard.img { 17 | hdimage { 18 | } 19 | 20 | partition boot { 21 | partition-type = 0xC 22 | bootable = "true" 23 | image = "boot.vfat" 24 | } 25 | 26 | partition rootfs { 27 | partition-type = 0x83 28 | image = "rootfs.ext4" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/overlay/etc/dbus-1/system-local.conf: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/overlay/etc/fstab: -------------------------------------------------------------------------------- 1 | /dev/root / ext4 rw,noatime 0 1 2 | proc /proc proc defaults 0 0 3 | devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 4 | tmpfs /dev/shm tmpfs mode=0777 0 0 5 | tmpfs /tmp tmpfs mode=1777 0 0 6 | tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 7 | sysfs /sys sysfs defaults 0 0 8 | /dev/mmcblk0p1 /boot vfat defaults,noatime,quiet 0 2 9 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi/overlay/etc/sysctl.d/hifiberry.conf: -------------------------------------------------------------------------------- 1 | kernel.printk = 2 4 1 7 2 | 3 | -------------------------------------------------------------------------------- /buildroot/board/raspberrypi0w: -------------------------------------------------------------------------------- 1 | raspberrypi -------------------------------------------------------------------------------- /buildroot/board/raspberrypi2: -------------------------------------------------------------------------------- 1 | raspberrypi -------------------------------------------------------------------------------- /buildroot/board/raspberrypi3: -------------------------------------------------------------------------------- 1 | raspberrypi -------------------------------------------------------------------------------- /buildroot/board/raspberrypi4: -------------------------------------------------------------------------------- 1 | raspberrypi -------------------------------------------------------------------------------- /buildroot/buildroot-2021.05.patch: -------------------------------------------------------------------------------- 1 | diff -ur b/package/libplist/libplist.mk a/package/libplist/libplist.mk 2 | --- a/package/libplist/libplist.mk 2021-07-22 07:24:21.600452216 +0000 3 | +++ b/package/libplist/libplist.mk 2021-07-22 07:23:51.256155689 +0000 4 | @@ -16,4 +16,10 @@ 5 | # is not packaged in Buildroot at all. 6 | LIBPLIST_CONF_OPTS = --without-cython 7 | 8 | +define LIBPLIST_POST_INSTALL_STAGING 9 | + cp $(STAGING_DIR)/usr/lib/pkgconfig/libplist-2.0.pc $(STAGING_DIR)/usr/lib/pkgconfig/libplist.pc 10 | +endef 11 | + 12 | +LIBPLIST_POST_INSTALL_STAGING_HOOKS += LIBPLIST_POST_INSTALL_STAGING 13 | + 14 | $(eval $(autotools-package)) 15 | -------------------------------------------------------------------------------- /buildroot/configs/users: -------------------------------------------------------------------------------- 1 | pi 1000 pi 1000 raspberry /home/pi /bin/bash - Default user 2 | -------------------------------------------------------------------------------- /buildroot/external.desc: -------------------------------------------------------------------------------- 1 | name: HIFIBERRY 2 | desc: Additional HiFiBerry modules 3 | 4 | -------------------------------------------------------------------------------- /buildroot/external.mk: -------------------------------------------------------------------------------- 1 | include $(sort $(wildcard $(BR2_EXTERNAL_HIFIBERRY_PATH)/package/*/*.mk)) 2 | -------------------------------------------------------------------------------- /buildroot/package/alsa-eq/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_ALSA_EQ 2 | bool "alsa-eq" 3 | depends on BR2_PACKAGE_ALSA_LIB 4 | help 5 | ALSA EQ - an equalizer plugin for ALSA 6 | 7 | https://thedigitalmachine.net/alsaequal.html 8 | select BR2_PACKAGE_CAPS 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/audiocontrol2/audiocontrol2.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Audiocontrol2 3 | Wants=dbus.service 4 | After=sound.target dbus.service 5 | 6 | [Service] 7 | Type=notify 8 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 9 | Environment=PYTHONPATH=/data/ac2plugins:/etc/audiocontrol2 10 | WorkingDirectory=/opt/audiocontrol2 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting AudioControl2" 12 | ExecStart=/usr/bin/python3 /opt/audiocontrol2/audiocontrol2.py ${AUDIOCONTROL2_ARGS} 13 | StandardOutput=journal 14 | Restart=always 15 | RestartSec=5 16 | TimeoutStopSec=10 17 | 18 | [Install] 19 | WantedBy=multi-user.target 20 | -------------------------------------------------------------------------------- /buildroot/package/audiocontrol2/git-update-audiocontrol: -------------------------------------------------------------------------------- 1 | #/bin/sh 2 | echo "Updating Audiocontrol2 from Github" 3 | cd /tmp 4 | git clone https://github.com/hifiberry/audiocontrol2 5 | cp -rv audiocontrol2/* /opt/audiocontrol2/ 6 | rm -rf audiocontrol2 7 | systemctl restart audiocontrol2 8 | -------------------------------------------------------------------------------- /buildroot/package/audiocontrol2/override.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | Environment=AUDIOCONTROL2_ARGS= 3 | -------------------------------------------------------------------------------- /buildroot/package/audiocontrol2/privacy.html: -------------------------------------------------------------------------------- 1 | externalMetadata 2 |

Metadata from the Internet

3 |

When enabled, the system will search third-party services for 4 | additional metadata about the current song, such as album covers.

5 |

What's shared?

6 |

Track title, artist, album and system ID. No other information is sent.

7 |

Which services are used?

8 | 15 | -------------------------------------------------------------------------------- /buildroot/package/beocreate-music/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_BEOCREATE_MUSIC 2 | bool "music extension for Beocreate" 3 | help 4 | User interface to control playback of local music libraries 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | depends on BR2_PACKAGE_BEOCREATE 7 | select BR2_PACKAGE_LIBCURL 8 | select BR2_PACKAGE_LIBCURL_CURL 9 | select BR2_PACKAGE_MPD_MPC 10 | 11 | -------------------------------------------------------------------------------- /buildroot/package/beocreate-music/beocreate-music.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # beocreate-music 4 | # 5 | ################################################################################ 6 | 7 | BEOCREATE_MUSIC_VERSION = 19b6a47ea3a4cfee8af0adc2aecba088a26a75f5 8 | BEOCREATE_MUSIC_SITE = $(call github,tuomashamalainen,beocreate-music,$(BEOCREATE_MUSIC_VERSION)) 9 | 10 | define BEOCREATE_MUSIC_INSTALL_TARGET_CMDS 11 | mkdir -p $(TARGET_DIR)/opt/beocreate/beo-extensions/music 12 | cp -rv $(@D)/music/* $(TARGET_DIR)/opt/beocreate/beo-extensions/music 13 | endef 14 | 15 | $(eval $(generic-package)) 16 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_BEOCREATE 2 | bool "beocreate" 3 | help 4 | "Beocreate server and web interface" 5 | select BR2_PACKAGE_BZIP2 # required for Node.JS 6 | select BR2_PACKAGE_NODEJS 7 | select BR2_PACKAGE_NODEJS_NPM 8 | select BR2_PACKAGE_LIBUSB 9 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/git-update-beocreate: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo "Updating Beocreate software to latest version from Github" 3 | cd /tmp 4 | git clone -b development https://github.com/hifiberry/create 5 | cp -rv create/Beocreate2/beo-* /opt/beocreate/ 6 | cp -rv create/beocreate_essentials /opt/beocreate 7 | rm -rf create 8 | systemctl restart beocreate2 9 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/override.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | Environment=BEOCREATE_ARGS=vv 3 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/sound.json: -------------------------------------------------------------------------------- 1 | { 2 | "mixer":"Softvol", 3 | "dummy": "dummy" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/sources.json: -------------------------------------------------------------------------------- 1 | {"port": 81} 2 | 3 | -------------------------------------------------------------------------------- /buildroot/package/beocreate/system.json: -------------------------------------------------------------------------------- 1 | { 2 | "cardType":"DAC+ Pro", 3 | "port": 80, 4 | "runAtStart": "/bin/systemd-notify --ready" 5 | } 6 | 7 | -------------------------------------------------------------------------------- /buildroot/package/brutefir/Config.in: -------------------------------------------------------------------------------- 1 | # from https://github.com/badaix/snapos 2 | 3 | config BR2_PACKAGE_BRUTEFIR 4 | bool "Brutefir" 5 | help 6 | brutefir 7 | select BR2_PACKAGE_FFTW 8 | select BR2_PACKAGE_FFTW_DOUBLE 9 | select BR2_PACKAGE_FFTW_SINGLE -------------------------------------------------------------------------------- /buildroot/package/brutefir/README.brutefir: -------------------------------------------------------------------------------- 1 | This is a user-contributed package. There is stricly NO SUPPORT from HiFiBerry for this. Use it as your own risk. 2 | Feel free to experiment with it, but note that HiFiBerry can't guarantee that changes you made on the system will work in future releases. 3 | 4 | For questions about this module, contact the author: https://github.com/soundart 5 | 6 | -------------------------------------------------------------------------------- /buildroot/package/btspeaker/a2dp-agent.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Bluetooth A2DP agent 3 | Requires=bluetooth.service btuart.service 4 | After=bluetooth.service btuart.service 5 | ConditionPathExists=/etc/features/bluetooth 6 | 7 | [Service] 8 | ExecStart=/opt/btspeaker/a2dp-agent.py 9 | RestartSec=5 10 | Restart=always 11 | TimeoutStopSec=10 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/btspeaker/bluetoothd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Bluetooth demon 3 | Requires=dbus.service 4 | After=dbus.service 5 | ConditionPathExists=/etc/features/bluetooth 6 | 7 | [Service] 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting Bluetooth daemon" 9 | ExecStart=/usr/libexec/bluetooth/bluetoothd -f /etc/bluetooth/main.conf -P sap,hostname 10 | TimeoutStopSec=10 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/btspeaker/btagent.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Bluetooth Auth Agent 3 | After=bluetooth.service 4 | PartOf=bluetooth.service 5 | 6 | [Service] 7 | Type=simple 8 | ExecStart=/opt/btspeaker/btagent.sh 9 | 10 | [Install] 11 | WantedBy=bluetooth.target 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/btspeaker/btagent.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Make device discoverable 4 | /bin/bluetoothctl </dev/null 5 | echo "done" 6 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/dspdac.txt: -------------------------------------------------------------------------------- 1 | IIR_L1: pass 2 | IIR_L2: mute 3 | IIR_L3: mute 4 | IIR_L4: mute 5 | IIR_R1: mute 6 | IIR_R2: pass 7 | IIR_R3: mute 8 | IIR_R4: mute 9 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/dump-spdif-status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | for baseaddr in 0xf61 0xf62 0xf63 0xf64; do 3 | line=""; 4 | for i in 0 2 4 6 8 a; do 5 | j=`dsptoolkit read-hex $baseaddr$i` 6 | line="$line $j" 7 | done 8 | echo $baseaddr $line 9 | done 10 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/muted.txt: -------------------------------------------------------------------------------- 1 | IIR_L1: mute 2 | IIR_L2: mute 3 | IIR_L3: mute 4 | IIR_L4: mute 5 | IIR_R1: mute 6 | IIR_R2: mute 7 | IIR_R3: mute 8 | IIR_R4: mute 9 | 10 | 11 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/sigmatcp.conf: -------------------------------------------------------------------------------- 1 | [server] 2 | command_after_startup=/bin/systemd-notify --ready 3 | notify_after_updates=http://127.0.0.1:80/dsp-programs/server-notify 4 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/sigmatcp.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=SigmaTCP Server for HiFiBerry DSP 3 | Wants=network-online.target sound.target 4 | After=network.target sound.target 5 | 6 | [Service] 7 | Type=notify 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting DSP server" 9 | ExecStartPre=/opt/hifiberry/bin/create-dspvolume 10 | ExecStart=/usr/bin/sigmatcpserver --alsa ${SIGMATCPSERVER_ARGS} 11 | ExecStartPost=/bin/sleep 3 12 | StandardOutput=journal 13 | Restart=always 14 | RestartSec=5 15 | TimeoutStopSec=10 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | -------------------------------------------------------------------------------- /buildroot/package/dsptoolkit/spdifclockgen.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=SPDIF clock generator 3 | Wants=network-online.target sound.target 4 | After=network.target sound.target sigmatcp.service raat.service mpd.service 5 | ConditionPathExists=/etc/features/spdifnoclock 6 | 7 | [Service] 8 | Type=simple 9 | ExecStart=/usr/bin/spdifclockgen 10 | StandardOutput=journal 11 | Restart=always 12 | RestartSec=10 13 | TimeoutStopSec=10 14 | 15 | [Install] 16 | WantedBy=multi-user.target 17 | -------------------------------------------------------------------------------- /buildroot/package/enable-arm7/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_ENABLE_ARM7 2 | bool "enable ARM7 feature" 3 | help 4 | "creates /etc/features/arm7" 5 | 6 | 7 | -------------------------------------------------------------------------------- /buildroot/package/enable-arm7/enable-arm7.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # enable-arm7 4 | # 5 | ################################################################################ 6 | 7 | 8 | define ENABLE_ARM7_INSTALL_TARGET_CMDS 9 | $(INSTALL) -d $(TARGET_DIR)/etc/features 10 | touch $(TARGET_DIR)/etc/features/arm7 11 | 12 | endef 13 | 14 | $(eval $(generic-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/enable-vc4kms/60-drm.rules: -------------------------------------------------------------------------------- 1 | # do not edit this file, it will be overwritten on update 2 | 3 | ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" 4 | 5 | # by-path 6 | ENV{ID_PATH}=="?*", KERNEL=="card*", SYMLINK+="dri/by-path/$env{ID_PATH}-card" TAG+="systemd" 7 | ENV{ID_PATH}=="?*", KERNEL=="controlD*", SYMLINK+="dri/by-path/$env{ID_PATH}-control" 8 | ENV{ID_PATH}=="?*", KERNEL=="renderD*", SYMLINK+="dri/by-path/$env{ID_PATH}-render" 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/enable-vc4kms/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_ENABLE_VC4KMS 2 | bool "enable VC4 KMS" 3 | help 4 | "enable VC4 KMS driver in /boot/config.txt" 5 | select BR2_PACKAGE_RPI_FIRMWARE 6 | 7 | 8 | -------------------------------------------------------------------------------- /buildroot/package/extensions/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_EXTENSIONS 2 | bool "extensions" 3 | help 4 | A simple framework to add extensions to HiFiBerryOS 5 | 6 | select BR2_PACKAGE_GIT 7 | 8 | -------------------------------------------------------------------------------- /buildroot/package/extensions/extensions.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/extensions/extensions.conf -------------------------------------------------------------------------------- /buildroot/package/extensions/extensions.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Start containers 3 | Requires=docker.service 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting extensions" 8 | ExecStart=/opt/hifiberry/bin/extensions startup 9 | StandardOutput=journal 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/hattools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HATTOOLS 2 | bool "hattools" 3 | help 4 | tools to read/write to HAT EEPROM 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-alsaloop/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_ALSALOOP 2 | bool "hifiberry-alsaloop" 3 | help 4 | Run alsaloop as a background daemon 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | select BR2_PACKAGE_ALSA_UTILS_ALSALOOP 7 | 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-alsaloop/alsaloop.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=alsaloop 3 | After=sound.target 4 | ConditionPathExists=/etc/features/analoginput 5 | 6 | [Service] 7 | Type=simple 8 | Environment=HOME=/root 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting alsaloop" 10 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 11 | ExecStart=/usr/bin/python3 /opt/alsaloop/alsaloopmpris.py 12 | Restart=always 13 | RestartSec=30 14 | ExecReload=/bin/kill -HUP $MAINPID 15 | TimeoutStopSec=10 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-analytics/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_ANALYTICS 2 | bool "hifiberry-analytics" 3 | help 4 | Some analytics tools 5 | depends on BR2_PACKAGE_HIFIBERRY_POSTGRES 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-analytics/hifiberry-analytics.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # hifiberry-analytics 4 | # 5 | ################################################################################ 6 | 7 | define HIFIBERRY_ANALYTICS_INSTALL_TARGET_CMDS 8 | endef 9 | 10 | define HIFIBERRY_ANALYTICS_INSTALL_INIT_SYSTEMD 11 | endef 12 | 13 | $(eval $(generic-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/99-usbmount.rules: -------------------------------------------------------------------------------- 1 | KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usbmount@%k.service" 2 | KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usbmount@%k.service" 3 | 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_AUTOMOUNT 2 | bool "hifiberry-automount" 3 | help 4 | Automatically mount USB devices 5 | 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/list-smb-servers: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for host in `nmblookup -s /dev/null -S workgroup | grep "<20>" | awk '{print $1}'`; do 4 | IPS="" 5 | for ip in `nmblookup -s /dev/null $host | awk '{print $1}'`; do 6 | IPS="$IPS $ip" 7 | done 8 | echo "$host,$IPS" 9 | done 10 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/list-usb-storage: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for DEV in `grep /dev/sd /proc/mounts | awk '{print $1}'`; do 3 | MOUNTPOINT=`grep ${DEV} /proc/mounts | awk '{print $2}'` 4 | LABEL=`blkid $DEV -o value -s LABEL` 5 | if [ "$LABEL" == "" ]; then 6 | LABEL="NO LABEL" 7 | fi 8 | echo $DEV:$MOUNTPOINT:$LABEL 9 | done 10 | 11 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/mount-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | for d in {a..z}; do 4 | if [ -b /dev/sd$d ]; then 5 | echo "mounting /dev/sd$d" 6 | /opt/hifiberry/bin/mount-usb.sh add sd$d norescan 7 | fi 8 | done 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/mount-data.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Mount /data 3 | After=local-fs.target datacollector.service 4 | 5 | [Service] 6 | Type=oneshot 7 | RemainAfterExit=true 8 | ExecStart=/opt/hifiberry/bin/mount-data.sh 9 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/mount-data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | MOUNTED=`mount | grep mmcblk0p4` 3 | if [ "$MOUNTED" != "" ]; then 4 | echo "already mounted" 5 | exit 6 | fi 7 | 8 | FSTYPE=`lsblk -f | grep mmcblk0p4 | awk '{print $2}'` 9 | if [ "$FSTYPE" == "f2fs" ]; then 10 | echo "y" | fsck -p -y /dev/mmcblk0p4 11 | else 12 | fsck -p -y /dev/mmcblk0p4 13 | fi 14 | mount /data 15 | 16 | RES=$? 17 | 18 | if [ "$RES" != 0 ]; then 19 | # it might have been mounted already in parallel 20 | sleep 5 21 | MOUNTED=`mount | grep mmcblk0p4` 22 | if [ "$MOUNTED" != "" ]; then 23 | echo "already mounted" 24 | exit 25 | fi 26 | fi 27 | 28 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-automount/usbmount@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Mount USB Drive on %i 3 | Requires=mount-data.service 4 | After=datacollector.service 5 | 6 | [Service] 7 | Type=oneshot 8 | RemainAfterExit=true 9 | ExecStart=/opt/hifiberry/bin/mount-usb.sh add %i 10 | ExecStop=/opt/hifiberry/bin/mount-usb.sh remove %i 11 | 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-base/hifiberry-base.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # hifiberry-base 4 | # 5 | ################################################################################ 6 | 7 | $(eval $(generic-package)) 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-bluezalsa/0001-pause.patch: -------------------------------------------------------------------------------- 1 | --- a/utils/aplay/alsa-pcm.c 2020-04-07 07:32:59.000000000 +0000 2 | +++ b/utils/aplay/alsa-pcm.c 2020-04-08 05:50:18.790076620 +0000 3 | @@ -125,6 +125,9 @@ 4 | char buf[256]; 5 | int err; 6 | 7 | + snprintf(buf, sizeof(buf), "stopping other players"); 8 | + system("/opt/hifiberry/bin/pause-all bluetooth"); 9 | + 10 | if ((err = snd_pcm_open(&_pcm, name, SND_PCM_STREAM_PLAYBACK, 0)) != 0) { 11 | snprintf(buf, sizeof(buf), "Open PCM: %s", snd_strerror(err)); 12 | goto fail; 13 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-bluezalsa/bluealsa-aplay-start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/hifiberry.state 3 | /usr/bin/bluealsa-aplay --pcm-buffer-time=250000 00:00:00:00:00:00 --mixer-name="$CURRENT_MIXER_CONTROL" 4 | 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-bluezalsa/bluealsa-aplay.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=BlueALSA aplay 3 | Requires=bluealsa.service btuart.service 4 | After=bluealsa.service sound.target btuart.service 5 | 6 | [Service] 7 | Environment=HOME=/root 8 | # BlueALSA takes some time to initialize 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting bluealsa-aplay" 10 | ExecStartPre=sleep 2 11 | ExecStart=/opt/btspeaker/bluealsa-aplay-start 12 | RestartSec=5 13 | Restart=always 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-bluezalsa/bluealsa.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=BlueALSA 3 | Requires=btagent.service 4 | After=btagent.service 5 | ConditionPathExists=!/custom/service/bluetooth.disable 6 | 7 | [Service] 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting bluealsa" 9 | ExecStart=/usr/bin/bluealsa -i hci0 -p a2dp-sink --a2dp-volume 10 | RestartSec=5 11 | Restart=always 12 | TimeoutStopSec=10 13 | 14 | [Install] 15 | WantedBy=multi-user.target 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-bluezalsa/bluez-alsa.hash: -------------------------------------------------------------------------------- 1 | # Locally calculated: 2 | sha256 6287ae6135795a78470068ef9d9ea660d556cefc409905bd9211fda04d1e1f8e bluez-alsa-1.4.0.tar.gz 3 | sha256 45fe8648faa0e735d4aaf60c32ddd37fc7f027d34ccedcf0f69d8aa961b63b25 LICENSE 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-docker/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_DOCKER 2 | bool "docker environment" 3 | help 4 | add docker, configuration and tools 5 | select BR2_PACKAGE_PYTHON_DOCKER 6 | select BR2_PACKAGE_PYTHON_DOCKERPTY 7 | select BR2_PACKAGE_DOCKER_CLI 8 | select BR2_PACKAGE_DOCKER_COMPOSE 9 | select BR2_PACKAGE_CONTAINERD 10 | select BR2_PACKAGE_DOCKER_ENGINE 11 | 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-docker/containers.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Start containers 3 | Requires=docker.service 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting containers" 8 | ExecStart=/opt/hifiberry/bin/start-containers 9 | StandardOutput=journal 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-docker/start-containers: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Start all docker containers 4 | if [ ! -d /data/docker ]; then 5 | echo "/data/docker does not exist, no containers to start" 6 | exit 0 7 | fi 8 | 9 | for d in /data/docker/*; do 10 | if [ -f $d/docker-compose.yaml ]; then 11 | echo starting containers in $d 12 | cd $d 13 | docker-compose up -d 14 | fi 15 | done 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/Gst-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/Gst-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstAllocators-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstAllocators-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstApp-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstApp-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstAudio-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstAudio-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstBase-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstBase-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstCheck-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstCheck-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstController-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstController-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstNet-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstNet-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstPbutils-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstPbutils-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstRtp-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstRtp-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstRtsp-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstRtsp-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstSdp-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstSdp-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstTag-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstTag-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-gstreamer/typelib/GstVideo-1.0.typelib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-gstreamer/typelib/GstVideo-1.0.typelib -------------------------------------------------------------------------------- /buildroot/package/hifiberry-localbrowser/cog.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Local web brower to display web interface 3 | Requires=weston.service 4 | After=weston.service beocreate2.service 5 | 6 | [Service] 7 | Type=simple 8 | Environment=COG_PLATFORM_FDO_VIEW_FULLSCREEN=1 9 | Environment=WAYLAND_DISPLAY=wayland-1 10 | Environment=XDG_RUNTIME_DIR=/var/run/weston 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting web browser" 12 | ExecStart=cog --webprocess-failure=restart -P wl http://localhost:80/#now-playing 13 | StandardOutput=journal 14 | Restart=always 15 | RestartSec=20 16 | TimeoutStopSec=10 17 | 18 | [Install] 19 | WantedBy=multi-user.target 20 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-localbrowser/localbrowser.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Local web brower to display web interface 3 | Wants=hifiberry.target 4 | After=hifiberry.target psplash-quit.service 5 | 6 | [Service] 7 | Type=simple 8 | Environment=QT_QPA_PLATFORM=linuxfb 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting web browser" 10 | ExecStart=/bin/qt-webkit-kiosk -u http://localhost:80 11 | StandardOutput=journal 12 | Restart=always 13 | RestartSec=20 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_MEASUREMENTS 2 | bool "hifiberry-measurements" 3 | help 4 | Tools for acoustic measurements 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/analyze/Makefile: -------------------------------------------------------------------------------- 1 | CC = gcc 2 | # for RPi2 Arm A7/NEON 3 | CFLAGS = -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -marm -O3 -Wall 4 | LD = ld 5 | LDFLAGS = -lm 6 | all: bin 7 | 8 | 9 | OBJ = analyze.o 10 | BIN = analyze 11 | 12 | bin: $(OBJ) 13 | $(CC) $(CFLAGS) -o $(BIN) $(OBJ) $(LDFLAGS) 14 | 15 | %.o: %.c %.h 16 | $(CC) $(CFLAGS) -c $< 17 | 18 | .PHONY: clean 19 | clean: 20 | rm -rf $(BIN) *.o 21 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/audio-inputs: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | for F in 0 1 2 3 4 5 6 7 8 9; do 3 | if [ -f /proc/asound/card$F/pcm0c/info ]; then 4 | NAME=`cat /proc/asound/card$F/pcm0c/info | grep "^name" | awk -F: '{print $2}' | sed 's/HiFi\ .*//g' ` 5 | echo $F: $NAME 6 | fi 7 | done 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/frequency-demo.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": 3 | { 4 | "f": [ 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, 10240, 20480], 5 | "db": [-25, -15, -5, 2.4, -5, 2.1, 0.5, 4.6, -2.1, -1.3, -7.0], 6 | "phase": [ 0, 0, 0.1, 0.15, 0.2, 0.25, 0.2, 0.15, 0.1, 0.05, 0.1] 7 | }, 8 | "curve": "flat", 9 | "optimizer": "smooth", 10 | "filtercount": 10, 11 | "samplerate": 48000, 12 | "settings": 13 | { 14 | "qmax": 10, 15 | "mindb": -10, 16 | "maxdb": 3, 17 | "add_highpass": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/roomeq-optimize: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/roomeq.conf 3 | UUID=`cat /etc/uuid` 4 | 5 | if [ -f "$1" ]; then 6 | curl \ 7 | --header "Content-Type: application/json" \ 8 | --header "X-UUID: $UUID" \ 9 | --request POST \ 10 | --data "@$1" \ 11 | $ROOMEQURL/optimize 12 | else 13 | curl \ 14 | --header "Content-Type: application/json" \ 15 | --header "X-UUID: $UUID" \ 16 | --request POST \ 17 | --data "$1" \ 18 | $ROOMEQURL/optimize 19 | fi 20 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/roomeq-preset: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/roomeq.conf 3 | 4 | for i in "$@"; do 5 | case $i in 6 | --curves) 7 | curl $ROOMEQURL/curves 8 | exit 9 | ;; 10 | esac 11 | done 12 | 13 | 14 | curl $ROOMEQURL/presets 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/roomeq-range: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/roomeq.conf 3 | 4 | if [ -f "$1" ]; then 5 | curl \ 6 | --header "Content-Type: application/json" \ 7 | --request POST \ 8 | --data "@$1" \ 9 | $ROOMEQURL/frequency-range 10 | else 11 | curl \ 12 | --header "Content-Type: application/json" \ 13 | --request POST \ 14 | --data "$1" \ 15 | $ROOMEQURL/frequency-range 16 | fi 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/roomeq.conf: -------------------------------------------------------------------------------- 1 | ROOMEQURL=https://musicdb.hifiberry.com/roomeq 2 | 3 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/roomeq.md: -------------------------------------------------------------------------------- 1 | # Room equalisation tools 2 | 3 | ## Run measurement 4 | 5 | ## Get optimizer presets 6 | 7 | ## Run optimisation 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-measurements/testtone: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | play -n synth $1 sine 440 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/0001-pause.patch: -------------------------------------------------------------------------------- 1 | AlsaOutputPlugin.cxx: stop other players before accessing sound card 2 | 3 | Signed-off-by: HiFiBerry 4 | 5 | --- a/src/output/plugins/AlsaOutputPlugin.cxx.orig 6 | +++ b/src/output/plugins/AlsaOutputPlugin.cxx 7 | @@ -676,6 +676,9 @@ 8 | } 9 | } 10 | 11 | + FmtDebug(alsa_output_domain, "Stopping other processed using ALSA"); 12 | + system("/opt/hifiberry/bin/pause-all mpd"); 13 | + 14 | int err = snd_pcm_open(&pcm, GetDevice(), 15 | SND_PCM_STREAM_PLAYBACK, mode); 16 | if (err < 0) 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/mpd-update-notifier: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Notify Beocreate if MPD database has been changed 4 | while : 5 | do 6 | mpc idle database 7 | if [ "$?" != "0" ]; then 8 | sleep 10 9 | else 10 | echo "received database update, notifying UI" 11 | curl -X POST http://127.0.0.1/mpd/update 12 | fi 13 | done 14 | 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/mpd-update-notifier.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=mpd update notifier 3 | Wants=mpd.service 4 | After=mpd.service 5 | 6 | [Service] 7 | Type=simple 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting MPD update notifier" 9 | ExecStart=/opt/hifiberry/bin/mpd-update-notifier 10 | TimeoutStopSec=10 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/pause-state-file: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Modify MPD's state file to ensure current state is "pause" 3 | # From https://www.runeaudio.com/forum/mpd-starts-playing-after-boot-t182.html 4 | if [ -f /var/lib/mpd/state ]; then 5 | sed -i 's/^\(state: \).*/\1pause/' /var/lib/mpd/state 6 | fi 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/radio.md: -------------------------------------------------------------------------------- 1 | # Web radio URLs 2 | 3 | A good source for web radio M3U files is http://www.radio-browser.info/ 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/radio/bytefm.m3u: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXTINF:-1,ByteFM (192k) 3 | https://bytefm.cast.addradio.de/bytefm/main/high/stream 4 | 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/radio/dlf.m3u: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXTINF:-1,Deutschlandfunk 3 | http://st01.dlf.de/dlf/01/128/mp3/stream.mp3 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/radio/dlkkultur.m3u: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXTINF:-1,Deutschlandfunk Kultur [128 Mbps MP3] 3 | http://st02.dlf.de/dlf/02/128/mp3/stream.mp3 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/update-covers: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # extract images from covers 4 | python3 /usr/bin/getcovers.py -x /data/library/music && curl -X POST http://127.0.0.1/mpd/update/covers 5 | 6 | # If we're allowed to use external metadata, retrieve covers and artist pictures 7 | EXTERNALMD=`cat /etc/audiocontrol2.conf | grep external_metadata | awk -F= '{print $2}' | grep 1` 8 | if [ "$EXTERNALMD" != "" ]; then 9 | echo "Looking up images ..." 10 | /usr/bin/getalbums.py -x -c -a /data/library/music && curl -X POST http://127.0.0.1/mpd/update/covers 11 | fi 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-mpd/update-mpd-db: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ME=$0 3 | MYPID=$$ 4 | RUNNING=`ps -ef | grep $ME | grep -v $MYPID | grep -v grep` 5 | if [ "$RUNNING" != "" ]; then 6 | echo $RUNNING 7 | echo "already running, won't start again" 8 | exit 0 9 | fi 10 | 11 | /opt/hifiberry/bin/update-covers & 12 | 13 | # update mpd 14 | # mpc update 15 | 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-postgres/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_POSTGRES 2 | bool "hifiberry-postgres" 3 | help 4 | Start script and configuration files for PostgreSQL 5 | select BR2_PACKAGE_POSTGRESQL 6 | select BR2_PACKAGE_PYTHON_PSYCOPG2 7 | 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-postgres/create-hbdb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -f "/data/pgsql/hifiberry.ready" ]; then 3 | echo "HiFiBerry database already exists" 4 | exit 0 5 | fi 6 | 7 | psql -U postgres <'artist' as artist, 5 | songdata->'title' as title, 6 | songdata->'started' as from, 7 | songdata->'finished' as to, 8 | songdata->'loved' as loved, 9 | songdata->'releaseDate' as released, 10 | songdata->'mbid' as mbid, 11 | songdata->'albummbid' as album, 12 | songdata->'tags' as tags 13 | from scrobbles 14 | EOF 15 | 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-postgres/show-tags: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | psql -U hifiberry hifiberry <'tags') when 'array' then songdata->'tags' else '[]' end) tag 7 | from scrobbles 8 | group by tag 9 | order by count desc 10 | EOF 11 | 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_POWERCONTROLLER 2 | bool "hifiberry-powercontroller" 3 | help 4 | Support for the HiFiBerry power controller 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | select BR2_PACKAGE_I2C_TOOLS 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/hifiberry-finish.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry final 3 | After=hifiberry.target 4 | Before=psplash-quit.service 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/myip 9 | ExecStartPre=sleep 1 10 | ExecStart=/opt/hifiberry/bin/myurl 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/pc-shutdown.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Shutdown via power controller 3 | After=hifiberry.target 4 | 5 | [Service] 6 | Type=oneshot 7 | RemainAfterExit=true 8 | ExecStop=-/opt/hifiberry/bin/pc-write 1 1 # Pulsing LED 9 | ExecStartPre=-/opt/hifiberry/bin/pc-write 2 0x70 # R 10 | ExecStartPre=-/opt/hifiberry/bin/pc-write 3 0x0 # G 11 | ExecStart=-/opt/hifiberry/bin/pc-write 4 0x00 # B 12 | StandardOutput=journal 13 | 14 | [Install] 15 | WantedBy=multi-user.target 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/pc-startup-finish.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry startup 3 | After=hifiberry.target pc-startup.service 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStartPre=-/opt/hifiberry/bin/pc-write 1 0 # Static LED 8 | ExecStartPre=-/opt/hifiberry/bin/pc-write 2 0 # R 9 | ExecStartPre=-/opt/hifiberry/bin/pc-write 3 0x70 # G 10 | ExecStart=-/opt/hifiberry/bin/pc-write 4 0 # B 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/pc-startup.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry startup 3 | After=local-fs.target sysinit.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStartPre=/sbin/modprobe i2c_dev 8 | ExecStartPre=-/opt/hifiberry/bin/pc-write 1 1 # Pulsing LED 9 | ExecStartPre=-/opt/hifiberry/bin/pc-write 2 0 # R 10 | ExecStartPre=-/opt/hifiberry/bin/pc-write 3 0x70 # G 11 | ExecStart=-/opt/hifiberry/bin/pc-write 4 0 # B 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/pc-write: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | i2cset -y 1 0x77 $1 $2 3 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-powercontroller/write-firmware: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Make sure, serial port is configured correctly 4 | /opt/hifiberry/bin/enable-updi 5 | 6 | # Flash firmware 7 | i2cset -y -f 1 0x77 0x0e 0 # disable interrupt pin for programming 8 | systemctl stop audiocontrol2 9 | pyupdi -c /dev/ttyAMA0 -d mega808 -f /opt/hifiberry/powercontroller/firmware-r*.hex 10 | systemctl start audiocontrol2 11 | 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-psplash/black.png -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/fb0.rules: -------------------------------------------------------------------------------- 1 | SUBSYSTEM=="graphics", KERNEL=="fb0", TAG+="systemd" 2 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/hifiberryos-black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-psplash/hifiberryos-black.jpg -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/hifiberryos-logo-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-psplash/hifiberryos-logo-black.png -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/make-image-header.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | imageh=psplash-poky-img.h 6 | pic=hifiberryos-logo-black.png 7 | name=POKY_IMG 8 | gdk-pixbuf-csource --macros $pic > $imageh.tmp 9 | sed -e "s/MY_PIXBUF/${name}/g" -e "s/guint8/uint8/g" $imageh.tmp > $imageh && rm $imageh.tmp 10 | imageh=psplash-bar-img.h 11 | pic=black.png 12 | name=BAR_IMG 13 | gdk-pixbuf-csource --macros $pic > $imageh.tmp 14 | sed -e "s/MY_PIXBUF/${name}/g" -e "s/guint8/uint8/g" $imageh.tmp > $imageh && rm $imageh.tmp 15 | 16 | 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/psplash-quit.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Terminate Psplash Boot Screen 3 | ConditionPathExists=!/boot/nosplash 4 | ConditionPathExists=/dev/fb0 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStart=/usr/bin/psplash-write QUIT 9 | TimeoutSec=20 10 | TimeoutStopSec=2 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/psplash-start.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | 3 | Descriptihortn=Starts Psplash Boot screen 4 | DefaultDependencies=no 5 | ConditionPathExists=!/boot/nosplash 6 | After=fb0.device 7 | 8 | [Service] 9 | Type=oneshot 10 | ExecStart=/usr/bin/psplash -n 11 | RemainAfterExit=yes 12 | Restart=no 13 | TimeoutStopSec=2 14 | 15 | [Install] 16 | WantedBy=sysinit.target 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-psplash/psplash-start.vc4.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Starts Psplash Boot screen 3 | Wants=dev-dri-card0.device 4 | After=dev-dri-card0.device 5 | DefaultDependencies=no 6 | ConditionPathExists=!/boot/nosplash 7 | ConditionPathExists=/dev/fb0 8 | 9 | [Service] 10 | Type=oneshot 11 | ExecStart=/usr/bin/psplash 12 | RemainAfterExit=yes 13 | Restart=no 14 | TimeoutStopSec=2 15 | 16 | [Install] 17 | WantedBy=sysinit.target 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-shairport/dbus.conf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-shairport/shairport-sync.conf: -------------------------------------------------------------------------------- 1 | general = 2 | { 3 | name = "HiFiBerry" 4 | }; 5 | 6 | alsa = { 7 | mixer_control_name = "Master"; 8 | }; 9 | 10 | sessioncontrol = 11 | { 12 | run_this_before_play_begins = "/opt/hifiberry/bin/pause-all shairport"; 13 | wait_for_completion = "yes"; 14 | allow_session_interruption = "yes"; 15 | session_timeout = 20; 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-shairport/shairport-sync.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Shairport-sync 3 | Wants=network.target 4 | Requires=avahi-daemon.service 5 | After=network.target sound.target avahi-daemon.service nqptp.service 6 | Wants=nqptp.service 7 | 8 | [Service] 9 | Type=simple 10 | Environment=HOME=/root 11 | # Avahi daemon needs some time until fully ready 12 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting shairport-sync" 13 | ExecStartPre=/bin/sleep 3 14 | ExecStart=/bin/shairport-sync 15 | Restart=always 16 | RestartSec=5 17 | TimeoutStopSec=10 18 | 19 | [Install] 20 | WantedBy=multi-user.target 21 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/0001-pause.patch: -------------------------------------------------------------------------------- 1 | output_alsa.c: stop other players before accessing sound card 2 | 3 | Signed-off-by: HiFiBerry 4 | 5 | --- a/output_alsa.c 6 | +++ b/output_alsa.c 7 | @@ -335,6 +335,9 @@ static int alsa_open(const char *device, 8 | // close if already open 9 | if (pcmp) alsa_close(); 10 | 11 | + LOG_ERROR("pausing other players"); 12 | + system("/opt/hifiberry/bin/pause-all squeezelite"); 13 | + 14 | // reset params 15 | alsa.rate = 0; 16 | #if DSD 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_SQUEEZELITE 2 | bool "hifiberry-squeezelite" 3 | help 4 | Squeezelite adapted for HiFiBerryOS 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | depends on !BR2_PACKAGE_SQUEEZELITE 7 | select BR2_PACKAGE_ALSA_LIB 8 | select BR2_PACKAGE_ALSA_LIB_MIXER 9 | select BR2_PACKAGE_FAAD2 10 | select BR2_PACKAGE_LAME 11 | select BR2_PACKAGE_JQ 12 | select BR2_PACKAGE_MPG123 13 | 14 | comment "HiFiBerry squeezelite package can't be used together with buildroot squeezelite version, disable this first!" 15 | depends on BR2_PACKAGE_SQUEEZELITE 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/S99squeezelite: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | OPTIONS="-o softvol -M HiFiBerry -N /var/squeezelite/squeezelite.name -z" 4 | 5 | case "$1" in 6 | start) 7 | printf "Starting SqueezeLite: " 8 | start-stop-daemon -S -q --exec /usr/bin/squeezelite -- $OPTIONS 9 | [ $? = 0 ] && echo "OK" || echo "FAIL" 10 | ;; 11 | stop) 12 | printf "Stopping SqueezeLite: " 13 | start-stop-daemon -K -x /usr/bin/squeezelite 14 | [ $? = 0 ] && echo "OK" || echo "FAIL" 15 | ;; 16 | restart) 17 | $0 stop 18 | $0 start 19 | ;; 20 | *) 21 | echo "Usage: $0 {start|stop|restart}" 22 | exit 1 23 | ;; 24 | esac 25 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/squeezelite-start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/hifiberry.state 3 | 4 | ARGS="-o default -M HiFiBerry -N /var/squeezelite/squeezelite.name -a 10240:10240:24_3:0 -C 1 -r 192000" 5 | 6 | if [ -f /etc/squeezelite.json ]; then 7 | SERVER=`jq .server.value /etc/squeezelite.json | sed s/\"//g` 2>/dev/null 8 | if [ "$SERVER" != "" ]; then 9 | ARGS="$ARGS -s $SERVER" 10 | fi 11 | fi 12 | 13 | /bin/squeezelite $ARGS -V "$CURRENT_MIXER_CONTROL" 14 | 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/squeezelite.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Squeezelite 3 | Wants=network.target 4 | After=network.target sound.target spotify.service network-online.target 5 | Before=initial-volume.service 6 | 7 | [Service] 8 | Type=simple 9 | Environment=HOME=/root 10 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting squeezelite" 11 | ExecStartPre=/opt/hifiberry/bin/store-volume /tmp/sqvol store 12 | ExecStart=/bin/squeezelite-start 13 | ExecStartPost=sleep 2 14 | ExecStartPost=/opt/hifiberry/bin/restore-volume /tmp/sqvol 15 | StandardOutput=journal 16 | Restart=always 17 | RestartSec=5 18 | TimeoutStopSec=5 19 | 20 | [Install] 21 | WantedBy=multi-user.target 22 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-squeezelite/volume-control-name: -------------------------------------------------------------------------------- 1 | #/bin/sh 2 | # output the name of the ALSA volume control name 3 | . /etc/hifiberry.state 4 | echo $CURRENT_MIXER_CONTROL 5 | 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-systemd/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_SYSTEMD 2 | bool "systemd optimisations" 3 | help 4 | optimize some default systemd configurations 5 | depends on BR2_PACKAGE_SYSTEMD 6 | 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-systemd/autostart.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Run an autostart script 3 | After=hifiberry.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/opt/hifiberry/bin/autostart.sh 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-systemd/autostart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ -x /data/autostart.sh ]; then 3 | /data/autostart.sh 4 | fi 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-systemd/fix-ntp.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Disable DNSSEC for ntp.org 3 | Before=ntpd.service 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Fixing DNSSEC for ntp.org" 8 | ExecStart=/opt/hifiberry/bin/fix-ntp.sh 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-systemd/fix-ntp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Make sure not to use DNSSEC for NTP servers as we don't know the 3 | # correct time before contacting the NTP servers 4 | for i in `ls /sys/class/net | grep -v lo`; do 5 | resolvectl nta $i ntp.org 6 | done 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/S99testdacdspadc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Write profile to DSP DAC and play a test tone 4 | 5 | OUT=/dev/tty1 6 | 7 | case "$1" in 8 | start) 9 | echo "Reseting DSP" > $OUT 10 | gpio mode 0 out 11 | gpio write 0 0 12 | gpio write 0 1 13 | echo "Programming DSP profile" > $OUT 14 | dsptoolkit install-profile /opt/hifiberry/contrib/dacadcaddon-test.xml > $OUT 15 | echo "Playing test tone" > $OUT 16 | play -n synth 30 sine 1000 > $OUT 17 | echo "Done" > $OUT 18 | ;; 19 | stop) 20 | ;; 21 | restart) 22 | $0 stop 23 | $0 start 24 | ;; 25 | *) 26 | echo "Usage: $0 {start|stop|restart}" 27 | exit 1 28 | ;; 29 | esac 30 | 31 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/S99testdspaddon: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Write profile to DSP DAC and play a test tone 4 | 5 | OUT=/dev/tty1 6 | 7 | case "$1" in 8 | start) 9 | echo "Programming DSP profile" > $OUT 10 | dsptoolkit install-profile /opt/hifiberry/contrib/dspaddon.xml > $OUT 11 | echo "Testing EEPROM programming" > $OUT 12 | dsptoolkit check-eeprom > $OUT 13 | echo "Playing test tone" > $OUT 14 | play -n synth 30 sine 1000 > $OUT 15 | echo "Done" > $OUT 16 | ;; 17 | stop) 18 | ;; 19 | restart) 20 | $0 stop 21 | $0 start 22 | ;; 23 | *) 24 | echo "Usage: $0 {start|stop|restart}" 25 | exit 1 26 | ;; 27 | esac 28 | 29 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/S99testkaddsp: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Write simple test profile to KAD DSP and play test tone 4 | 5 | OUT=/dev/tty1 6 | 7 | case "$1" in 8 | start) 9 | echo "Reseting DSP" > $OUT 10 | gpio mode 0 out 11 | gpio write 0 0 12 | gpio write 0 1 13 | echo "Programming DSP profile" > $OUT 14 | dsptoolkit install-profile /opt/hifiberry/contrib/4output.xml > $OUT 15 | echo "Playing test tone" > $OUT 16 | play -n synth 120 sine 1000 > $OUT 17 | echo "Done" > $OUT 18 | ;; 19 | stop) 20 | ;; 21 | restart) 22 | $0 stop 23 | $0 start 24 | ;; 25 | *) 26 | echo "Usage: $0 {start|stop|restart}" 27 | exit 1 28 | ;; 29 | esac 30 | 31 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/S99testusb: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Write profile to DSP DAC and play a test tone 4 | 5 | OUT=/dev/tty1 6 | 7 | case "$1" in 8 | start) 9 | echo "Programming USB2I2S board" > $OUT 10 | /opt/hifiberry/bin/spi_flash -Fw /opt/hifiberry/bin/hbfw_usb2i2s_100.bin >$OUT 11 | if [ $? != 0 ]; then 12 | echo "Failed to program board" 13 | fi 14 | ;; 15 | stop) 16 | ;; 17 | restart) 18 | $0 stop 19 | $0 start 20 | ;; 21 | *) 22 | echo "Usage: $0 {start|stop|restart}" 23 | exit 1 24 | ;; 25 | esac 26 | 27 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/amp100.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/amp100.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/amp4.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/amp4.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/beocreate2.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/beocreate2.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dac2hd.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dac2hd.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dac2pro.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dac2pro.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dacplus.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dacplus.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dacplusadc.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dacplusadc.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dacplusadcpro.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dacplusadcpro.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/digi2pro.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/digi2pro.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/digi2standard.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/digi2standard.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/digiplus.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/digiplus.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/digipro.eep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/digipro.eep -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/dtoverlay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/dtoverlay -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/eepdump: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/eepdump -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/eeprom/eepmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/eeprom/eepmake -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/hbfw_usb2i2s_100.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/hbfw_usb2i2s_100.bin -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/hifiberry-dacplusadc.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/hifiberry-dacplusadc.dtbo -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/hifiberry-dacplusadcpro.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/hifiberry-dacplusadcpro.dtbo -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/hifiberry-dacplushd.dtbo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/hifiberry-dacplushd.dtbo -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/sine1k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/sine1k.wav -------------------------------------------------------------------------------- /buildroot/package/hifiberry-test/spi_flash: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-test/spi_flash -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_TOOLS 2 | bool "hifiberry-tools" 3 | help 4 | Several helper HiFiBerry helper tools 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | select BR2_PACKAGE_COREUTILS 7 | select BR2_PACKAGE_PYTHON3 8 | select BR2_PACKAGE_PYTHON_SPIDEV 9 | select BR2_SYSTEM_BIN_SH_BASH 10 | select BR2_PACKAGE_LINUX_TOOLS_PERF 11 | select BR2_PACKAGE_LINUX_TOOLS_PERF_TUI 12 | select BR2_PACKAGE_JQ 13 | select BR2_PACKAGE_RNG_TOOLS 14 | select BR2_PACKAGE_ZIP 15 | select BR2_PACKAGE_PROCPS_NG 16 | select BR2_PACKAGE_PYTHON_USAGEDATA 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/S60initial-volume: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | case "$1" in 4 | start) 5 | /opt/hifiberry/bin/initial-volume 6 | ;; 7 | stop) 8 | ;; 9 | restart) 10 | $0 stop 11 | $0 start 12 | ;; 13 | *) 14 | echo "Usage: $0 {start|stop|restart}" 15 | exit 1 16 | ;; 17 | esac 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/S99x-myip: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | case "$1" in 4 | start) 5 | MYIPS=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'` 6 | for ip in $MYIPS; do 7 | printf "Local IP: %s \n" $ip 8 | espeak -w /tmp/ip.wav $ip 9 | play /tmp/ip.wav 10 | rm /tmp/ip.wav 2>/dev/null 11 | done 12 | ;; 13 | stop) 14 | ;; 15 | restart) 16 | $0 stop 17 | $0 start 18 | ;; 19 | *) 20 | echo "Usage: $0 {start|stop|restart}" 21 | exit 1 22 | ;; 23 | esac 24 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/activate-data-partition.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Activate /data 3 | After=boot.mount local-fs.target systemd-remount-fs.service systemd-sysusers.service resize-partitions.service 4 | Before=mpd.service 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Enabling /data" 9 | ExecStart=/opt/hifiberry/bin/activate-data-partition 10 | StandardOutput=journal 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/alsa-state: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cat /proc/asound/card?/pcm?p/sub?/hw_params 3 | lsof /dev/snd/pcmC*D*p | grep -v COMMAND 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/bootmsg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DATE=`/bin/date` 4 | /usr/bin/test -f /bin/psplash-write && psplash-write "MSG $@" 5 | 6 | echo "$DATE $@" >> /tmp/boot.log 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/check-compatibility: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | . /etc/hifiberry.state 3 | HATINFO=`/opt/hifiberry/bin/readhat` 4 | if [ "$HATINFO" == "HiFiBerry:Digi2 Pro" ]; then 5 | DACDETECTED=`aplay -l | grep hifiberry_dac` 6 | if [ "$DACDETECTED" != "" ]; then 7 | MODEL=$(tr -d '\0' < /proc/device-tree/model) 8 | echo "Problem with Digi2 Pro on $MODEL" 9 | exit 10 | fi 11 | fi 12 | 13 | echo No known problems 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/check-daemons: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for i in shairport squeezelite spotifyd sigmatcpserver bluetoothd mpd raat_app; do 4 | PID=`ps -ef | grep $i | grep -v grep | awk '{print $1}'` 5 | echo $i: $PID 6 | done 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/configure-players.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Reconfigure players 3 | After=sound.target hifiberry-detect.service local-fs.target sigmatcp.service 4 | Before=shairport-sync.service squeezelite.service spotify.service mpd.service raat.service 5 | 6 | [Service] 7 | Type=oneshot 8 | Environment=HOME=/root 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Configuring players" 10 | ExecStart=/opt/hifiberry/bin/reconfigure-players 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/configure-system.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Reconfigure system 3 | After=boot.mount local-fs.target 4 | Before=network.target 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Configuring system" 9 | ExecStart=/opt/hifiberry/bin/configure-system 10 | StandardOutput=journal 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/enable-mdns: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ROOT=$1 3 | for conf in $ROOT/etc/systemd/network/*.network; do 4 | grep "MulticastDNS=resolve" $conf >/dev/null 5 | if [ "$?" != 0 ]; then 6 | cp $conf $conf.bak 7 | sed -i '/^\[Network\].*/a MulticastDNS=resolve' $conf 8 | fi 9 | done 10 | 11 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/fix-dacadcpro-mixer: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ADCPRO=`aplay -l | grep "snd_rpi_hifiberry_dacplusadcpro"` 3 | if [ "$ADCPRO" != "" ]; then 4 | amixer cset numid=21 24 5 | amixer cset numid=22 1 6 | amixer cset numid=23 1 7 | amixer cset numid=24 0 8 | amixer cset numid=25 24 9 | amixer cset numid=26 24 10 | amixer cset numid=27 1 11 | amixer cset numid=28 1 12 | fi 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/fix-unused-volume: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -f /tmp/fix-volume.done ]; then 3 | exit 4 | fi 5 | . /etc/hifiberry.state 6 | for MIXER in Softvol DSPVolume Digital "A.Mstr Vol"; do 7 | if [ "$CURRENT_MIXER_CONTROL" != "$MIXER" ]; then 8 | amixer -q sset "$MIXER" 100% 2>/dev/null 9 | fi 10 | done 11 | touch /tmp/fix-volume.done 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/hifiberry-cardid: -------------------------------------------------------------------------------- 1 | #/bin/sh 2 | # output the name of the ALSA volume control name 3 | . /etc/hifiberry.state 4 | echo $CURRENT_HW_SHORT 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/hifiberry-detect.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry detect 3 | Wants=dsptoolkit.service 4 | After=dsptoolkit.service local-fs.target 5 | 6 | [Service] 7 | Type=oneshot 8 | Environment=HOME=/root 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Detecting HiFiBerry sound card" 10 | ExecStart=/opt/hifiberry/bin/detect-hifiberry 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/hifiberry-finish.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry final 3 | After=hifiberry.target 4 | Before=psplash-quit.service 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/myip 9 | ExecStartPre=sleep 1 10 | ExecStart=/opt/hifiberry/bin/myurl 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/hifiberry.conf.sample: -------------------------------------------------------------------------------- 1 | SAMPLERATE=96000 2 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/hifiberry.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry target 3 | After=alsaloop.service bluealsa-aplay.service mpd.service raat.service shairport-sync.service spotify.service squeezelite.service audiocontrol2.service ympd.service beocreate2.service mpd-mpris.service 4 | Before=psplash-quit.service 5 | 6 | [Install] 7 | WantedBy=multi-user.target 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/initial-volume.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Set initial volume 3 | Wants=sound.target 4 | After=sound.target squeezelite.service 5 | 6 | [Service] 7 | Type=oneshot 8 | Environment=HOME=/root 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Setting initial volume" 10 | ExecStart=/opt/hifiberry/bin/set-initial-volume 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/journald.conf: -------------------------------------------------------------------------------- 1 | [Journal] 2 | Storage=volatile 3 | Compress=yes 4 | Seal=no 5 | SplitMode=none 6 | RateLimitIntervalSec=30s 7 | RateLimitBurst=1000 8 | # Do not use more than 10MB for logging 9 | RuntimeMaxUse=10000000 10 | RuntimeMaxFiles=100 11 | MaxLevelStore=debug 12 | LineMax=48K 13 | ReadKMsg=yes 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/myip.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=MyIP - say local IP 3 | Wants=network-online.target 4 | After=network.target network-online.target sound.target initial-volume.service 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Saying IP" 9 | ExecStart=/opt/hifiberry/bin/myip 10 | StandardOutput=journal 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/myurl: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IP=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1` 3 | 4 | if [ "$IP" == "" ]; then 5 | /opt/hifiberry/bin/bootmsg "No network connected, configure network using WiFi setup" 6 | else 7 | /opt/hifiberry/bin/bootmsg "Web interface ready at http://$IP" 8 | fi 9 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/reboot.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Reboot after configuration changes 3 | After=configure-players.service hifiberry-detect.service resize-partitions.service activate-data-partition.service 4 | Before=myip.service 5 | ConditionPathExists=/tmp/reboot 6 | ConditionPathExists=!/boot/noreboot 7 | 8 | [Service] 9 | Type=oneshot 10 | StandardOutput=append:/var/log/reboot.log 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Rebooting" 12 | ExecStartPre=/bin/date 13 | ExecStartPre=cat /tmp/reboot 14 | ExecStartPre=/bin/sync 15 | ExecStart=/bin/systemctl reboot 16 | StandardOutput=journal 17 | 18 | 19 | [Install] 20 | WantedBy=multi-user.target 21 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/reset-amp100: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Reset Amp100 3 | echo 17 >/sys/class/gpio/export 4 | echo 4 >/sys/class/gpio/export 5 | echo out >/sys/class/gpio/gpio17/direction 6 | echo out >/sys/class/gpio/gpio4/direction 7 | # Mute 8 | echo 1 >/sys/class/gpio/gpio4/value 9 | # Reset 10 | echo 0 >/sys/class/gpio/gpio17/value 11 | echo 1 >/sys/class/gpio/gpio17/value 12 | # Unmute 13 | echo 0 >/sys/class/gpio/gpio4/value 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/reset-system: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | rm /library/mpd 3 | rm /etc/hifiberry.state 4 | 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/resize-partitions.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Resize file systems 3 | After=systemd-fsck@.service boot.mount systemd-remount-fs.service systemd-sysusers.service 4 | Before=network.target 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Resizing partitions" 9 | ExecStart=/opt/hifiberry/bin/resize-partitions 10 | StandardOutput=journal 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/restore-config: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | BACKUPDIR=/boot/configs 3 | 4 | if [ "$1" == "" ]; then 5 | DSTDIR=/ 6 | else 7 | DSTDIR=$1 8 | fi 9 | 10 | for i in `cat /opt/hifiberry/etc/config-files`; do 11 | if [ -f $BACKUPDIR/$i ]; then 12 | echo "Restoring $i" 13 | DIR=`dirname $DSTDIR/$i` 14 | if [ ! -d $DIR ]; then 15 | mkdir -p $DIR 16 | fi 17 | cp $BACKUPDIR/$i $DSTDIR/$i 18 | fi 19 | done 20 | 21 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/restore-volume.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Restore volume 3 | Wants=sound.target 4 | After=sound.target squeezelite.service sigmatcpserver.service 5 | Before=roon.service mpd.service spotifyd.service 6 | ConditionPathExists=/etc/alsactl.store 7 | 8 | [Service] 9 | Type=oneshot 10 | Environment=HOME=/root 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Restoring volume" 12 | ExecStart=/opt/hifiberry/bin/restore-volume 13 | StandardOutput=journal 14 | 15 | [Install] 16 | WantedBy=multi-user.target 17 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/save-config: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | BACKUPDIR=/boot/configs 3 | 4 | for i in `cat /opt/hifiberry/etc/config-files`; do 5 | if [ -f $i ]; then 6 | DIR=`dirname $i` 7 | cd $DIR 8 | if [ ! -d $BACKUPDIR/$DIR ]; then 9 | mkdir -p $BACKUPDIR/$DIR 10 | fi 11 | echo "Storing $i" 12 | cp $i $BACKUPDIR/$DIR 13 | fi 14 | done 15 | 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/set-host-ip: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IP=$2 4 | HOST=$1 5 | if [ "$HOST" == "" ]; then 6 | echo "start with $0 hostname ip" 7 | exit 1 8 | fi 9 | 10 | [[ $IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] && MATCH=1 11 | if [ "$MATCH" != "1" ]; then 12 | echo "start with $0 hostname ip" 13 | exit 1 14 | fi 15 | 16 | grep "$IP $HOST" /etc/hosts >/dev/null 17 | if [ "$?" == "0" ]; then 18 | # entry already exists 19 | exit 0 20 | fi 21 | 22 | cat /etc/hosts | grep -v ^$IP > /tmp/hosts 23 | echo "$IP $HOST" >> /tmp/hosts 24 | mv /tmp/hosts /etc/hosts 25 | 26 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/shutdown-system: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # System shutdown including turnoff using the HiFiBerry power controller 3 | 4 | i2cset -y -f 1 0x77 0x09 20 2>/dev/null >/dev/null # power off timer 5 | 6 | /usr/sbin/shutdown -h now 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/snd_soc_core_disable_pm.conf: -------------------------------------------------------------------------------- 1 | options snd_soc_core pmdown_time=-1 2 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/sshdconfig: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ -f /boot/ssh ]; then 3 | systemctl enable sshd 4 | mv /boot/ssh /boot/ssh.bak 5 | fi 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/sshdconfig.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=sshd config 3 | Before=sshd.service 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/opt/hifiberry/bin/sshdconfig 8 | StandardOutput=journal 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/stop-all-players: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for p in shairport-sync spotify mpd bluealsa bluealsa-aplay squeezelite raat alsaloop; do 3 | systemctl stop $p 4 | done 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/store-volume.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Store volume 3 | Wants=sound.target 4 | After=sound.target 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStart=-/opt/hifiberry/bin/fix-unused-volume 9 | ExecStart=/opt/hifiberry/bin/store-volume 10 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/store-volume.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Store volume 3 | 4 | [Timer] 5 | OnBootSec=1min 6 | OnUnitActiveSec=1min 7 | Unit=store-volume.service 8 | 9 | [Install] 10 | WantedBy=timers.target 11 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-tools/unmute-amp100: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | pigs w 4 0 3 | pigs w 17 0 4 | pigs w 17 1 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_UPDATER 2 | bool "hifiberry-updater" 3 | help 4 | "Update tools for HiFiBerryOS" 5 | depends on BR2_PACKAGE_RPI_FIRMWARE 6 | depends on BR2_PACKAGE_HIFIBERRY_BASE 7 | select BR2_PACKAGE_E2FSPROGS 8 | select BR2_PACKAGE_E2FSPROGS_RESIZE2FS 9 | select BR2_PACKAGE_LIBCURL 10 | select BR2_PACKAGE_LIBCURL_CURL 11 | select BR2_PACKAGE_PARTED 12 | select BR2_PACKAGE_F2FS_TOOLS 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/backup-config: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$1" == "" ]; then 3 | echo "backup file name missing" 4 | exit 1 5 | fi 6 | cd / 7 | tar --ignore-failed-read -cvz -f $1 -T /opt/hifiberry/etc/config-files 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/partitions: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ACTIVE=`mount | grep " / " | awk '{print $1}'` 4 | if [ "$ACTIVE" == "/dev/mmcblk0p2" ]; then 5 | INACTIVE="/dev/mmcblk0p3" 6 | else 7 | INACTIVE="/dev/mmcblk0p2" 8 | fi 9 | 10 | echo $ACTIVE $INACTIVE 11 | 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/restore-config: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$1" == "" ]; then 3 | echo "backup file name missing" 4 | exit 1 5 | fi 6 | cd / 7 | tar -xvz -f $1 8 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/services: -------------------------------------------------------------------------------- 1 | mpd.service 2 | raat.service 3 | bluealsa-aplay.service 4 | bluealsa.service 5 | mpd-mpris.service 6 | ympd.service 7 | a2dp-agent.service 8 | mpris-proxy.service 9 | spotify.service 10 | shairport-sync.service 11 | lmsmpris.service 12 | squeezelite.service 13 | sshd.service 14 | snapcastmpris.service 15 | watchdog.service 16 | dlnampris.service 17 | alsaloop.service 18 | weston.service 19 | cog.service 20 | spdifclockgen.service 21 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/update-firmware: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mount -o remount,rw /boot 3 | cp -rv /usr/lib/firmware/rpi/* /boot 4 | sync 5 | reboot 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/updater.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Install updates 3 | After=network-online.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/opt/hifiberry/bin/update 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-updater/updater.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Install upgrades 3 | 4 | [Timer] 5 | OnCalendar=03:00 6 | Unit=updater.service 7 | 8 | [Install] 9 | WantedBy=timers.target 10 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_UPMPDCLI 2 | bool "hifiberry-upmpdcli" 3 | help 4 | UPnP (DLNA) media renderer based on mpd 5 | select BR2_PACKAGE_LIBOPENSSL_BIN 6 | select BR2_PACKAGE_UPMPDCLI 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/description.xml: -------------------------------------------------------------------------------- 1 | urn:schemas-upnp-org:device:MediaRenderer:1 2 | @FRIENDLYNAME@ 3 | HiFiBerry 4 | https://www.hifiberry.com 5 | HiFiBerryOS 6 | HiFiBerryOS 7 | 1 8 | https://www.hifiberry.com/os 9 | @UPMPDCLIVERSION@ 10 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/forward.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/openhome-room: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CONF=/etc/upmpdcli.conf 3 | if [ "$1" == "" ]; then 4 | # Just display the setting 5 | cat /etc/upmpdcli.conf | grep ohproductroom | awk -F= '{print $2}' | xargs echo 6 | else 7 | ROOM_SED_SPACES=`echo $1 | sed 's/\ /\\\\\\ /g'` 8 | sed -i "s/ohproductroom.*/ohproductroom\ =\ $ROOM_SED_SPACES/" $CONF 9 | systemctl restart upmpdcli 1>/dev/null 2>/dev/null 10 | echo $1 11 | fi 12 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/upmpdcli-user: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if the upmpdcli user exists, otherwise create it 4 | id upmpdcli 2>/dev/null 1>/dev/null 5 | if [ "$?" == "0" ]; then 6 | exit 7 | fi 8 | 9 | # User does not exist, create it 10 | echo "upmpdcli:x:6000:6000:upnpcli:/:/bin/bash" >> /etc/passwd 11 | echo "upmpdcli:*:::::::" >> /etc/shadow 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-upmpdcli/upmpdcli.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=upmpdcli 3 | Wants=mpd.service 4 | After=mpd.service 5 | 6 | [Service] 7 | Type=simple 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting UPNP" 9 | ExecStartPre=/opt/hifiberry/bin/upmpdcli-user 10 | ExecStart=/bin/upmpdcli -c /etc/upmpdcli.conf 11 | StandardOutput=journal 12 | Restart=always 13 | RestartSec=20 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-users/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_USERS 2 | bool "hifiberry-users" 3 | help 4 | Creates the users required by some other packages 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | 7 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-users/hifiberry-users.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # hifiberry-users 4 | # 5 | ################################################################################ 6 | 7 | # based on the original mpd package but with additional patches 8 | 9 | define HIFIBERRY_USERS_USERS 10 | audio 2001 audio 2001 * - - - Audio hardware 11 | player 2002 player 2002 * - - - Music players 12 | endef 13 | 14 | 15 | $(eval $(generic-package)) 16 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-users/sysgroups.txt: -------------------------------------------------------------------------------- 1 | audio:2001 2 | player:2002 3 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-users/sysusers.txt: -------------------------------------------------------------------------------- 1 | audio:2001 2 | player:2002 3 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-watchdog/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_WATCHDOG 2 | bool "hifiberry-watchdog" 3 | help 4 | Simple watchdog daemon that will reset the system when it hangs 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-watchdog/watchdog.conf: -------------------------------------------------------------------------------- 1 | #[watcher:watchers.internet.Internet] 2 | #servers=google.com,facebook.com,alibaba.com 3 | #max_fails=3 4 | #test_interval=600 5 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-watchdog/watchdog.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=HiFiBerry watchdog 3 | After=network.target 4 | ConditionPathExists=!/boot/no_watchdog 5 | 6 | [Service] 7 | Type=simple 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting watchdog" 9 | WorkingDirectory=/opt/watchdog 10 | ExecStart=/bin/python /opt/watchdog/watchdog.py 11 | StandardOutput=journal 12 | Restart=always 13 | RestartSec=5 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-watchdog/watchdog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd /opt/watchdog 3 | /bin/python /opt/watchdog/watchdog.py $1 4 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-weston/enable-vc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | mount -o remount,rw /boot 3 | cat /boot/config.txt | grep -v "dtoverlay=vc4" > /tmp/config.txt 4 | 5 | PI4=`cat /proc/device-tree/model | grep "Pi 4"` 6 | if [ "$PI4" == "" ]; then 7 | # Pi 3 8 | echo "dtoverlay=vc4-kms-v3d,audio=off" >> /tmp/config.txt 9 | else 10 | # Pi 4 11 | echo "dtoverlay=vc4-fkms-v3d,audio=off" >> /tmp/config.txt 12 | fi 13 | mv /tmp/config.txt /boot/config.txt 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-weston/weston.ini: -------------------------------------------------------------------------------- 1 | [core] 2 | idle-time=0 3 | require-input=false 4 | 5 | [shell] 6 | 7 | locking=false 8 | panel-location="" 9 | panel-position="" 10 | background-color=0xff000000 11 | panel-color=0xff000000 12 | 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-ympd/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_HIFIBERRY_YMPD 2 | bool "hifiberry-ympd" 3 | help 4 | "ympd MPD web interface" 5 | select BR2_PACKAGE_YMPD 6 | -------------------------------------------------------------------------------- /buildroot/package/hifiberry-ympd/ympd-bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/hifiberry-ympd/ympd-bin -------------------------------------------------------------------------------- /buildroot/package/hifiberry-ympd/ympd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=ympd MPD web interface 3 | 4 | [Service] 5 | Type=simple 6 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting MPD web interface" 7 | ExecStart=/usr/bin/ympd -w "[::]:9999" 8 | StandardOutput=journal 9 | Restart=always 10 | RestartSec=5 11 | TimeoutStopSec=10 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | 16 | -------------------------------------------------------------------------------- /buildroot/package/ir-remote/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_IR_REMOTE 2 | bool "IR Remote" 3 | help 4 | "Control HiFiBerryOS using an IR remote control" 5 | depends on BR2_PACKAGE_CONFIGTXT 6 | depends on BR2_PACKAGE_COPY_OVERLAYS 7 | depends on BR2_PACKAGE_HIFIBERRY_UPDATER 8 | select BR2_PACKAGE_LIBV4L 9 | select BR2_PACKAGE_LIBV4L_UTILS -------------------------------------------------------------------------------- /buildroot/package/ir-remote/ir.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Setup ir-keytable 3 | After=hifiberry.target 4 | ConditionPathExists=/etc/features/ir 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStart=/usr/bin/ir-keytable --write=/etc/rc_keymaps/keymap.toml -c 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /buildroot/package/ir-remote/keymap.toml: -------------------------------------------------------------------------------- 1 | [[protocols]] 2 | name = "rc6_0" 3 | protocol = "rc6" 4 | variant = "rc6_0" 5 | [protocols.scancodes] 6 | 0x0d = "KEY_MUTE" 7 | 0x10 = "KEY_VOLUMEUP" 8 | 0x11 = "KEY_VOLUMEDOWN" -------------------------------------------------------------------------------- /buildroot/package/librespot/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_LIBRESPOT 2 | bool "librespot" 3 | help 4 | An open source Spotify player 5 | select BR2_PACKAGE_HOST_CARGO 6 | select BR2_PACKAGE_HOST_RUSTC 7 | -------------------------------------------------------------------------------- /buildroot/package/lmsmpris/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_LMSMPRIS 2 | bool "lmsmpris" 3 | help 4 | "MPRIS interface for LMS" 5 | select BR2_PACKAGE_DBUS 6 | select BR2_PACKAGE_DBUS_PYTHON 7 | select BR2_PACKAGE_PYTHON_NETIFACES 8 | -------------------------------------------------------------------------------- /buildroot/package/lmsmpris/lmsmpris.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=LMS MPRIS 3 | Wants=dbus.service 4 | After=network-online.target dbus.service 5 | 6 | [Service] 7 | Type=simple 8 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 9 | WorkingDirectory=/opt/lmsmpris 10 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting LMS control interface" 11 | ExecStart=/usr/bin/python3 /opt/lmsmpris/lmsmpris.py 12 | StandardOutput=journal 13 | Restart=always 14 | RestartSec=5 15 | TimeoutStopSec=10 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-alsamixer/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_ALSAMIXER 2 | bool "mopidy-alsamixer" 3 | help 4 | Mopidy - ALSA mixer support 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-alsamixer/mopidy-alsamixer.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-alsamixer 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_ALSAMIXER_VERSION = 2.0.0 8 | MOPIDY_ALSAMIXER_SOURCE = Mopidy-ALSAMixer-$(MOPIDY_ALSAMIXER_VERSION).tar.gz 9 | MOPIDY_ALSAMIXER_SITE = https://files.pythonhosted.org/packages/b9/66/e43534c100f48f0779191d3e7819e909ce39eff7f8eba71dc218897131fc 10 | MOPIDY_ALSAMIXER_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-gmusic/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_GMUSIC 2 | bool "mopidy-gmusic" 3 | help 4 | Mopidy - Google Play Music 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | select BR2_PACKAGE_PYTHON_GMUSICAPI 9 | select BR2_PACKAGE_PYTHON_OAUTH2CLIEN 10 | select BR2_PACKAGE_PYTHON_VALIDICTOR 11 | select BR2_PACKAGE_PYTHON_GPSOAUTH 12 | select BR2_PACKAGE_PYTHON_MECHANICALSOUP 13 | select BR2_PACKAGE_PYTHON_APPDIR 14 | select BR2_PACKAGE_PYTHON_MOCK 15 | 16 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-gmusic/mopidy-gmusic.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-gmusic 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_GMUSIC_VERSION = 4.0.0 8 | MOPIDY_GMUSIC_SOURCE = Mopidy-GMusic-$(MOPIDY_GMUSIC_VERSION).tar.gz 9 | MOPIDY_GMUSIC_SITE = https://files.pythonhosted.org/packages/d2/37/5cd9874a21bf06db747fd7264dc07938c1e1ccf9b80ec68a2ef6e8350c64 10 | MOPIDY_GMUSIC_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-iris/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_IRIS 2 | bool "mopidy-iris" 3 | help 4 | Mopidy - IRIS web interface 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-iris/mopidy-iris.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-iris 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_IRIS_VERSION = 3.46.0 8 | MOPIDY_IRIS_SOURCE = Mopidy-Iris-$(MOPIDY_IRIS_VERSION).tar.gz 9 | MOPIDY_IRIS_SITE = https://files.pythonhosted.org/packages/b5/ff/8fa5998d619e0d97b813fde7d35f33454c558e5e3bf2f5a484a96554546b 10 | MOPIDY_IRIS_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-local/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_LOCAL 2 | bool "mopidy-local" 3 | help 4 | Mopidy - support for local library 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | select BR2_PACKAGE_PYTHON3_SQLITE 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-local/mopidy-local.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-local 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_LOCAL_VERSION = 3.1.1 8 | MOPIDY_LOCAL_SOURCE = Mopidy-Local-$(MOPIDY_LOCAL_VERSION).tar.gz 9 | MOPIDY_LOCAL_SITE = https://files.pythonhosted.org/packages/03/a9/650dfbd029d38ff38b8bd1c8516ae91272a800f60d1289746cd070ba7b01 10 | MOPIDY_LOCAL_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-mpd/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_MPD 2 | bool "mopidy-mpd" 3 | help 4 | Mopidy - MPD interface 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-mpd/mopidy-mpd.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-mpd 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_MPD_VERSION = 3.0.0 8 | MOPIDY_MPD_SOURCE = Mopidy-MPD-$(MOPIDY_MPD_VERSION).tar.gz 9 | MOPIDY_MPD_SITE = https://files.pythonhosted.org/packages/10/a1/af1f72d84b07fbc9353b5c4a37540b59ee5072fcc2f1791f81386046f1f9 10 | MOPIDY_MPD_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-mpris/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_MPRIS 2 | bool "mopidy-mpris" 3 | help 4 | Mopidy - MPRIS support 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | select BR2_PACKAGE_PYTHON_PYDBUS 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-mpris/mopidy-mpris.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-mpris 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_MPRIS_VERSION = 3.0.1 8 | MOPIDY_MPRIS_SOURCE = Mopidy-MPRIS-$(MOPIDY_MPRIS_VERSION).tar.gz 9 | MOPIDY_MPRIS_SITE = https://files.pythonhosted.org/packages/d8/1d/61871437a27eb06ddf8b5ca38854dcbb15d219aab7015876ce3f1ecf9756 10 | MOPIDY_MPRIS_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-musicbox-webclient/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_MUSICBOX_WEBCLIENT 2 | bool "mopidy-musicbox-webclient" 3 | help 4 | Mopidy - Musicbox web client 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-musicbox-webclient/mopidy-musicbox-webclient.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-musicbox-webclient 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_MUSICBOX_WEBCLIENT_VERSION = 3.0.1 8 | MOPIDY_MUSICBOX_WEBCLIENT_SOURCE = Mopidy-MusicBox-Webclient-$(MOPIDY_MUSICBOX_WEBCLIENT_VERSION).tar.gz 9 | MOPIDY_MUSICBOX_WEBCLIENT_SITE = https://files.pythonhosted.org/packages/90/b9/ffdbb35edcaeb7b957a0bf0c19134e4da7eec12826596761180fdfda2461 10 | MOPIDY_MUSICBOX_WEBCLIENT_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-radionet/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_RADIONET 2 | bool "mopidy-radionet" 3 | help 4 | Mopidy - Radionet 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | select BR2_PACKAGE_PYTHON_URITOOLS 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-radionet/mopidy-radionet.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-radionet 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_RADIONET_VERSION = 0.2.0 8 | MOPIDY_RADIONET_SOURCE = Mopidy-RadioNet-$(MOPIDY_RADIONET_VERSION).tar.gz 9 | MOPIDY_RADIONET_SITE = https://files.pythonhosted.org/packages/40/d5/f86c9fb527bebacf48658dd94360a5934cd412ac4e7e38b6bbc62969ea99 10 | MOPIDY_RADIONET_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-soundcloud/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_SOUNDCLOUD 2 | bool "mopidy-soundcloud" 3 | help 4 | Mopidy - Soundcloud 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-soundcloud/mopidy-soundcloud.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-soundcloud 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_SOUNDCLOUD_VERSION = 3.0.0 8 | MOPIDY_SOUNDCLOUD_SOURCE = Mopidy-SoundCloud-$(MOPIDY_SOUNDCLOUD_VERSION).tar.gz 9 | MOPIDY_SOUNDCLOUD_SITE = https://files.pythonhosted.org/packages/83/55/58ddb9770ed9bd0fcf765a486f15261d78265562bf208f9dc3f5dab55166 10 | MOPIDY_SOUNDCLOUD_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-youtube/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY_YOUTUBE 2 | bool "mopidy-youtube" 3 | help 4 | Mopidy - Youtube 5 | 6 | https://mopidy.com/ 7 | depends on BR2_PACKAGE_MOPIDY 8 | select BR2_PACKAGE_PYTHON_YOUTUBE_DL 9 | select BR2_PACKAGE_PYTHON_URITOOL 10 | select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 11 | select BR2_PACKAGE_PYTHON_CACHETOOLS 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy-youtube/mopidy-youtube.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # mopidy-youtube 4 | # 5 | ################################################################################ 6 | 7 | MOPIDY_YOUTUBE_VERSION = 3.0 8 | MOPIDY_YOUTUBE_SOURCE = Mopidy-YouTube-$(MOPIDY_YOUTUBE_VERSION).tar.gz 9 | MOPIDY_YOUTUBE_SITE = https://files.pythonhosted.org/packages/98/f4/d9278e742ea2792431cd7d94d55094d9f87324e018185532e3da570cde98 10 | MOPIDY_YOUTUBE_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/mopidy/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MOPIDY 2 | bool "mopidy" 3 | help 4 | Mopidy music server 5 | 6 | https://mopidy.com/ 7 | select BR2_PACKAGE_USBMOUNT 8 | select BR2_PACKAGE_PYTHON_PYKKA 9 | select BR2_PACKAGE_PYTHON_URITOOLS 10 | -------------------------------------------------------------------------------- /buildroot/package/mopidy/mopidy.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Mopidy 3 | Wants=network.target 4 | Requires=avahi-daemon.service 5 | After=network.target sound.target avahi-daemon.service 6 | 7 | [Service] 8 | Type=simple 9 | Environment=HOME=/root 10 | # Avahi daemon needs some time until fully ready 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting mopidy" 12 | ExecStartPre=/bin/sleep 3 13 | ExecStart=/bin/mopidy --config /etc/mopidy.conf 14 | Restart=always 15 | RestartSec=5 16 | TimeoutStopSec=10 17 | 18 | [Install] 19 | WantedBy=multi-user.target 20 | -------------------------------------------------------------------------------- /buildroot/package/mpd-mpris/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MPD_MPRIS 2 | bool "mpd-mpris" 3 | help 4 | MPRIS interface for mpd 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | depends on BR2_PACKAGE_HIFIBERRY_MPD 7 | -------------------------------------------------------------------------------- /buildroot/package/mpd-mpris/mpd-mpris.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=MPD MPRIS interface 3 | Wants=network.target 4 | 5 | [Service] 6 | Type=simple 7 | Environment=HOME=/var/lib/hifiberry 8 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 9 | # MPD needs some time to start 10 | ExecStartPre=sleep 5 11 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting MPD control interface" 12 | ExecStart=/usr/bin/mpd-mpris -no-instance 13 | Restart=always 14 | RestartSec=5 15 | TimeoutStopSec=10 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | 20 | -------------------------------------------------------------------------------- /buildroot/package/mpris-proxy/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MPRIS_PROXY 2 | bool "mpris-proxy" 3 | help 4 | MPRIS control for Bluetooth 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | select BR2_PACKAGE_HIFIBERRY_BLUEZALSA 7 | -------------------------------------------------------------------------------- /buildroot/package/mpris-proxy/mpris-proxy.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Bluetooth MPRIS proxy 3 | Wants=network-online.target 4 | After=dbus.target bluealsa.service 5 | 6 | [Service] 7 | Type=simple 8 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting Bluetooth audio control interface" 10 | ExecStart=/bin/mpris-proxy 11 | StandardOutput=journal 12 | Restart=always 13 | RestartSec=5 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | 19 | -------------------------------------------------------------------------------- /buildroot/package/musicfiletools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_MUSICFILETOOLS 2 | bool "musicfiletools" 3 | help 4 | A collection of tools to work with music files 5 | depends on BR2_PACKAGE_PYTHON3 6 | select BR2_PACKAGE_PYTHON_MUTAGEN 7 | -------------------------------------------------------------------------------- /buildroot/package/musicfiletools/musicfiletools.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # musicfiletools 4 | # 5 | ################################################################################ 6 | 7 | MUSICFILETOOLS_VERSION = 905b5af0fb822403d0249f5454bc431cd60f573a 8 | MUSICFILETOOLS_SITE = $(call github,hifiberry,musicfiletools,$(MUSICFILETOOLS_VERSION)) 9 | MUSICFILETOOLS_SETUP_TYPE = setuptools 10 | MUSICFILETOOLS_LICENSE = MIT 11 | MUSICFILETOOLS_LICENSE_FILES = LICENSE.md 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/nqptp/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_NQPTP 2 | bool "nqptp" 3 | help 4 | NQPTP deamon (required for Airplay2) 5 | -------------------------------------------------------------------------------- /buildroot/package/nqptp/nqptp.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # nqptp 4 | # 5 | ################################################################################ 6 | 7 | NQPTP_VERSION = 57fc7ac20ffd7a04ea5fbed6417e4c658bb7eb68 8 | NQPTP_SITE = $(call github,mikebrady,nqptp,$(NQPTP_VERSION)) 9 | 10 | # git clone, no configure 11 | NQPTP_AUTORECONF = YES 12 | 13 | define NQPTP_INSTALL_INIT_SYSTEMD 14 | $(INSTALL) -D -m 0644 $(BR2_EXTERNAL_HIFIBERRY_PATH)/package/nqptp/nqptp.service \ 15 | $(TARGET_DIR)/usr/lib/systemd/system/nqptp.service 16 | endef 17 | 18 | $(eval $(autotools-package)) 19 | -------------------------------------------------------------------------------- /buildroot/package/nqptp/nqptp.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=nqptp 3 | Wants=network.target 4 | Requires=avahi-daemon.service 5 | After=network.target sound.target avahi-daemon.service 6 | 7 | [Service] 8 | Type=simple 9 | Environment=HOME=/root 10 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting nqptp" 11 | ExecStart=/bin/nqptp 12 | Restart=always 13 | RestartSec=5 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /buildroot/package/pigpiod-systemd/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PIGPIOD_SYSTEMD 2 | bool "pigpiod-systemd" 3 | help 4 | "GPIOd systemd integration" 5 | select BR2_PACKAGE_LIBGPIOD 6 | select BR2_PACKAGE_LIBGPIOD_TOOLS 7 | -------------------------------------------------------------------------------- /buildroot/package/pigpiod-systemd/pigpiod.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=PiGPIOd 3 | Before=audiocontrol2.service beocreate2.service 4 | ConditionPathExists=!/boot/nopigpiod 5 | 6 | [Service] 7 | Type=simple 8 | ExecStart=/opt/hifiberry/bin/start-pigpiod 9 | StandardOutput=journal 10 | Restart=always 11 | RestartSec=5 12 | TimeoutStopSec=10 13 | 14 | [Install] 15 | WantedBy=multi-user.target 16 | -------------------------------------------------------------------------------- /buildroot/package/pigpiod-systemd/start-pigpiod: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PIVERSION=`cat /etc/hifiberry.state | grep PIVERSION | awk -F= '{print $2}'` 4 | if [ "$PIVERSION" == "4" ]; then 5 | # Use different DMA channels on Pi 4 to make sure there are no conflicts with I2S and SPI 6 | /bin/pigpiod -t 0 -g -x 0xFC3FFFC -d 11 -e 10 7 | else 8 | # On older Pi's no DMA tuning is needed, defaults are fine 9 | /bin/pigpiod -t 0 -g -x 0xFC3FFFC 10 | fi 11 | -------------------------------------------------------------------------------- /buildroot/package/piversion/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PIVERSION 2 | bool "Pi Version" 3 | help 4 | "defines what Pi this is coimpiled for" 5 | 6 | 7 | choice 8 | prompt "Pi version" 9 | config BR2_PACKAGE_PIVERSION_0w 10 | bool "Pi 0w" 11 | config BR2_PACKAGE_PIVERSION_2 12 | bool "Pi 2" 13 | config BR2_PACKAGE_PIVERSION_3 14 | bool "Pi 3" 15 | config BR2_PACKAGE_PIVERSION_4 16 | bool "Pi 4" 17 | config BR2_PACKAGE_PIVERSION_0_2 18 | bool "Pi Zero 2w" 19 | endchoice 20 | -------------------------------------------------------------------------------- /buildroot/package/plexamp/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PLEXAMP 2 | bool "plexamp" 3 | help 4 | PlexAmp is a headless audio player that acts as a player 5 | for a Plex Media Server 6 | 7 | depends on BR2_PACKAGE_BEOCREATE 8 | -------------------------------------------------------------------------------- /buildroot/package/plexamp/extensions.conf: -------------------------------------------------------------------------------- 1 | 2 | [plexamp] 3 | repository=https://github.com/hifiberry/extension_plexamp 4 | branch=master 5 | -------------------------------------------------------------------------------- /buildroot/package/plexamp/plexamp.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # plexamp 4 | # 5 | ################################################################################ 6 | 7 | PLEXAMP_DEPENDENCIES = beocreate 8 | 9 | define PLEXAMP_INSTALL_TARGET_CMDS 10 | if [ -d $(TARGET_DIR)/opt/beocreate/beo-extensions/plexamp ]; then \ 11 | rm -rf $(TARGET_DIR)/opt/beocreate/beo-extensions/plexamp; \ 12 | fi 13 | cat $(BR2_EXTERNAL_HIFIBERRY_PATH)/package/plexamp/extensions.conf \ 14 | >> $(TARGET_DIR)/etc/extensions.conf 15 | endef 16 | 17 | $(eval $(generic-package)) 18 | -------------------------------------------------------------------------------- /buildroot/package/python-bottle-websocket/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_BOTTLE_WEBSOCKET 2 | bool "python-bottle-websocket" 3 | select BR2_PACKAGE_PYTHON_BOTTLE # runtime 4 | select BR2_PACKAGE_PYTHON_GEVENT_WEBSOCKET # runtime 5 | help 6 | WebSockets for bottle. 7 | 8 | https://github.com/zeekay/bottle-websocket 9 | -------------------------------------------------------------------------------- /buildroot/package/python-bottle-websocket/python-bottle-websocket.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/bottle-websocket/json 2 | md5 a66a85716b407535243b234b9b7fd67f bottle-websocket-0.2.9.tar.gz 3 | sha256 9887f70dc0c7592ed8d0d11a14aa95dede6cd08d50d83d5b81fd963e5fec738b bottle-websocket-0.2.9.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-bottle-websocket/python-bottle-websocket.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-bottle-websocket 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_BOTTLE_WEBSOCKET_VERSION = 0.2.9 8 | PYTHON_BOTTLE_WEBSOCKET_SOURCE = bottle-websocket-$(PYTHON_BOTTLE_WEBSOCKET_VERSION).tar.gz 9 | PYTHON_BOTTLE_WEBSOCKET_SITE = https://files.pythonhosted.org/packages/17/8e/a22666b4bb0a6e31de579504077df2b1c2f1438136777c728e6cfabef295 10 | PYTHON_BOTTLE_WEBSOCKET_SETUP_TYPE = setuptools 11 | PYTHON_BOTTLE_WEBSOCKET_LICENSE = MIT 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-bs4/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_BS4 2 | bool "python-bs4" 3 | select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime 4 | help 5 | Dummy package for Beautiful Soup. 6 | 7 | https://pypi.python.org/pypi/beautifulsoup4 8 | -------------------------------------------------------------------------------- /buildroot/package/python-bs4/python-bs4.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/bs4/json 2 | md5 fe7e51587ac3b174608f3c4f8bd893ac bs4-0.0.1.tar.gz 3 | sha256 36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a bs4-0.0.1.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-bs4/python-bs4.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-bs4 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_BS4_VERSION = 0.0.1 8 | PYTHON_BS4_SOURCE = bs4-$(PYTHON_BS4_VERSION).tar.gz 9 | PYTHON_BS4_SITE = https://files.pythonhosted.org/packages/10/ed/7e8b97591f6f456174139ec089c769f89a94a1a4025fe967691de971f314 10 | PYTHON_BS4_SETUP_TYPE = setuptools 11 | PYTHON_BS4_LICENSE = 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-cachetools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_CACHETOOLS 2 | bool "python-cachetools" 3 | help 4 | Python cachetools 5 | -------------------------------------------------------------------------------- /buildroot/package/python-cachetools/python-cachetools.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-cachetools 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_CACHETOOLS_VERSION = 4.0.0 8 | PYTHON_CACHETOOLS_SOURCE = cachetools-$(PYTHON_CACHETOOLS_VERSION).tar.gz 9 | PYTHON_CACHETOOLS_SITE = https://files.pythonhosted.org/packages/ff/e9/879bc23137b5c19f93c2133a6063874b83c8e1912ff1467a3d4331598921 10 | PYTHON_CACHETOOLS_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/python-cythont/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_CYTHONT 2 | bool "python-cythont" 3 | help 4 | The Cython compiler for writing C extensions for the Python 5 | language - target installation 6 | 7 | http://cython.org/ 8 | -------------------------------------------------------------------------------- /buildroot/package/python-cythont/python-cython.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/cython/json 2 | md5 81aff945f5bfdfb86e7a5d24f5467668 Cython-0.29.24.tar.gz 3 | sha256 cdf04d07c3600860e8c2ebaad4e8f52ac3feb212453c1764a49ac08c827e8443 Cython-0.29.24.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 e1eb1c49a8508e8173dac30157e4a6439a44ad8846194746c424fbc3fc2b95d7 COPYING.txt 6 | sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE.txt 7 | -------------------------------------------------------------------------------- /buildroot/package/python-cythont/python-cythont.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-cythont 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_CYTHONT_VERSION = 0.29.24 8 | PYTHON_CYTHONT_SOURCE = Cython-$(PYTHON_CYTHONT_VERSION).tar.gz 9 | PYTHON_CYTHONT_SITE = https://files.pythonhosted.org/packages/59/e3/78c921adf4423fff68da327cc91b73a16c63f29752efe7beb6b88b6dd79d 10 | PYTHON_CYTHONT_SETUP_TYPE = setuptools 11 | PYTHON_CYTHONT_LICENSE = Apache-2.0 12 | PYTHON_CYTHONT_LICENSE_FILES = COPYING.txt LICENSE.txt 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-expiringdict/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_EXPIRINGDICT 2 | bool "python-expiringdict" 3 | help 4 | Dictionary with auto-expiring values for caching purposes. 5 | 6 | https://github.com/mailgun/expiringdict 7 | -------------------------------------------------------------------------------- /buildroot/package/python-expiringdict/python-expiringdict.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/expiringdict/json 2 | md5 2dacf06b2f48f99e7f6a5d7449eaa8d2 expiringdict-1.1.4.tar.gz 3 | sha256 9275c3f3aa6cabe394355b6454100eb1cdfe395c6b592c26603a2a0f9e3a0587 expiringdict-1.1.4.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 93a8b351233108ec30413a12da5d2c40ea335b8a27557c42f979b86ebd668443 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-gevent-websocket/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_GEVENT_WEBSOCKET 2 | bool "python-gevent-websocket" 3 | select BR2_PACKAGE_PYTHON_G # runtime 4 | select BR2_PACKAGE_PYTHON_E # runtime 5 | select BR2_PACKAGE_PYTHON_V # runtime 6 | select BR2_PACKAGE_PYTHON_E # runtime 7 | select BR2_PACKAGE_PYTHON_N # runtime 8 | select BR2_PACKAGE_PYTHON_T # runtime 9 | help 10 | Websocket handler for the gevent pywsgi server, a Python 11 | network library. 12 | 13 | https://www.gitlab.com/noppo/gevent-websocket 14 | -------------------------------------------------------------------------------- /buildroot/package/python-gevent-websocket/python-gevent-websocket.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/gevent-websocket/json 2 | md5 e095bf3358175489a956949c1b4de9ff gevent-websocket-0.10.1.tar.gz 3 | sha256 7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0 gevent-websocket-0.10.1.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 ddfeaafdefb5d826be791126cb74b843a8e22cb59a5e3304b170cde7d57f0208 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-gevent/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_GEVENT 2 | bool "python-gevent" 3 | select BR2_PACKAGE_PYTHON_CFFI # runtime 4 | select BR2_PACKAGE_PYTHON_GREENLET # runtime 5 | select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime 6 | select BR2_PACKAGE_PYTHON_ZOPEEVENT # runtime 7 | select BR2_PACKAGE_PYTHON_ZOPEINTERFACE # runtime 8 | select BR2_PACKAGE_LIBEV 9 | help 10 | Coroutine-based network library. 11 | 12 | http://www.gevent.org/ 13 | -------------------------------------------------------------------------------- /buildroot/package/python-gmusicapi/python-gmusicapi.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/gmusicapi/json 2 | md5 fa083ffc257266672e0f8ec8e6bc81ff gmusicapi-12.1.1.tar.gz 3 | sha256 a825a4d183fe39dd10003acfe6fd7b9b0d1fb981e1ecd35bb91f054522eef2b1 gmusicapi-12.1.1.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 e767d7d19840a388be34aa315d92140200a09f3bae1d88455f3fa1061bf3aec9 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-gpsoauth/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_GPSOAUTH 2 | bool "python-gpsoauth" 3 | select BR2_PACKAGE_PYTHON_PYCRYPTODOMEX # runtime 4 | select BR2_PACKAGE_PYTHON_REQUESTS # runtime 5 | help 6 | A python client library for Google Play Services OAuth. 7 | 8 | https://github.com/simon-weber/gpsoauth 9 | -------------------------------------------------------------------------------- /buildroot/package/python-gpsoauth/python-gpsoauth.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/gpsoauth/json 2 | md5 bdbdcb78b8f14670eac5c47d073e6a05 gpsoauth-0.4.1.tar.gz 3 | sha256 1c3f45824d45ac3d06b9d9a0c0eccafe1052505d31ac9a698aef8b00fb0dfc37 gpsoauth-0.4.1.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-gpsoauth/python-gpsoauth.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-gpsoauth 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_GPSOAUTH_VERSION = 0.4.1 8 | PYTHON_GPSOAUTH_SOURCE = gpsoauth-$(PYTHON_GPSOAUTH_VERSION).tar.gz 9 | PYTHON_GPSOAUTH_SITE = https://files.pythonhosted.org/packages/96/a1/2b366c602ee081def4dd80624581dfa8eb23d20c5a51f8a2591c40fa8d41 10 | PYTHON_GPSOAUTH_SETUP_TYPE = setuptools 11 | PYTHON_GPSOAUTH_LICENSE = MIT 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-gstreamer-player/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_GSTREAMER_PLAYER 2 | bool "python-gstreamer-player" 3 | select BR2_PACKAGE_PYTHON_MUTAGEN # runtime 4 | help 5 | Python 3 wrapper for playing media via gstreamer. 6 | 7 | https://github.com/happyleavesaoc/gstreamer-player/ 8 | -------------------------------------------------------------------------------- /buildroot/package/python-gstreamer-player/python-gstreamer-player.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/gstreamer-player/json 2 | md5 94c19bda26677904b707f72e63331f57 gstreamer-player-1.1.2.tar.gz 3 | sha256 4e5239d86abdb7cdf33633402d2724008b6e6dc41d20c0054bf5fbe5c9f859c6 gstreamer-player-1.1.2.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-gstreamer-player/python-gstreamer-player.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-gstreamer-player 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_GSTREAMER_PLAYER_VERSION = 1.1.2 8 | PYTHON_GSTREAMER_PLAYER_SOURCE = gstreamer-player-$(PYTHON_GSTREAMER_PLAYER_VERSION).tar.gz 9 | PYTHON_GSTREAMER_PLAYER_SITE = https://files.pythonhosted.org/packages/ac/57/17ab891edcf513d7254df70281ec14163f3154e2daf80e40a71f9bb28b73 10 | PYTHON_GSTREAMER_PLAYER_SETUP_TYPE = setuptools 11 | PYTHON_GSTREAMER_PLAYER_LICENSE = MIT 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-hidapi/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_HIDAPI 2 | bool "python-hidapi" 3 | select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime 4 | help 5 | A Cython interface to the hidapi from 6 | https://github.com/libusb/hidapi. 7 | 8 | https://github.com/trezor/cython-hidapi 9 | -------------------------------------------------------------------------------- /buildroot/package/python-hidapi/python-hidapi.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/hidapi/json 2 | md5 ec194c704a687567ef1ca3b5adc8dcf4 hidapi-0.10.1.tar.gz 3 | sha256 a1170b18050bc57fae3840a51084e8252fd319c0fc6043d68c8501deb0e25846 hidapi-0.10.1.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 276c1c27bbaa34fd62f4e92ad7cf9f7f8f193c0440c9da86c389de0dae192f47 LICENSE.txt 6 | -------------------------------------------------------------------------------- /buildroot/package/python-keyboard/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_KEYBOARD 2 | bool "python-keyboard" 3 | help 4 | Python keyboard module 5 | depends on BR2_PACKAGE_PYTHON3 6 | -------------------------------------------------------------------------------- /buildroot/package/python-keyboard/python-keyboard.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-keyboard 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_KEYBOARD_VERSION = 0.13.4 8 | PYTHON_KEYBOARD_SITE = $(call github,boppreh,keyboard,master) 9 | PYTHON_KEYBOARD_SETUP_TYPE = setuptools 10 | PYTHON_KEYBOARD_LICENSE = MIT 11 | PYTHON_KEYBOARD_LICENSE_FILES = LICENSE.md 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-levenshtein/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LEVENSHTEIN 2 | bool "python-levenshtein" 3 | select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime 4 | help 5 | Python extension for computing string edit distances and 6 | similarities. 7 | 8 | http://github.com/ztane/python-Levenshtein 9 | -------------------------------------------------------------------------------- /buildroot/package/python-levenshtein/python-levenshtein.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/python-Levenshtein/json 2 | md5 e8cde197d6d304bbdc3adae66fec99fb python-Levenshtein-0.12.0.tar.gz 3 | sha256 033a11de5e3d19ea25c9302d11224e1a1898fe5abd23c61c7c360c25195e3eb1 python-Levenshtein-0.12.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 87f1bd4a52b4029476b684fcdd51fed3c6b2540e462d3c2d3bfc9be4558b2825 COPYING 6 | -------------------------------------------------------------------------------- /buildroot/package/python-mechanicalsoup/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_MECHANICALSOUP 2 | bool "python-mechanicalsoup" 3 | select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime 4 | select BR2_PACKAGE_PYTHON_LXML # runtime 5 | select BR2_PACKAGE_PYTHON_REQUESTS # runtime 6 | select BR2_PACKAGE_PYTHON_SIX # runtime 7 | help 8 | A Python library for automating interaction with websites. 9 | 10 | https://mechanicalsoup.readthedocs.io/ 11 | -------------------------------------------------------------------------------- /buildroot/package/python-mechanicalsoup/python-mechanicalsoup.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/mechanicalsoup/json 2 | md5 117f57063a397b4932d2482c43dc0039 MechanicalSoup-0.12.0.tar.gz 3 | sha256 39a60627a97981869251837b8bd082485f2f681df8a3315836ffaa74663627bd MechanicalSoup-0.12.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 2a41b4da4e95c95c4a9c09f87652f67cb92d7072316cc12fc16db1773976e5e3 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-mock/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_MOCK 2 | bool "python-mock" 3 | help 4 | Python mock 5 | -------------------------------------------------------------------------------- /buildroot/package/python-mock/python-mock.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-mock 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_MOCK_VERSION = 4.0.2 8 | PYTHON_MOCK_SOURCE = mock-$(PYTHON_MOCK_VERSION).tar.gz 9 | PYTHON_MOCK_SITE = https://files.pythonhosted.org/packages/2e/35/594f501b2a0fb3732c8190ca885dfdf60af72d678cd5fa8169c358717567 10 | PYTHON_MOCK_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/python-musicbrainz-ngs/0001-reduce-retries.patch: -------------------------------------------------------------------------------- 1 | --- a/musicbrainzngs/musicbrainz.py 2019-12-17 09:11:12.647088832 +0100 2 | +++ b/musicbrainzngs/musicbrainz.py 2019-12-17 09:11:28.931023468 +0100 3 | @@ -461,7 +461,7 @@ 4 | 5 | # Core (internal) functions for calling the MB API. 6 | 7 | -def _safe_read(opener, req, body=None, max_retries=8, retry_delay_delta=2.0): 8 | +def _safe_read(opener, req, body=None, max_retries=3, retry_delay_delta=2.0): 9 | """Open an HTTP request with a given URL opener and (optionally) a 10 | request body. Transient errors lead to retries. Permanent errors 11 | and repeated errors are translated into a small set of handleable 12 | -------------------------------------------------------------------------------- /buildroot/package/python-musicbrainz-ngs/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_MUSICBRAINZ_NGS 2 | bool "python-musicbrainz-ngs" 3 | help 4 | A Python interface to the Musicbrainz database 5 | 6 | https://github.com/alastair/python-musicbrainzngs 7 | -------------------------------------------------------------------------------- /buildroot/package/python-musicbrainz-ngs/python-musicbrainz-ngs.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-musicbrainz-ngs 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_MUSICBRAINZ_NGS_VERSION = 0.7.1 8 | PYTHON_MUSICBRAINZ_NGS_SOURCE = v$(PYTHON_MUSICBRAINZ_NGS_VERSION).tar.gz 9 | PYTHON_MUSICBRAINZ_NGS_SITE = https://github.com/alastair/python-musicbrainzngs/archive 10 | PYTHON_MUSICBRAINZ_NGS_SETUP_TYPE = distutils 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/python-oauth2client/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_OAUTH2CLIENT 2 | bool "python-oauth2client" 3 | select BR2_PACKAGE_PYTHON_HTTPLIB2 # runtime 4 | select BR2_PACKAGE_PYTHON_PYASN1 # runtime 5 | select BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime 6 | select BR2_PACKAGE_PYTHON_RSA # runtime 7 | select BR2_PACKAGE_PYTHON_SIX # runtime 8 | help 9 | OAuth 2.0 client library. 10 | 11 | http://github.com/google/oauth2client/ 12 | -------------------------------------------------------------------------------- /buildroot/package/python-oauth2client/python-oauth2client.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/oauth2client/json 2 | md5 3a9eb781f685949c04946f6c09e4c11d oauth2client-4.1.3.tar.gz 3 | sha256 d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6 oauth2client-4.1.3.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 d6a43f0bae029b0cea5bd0fffd87f05659dc599a763886027614ad210be1ba3d LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pg8000/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PG8000 2 | bool "python-pg8000" 3 | select BR2_PACKAGE_PYTHON_SCRAMP # runtime 4 | help 5 | PostgreSQL interface library. 6 | 7 | https://github.com/tlocke/pg8000 8 | -------------------------------------------------------------------------------- /buildroot/package/python-pg8000/python-pg8000.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pg8000/json 2 | md5 02717024dd6b44385aecae564c81b426 pg8000-1.16.0.tar.gz 3 | sha256 a80dd7267ed438e6ae9500d7034244c459a06f89d0d37bc37026a868e36e0979 pg8000-1.16.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 6a37ae31a45126635939f5c083e98d48ea5cffe5613b62db64cd5dcb0a25e677 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pg8000/python-pg8000.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pg8000 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PG8000_VERSION = 1.16.0 8 | PYTHON_PG8000_SOURCE = pg8000-$(PYTHON_PG8000_VERSION).tar.gz 9 | PYTHON_PG8000_SITE = https://files.pythonhosted.org/packages/f9/37/456b51ecde0cf36f8b8004f9d1cd02778bccc46bcffccdf714c9545337f4 10 | PYTHON_PG8000_SETUP_TYPE = setuptools 11 | PYTHON_PG8000_LICENSE = BSD-3-Clause 12 | PYTHON_PG8000_LICENSE_FILES = LICENSE 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-proboscis/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PROBOSCIS 2 | bool "python-proboscis" 3 | help 4 | Extends Nose with certain TestNG like features. 5 | 6 | https://github.com/rackspace/python-proboscis 7 | -------------------------------------------------------------------------------- /buildroot/package/python-proboscis/python-proboscis.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/proboscis/json 2 | md5 e4b36449ef7c18f70b8243f4c8bddbca proboscis-1.2.6.0.tar.gz 3 | sha256 b822b243a7c82030fce0de97bdc432345941306d2c24ef227ca561dd019cd238 proboscis-1.2.6.0.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-proboscis/python-proboscis.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-proboscis 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PROBOSCIS_VERSION = 1.2.6.0 8 | PYTHON_PROBOSCIS_SOURCE = proboscis-$(PYTHON_PROBOSCIS_VERSION).tar.gz 9 | PYTHON_PROBOSCIS_SITE = https://files.pythonhosted.org/packages/3c/c8/c187818ab8d0faecdc3c16c1e0b2e522f3b38570f0fb91dcae21662019d0 10 | PYTHON_PROBOSCIS_SETUP_TYPE = setuptools 11 | PYTHON_PROBOSCIS_LICENSE = Apache-2.0 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-pydbus/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYDBUS 2 | bool "python-pydbus" 3 | help 4 | Pythonic DBus library. 5 | 6 | https://github.com/LEW21/pydbus 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pydbus/python-pydbus.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pydbus/json 2 | md5 c6abd44862322679bd4e907bebc3e0d0 pydbus-0.6.0.tar.gz 3 | sha256 4207162eff54223822c185da06c1ba8a34137a9602f3da5a528eedf3f78d0f2c pydbus-0.6.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pydbus/python-pydbus.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pydbus 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYDBUS_VERSION = 0.6.0 8 | PYTHON_PYDBUS_SOURCE = pydbus-$(PYTHON_PYDBUS_VERSION).tar.gz 9 | PYTHON_PYDBUS_SITE = https://files.pythonhosted.org/packages/58/56/3e84f2c1f2e39b9ea132460183f123af41e3b9c8befe222a35636baa6a5a 10 | PYTHON_PYDBUS_SETUP_TYPE = setuptools 11 | PYTHON_PYDBUS_LICENSE = GNU Lesser General Public License v2 or later (LGPLv2+) 12 | PYTHON_PYDBUS_LICENSE_FILES = LICENSE 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-pyedbglib/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYEDBGLIB 2 | bool "python-pyedbglib" 3 | help 4 | A low-level protocol library for communicating with Microchip CMSIS-DAP based debuggers 5 | 6 | https://github.com/microchip-pic-avr-tools/pyedbglib 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pyedbglib/python-pymcuprog.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pyedbglib 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYEDBGLIB_VERSION = b91b24ab19a6557a67dea9082616650c20c7a01f 8 | PYTHON_PYEDBGLIB_SITE = $(call github,microchip-pic-avr-tools,pyedbglib,$(PYTHON_PYEDBGLIB_VERSION)) 9 | PYTHON_PYEDBGLIB_SETUP_TYPE = setuptools 10 | 11 | $(eval $(python-package)) 12 | -------------------------------------------------------------------------------- /buildroot/package/python-pygobject/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYGOBJECT 2 | bool "python-pygobject" 3 | select BR2_PACKAGE_PYTHON_PYCAIRO # runtime 4 | select BR2_PACKAGE_GOBJECT_INTROSPECTION 5 | help 6 | Python bindings for GObject Introspection. 7 | 8 | https://pygobject.readthedocs.io 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/python-pygobject/python-pygobject.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/PyGObject/json 2 | md5 f191a160d492a154beccc4c20f30cbc0 PyGObject-3.36.0.tar.gz 3 | sha256 b97f570e55017fcd3732164811f24ecf63983a4834f61b55b0aaf64ecefac856 PyGObject-3.36.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING 6 | sha256 5c382291e88a29636da3f17b0ac11095b2bc7f9939188900037fac3d7f4f5dd7 docs/images/LICENSE 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pykka/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYKKA 2 | bool "python-pykka" 3 | help 4 | Pykka is a Python implementation of the actor model. 5 | 6 | https://www.pykka.org/ 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pykka/python-pykka.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/Pykka/json 2 | md5 4e1ff52211d2bea03c00a589172651e4 Pykka-2.0.2.tar.gz 3 | sha256 895cc2ed8779b65dd14a90ba3f4b8cb0f7904c7bf0710fe96a923019f8e82a39 Pykka-2.0.2.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pykka/python-pykka.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pykka 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYKKA_VERSION = 2.0.2 8 | PYTHON_PYKKA_SOURCE = Pykka-$(PYTHON_PYKKA_VERSION).tar.gz 9 | PYTHON_PYKKA_SITE = https://files.pythonhosted.org/packages/8c/25/26af8b333bbc6b00bd03a95c058c50e6161af50680030a30cbdf053c4354 10 | PYTHON_PYKKA_SETUP_TYPE = setuptools 11 | PYTHON_PYKKA_LICENSE = Apache-2.0 12 | PYTHON_PYKKA_LICENSE_FILES = LICENSE 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-pyky040/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYKY040 2 | bool "python-pyky040" 3 | select BR2_PACKAGE_PYTHON_RPIGPIO # runtime 4 | help 5 | High-level interface for the KY040 rotary encoder and 6 | switch. 7 | 8 | https://github.com/raphaelyancey/pyKY040 9 | -------------------------------------------------------------------------------- /buildroot/package/python-pyky040/python-pyky040.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pyky040/json 2 | md5 391b1809bbc0444687aa63a5e15805f5 pyky040-0.1.3.tar.gz 3 | sha256 d4905d3c381be2d56f14e728656e75d138011d7d68ba91814fe2f4dd6b2bed0b pyky040-0.1.3.tar.gz 4 | -------------------------------------------------------------------------------- /buildroot/package/python-pyky040/python-pyky040.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pyky040 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYKY040_VERSION = 0.1.3 8 | PYTHON_PYKY040_SOURCE = pyky040-$(PYTHON_PYKY040_VERSION).tar.gz 9 | PYTHON_PYKY040_SITE = https://files.pythonhosted.org/packages/56/14/e514d1e786cf468c8d269ac15a65e8dd6c116bab2b90d4f0c5a90da55e7f 10 | PYTHON_PYKY040_SETUP_TYPE = setuptools 11 | PYTHON_PYKY040_LICENSE = 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /buildroot/package/python-pylast/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYLAST 2 | bool "python-pylast" 3 | help 4 | A Python interface to Last.fm and Libre.fm. 5 | 6 | https://github.com/pylast/pylast 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pylast/python-pylast.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pylast/json 2 | md5 7429847b2977ccdd9038b5be2f350eda pylast-3.1.0.tar.gz 3 | sha256 7eb58682beccc0052c3284aba64a9a6454b5e89706f789ebeb2403dc1045606a pylast-3.1.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 e344294b0817354f535c19907c3c9a088a8ab416e804662cae7371cfd0493ede COPYING 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pylast/python-pylast.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pylast 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYLAST_VERSION = 3.1.0 8 | PYTHON_PYLAST_SOURCE = pylast-$(PYTHON_PYLAST_VERSION).tar.gz 9 | PYTHON_PYLAST_SITE = https://files.pythonhosted.org/packages/c1/3b/05414f6c406d571604a6ee19530ba0a0bd35a8c2cae158ffac0caaa74179 10 | PYTHON_PYLAST_SETUP_TYPE = setuptools 11 | PYTHON_PYLAST_LICENSE = Apache-2.0 12 | PYTHON_PYLAST_LICENSE_FILES = COPYING 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-pymcuprog/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYMCUPROG 2 | bool "python-pymcuprog" 3 | help 4 | Python utility for programming various Microchip MCU devices 5 | 6 | https://github.com/microchip-pic-avr-tools/pymcuprog 7 | 8 | select BR2_PACKAGE_PYTHON_PYEDBGLIB 9 | select BR2_PACKAGE_PYTHON_APPDIRS 10 | select BR2_PACKAGE_PYTHON_CYTHON 11 | -------------------------------------------------------------------------------- /buildroot/package/python-pymcuprog/python-pymcuprog.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pymcuprog 4 | # 5 | ################################################################################ 6 | 7 | #PYTHON_PYMCUPROG_VERSION = dfa0f9b4352c41dbd58d32f3f091517112a1908c 8 | PYTHON_PYMCUPROG_VERSION = 44c2e6e11e1f8b5246627d01283996784c6797ee 9 | PYTHON_PYMCUPROG_SITE = $(call github,microchip-pic-avr-tools,pymcuprog,$(PYTHON_PYMCUPROG_VERSION)) 10 | PYTHON_PYMCUPROG_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/python-pyserial/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYSERIAL 2 | bool "python-pyserial" 3 | help 4 | Python Serial Port Extension. 5 | 6 | https://github.com/pyserial/pyserial 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pyserial/python-pyserial.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pyserial/json 2 | md5 ed6183b15519a0ae96675e9c3330c69b pyserial-3.4.tar.gz 3 | sha256 6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627 pyserial-3.4.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 a89d951d157e2c199fbbe7ecf8d41bc3bc93de166db524aa6b9b610dbccc832d LICENSE.txt 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pyupdi/0001-remove-pylint.patch: -------------------------------------------------------------------------------- 1 | --- a/requirements.txt 2020-11-19 14:52:50.844674329 +0000 2 | +++ b/requirements.txt 2020-11-19 14:53:12.944875688 +0000 3 | @@ -1,3 +1,2 @@ 4 | intelhex 5 | -pylint 6 | pyserial 7 | -------------------------------------------------------------------------------- /buildroot/package/python-pyupdi/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PYUPDI 2 | bool "python-pyupdi" 3 | help 4 | An UPDI programming library 5 | 6 | https://github.com/mraardvark/pyupdi 7 | select BR2_PACKAGE_PYTHON_PYSERIAL 8 | select BR2_PACKAGE_PYTHON_INTELHEX 9 | # select BR2_PACKAGE_PYTHON_PYLINT 10 | -------------------------------------------------------------------------------- /buildroot/package/python-pyupdi/python-mpd2.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/python-mpd2/json 2 | md5 d7cb4d9e2431b1a14bb0f3fb8be6cade python-mpd2-1.1.0.tar.gz 3 | sha256 80407d059367873b0d59eac01e8f5ab4f02846ee1f904af435e4e09d73dec6cd python-mpd2-1.1.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.txt 6 | -------------------------------------------------------------------------------- /buildroot/package/python-pyupdi/python-pyupdi.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pyupdi 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PYUPDI_VERSION = c3d2486ad6fcd2b9d9f03710ef3601f1629bbc88 8 | PYTHON_PYUPDI_SITE = $(call github,mraardvark,pyupdi,$(PYTHON_PYUPDI_VERSION)) 9 | PYTHON_PYUPDI_SETUP_TYPE = setuptools 10 | 11 | $(eval $(python-package)) 12 | -------------------------------------------------------------------------------- /buildroot/package/python-scramp/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_SCRAMP 2 | bool "python-scramp" 3 | help 4 | An implementation of the SCRAM protocol. 5 | 6 | https://github.com/tlocke/scramp 7 | -------------------------------------------------------------------------------- /buildroot/package/python-scramp/python-scramp.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/scramp/json 2 | md5 64b3c9069d2a267d94384524a8de4a4a scramp-1.2.0.tar.gz 3 | sha256 d6865ed1d135ddb124a619d7cd3a5b505f69a7c92e248024dd7e48bc77752af5 scramp-1.2.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 2f2468c4db0582d15ab32a1efef698d92bd5927b2affe13eedb47a3097ddb97e LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-scramp/python-scramp.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-scramp 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_SCRAMP_VERSION = 1.2.0 8 | PYTHON_SCRAMP_SOURCE = scramp-$(PYTHON_SCRAMP_VERSION).tar.gz 9 | PYTHON_SCRAMP_SITE = https://files.pythonhosted.org/packages/58/c6/f077e1f4fb40d7a56662dd6874527e7f9d626323a1cd7261d59abeb52789 10 | PYTHON_SCRAMP_SETUP_TYPE = setuptools 11 | PYTHON_SCRAMP_LICENSE = MIT 12 | PYTHON_SCRAMP_LICENSE_FILES = LICENSE 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-tzupdate/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_TZUPDATE 2 | bool "python-tzupdate" 3 | help 4 | Set the system timezone based on IP geolocation. 5 | 6 | https://github.com/cdown/tzupdate 7 | -------------------------------------------------------------------------------- /buildroot/package/python-tzupdate/python-tzupdate.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/tzupdate/json 2 | md5 3dacb482cf17cb8ce24273db9bae8362 tzupdate-2.0.0.tar.gz 3 | sha256 d5810e3bc64bfcf06f9599aa791c15e35a3b99fad19284fffc0aba9bd4f75b8a tzupdate-2.0.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 d34c316184c3ff160b3fc554a444348be95eba0ec693f325e327e2b5236fc863 LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-tzupdate/tzupdate.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Timezone update 3 | Wants=network-online.target 4 | After=network.target 5 | 6 | [Service] 7 | Type=simple 8 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Updating timezone" 9 | ExecStartPre=/bin/sleep 20 10 | ExecStart=/bin/tzupdate 11 | StandardOutput=journal 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /buildroot/package/python-uritools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_URITOOLS 2 | bool "python-uritools" 3 | help 4 | Python URI tools 5 | -------------------------------------------------------------------------------- /buildroot/package/python-uritools/python-uritools.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-uritools 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_URITOOLS_VERSION = 3.0.0 8 | PYTHON_URITOOLS_SOURCE = uritools-$(PYTHON_URITOOLS_VERSION).tar.gz 9 | PYTHON_URITOOLS_SITE = https://files.pythonhosted.org/packages/0e/16/f6c423dfe3e4a0e3bc00f4f2f540f3618a918b9b4fd0ec4ef51407931592 10 | PYTHON_URITOOLS_SETUP_TYPE = setuptools 11 | 12 | $(eval $(python-package)) 13 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_USAGEDATA 2 | bool "python-usagedata" 3 | help 4 | A simple data collector that keeps historical date in RAM 5 | depends on BR2_PACKAGE_PYTHON3 6 | depends on BR2_PACKAGE_HIFIBERRY_BASE 7 | select BR2_PACKAGE_PYTHON_BOTTLE 8 | select BR2_PACKAGE_PYTHON_REQUESTS 9 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/datacollector.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Usage data collector 3 | Wants=network-online.target 4 | After=network.target 5 | Before=audiocontrol2.service beocreate2.service 6 | 7 | [Service] 8 | Type=simple 9 | WorkingDirectory=/tmp 10 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting data collector" 11 | ExecStart=/bin/python3 -m usagecollector.server 12 | StandardOutput=journal 13 | Restart=always 14 | RestartSec=5 15 | TimeoutStopSec=10 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/privacy.html: -------------------------------------------------------------------------------- 1 | usageData 2 |

Anonymous usage data

3 |

When enabled, the system will submit anonymised usage data to HiFiBerry. 4 | This helps us understand how the product is used and to better target 5 | our development efforts on the right features.

6 |

What's shared?

7 |

Anonymous data about which features and sources are used. 8 | No music listening data is shared.

9 |

To see the data that has been collected, log in to the product via 10 | SSH and run command /opt/hifiberry/bin/report-dump. 11 | Enable SSH in General > Remote Login.

12 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/pushdata.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Push usage data to cloud 3 | After=network-online.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/bin/curl -X POST http://127.0.0.1:3141/api/push 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/pushdata.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Push usage data to cloud 3 | 4 | [Timer] 5 | OnBootSec=300min 6 | OnUnitActiveSec=1d 7 | Unit=pushdata.service 8 | 9 | [Install] 10 | WantedBy=timers.target 11 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/report-activation: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | curl -s -X post http://127.0.0.1:3141/api/activate/$1 >/dev/null 3 | 4 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/report-deactivation: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | curl -s -X post http://127.0.0.1:3141/api/deactivate/$1 >/dev/null 3 | 4 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/report-dump: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | curl http://127.0.0.1:3141/api/dump 3 | 4 | -------------------------------------------------------------------------------- /buildroot/package/python-usagedata/report-usage: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$2" == "" ]; then 3 | DURATION=1 4 | else 5 | DURATION=$2 6 | fi 7 | curl -s -X post http://127.0.0.1:3141/api/use/$1/${DURATION} >/dev/null 8 | 9 | -------------------------------------------------------------------------------- /buildroot/package/python-validictory/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_VALIDICTORY 2 | bool "python-validictory" 3 | help 4 | general purpose python data validator. 5 | 6 | http://github.com/jamesturk/validictory 7 | -------------------------------------------------------------------------------- /buildroot/package/python-validictory/python-validictory.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/validictory/json 2 | md5 ee3ea24d0e5602255d618fd63487dd0f validictory-1.1.2.tar.gz 3 | sha256 3a87b84658592f75f37d6bab77ac223774c9989dc7349c8aad19a424770835ba validictory-1.1.2.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 2244258a7ed65a402cfb423ea3918201ad5203cc29987e65bc99e064e173c219 LICENSE.txt 6 | -------------------------------------------------------------------------------- /buildroot/package/python-youtube-dl/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_YOUTUBE_DL 2 | bool "python-youtube-dl" 3 | help 4 | YouTube video downloader. 5 | 6 | https://github.com/ytdl-org/youtube-dl 7 | -------------------------------------------------------------------------------- /buildroot/package/python-youtube-dl/python-youtube-dl.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/youtube_dl/json 2 | md5 b2ddcefe8a7f30260f8f22ededcc56db youtube_dl-2020.3.8.tar.gz 3 | sha256 1b098b7ae41551f46dbae70e56dbabdf39c8faf50e072d0c0b42c44d64afebf8 youtube_dl-2020.3.8.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c LICENSE 6 | -------------------------------------------------------------------------------- /buildroot/package/python-youtube-dl/python-youtube-dl.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-youtube-dl 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_YOUTUBE_DL_VERSION = 2020.3.8 8 | PYTHON_YOUTUBE_DL_SOURCE = youtube_dl-$(PYTHON_YOUTUBE_DL_VERSION).tar.gz 9 | PYTHON_YOUTUBE_DL_SITE = https://files.pythonhosted.org/packages/15/2a/7f7699a3655762eb881dd451603e02f95ab6fffb983ad430c0a42d8740e7 10 | PYTHON_YOUTUBE_DL_SETUP_TYPE = setuptools 11 | PYTHON_YOUTUBE_DL_LICENSE = Public Domain 12 | PYTHON_YOUTUBE_DL_LICENSE_FILES = LICENSE 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/python-zopeevent/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_ZOPEEVENT 2 | bool "python-zopeevent" 3 | select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime 4 | help 5 | Very basic event publishing system. 6 | 7 | https://github.com/zopefoundation/zope.event 8 | -------------------------------------------------------------------------------- /buildroot/package/python-zopeevent/python-zopeevent.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/zope.event/json 2 | md5 bc38324cb29ce2d759c3cb56ea199995 zope.event-4.5.0.tar.gz 3 | sha256 5e76517f5b9b119acf37ca8819781db6c16ea433f7e2062c4afc2b6fbedb1330 zope.event-4.5.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c LICENSE.txt 6 | -------------------------------------------------------------------------------- /buildroot/package/python-zopeevent/python-zopeevent.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-zopeevent 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_ZOPEEVENT_VERSION = 4.5.0 8 | PYTHON_ZOPEEVENT_SOURCE = zope.event-$(PYTHON_ZOPEEVENT_VERSION).tar.gz 9 | PYTHON_ZOPEEVENT_SITE = https://files.pythonhosted.org/packages/30/00/94ed30bfec18edbabfcbd503fcf7482c5031b0fbbc9bc361f046cb79781c 10 | PYTHON_ZOPEEVENT_SETUP_TYPE = setuptools 11 | PYTHON_ZOPEEVENT_LICENSE = ZPL 12 | PYTHON_ZOPEEVENT_LICENSE_FILES = LICENSE.txt 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /buildroot/package/raat/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_RAAT 2 | bool "raat" 3 | help 4 | "Roon endpoint" 5 | -------------------------------------------------------------------------------- /buildroot/package/raat/raat_app: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/raat/raat_app -------------------------------------------------------------------------------- /buildroot/package/raat/raat_app.aarch64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/raat/raat_app.aarch64 -------------------------------------------------------------------------------- /buildroot/package/raat/raatool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/raat/raatool -------------------------------------------------------------------------------- /buildroot/package/raat/raatool.aarch64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/raat/raatool.aarch64 -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/S30copy-wifi-config: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Additional options that are passed to Spotify server 4 | OPTIONS="" 5 | 6 | case "$1" in 7 | start) 8 | printf "Looking for WiFi configuration on /boot: " 9 | if [ -f "/boot/wpa_supplicant.conf" ]; then 10 | cp /boot/wpa_supplicant.conf /etc/wpa_supplicant.conf 11 | fi 12 | ;; 13 | stop) 14 | ;; 15 | restart) 16 | $0 stop 17 | $0 start 18 | ;; 19 | *) 20 | echo "Usage: $0 {start|stop|restart}" 21 | exit 1 22 | ;; 23 | esac 24 | 25 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/copy-config: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | printf "Looking for configuration files on /boot: " 4 | if [ -f "/boot/wpa_supplicant.conf" ]; then 5 | mv /boot/wpa_supplicant.conf /etc/wpa_supplicant.conf 6 | fi 7 | 8 | if [ -f "/boot/systemname" ]; then 9 | mv /boot/systemname /etc/systemname 10 | fi 11 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/copy-config.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=copy-config - copy config files from FAT partition 3 | Before=network.target 4 | 5 | [Service] 6 | Type=oneshort 7 | ExecStart=/opt/hifiberry/bin/copy-config 8 | StandardOutput=journal 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/dnsmasq.conf: -------------------------------------------------------------------------------- 1 | interface=wlan0 2 | dhcp-range=10.0.0.10,10.0.0.15,12h 3 | #dhcp-option=option:router,10.0.0.1 4 | #dhcp-option=option:netmask,255.255.255.0 5 | 6 | # Delays sending DHCPOFFER and proxydhcp replies for at least the specified number of seconds. 7 | dhcp-mac=set:client_is_a_pi,B8:27:EB:*:*:* 8 | dhcp-reply-delay=tag:client_is_a_pi,2 9 | 10 | address=/#/10.0.0.1 11 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/interfaces: -------------------------------------------------------------------------------- 1 | auto lo 2 | iface lo inet loopback 3 | 4 | auto eth0 5 | iface eth0 inet dhcp 6 | pre-up /etc/network/nfs_check 7 | wait-delay 15 8 | 9 | auto wlan0 10 | iface wlan0 inet dhcp 11 | pre-up wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf 12 | post-down killall -q wpa_supplicant 13 | wait-delay 15 14 | 15 | iface default inet dhcp 16 | 17 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/tempap-dnsmasq.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Temporay AP: dnsmasq 3 | Wants=network.target tempap-hostapd.service 4 | After=network.target tempap-hostapd.service 5 | ConditionPathExists=!/boot/noap 6 | 7 | [Service] 8 | Type=simple 9 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting temporary access point" 10 | ExecStartPre=/sbin/ifconfig wlan0 10.0.0.1 up 11 | ExecStart=/sbin/dnsmasq -d -C /etc/tempap-dnsmasq.conf --auth-ttl=0 12 | ExecStopPost=/sbin/ifconfig wlan0 down 13 | StandardOutput=journal 14 | TimeoutStopSec=10 15 | 16 | [Install] 17 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/tempap-hostapd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Temporary AP: hostapd 3 | Wants=network.target 4 | After=network.target temporary-ap.service 5 | PartOf=temporary-ap.service 6 | ConditionPathExists=!/boot/noap 7 | 8 | [Service] 9 | Type=simple 10 | ExecStart=/sbin/hostapd /etc/tempap-hostapd.conf 11 | StandardOutput=journal 12 | TimeoutStopSec=10 13 | 14 | [Install] 15 | WantedBy=temporary-ap.service 16 | 17 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/tempap.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Temporay access point for configuration 3 | Wants=network.target 4 | After=network.target tempap-hostapd.service tempap-dnsmasq.service 5 | Requires=tempap-hostapd.service tempap-dnsmasq.service 6 | ConditionPathExists=!/boot/noap 7 | 8 | [Service] 9 | Type=oneshot 10 | # Execute a dummy program 11 | ExecStart=/bin/true 12 | 13 | [Install] 14 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/wireless.network: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=wlan0 3 | 4 | [Network] 5 | DHCP=both 6 | 7 | [DHCP] 8 | RouteMetric=20 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/wpa_supplicant.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=/var/run/wpa_supplicant 2 | ap_scan=1 3 | 4 | -------------------------------------------------------------------------------- /buildroot/package/raspi-wifi/wpa_supplicant@wlan0.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=WPA supplicant for %i 3 | After=rngd.service 4 | 5 | [Service] 6 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Configuring WLAN" 7 | ExecStart=/sbin/wpa_supplicant -i%i -c/etc/wpa_supplicant.conf 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /buildroot/package/smbtools/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_SMBTOOLS 2 | bool "smbtools" 3 | help 4 | Tools to work with Samba shares 5 | select BR2_PACKAGE_CIFS_UTILS 6 | -------------------------------------------------------------------------------- /buildroot/package/smbtools/smbtools.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # SMBTOOLS 4 | # 5 | ################################################################################ 6 | 7 | define SMBTOOLS_INSTALL_TARGET_CMDS 8 | echo "SMB tools" 9 | endef 10 | 11 | $(eval $(generic-package)) 12 | 13 | -------------------------------------------------------------------------------- /buildroot/package/snapcast/0001-disable-syslog.patch: -------------------------------------------------------------------------------- 1 | aixlog.hpp: disable logging to syslog 2 | 3 | Signed-off-by: HiFiBerry 4 | 5 | --- a/common/aixlog.hpp 6 | +++ b/common/aixlog.hpp 7 | @@ -62,9 +62,9 @@ 8 | #include 9 | #endif 10 | 11 | -#ifdef HAS_SYSLOG_ 12 | -#include 13 | -#endif 14 | +#ifdef HAS_SYSLOG_ 15 | +#undef HAS_SYSLOG_ 16 | +#endif 17 | 18 | #ifdef __ANDROID__ 19 | // fix for bug "Android NDK __func__ definition is inconsistent with glibc and C++99" 20 | -------------------------------------------------------------------------------- /buildroot/package/snapcastmpris/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_SNAPCASTMPRIS 2 | bool "snapcastmpris" 3 | help 4 | "MPRIS interface for Snapcast client" 5 | select BR2_PACKAGE_DBUS 6 | select BR2_PACKAGE_DBUS_PYTHON 7 | select BR2_PACKAGE_PYTHON_NETIFACES 8 | select BR2_PACKAGE_PYTHON_REQUESTS 9 | select BR2_PACKAGE_PYTHON_ZEROCONF 10 | select BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT 11 | depends on BR2_PACKAGE_SNAPCAST_CLIENT 12 | -------------------------------------------------------------------------------- /buildroot/package/snapcastmpris/snapcastmpris.conf: -------------------------------------------------------------------------------- 1 | # Set the server IP address here 2 | server = 0.0.0.0 3 | autostart = 0 4 | -------------------------------------------------------------------------------- /buildroot/package/snapcastmpris/snapcastmpris.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Snapcast MPRIS 3 | Wants=dbus.service 4 | After=network-online.target dbus.service 5 | ConditionPathExists=!/custom/service/snapcast.disable 6 | 7 | [Service] 8 | Type=simple 9 | Environment=HOME=/root 10 | Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket 11 | WorkingDirectory=/opt/snapcastmpris 12 | ExecStartPre=/opt/hifiberry/bin/bootmsg "Starting Snapcast" 13 | ExecStart=/usr/bin/python3 /opt/snapcastmpris/snapcastmpris.py 14 | StandardOutput=journal 15 | Restart=always 16 | RestartSec=5 17 | TimeoutStopSec=10 18 | 19 | [Install] 20 | WantedBy=multi-user.target 21 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_SPOTIFYD 2 | bool "spotifyd" 3 | help 4 | An open source Spotify client running as a UNIX daemon. 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | # select BR2_PACKAGE_HOST_CARGO 7 | # select BR2_PACKAGE_HOST_RUSTC 8 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/S99spotify: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Additional options that are passed to Spotify server 4 | OPTIONS="" 5 | 6 | case "$1" in 7 | start) 8 | printf "Starting spotifyd: " 9 | start-stop-daemon -S -q --exec /usr/bin/spotifyd -- $OPTIONS 10 | [ $? = 0 ] && echo "OK" || echo "FAIL" 11 | ;; 12 | stop) 13 | printf "Stopping spotifyd: " 14 | start-stop-daemon -K -x /usr/bin/spotifyd 15 | [ $? = 0 ] && echo "OK" || echo "FAIL" 16 | ;; 17 | restart) 18 | $0 stop 19 | $0 start 20 | ;; 21 | *) 22 | echo "Usage: $0 {start|stop|restart}" 23 | exit 1 24 | ;; 25 | esac 26 | 27 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/S99spotify-watchdog: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Additional options that are passed to Spotify server 4 | OPTIONS="" 5 | 6 | case "$1" in 7 | start) 8 | printf "Starting spotifyd: " 9 | start-stop-daemon -S --background -q --exec /opt/hifiberry/bin/spotify-watchdog $OPTIONS 10 | [ $? = 0 ] && echo "OK" || echo "FAIL" 11 | ;; 12 | stop) 13 | printf "Stopping spotifyd: " 14 | start-stop-daemon -K -x /opt/hifiberry/bin/spotify-watchdog 15 | [ $? = 0 ] && echo "OK" || echo "FAIL" 16 | ;; 17 | restart) 18 | $0 stop 19 | $0 start 20 | ;; 21 | *) 22 | echo "Usage: $0 {start|stop|restart}" 23 | exit 1 24 | ;; 25 | esac 26 | 27 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/compile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This should be used on a Pi running Raspbian to compile the latest Spotifyd version 3 | # It's not used anymore as we're now using the official spotifyd binary 4 | if [ "$1" == "clean" ]; then 5 | cargo clean 6 | fi 7 | cargo build --release --no-default-features --features alsa_backend,dbus_mpris 8 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/dbus-spotify.conf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/dbus.conf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotify-start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . /etc/hifiberry.state 3 | 4 | if [ "$CURRENT_MIXER_CONTROL" == "DSPVolume" ]; then 5 | ARGS="-v alsa_linear" 6 | fi 7 | 8 | /usr/bin/spotifyd --no-daemon $ARGS 9 | 10 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotify-watchdog: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tail -fn0 /var/log/messages | awk '/daemon.err Spotify/ { print | "/etc/init.d/S99spotify restart" }' 3 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotify-watchdog-systemd: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tail -fn0 /var/log/messages | awk '/daemon.err Spotify/ { print | "/usr/bin/systemctl restart spotify" }' 3 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-0.2.10: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-0.2.10 -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-0.2.18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-0.2.18 -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-0.2.19: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-0.2.19 -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-0.2.20-patched: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-0.2.20-patched -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-0.2.24-patched: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-0.2.24-patched -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-2019-02-25: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-2019-02-25 -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-2019-06-19: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/package/spotifyd/spotifyd-2019-06-19 -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd-notification: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ ! -x /opt/hifiberry/bin/write-status ]; then 3 | exit 4 | fi 5 | 6 | if [ "$PLAYER_EVENT" == "stop" ]; then 7 | /opt/hifiberry/bin/write-status STOP SPOTIFY 8 | exit 9 | fi 10 | if [ "$PLAYER_EVENT" == "start" ]; then 11 | /opt/hifiberry/bin/write-status START SPOTIFY 12 | fi 13 | if [ "$TRACK_ID" != "" ]; then 14 | /opt/hifiberry/bin/write-status TRACK SPOTIFY $TRACK_ID 15 | fi 16 | 17 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | #username = USER 3 | #password = PASS 4 | backend = alsa 5 | mixer = Master 6 | volume-control = alsa 7 | device_name = HiFiBerry 8 | bitrate = 320 9 | #onevent = /opt/hifiberry/bin/spotifyd-notification 10 | onstart = /opt/hifiberry/bin/pause-all spotifyd 11 | 12 | -------------------------------------------------------------------------------- /buildroot/package/spotifyd/spotifyd.mk: -------------------------------------------------------------------------------- 1 | spotifyd-bin-mk -------------------------------------------------------------------------------- /buildroot/package/vollibrespot/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_VOLLIBRESPOT 2 | bool "vollibrespot" 3 | help 4 | An open source Spotify player with a metadata interface 5 | select BR2_PACKAGE_HOST_CARGO 6 | select BR2_PACKAGE_HOST_RUSTC 7 | -------------------------------------------------------------------------------- /buildroot/package/webradio/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_WEBRADIO 2 | bool "webradio" 3 | help 4 | Tools fosten to web radio stations (incl. TuneIn) 5 | depends on BR2_PACKAGE_HIFIBERRY_BASE 6 | depends on BR2_PACKAGE_BEOCREATE 7 | select BR2_PACKAGE_LIBCURL 8 | select BR2_PACKAGE_LIBCURL_CURL 9 | select BR2_PACKAGE_MPD_MPC 10 | 11 | -------------------------------------------------------------------------------- /buildroot/patches/global_patches_stored_here: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/buildroot/patches/global_patches_stored_here -------------------------------------------------------------------------------- /buildroot/uncompressed-modules.fragment: -------------------------------------------------------------------------------- 1 | CONFIG_MODULE_COMPRESS_NONE=y 2 | -------------------------------------------------------------------------------- /clean: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname $0` 4 | 5 | if [ "$1" == "" ]; then 6 | VERSION=`cat .piversion` 7 | echo No version given, assuming Pi$VERSION 8 | else 9 | VERSION=$1 10 | fi 11 | 12 | BRDIR=`./brdir $VERSION` 13 | echo "Cleaning $BRDIR" 14 | 15 | if [ "$BRSRCDIR" == "" ]; then 16 | BRSRCDIR=../build-root 17 | fi 18 | 19 | cd ../buildroot 20 | make O=$BRDIR clean 21 | -------------------------------------------------------------------------------- /clean-images: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname $0` 3 | rm images/*.zip images/*.tar.gz images/*.img 4 | 5 | -------------------------------------------------------------------------------- /clean-package: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | rm -rf ../buildroot-*/build/$1* ../buildroot-*/build/host-$1* 3 | -------------------------------------------------------------------------------- /compile-all: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname $0` 4 | 5 | for i in 0w 2 3 4; do 6 | ./compile $i $1 $2 7 | done 8 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname $0` 4 | 5 | if [ "$1" == "" ]; then 6 | VERSION=`cat .piversion` 7 | echo No version given, assuming Pi$VERSION 8 | else 9 | VERSION=$1 10 | fi 11 | 12 | if [ "$BRSRCDIR" == "" ]; then 13 | BRSRCDIR=../buildroot 14 | fi 15 | 16 | BRDIR=`./brdir $VERSION` 17 | echo "Configuring in $BRDIR" 18 | cd `dirname $0` 19 | cd $BRSRCDIR 20 | make O=$BRDIR BR2_EXTERNAL=../hifiberry-os/buildroot menuconfig 21 | -------------------------------------------------------------------------------- /configs/devpackages: -------------------------------------------------------------------------------- 1 | BR2_PACKAGE_STRESS 2 | BR2_PACKAGE_STRESS_NG 3 | BR2_PACKAGE_STRACE 4 | BR2_PACKAGE_TCPDUMP 5 | BR2_PACKAGE_GDB 6 | -------------------------------------------------------------------------------- /configs/override-test.conf: -------------------------------------------------------------------------------- 1 | BR2_INIT_BUSYBOX=y 2 | BR2_INIT_SYSTEMD=m 3 | BR2_TARGET_ROOTFS_EXT2_SIZE="200M" 4 | BR2_TARGET_GENERIC_ROOT_PASSWD="hifiberry" 5 | BR2_PACKAGE_HIFIBERRY_ALL=n 6 | BR2_PACKAGE_HIFIBERRY_LOCALBROWSER=n 7 | BR2_PACKAGE_HIFIBERRY_TEST=y 8 | BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y 9 | BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=n 10 | -------------------------------------------------------------------------------- /configs/remove-slowpi: -------------------------------------------------------------------------------- 1 | BR2_PACKAGE_MESA3D 2 | BR2_PACKAGE_HIFIBERRY_LOCALBROWSER 3 | BR2_PACKAGE_LIBWPE 4 | BR2_PACKAGE_WPEWEBKIT 5 | BR2_PACKAGE_DEJAVU 6 | BR2_PACKAGE_COG 7 | BR2_PACKAGE_WAYLAND 8 | BR2_PACKAGE_ENABLE_VC4KMS 9 | BR2_PACKAGE_WEBP 10 | BR2_PACKAGE_GLMARK2_EGL_GLES 11 | BR2_PACKAGE_WESTON 12 | BR2_PACKAGE_LIBDRM 13 | BR2_PACKAGE_BRUTEFIR 14 | BR2_PACKAGE_HIFIBERRY_SHAIRPORT_AIRPLAY2 15 | BR2_PACKAGE_NQPTP 16 | -------------------------------------------------------------------------------- /create-brpatch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd `dirname $0` 3 | cd ../buildroot 4 | for bak in `find . -name *bak`; do 5 | patched=${bak/bak/} 6 | if [ -f $patched ]; then 7 | echo $patched $bak 8 | diff -ru $bak $patched 9 | fi 10 | done 11 | -------------------------------------------------------------------------------- /create-python-package: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | pushd ../buildroot/utils 3 | ./scanpypi $1 4 | popd 5 | ls ../buildroot/utils/packages/ 6 | mv ../buildroot/utils/packages/python- buildroot/package/ 7 | 8 | -------------------------------------------------------------------------------- /doc/architecture.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/doc/architecture.odg -------------------------------------------------------------------------------- /doc/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/doc/architecture.png -------------------------------------------------------------------------------- /doc/contributed.md: -------------------------------------------------------------------------------- 1 | # Contributes from users 2 | 3 | - Tidal Connect: https://support.hifiberry.com/hc/en-us/community/posts/360013667717-Tidal-Connect- 4 | -------------------------------------------------------------------------------- /doc/contributions.md: -------------------------------------------------------------------------------- 1 | # User contributions 2 | 3 | As HiFiBerryOS is OpenSource, you can contribute code to is. Have a look at the [contribution guidelines](CONTRIBUTING.md). 4 | Even small bug fixes and corrections of typos are very welcome - no contribution is too small. However, in this document, we list specifically larger contributions. 5 | 6 | ## BruteFIR 7 | 8 | [soundart](https://github.com/soundart/brutefir.git) has contributed a BruteFIR package. Note that there is no integration of this into the frontend or any player. 9 | -------------------------------------------------------------------------------- /doc/hardware.md: -------------------------------------------------------------------------------- 1 | # Tested 3rd party hardware 2 | 3 | HiFiBerryOS has been tested with these 3rd party products. As hardware might change without further notification, we can't guarantee 4 | that it will work with a specific release of these products. 5 | 6 | ## Bluetooth 7 | 8 | [Logilink USB Bluetooth V 4.0 Dongle](https://musicdb.hifiberry.com/asin/B0096Y2HFW) 9 | 10 | ## WiFi 11 | 12 | ## External displays 13 | 14 | [Lametric time](https://store.lametric.com/?rfsn=3238201.c5edf5) 15 | -------------------------------------------------------------------------------- /doc/known-problems.md: -------------------------------------------------------------------------------- 1 | # Known problems 2 | 3 | * Spotifyd sometimes crashes. This seems to happen only when it is not active. It will be automatically restarted, but you might still notice that it's not available in the Spotify client 4 | * Bluetooth volume control does not affect ALSA master volume, but is handled internally. This means, increasing/decreasing 5 | volume on Bluetooth won't have any effect on other applications. 6 | This is a limitation of the Bluetooth ALSA software 7 | * Bluetooth initialisation doesn't work 100% reliable. In case Bluetooth isn't starting up, try rebooting. 8 | -------------------------------------------------------------------------------- /doc/links.md: -------------------------------------------------------------------------------- 1 | # List of other projects that might be interesting for the future 2 | 3 | ## Equalisation 4 | * https://github.com/raedwulf/alsaequal: Alsaequal (LADSPA plugin) 5 | 6 | ## Multiroom 7 | * https://github.com/blaa/WaveSync: Audio distribution 8 | 9 | ## Local web browser 10 | * https://github.com/TOLDOTECHNIK/buildroot-webkit 11 | WPE webkit browser for local display 12 | * https://github.com/Igalia/buildroot-wpe 13 | WPE on buildroot 14 | 15 | 16 | -------------------------------------------------------------------------------- /doc/ports.md: -------------------------------------------------------------------------------- 1 | # Used ports 2 | 3 | The installed applications use the following ports: 4 | 5 | | application | port | remarks | 6 | | --- | --- | --- | 7 | | ssh | 22 | not enabled by default | 8 | | http | 80 | web interface | 9 | | http | 81 | audiocontrol API | 10 | | upnp | 5000 | Universal plug-n-play uses by multiple components | 11 | | mpd | 6600 | mpd control port | 12 | | ympd |9000| mpd web application | 13 | | sigma-tcp | 8086 | network connector for HiFiBerry DSP boards | 14 | | spotify | dynamic | | 15 | | shairport | dynamic | | 16 | | roon | dynamic | | 17 | -------------------------------------------------------------------------------- /doc/ramdisk.md: -------------------------------------------------------------------------------- 1 | # Running HiFiBerryOS from RAM 2 | 3 | With the 8GB version of the Pi4 it would be possible in general to run HiFiBerryOS from a RAM disk (the system partition is <1GB today). However, this is not yet supported. 4 | 5 | We're open to contributions! 6 | -------------------------------------------------------------------------------- /doc/resampling.md: -------------------------------------------------------------------------------- 1 | # Resampling 2 | 3 | As of January 2020, HiFiBerryOS does not mix audio sources anymore by default. Therefore, no resampling is required anymore. 4 | -------------------------------------------------------------------------------- /doc/wishlist.md: -------------------------------------------------------------------------------- 1 | # Wishlist 2 | 3 | * MPD list of web radios 4 | * IPv6 support 5 | 6 | # Done 7 | 8 | * Use systemd to speed up start process 9 | * Shairport 10 | * Spotifyd 11 | * Bluetooth 12 | * MPD 13 | * Spotify watchdog 14 | * alsaloop support for DAC+ ADC 15 | * Support for Pi Zero 16 | * Support for Pi 4 17 | * Upgrade tool 18 | * Consistent use of ALSA volume control in all applications 19 | * Setup WiFi using a temporary AP 20 | -------------------------------------------------------------------------------- /download-sources: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" == "" ]; then 4 | echo No version given, downloading sources for all Pi versions 5 | for i in 0w 2 3 4; do 6 | echo $0 $i 7 | $0 $i 8 | done 9 | exit 10 | fi 11 | 12 | BRDIR=`./brdir $1` 13 | echo "Downloading all sources for offline build in $BRDIR" 14 | 15 | cd ../buildroot 16 | make O=$BRDIR source 17 | -------------------------------------------------------------------------------- /helpers/default-30db.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | dsptoolkit install-profile https://raw.githubusercontent.com/hifiberry/hifiberry-dsp/master/sample_files/xml/dacdsp-default.xml 3 | cat <limit.txt 4 | volumeLimitRegister: -30db 5 | EOF 6 | dsptoolkit apply-settings ./limit.txt 7 | dsptoolkit store-settings ./limit.txt 8 | 9 | -------------------------------------------------------------------------------- /hifiberry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/hifiberry.jpg -------------------------------------------------------------------------------- /hifiberryos-black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/hifiberryos-black.jpg -------------------------------------------------------------------------------- /hifiberryos-white.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hifiberry/hifiberry-os/16325cf6992ee0a0693c262a6270f4f2e6377426/hifiberryos-white.jpg -------------------------------------------------------------------------------- /prepare-software: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sudo apt-get install -y git make gcc g++ unzip rsync bc sshpass zip libncurses-dev screen xsltproc libasound2-dev python3 python3-pyalsa python3-pip gcc-multilib g++-multilib f2fs-tools avahi-utils 3 | sudo python3 -m pip install hifiberrydsp 4 | -------------------------------------------------------------------------------- /publish-dev: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | HOST=$1 3 | PW=$2 4 | PORT=$3 5 | if [ "$PORT" == "" ]; then 6 | PORT=22 7 | fi 8 | if [ "$PW" == "" ]; then 9 | echo "call with $0 hostname password [port]" 10 | exit 1 11 | fi 12 | 13 | ./clean-images 14 | for i in 0w 2 3 4; do 15 | ./compile $i 16 | ./create-image $i 17 | done 18 | for i in images/updater*; do 19 | sha256sum $i 20 | done 21 | sshpass -p $PW scp -P $PORT images/updater* $HOST:images 22 | sshpass -p $PW scp -P $PORT images/hifiberryos*.zip $HOST:dev 23 | -------------------------------------------------------------------------------- /scripts/install-dacdsp13.sh: -------------------------------------------------------------------------------- 1 | curl https://raw.githubusercontent.com/hifiberry/hifiberry-os/development/buildroot/package/dspprofiles/dspdac-13.xml > /opt/beocreate/beo-dsp-programs/dacdsp-13.xml 2 | /bin/dsptoolkit install-profile /opt/beocreate/beo-dsp-programs/dacdsp-13.xml 3 | reboot 4 | 5 | -------------------------------------------------------------------------------- /secrets.template: -------------------------------------------------------------------------------- 1 | # 2 | # Rename this to secrets and add your IDs 3 | # 4 | export SPOTIFY_CLIENT_ID=xxxxx 5 | -------------------------------------------------------------------------------- /update-ts: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd `dirname $0` 4 | pwd 5 | TS=`date +%Y%m%d` 6 | for i in 0w 2 3 4; do 7 | chmod u+w ../buildroot-$i/target/etc/hifiberry.version 8 | echo $TS > ../buildroot-$i/target/etc/hifiberry.version 9 | chmod u-w ../buildroot-$i/target/etc/hifiberry.version 10 | ./compile $i 11 | done 12 | -------------------------------------------------------------------------------- /userdoc/powermanagememt.md: -------------------------------------------------------------------------------- 1 | # Enabling power management 2 | 3 | Sound card power management sometimes creates problems with some devices (e.g. pop sounds). Therefore, HiFiBerryOS completely disables power management 4 | for audio devices (the impact on overall power consumption is negligible). 5 | 6 | If you want to re-enable it for some reason, you can edit the file /etc/modprobe.d/snd_soc_core_disable_pm.conf 7 | -------------------------------------------------------------------------------- /userdoc/smbmounts.md: -------------------------------------------------------------------------------- 1 | # Edit Samba mounts 2 | 3 | If adding SAMBA shares via the UI isn't working correctly, you can tweak mount options of SAMBA shares via the /etc/smbmounts.conf file. 4 | 5 | The format is as follows: 6 | ``` 7 | id;smbshare;user;password;mount-options 8 | ``` 9 | e.g. 10 | ``` 11 | 1;\\192.168.99.1\music;music;music;vers=2 12 | ``` 13 | 14 | id is just any unique ID you want to give to this share. You can leave options empty if no specific mount options are needed. 15 | 16 | After editing the file, run 17 | ``` 18 | /opt/hifiberry/bin/mount-smb.sh 19 | ``` 20 | -------------------------------------------------------------------------------- /userdoc/spotify.md: -------------------------------------------------------------------------------- 1 | # Use Spotify connect 2 | 3 | To use Spotify connect, you need a paid Spotify subscription! 4 | 5 | If you're running HiFiBerry OS, the system should be automatically listed as an output device the 6 | Spotify application on your PC or mobile phone as long as both are connected to the same network. 7 | -------------------------------------------------------------------------------- /userdoc/troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting tips 2 | 3 | ## No metadata from Logitech Media Server 4 | 5 | Have a look at the lmsmpris logs: 6 | 7 | ` 8 | journalctl -u lmsmpris 9 | ` 10 | 11 | You might see a message that lmsmpris isn't connected to a server: 12 | 13 | ` 14 | WARNING: root - LMS socket not connected, ignoring command 15 | ` 16 | 17 | Check, if the command line interface of LMS is enabled and running on port 9090: 18 | 19 | ` 20 | telnet ip-of-your-lms 9090 21 | ` 22 | 23 | You can change this setting is LMS "Settings" dialog (Advanced -> Command Line Interface). If this is active, but you still can't connect to port 9090, restart the server. 24 | --------------------------------------------------------------------------------