├── .github ├── FUNDING.yml └── workflows │ └── pages.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── build.sh ├── config ├── docs ├── .pages ├── AdvancedTopics │ ├── .pages │ ├── bluetooth-internal.md │ ├── bluetooth.md │ ├── building-the-image.md │ ├── custom-scripts.md │ ├── customize-mpd.md │ ├── index.md │ ├── mount-a-cifs-or-nfs-share.md │ ├── mpd-control-gpio.md │ └── power-on-and-off-with-gpio.md ├── References │ ├── audio-hats.md │ ├── compatible-devices.md │ ├── filesystem-layout.md │ ├── index.md │ ├── mympdos-scripts.md │ └── packages.md ├── UserManual │ ├── .pages │ ├── add-music-to-the-library.md │ ├── after-first-start.md │ ├── bootstrap.md │ ├── general.md │ ├── index.md │ └── update.md ├── assets │ ├── css │ │ └── mympd.css │ ├── favicon.ico │ └── mympd-logo.svg └── index.md ├── image.sh ├── mkdocs.yml ├── mympdos ├── bootstrap-advanced.txt ├── bootstrap-simple.txt ├── build │ ├── build.sh │ ├── mympdos-base │ │ ├── APKBUILD │ │ └── mympdos-base │ │ │ └── fs │ │ │ ├── etc │ │ │ ├── apk │ │ │ │ └── keys │ │ │ │ │ └── mail@jcgames.de.rsa.pub │ │ │ ├── local.d │ │ │ │ └── mympdos.start │ │ │ ├── mympdos │ │ │ │ └── templates │ │ │ │ │ ├── mympdos-mpd-master.conf.tmpl │ │ │ │ │ └── mympdos-mpd-stable.conf.tmpl │ │ │ └── sysctl.d │ │ │ │ └── tcp_timestamps.conf │ │ │ └── usr │ │ │ └── bin │ │ │ ├── alpine-upgrade.sh │ │ │ ├── audiohat.sh │ │ │ ├── automount.sh │ │ │ ├── configmpd.sh │ │ │ ├── mympdos-update.sh │ │ │ ├── rwdata.sh │ │ │ ├── save.sh │ │ │ ├── savereboot.sh │ │ │ ├── saveshutdown.sh │ │ │ └── status.sh │ ├── mympdos-libgpiod2 │ │ └── APKBUILD │ ├── mympdos-libmpdclient │ │ └── APKBUILD │ ├── mympdos-mpc │ │ └── APKBUILD │ ├── mympdos-mpd-master │ │ ├── APKBUILD │ │ ├── mympdos-mpd-master.confd │ │ ├── mympdos-mpd-master.initd │ │ ├── mympdos-mpd-master.pre-install │ │ └── stacksize.patch │ ├── mympdos-mpd-stable │ │ ├── APKBUILD │ │ ├── mympdos-mpd-stable.confd │ │ ├── mympdos-mpd-stable.initd │ │ ├── mympdos-mpd-stable.pre-install │ │ └── stacksize.patch │ └── mympdos-musicdb-scripts │ │ └── APKBUILD ├── mpd.replace ├── netboot │ ├── init.mympd │ └── init.patch ├── overlay │ ├── etc │ │ ├── .default_boot_services │ │ ├── conf.d │ │ │ └── local │ │ ├── local.d │ │ │ └── mympdos-bootstrap.start │ │ └── runlevels │ │ │ └── default │ │ │ └── local │ └── usr │ │ └── local │ │ ├── bin │ │ └── mympdos-bootstrap.sh │ │ └── defaults │ │ ├── etc │ │ └── doas.conf │ │ └── mympd-scripts │ │ ├── RW-Library.lua │ │ ├── Reboot.lua │ │ └── Shutdown.lua └── usercfg.txt ├── repository ├── aarch64 │ ├── APKINDEX.tar.gz │ ├── mygpiod-0.8.0-r0.apk │ ├── mygpiod-dbg-0.8.0-r0.apk │ ├── mygpiod-dev-0.8.0-r0.apk │ ├── mygpiod-doc-0.8.0-r0.apk │ ├── mympd-21.0.1-r0.apk │ ├── mympd-dbg-21.0.1-r0.apk │ ├── mympd-doc-21.0.1-r0.apk │ ├── mympdos-base-0.9.7-r4.apk │ ├── mympdos-libgpiod2-2.2-r2.apk │ ├── mympdos-libgpiod2-dev-2.2-r2.apk │ ├── mympdos-libgpiod2-doc-2.2-r2.apk │ ├── mympdos-libmpdclient-2.23-r5.apk │ ├── mympdos-libmpdclient-dev-2.23-r5.apk │ ├── mympdos-libmpdclient-doc-2.23-r5.apk │ ├── mympdos-mpc-0.36-r4.apk │ ├── mympdos-mpc-bash-completion-0.36-r4.apk │ ├── mympdos-mpc-doc-0.36-r4.apk │ ├── mympdos-mpd-master-0.25.0-r4.apk │ ├── mympdos-mpd-master-dbg-0.25.0-r4.apk │ ├── mympdos-mpd-master-doc-0.25.0-r4.apk │ ├── mympdos-mpd-master-openrc-0.25.0-r4.apk │ ├── mympdos-mpd-stable-0.24.4-r1.apk │ ├── mympdos-mpd-stable-dbg-0.24.4-r1.apk │ ├── mympdos-mpd-stable-doc-0.24.4-r1.apk │ ├── mympdos-mpd-stable-openrc-0.24.4-r1.apk │ └── mympdos-musicdb-scripts-0.1.0-r7.apk └── mail@jcgames.de.rsa.pub └── updates ├── 0.1.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.2.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.3.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.4.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.5.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.6.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.7.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.8.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.3 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.4 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.5 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.6 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.7 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.8 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 0.9.9 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.0.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.0.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.0.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.1.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.1.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.1.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.1.3 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.2.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.2.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.2.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.2.3 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.2.4 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.3.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.4.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.4.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.4.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.5.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.5.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.5.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.5.3 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.5.4 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.6.0 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.6.1 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.6.2 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.6.3 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh ├── 1.6.4 ├── update.sha256 ├── update.tar.gz └── update │ ├── myMPDos.version │ └── update.sh └── createupdate.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://juergenmang.de/donate 2 | -------------------------------------------------------------------------------- /.github/workflows/pages.yml: -------------------------------------------------------------------------------- 1 | name: pages 2 | 3 | on: 4 | # Runs on pushes targeting the default branch 5 | push: 6 | branches: ["master"] 7 | 8 | # Allows you to run this workflow manually from the Actions tab 9 | workflow_dispatch: 10 | 11 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 12 | permissions: 13 | contents: read 14 | pages: write 15 | id-token: write 16 | 17 | # Allow one concurrent deployment 18 | concurrency: 19 | group: "pages" 20 | cancel-in-progress: true 21 | 22 | jobs: 23 | # Build job 24 | build: 25 | runs-on: ubuntu-latest 26 | steps: 27 | - name: Checkout 28 | uses: actions/checkout@v4 29 | - name: Generate documentation 30 | run: | 31 | python3 -m venv ~/python-venv/ 32 | ~/python-venv/bin/pip install mkdocs mkdocs-material mkdocs-include-markdown-plugin mkdocs-awesome-pages-plugin 33 | ~/python-venv/bin/mkdocs build -d _site 34 | - name: Upload artifact 35 | uses: actions/upload-pages-artifact@v3 36 | 37 | # Deployment job 38 | deploy: 39 | environment: 40 | name: github-pages 41 | url: ${{ steps.deployment.outputs.page_url }} 42 | runs-on: ubuntu-latest 43 | needs: build 44 | steps: 45 | - name: Deploy to GitHub Pages 46 | id: deployment 47 | uses: actions/deploy-pages@v4 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /apks 2 | /apks.* 3 | /tmp 4 | /images 5 | /mympdos/bootstrap.txt 6 | *~ 7 | /keys 8 | .cache 9 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # myMPDos Changelog 2 | 3 | https://github.com/jcorporation/myMPDos/ 4 | 5 | *** 6 | 7 | ## myMPDos v1.7.0 (2025-06-01) 8 | 9 | This release is build up on Alpine Linux 3.22.0. The mympdos-mpd-master package tracks now the MPD master branch that will become MPD 0.25. 10 | 11 | ### Changelog 12 | 13 | - Alpine Linux 3.22.0 14 | 15 | *** 16 | 17 | ## myMPDos v1.6.4 (2025-03-21) 18 | 19 | This release updates the mympdos-mpd-stable package to MPD 0.24.1. The mympdos-mpd-master package will be stale until the development of MPD 0.25 begins. Migrate to the mympdos-mpd-stable package to keep your installation up-to-date. 20 | 21 | *** 22 | 23 | ## myMPDos v1.6.3 (2025-03-07) 24 | 25 | This release is build up on Alpine Linux 3.21.3. 26 | 27 | ### Changelog 28 | 29 | - Alpine Linux 3.21.3 30 | - Updated MPD master 31 | - Enabled wavpack for MPD builds 32 | 33 | *** 34 | 35 | ## myMPDos v1.6.2 (2025-01-09) 36 | 37 | This release is build up on Alpine Linux 3.21.2. 38 | 39 | ### Changelog 40 | 41 | - Alpine Linux 3.21.2 42 | 43 | *** 44 | 45 | ## myMPDos v1.6.1 (2024-12-11) 46 | 47 | This is a small bugfix release. 48 | 49 | ### Changelog 50 | 51 | - Fix chown semantics 52 | - Add missing ca-certificates package 53 | 54 | *** 55 | 56 | ## myMPDos v1.6.0 (2024-12-05) 57 | 58 | This release is build up on Alpine Linux 3.21.0. 59 | 60 | ### Changelog 61 | 62 | - Alpine Linux 3.21.0 63 | - MPD 0.23.16 64 | 65 | *** 66 | 67 | ## myMPD v1.5.4 (2024-11-01) 68 | 69 | This is a small maintenance release. 70 | 71 | ### Changelog 72 | 73 | - Set read permissions for all users for vcgencmd 74 | - Migrate documentation to mkdocs 75 | - Update libgpiod to v2.2 76 | 77 | *** 78 | 79 | ## myMPDos v1.5.3 (2024-09-11) 80 | 81 | This release is build up on Alpine Linux 3.20.3. 82 | 83 | ### Changelog 84 | 85 | - Alpine Linux 3.20.3 86 | 87 | *** 88 | 89 | ## myMPDos v1.5.2 (2024-07-27) 90 | 91 | This release is build up on Alpine Linux 3.20.2. 92 | 93 | ### Changelog 94 | 95 | - Alpine Linux 3.20.2 96 | - Update mpc, libmpdclient, mpd-master 97 | - Support ShowMovement Tag 98 | 99 | *** 100 | 101 | ## myMPDos v1.5.1 (2024-07-02) 102 | 103 | This release is build up on Alpine Linux 3.20.1. 104 | 105 | ### Changelog 106 | 107 | - Alpine Linux 3.20.1 108 | 109 | *** 110 | 111 | ## myMPDos v1.5.0 (2024-06-12) 112 | 113 | This release is build up on Alpine Linux 3.20.0. 114 | 115 | ### Changelog 116 | 117 | - Alpine Linux 3.20.0 118 | 119 | *** 120 | 121 | ## myMPDos v1.4.2 (2024-04-20) 122 | 123 | This release fixes the bootstrap script. 124 | 125 | ### Changelog 126 | 127 | - Increase boot partition size 128 | - Improve bootstrap script 129 | - Do not default install mympdos-musicdb-scripts 130 | - Save bootstrap log to `/boot/bootstrap.log` 131 | - Save time for swclock 132 | - Improve save*.sh scripts 133 | - Save time for swclock 134 | - Reliably save myMPD state 135 | - Do not reset volume to 100% on startup 136 | 137 | *** 138 | 139 | ## myMPDos v1.4.1 (2024-01-28) 140 | 141 | This release is build up on Alpine Linux 3.19.1. 142 | 143 | ### Changelog 144 | 145 | - Alpine Linux 3.19.1 146 | - Upd: add myMPD ca to system trust store 147 | 148 | *** 149 | 150 | ## myMPDos v1.4.0 (2023-12-19) 151 | 152 | This release is build up on Alpine Linux 3.19.0. 153 | 154 | ### Notes 155 | 156 | myGPIOd must be configured from scratch: https://github.com/jcorporation/myGPIOd 157 | 158 | ### Changelog 159 | 160 | - Alpine Linux 3.19.0 161 | - Save shutdowntime in apkovl 162 | - New package: mympdos-libgpiod2 (libgpiod v2.1) 163 | - myGPIOd v0.4.0 with many new features 164 | 165 | *** 166 | 167 | ## myMPDos v1.3.0 (2023-10-12) 168 | 169 | This release is build up on Alpine Linux 3.18.4. 170 | 171 | ### Changelog 172 | 173 | - Install myMPD scripts through bootstrap script #28 174 | - Add myMPD config options to bootstrap file 175 | 176 | ## myMPDos v1.2.4 (2023-08-10) 177 | 178 | This release is build up on Alpine Linux 3.18.3. 179 | 180 | ### Changelog 181 | 182 | - Alpine Linux 3.18.3 183 | 184 | *** 185 | 186 | ## myMPDos v1.2.3 (2023-07-29) 187 | 188 | This release enables IPv6. 189 | 190 | *** 191 | 192 | ## myMPDos v1.2.2 (2023-07-23) 193 | 194 | This release adds bleeding edge versions of libmpdclient and mpc to the repositories. 195 | 196 | Replace mympdos-mpd-stable with mympdos-mpd-master to enjoy the latest features. 197 | 198 | ### Changelog 199 | 200 | - Replace libmpdclient with [libmympdclient](https://github.com/jcorporation/libmympdclient) 201 | - Add [mympdos-mpc](https://github.com/jcorporation/mpc) 202 | 203 | *** 204 | 205 | ## myMPDos v1.2.1 (2023-06-14) 206 | 207 | This release is build up on Alpine Linux 3.18.2. 208 | 209 | ### Changelog 210 | 211 | - Alpine Linux 3.18.2 212 | 213 | *** 214 | 215 | ## myMPDos v1.2.0 (2023-06-04) 216 | 217 | This release is build up on Alpine Linux 3.18.0. 218 | 219 | ### Changelog 220 | 221 | - Alpine Linux 3.18.0 222 | 223 | *** 224 | 225 | ## myMPDos v1.1.3 (2023-03-30) 226 | 227 | This release is build up on Alpine Linux 3.17.3. 228 | 229 | ### Changelog 230 | 231 | - Alpine Linux 3.17.3 232 | 233 | *** 234 | 235 | ## myMPDos v1.1.2 (2023-02-17) 236 | 237 | This release is build up on Alpine Linux 3.17.2. 238 | 239 | ### Changelog 240 | 241 | - Alpine Linux 3.17.2 242 | - myMPD 10.2.3 243 | 244 | *** 245 | 246 | ## myMPDos v1.1.1 (2023-01-19) 247 | 248 | This release is build up on Alpine Linux 3.17.1. 249 | 250 | ### Changelog 251 | 252 | - Alpine Linux 3.17.1 253 | - myMPD 10.2.0 254 | - MPD 0.23.12 255 | 256 | *** 257 | 258 | ## myMPDos v1.1.0 (2022-11-28) 259 | 260 | This release is build up on Alpine Linux 3.17.0. 261 | 262 | ### Changelog 263 | 264 | - Alpine Linux 3.17.0 265 | - myMPD 10.1.3 266 | 267 | *** 268 | 269 | ## myMPDos v1.0.2 (2022-11-13) 270 | 271 | This release is build up on Alpine Linux 3.16.3. 272 | 273 | *** 274 | 275 | ## myMPDos v1.0.1 (2022-08-14) 276 | 277 | This release is build up on Alpine Linux 3.16.2. 278 | 279 | *** 280 | 281 | ## myMPDos v1.0.0 (2022-08-01) 282 | 283 | This release is build up on Alpine Linux 3.16.1. 284 | 285 | ### Changelog 286 | 287 | - myMPD 9.4.1 288 | - MPD 0.23.8 289 | 290 | *** 291 | 292 | ## myMPDos v0.9.9 (2022-06-25) 293 | 294 | This release is build up on Alpine Linux 3.16.0. 295 | 296 | ### Changelog 297 | 298 | - Feat: install mympdos-musicdb-scripts as advanced package (https://github.com/jcorporation/musicdb-scripts) 299 | 300 | *** 301 | 302 | ## myMPDos v0.9.8 (2022-04-06) 303 | 304 | This release is based on Alpine Linux 3.15.4. 305 | 306 | *** 307 | 308 | ## myMPDos v0.9.7 (2022-04-01) 309 | 310 | This release is based on Alpine Linux 3.15.3. 311 | 312 | *** 313 | 314 | ## myMPDos v0.9.6 (2022-03-24) 315 | 316 | This release is based on Alpine Linux 3.15.2. 317 | 318 | *** 319 | 320 | ## myMPDos v0.9.5 321 | 322 | This release updates the base to Alpine Linux 3.15.1. 323 | 324 | ### Changelog 325 | 326 | - default usercfg.txt file to support RPI Zero and 2B 327 | - based on Alpine Linux 3.15.1 328 | 329 | *** 330 | 331 | ## myMPDos v0.9.4 (2021-12-02) 332 | 333 | This release updates the base alpine linux image to 3.15. 334 | 335 | ### Changelog 336 | 337 | - MPD 0.23.5 is now the default MPD version 338 | - sudo is replaced by doas 339 | 340 | *** 341 | 342 | ## myMPDos v0.9.3 (2021-11-14) 343 | 344 | This release upgrades the alpine base image to 3.14.3. 345 | 346 | *** 347 | 348 | ## myMPDos v0.9.2 (2021-10-08) 349 | 350 | This release updates the base alpine image to 3.14.2. 351 | 352 | *** 353 | 354 | ## myMPDos v0.9.1 (2021-08-16) 355 | 356 | This release updates the base alpine image to 3.14.1 and myMPD to 8.0.4. 357 | 358 | *** 359 | 360 | ## myMPDos v0.9.0 (2021-07-30) 361 | 362 | This release adds some features. 363 | 364 | ### Changelog 365 | 366 | - Feat: enabling/disabling internal raspberry pi bluetooth support 367 | - Upd: myMPD v8.0.2 368 | - Upd: remove obsolet myMPDos apks from boot partition 369 | - Upd: enhance alpine upgrade process 370 | - Upd: enhanced bootstrap process 371 | - Upd: remove disfunctional support for armel und armhf 372 | - Fix: bootstrap process starts myMPD with old commandline option 373 | - Fix: permissions of /var/lib/mympd/scripts 374 | 375 | *** 376 | 377 | ## myMPDos v0.8.0 (2021-07-08) 378 | 379 | This release updates the base image to Alpine Linux 3.14.0 and updates MPD to the latest versions. 380 | 381 | *** 382 | 383 | ## myMPDos v0.7.0 (2021-02-20) 384 | 385 | This release updates the base image to Alpine Linux 3.13.2. 386 | 387 | *** 388 | 389 | ## myMPDos v0.6.0 (2021-02-08) 390 | 391 | This release is based on Alpine Linux 3.13.1. 392 | 393 | *** 394 | 395 | ## myMPDos v0.4.0 (2020-12-19) 396 | 397 | This release is based on Alpine Linux 3.12.3. 398 | 399 | ### Changelog 400 | 401 | - Upd: myMPD 6.9.0 402 | 403 | *** 404 | 405 | ### myMPDos v0.3.0 (2020-11-17) 406 | 407 | This is the third release of myMPDos. 408 | 409 | ### Changelog 410 | 411 | - Feat: new package for myGPIOd 0.1.0 412 | - Upd: myMPD 6.7.0 413 | - Upd: MPD 0.22.3 414 | 415 | *** 416 | 417 | ## myMPDos v0.2.0 (2020-10-30) 418 | 419 | This is the second release of myMPDos. 420 | 421 | ### Changelog 422 | 423 | - Based on Alpine Linux 3.12.1 424 | - myMPD 6.6.2 425 | - MPD 0.22.2 426 | - MPD from git master branch (0.23.0) 427 | - libmpdclient from git master branch 428 | 429 | *** 430 | 431 | ## myMPDos v0.1.0 (2020-08-31) 432 | 433 | This is the first release of myMPDos, the codename is "The updater works, I can ship!" 434 | 435 | ### Changelog 436 | 437 | - Based on Alpine Linux 3.12 438 | - myMPD 6.6.1 439 | - MPD 0.21.25 440 | - MPD from git master branch (0.22.0) 441 | - libmpdclient from git master branch 442 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # myMPDos 2 | 3 | myMPDos is a Raspberry Pi image (aarch64) based on Alpine Linux. It is running entirely in RAM and it does not write to the sd-card unless you want to save settings. Therefore, myMPDos is very robust and you can simply turn off the power without any risk of corruption of your sd-card. 4 | 5 | myMPDos is a turnkey music playback solution and is designed around [MPD](https://www.musicpd.org/) and [myMPD](https://github.com/jcorporation/myMPD). After startup you can access the myMPD webinterface, copy music to the sd-card data partition, mount a music share or simply plugin an usb storage and you can start enjoying your music. 6 | 7 | myMPDos has no configuration dialogs or web ui for initial and further configuration. But there are all common linux utilities installed and more can be installed from the alpine linux repositories. 8 | 9 | The initial configuration is done through a simple bootstrap file, that has sane default values preconfigured. Setting up myMPDos takes only a few minutes. Experts can use the advanced bootstrap file to customize the installation further. 10 | 11 | ## Features 12 | 13 | - Based on latest Alpine Linux 14 | - Runs entirely in RAM 15 | - Very small ressource usage 16 | - Preconfigured MPD and myMPD 17 | - Latest stable MPD and myMPD releases 18 | - Bleeding edge versions of MPD, mpc and libmpdclient 19 | - Automounts USB devices and adds its contents to the mpd database 20 | - Configures MPD outputs automatically 21 | - Use GPIO buttons to control MPD and myMPD with [myGPIOd](https://github.com/jcorporation/myGPIOd) 22 | - Optional bluetooth support 23 | 24 | ## Usage 25 | 26 | 1. Download the latest [release image](https://github.com/jcorporation/myMPDos/releases) 27 | 2. Transfer it to the sd-card, e. g. with [balenaEtcher](https://www.balena.io/etcher/) 28 | 3. Copy `bootstrap-simple.txt` or `bootstrap-advanced.txt` to `bootstrap.txt` 29 | 4. Adapt `bootstrap.txt` 30 | 5. Boot your Raspberry Pi 31 | 32 | ## Processlist 33 | 34 | ``` 35 | init-+-getty 36 | |-mpd-+-{decoder:mad} 37 | | |-{io} 38 | | |-{output:U24XL US} 39 | | |-{player} 40 | | `-{rtio} 41 | |-mympd-+-{api} 42 | | |-{scripts} 43 | | `-{webserver} 44 | |-ntpd 45 | |-rngd 46 | |-sshd 47 | `-syslogd 48 | ``` 49 | 50 | ## Documentation 51 | 52 | For further information on installation and configuration, see the [myMPDos documentation](https://jcorporation.github.io/myMPDos/). 53 | 54 | ## Copyright 55 | 56 | 2020-2025 Juergen Mang 57 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | #save script path and change to it 9 | STARTPATH=$(dirname "$(realpath "$0")") 10 | cd "$STARTPATH" || exit 1 11 | 12 | #get config 13 | source config || { echo "config not found"; exit 1; } 14 | 15 | #redefine TMPDIR to make it absolute 16 | TMPDIR="$STARTPATH/$TMPDIR" 17 | 18 | echo "Building for $ARCH" 19 | 20 | function check_deps() { 21 | echo "Checking dependencies" 22 | for DEP in wget tar gzip cpio dd losetup sfdisk mkfs.vfat mkfs.ext4 sudo install sed patch 23 | do 24 | if ! command -v "$DEP" > /dev/null 25 | then 26 | echo "Tool $DEP not found" 27 | exit 1 28 | fi 29 | done 30 | } 31 | 32 | umount_retry() { 33 | if ! sudo umount "$1" 34 | then 35 | echo "Retrying in 2s" 36 | sleep 2 37 | sudo umount "$1" || return 1 38 | fi 39 | return 0 40 | } 41 | 42 | install_tmp() { 43 | if [ ! -f "$TMPDIR/.mympdos-tmp" ] 44 | then 45 | install -d "$TMPDIR" 46 | touch "$TMPDIR/.mympdos-tmp" 47 | fi 48 | cd "$TMPDIR" || exit 1 49 | } 50 | 51 | build_stage1() { 52 | echo "myMPDos build stage 1: Download" 53 | install_tmp 54 | if [ ! -f "$TMPDIR/$NETBOOT_ARCHIVE" ] 55 | then 56 | echo "Getting $NETBOOT_ARCHIVE" 57 | wget -q "${ALPINE_MIRROR}/v${ALPINE_MAJOR_VERSION}/releases/${ARCH}/$NETBOOT_ARCHIVE" \ 58 | -O "$TMPDIR/$NETBOOT_ARCHIVE" 59 | fi 60 | if [ ! -d "$TMPDIR/netboot" ] 61 | then 62 | install -d "$TMPDIR/netboot" 63 | if ! tar -xzf "$TMPDIR/$NETBOOT_ARCHIVE" -C "$TMPDIR/netboot" 64 | then 65 | echo "Can not extract $NETBOOT_ARCHIVE" 66 | rm -f "$NETBOOT_ARCHIVE" 67 | exit 1 68 | fi 69 | fi 70 | 71 | if [ ! -f "$TMPDIR/$ARCHIVE" ] 72 | then 73 | echo "Getting $ARCHIVE" 74 | wget -q "${ALPINE_MIRROR}/v${ALPINE_MAJOR_VERSION}/releases/${ARCH}/$ARCHIVE" \ 75 | -O "$TMPDIR/$ARCHIVE" 76 | if ! tar -tzf "$TMPDIR/$ARCHIVE" > /dev/null 77 | then 78 | echo "Can not extract $ARCHIVE" 79 | rm -f "$ARCHIVE" 80 | exit 1 81 | fi 82 | fi 83 | } 84 | 85 | build_stage2() { 86 | echo "myMPDos build stage 2: Create build image" 87 | install_tmp 88 | dd if=/dev/zero of="$TMPDIR/$BUILDIMAGE" bs=1M count="$IMAGESIZEBUILD" 89 | sfdisk "$TMPDIR/$BUILDIMAGE" <<< "1, ${BOOTPARTSIZEBUILD}, b, *" 90 | sfdisk -a "$TMPDIR/$BUILDIMAGE" <<< "," 91 | 92 | LOOP=$(sudo losetup --partscan --show -f "$BUILDIMAGE") 93 | [ "$LOOP" = "" ] && exit 1 94 | sudo mkfs.vfat "${LOOP}p1" 95 | sudo mkfs.ext4 "${LOOP}p2" 96 | install -d "$TMPDIR/mnt" 97 | sudo mount -ouid="$BUILDUSER" "${LOOP}p1" "$TMPDIR/mnt" || exit 1 98 | if ! tar -xzf "$TMPDIR/$ARCHIVE" -C "$TMPDIR/mnt" 99 | then 100 | echo "Extracting $TMPDIR/$ARCHIVE failed" 101 | exit 1 102 | fi 103 | cp "$TMPDIR/netboot/boot/$MODLOOP" "$TMPDIR/mnt/boot" 104 | 105 | echo "Copy build scripts" 106 | install -d "$TMPDIR/mnt/mympdos" 107 | find "$TMPDIR/mnt/mympdos/" -name \*~ -delete 108 | cp -r "$STARTPATH"/mympdos/build/* "$TMPDIR/mnt/mympdos" 109 | 110 | echo "Copy existing packages" 111 | install -d "$TMPDIR/mnt/mympdos-apks" 112 | if [ -f "$STARTPATH/repository/$ARCH/APKINDEX.tar.gz" ] 113 | then 114 | cp "$STARTPATH/repository/$ARCH/"*.apk "$TMPDIR/mnt/mympdos-apks/" 115 | cp "$STARTPATH/repository/$ARCH/APKINDEX.tar.gz" "$TMPDIR/mnt/mympdos-apks/" 116 | else 117 | echo "No existing packages found" 118 | fi 119 | if [ -f "$STARTPATH/keys/abuild.tgz" ] 120 | then 121 | echo "Using keys for public repository" 122 | cp "$STARTPATH/keys/abuild.tgz" "$TMPDIR/mnt/mympdos/" 123 | elif [ -f "$STARTPATH/apks/abuild.tgz" ] 124 | then 125 | echo "Using private build keys" 126 | cp "$STARTPATH/apks/abuild.tgz" "$TMPDIR/mnt/mympdos/" 127 | else 128 | echo "No saved abuild.tgz found" 129 | fi 130 | date +%s > "$TMPDIR/mnt/date" 131 | umount_retry "$TMPDIR/mnt" || exit 1 132 | sudo losetup -d "${LOOP}" 133 | 134 | echo "Patching initramfs" 135 | cd "$TMPDIR/netboot" || exit 1 136 | #rm -f "init" 137 | #gzip -dc "boot/$INITRAMFS" | cpio -id init 138 | if ! cp "$STARTPATH/mympdos/netboot/init.mympd" init 139 | then 140 | echo "Patching netboot init failed" 141 | exit 1 142 | fi 143 | echo ./init | cpio -H newc -o | gzip >> "$TMPDIR/netboot/boot/$INITRAMFS" 144 | } 145 | 146 | build_stage3() { 147 | echo "myMPDos build stage 3: Starting build" 148 | install_tmp 149 | $QEMU \ 150 | -M virt -m "$BUILDRAM" -cpu "$CPU" -smp "$BUILDCPUS" \ 151 | -kernel "$TMPDIR/netboot/boot/$KERNEL" -initrd "$TMPDIR/netboot/boot/$INITRAMFS" \ 152 | -append "console=ttyAMA0 ip=dhcp" \ 153 | -nographic \ 154 | -drive "file=$TMPDIR/${BUILDIMAGE},format=raw" \ 155 | -nic user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9 156 | } 157 | 158 | build_stage4() { 159 | echo "myMPDos build stage 4: Saving packages" 160 | install_tmp 161 | if [ -d "$STARTPATH/apks" ] 162 | then 163 | BACKUPDATE=$(stat -c"%Y" "$STARTPATH/apks") 164 | BACKUPDIR="$STARTPATH"/apks.$(date -d@"$BACKUPDATE" +%Y%m%d_%H%M) 165 | mv "$STARTPATH/apks" "$BACKUPDIR" 166 | fi 167 | install -d "$STARTPATH/apks/$ARCH" 168 | LOOP=$(sudo losetup --partscan --show -f "$TMPDIR/$BUILDIMAGE") 169 | sudo mount -text4 "${LOOP}p2" "$TMPDIR/mnt" || exit 1 170 | if [ -f "$TMPDIR/mnt/build/abuild.tgz" ] 171 | then 172 | cp "$TMPDIR/mnt/build/abuild.tgz" "$STARTPATH/apks/" 173 | else 174 | echo "No abuild.tgz found" 175 | fi 176 | if [ -f "$TMPDIR/mnt/build/packages/package/${ARCH}/APKINDEX.tar.gz" ] 177 | then 178 | cp "$TMPDIR"/mnt/build/packages/package/"${ARCH}"/* "$STARTPATH/apks/$ARCH/" 179 | cp "$TMPDIR"/mnt/build/packages/package/"${ARCH}"/* "$STARTPATH/repository/$ARCH/" 180 | else 181 | echo "No APKINDEX.tar.gz found" 182 | fi 183 | umount_retry "$TMPDIR/mnt" || exit 1 184 | sudo losetup -d "${LOOP}" 185 | } 186 | 187 | build_stage5() { 188 | echo "myMPDos build stage 5: Create image" 189 | install_tmp 190 | dd if=/dev/zero of="$TMPDIR/$IMAGE" bs=1M count="$IMAGESIZE" 191 | sfdisk "$TMPDIR/$IMAGE" <<< "1, ${BOOTPARTSIZE}, b, *" 192 | 193 | LOOP=$(sudo losetup --partscan --show -f "$TMPDIR/$IMAGE") 194 | [ "$LOOP" = "" ] && exit 1 195 | sudo mkfs.vfat "${LOOP}p1" 196 | install -d "$TMPDIR/mnt" 197 | sudo mount -ouid="$BUILDUSER" "${LOOP}p1" "$TMPDIR/mnt" || exit 1 198 | if ! tar -xzf "$ARCHIVE" -C "$TMPDIR/mnt" 199 | then 200 | echo "Extracting $ARCHIVE failed" 201 | exit 1 202 | fi 203 | cd "$STARTPATH/mympdos/overlay" || exit 1 204 | if ! tar -czf "$TMPDIR/mnt/mympdos-bootstrap.apkovl.tar.gz" . 205 | then 206 | echo "Creating overlay failed" 207 | exit 1 208 | fi 209 | cd "$TMPDIR" || exit 1 210 | if [ "$PRIVATEIMAGE" = "true" ] 211 | then 212 | echo "Copy private bootstrap.txt" 213 | cp "$STARTPATH/mympdos/bootstrap.txt" "$TMPDIR/mnt/" 214 | else 215 | echo "Copy sample bootstrap.txt files" 216 | cp "$STARTPATH"/mympdos/bootstrap-*.txt "$TMPDIR/mnt/" 217 | fi 218 | echo "Copy mpd.conf configurations" 219 | [ -f "$STARTPATH/mympdos/mpd.replace" ] && cp "$STARTPATH/mympdos/mpd.replace" "$TMPDIR/mnt/" 220 | [ -f "$STARTPATH/mympdos/mpd.conf" ] && cp "$STARTPATH/mympdos/mpd.conf" "$TMPDIR/mnt/" 221 | echo "Copy usercfg.txt" 222 | cp "$STARTPATH/mympdos/usercfg.txt" "$TMPDIR/mnt/" 223 | echo "Setting version to $VERSION" 224 | echo "$VERSION" > "$TMPDIR/mnt/myMPDos.version" 225 | 226 | install -d "$TMPDIR/mnt/mympdos-apk-keys/" 227 | echo "Copy local archive signing public key" 228 | tar --wildcards --strip-components=1 -xzf "$STARTPATH/apks/abuild.tgz" -C "$TMPDIR/mnt/mympdos-apk-keys/" ".abuild/*.rsa.pub" 229 | 230 | if [ -f "$STARTPATH/repository/mail@jcgames.de.rsa.pub" ] && 231 | [ ! -f "$TMPDIR/mnt/mympdos-apk-keys/mail@jcgames.de.rsa.pub" ] 232 | then 233 | echo "Copy myMPDos archive signing public key" 234 | cp "$STARTPATH/repository/mail@jcgames.de.rsa.pub" "$TMPDIR/mnt/mympdos-apk-keys/" 235 | fi 236 | 237 | umount_retry mnt || exit 1 238 | sudo losetup -d "${LOOP}" 239 | install -d "$STARTPATH/images" 240 | mv "$TMPDIR/$IMAGE" "$STARTPATH/images" 241 | [ "$COMPRESSIMAGE" = "true" ] && gzip -9 "$STARTPATH/images/$IMAGE" 242 | 243 | echo "" 244 | echo "Image $STARTPATH/images/$IMAGE created successfully." 245 | if [ "$PRIVATEIMAGE" = "true" ] 246 | then 247 | echo "" 248 | echo "A productive bootstrap.txt was copied to the image." 249 | echo "Dont redistribute this image!" 250 | echo "" 251 | else 252 | echo "" 253 | echo "Next step is to burn the image to a sd-card and" 254 | echo "create the bootstrap.txt file." 255 | echo "There are samples in the image." 256 | echo "" 257 | fi 258 | } 259 | 260 | cleanup() { 261 | umountbuild 262 | echo "Removing tmp" 263 | [ -f "$TMPDIR/.mympdos-tmp" ] || exit 0 264 | rm -fr "$TMPDIR" 265 | echo "Removing old images" 266 | find "$STARTPATH/images" -name \*.img -mtime "$KEEPIMAGEDAYS" -delete 267 | find "$STARTPATH/images" -name \*.img.gz -mtime "$KEEPIMAGEDAYS" -delete 268 | echo "Removing old package directories" 269 | find "$STARTPATH" -maxdepth 1 -type d -name apks.\* -mtime "$KEEPPACKAGEDAYS" -exec rm -rf {} \; 270 | } 271 | 272 | umountbuild() { 273 | echo "Umounting build environment" 274 | install_tmp 275 | LOOPS=$(losetup | grep "myMPDos" | awk '{print $1}') 276 | for LOOP in $LOOPS 277 | do 278 | echo "Found dangling $LOOP" 279 | MOUNTS=$(mount | grep "$LOOP" | awk '{print $1}') 280 | for MOUNT in $MOUNTS 281 | do 282 | sudo umount "$MOUNT" 283 | done 284 | done 285 | LOOPS=$(losetup | grep "myMPDos" | awk '{print $1}') 286 | for LOOP in $LOOPS 287 | do 288 | sudo losetup -d "$LOOP" 289 | done 290 | } 291 | 292 | case "$2" in 293 | private|p) 294 | PRIVATEIMAGE="true";; 295 | *) 296 | PRIVATEIMAGE="false";; 297 | esac 298 | 299 | case "$1" in 300 | stage1|1) 301 | check_deps 302 | build_stage1 303 | ;; 304 | stage2|2) 305 | check_deps 306 | build_stage2 307 | ;; 308 | stage3|3) 309 | check_deps 310 | build_stage3 311 | ;; 312 | stage4|4) 313 | check_deps 314 | build_stage4 315 | ;; 316 | stage5|5) 317 | check_deps 318 | build_stage5 319 | ;; 320 | build|b) 321 | check_deps 322 | build_stage1 323 | build_stage2 324 | build_stage3 325 | build_stage4 326 | build_stage5 327 | ;; 328 | umountbuild|u) 329 | umountbuild 330 | ;; 331 | cleanup|c) 332 | cleanup 333 | ;; 334 | *) 335 | echo "Usage: $0 (b|1|2|3|4|5|c|u) [private|public]" 336 | echo "" 337 | echo " build|b: runs all stages" 338 | echo " stage1|1: downloads and extracts all needed sources" 339 | echo " stage2|2: creates the build image" 340 | echo " stage3|3: starts the build image" 341 | echo " stage4|4: copies the packages from build into apks" 342 | echo " stage5|5: creates the image" 343 | echo "" 344 | echo " cleanup|c: cleanup things" 345 | echo " umountbuild|u: removes dangling mounts and loop devices" 346 | echo "" 347 | echo " private|p: creates a image with a productive bootstrap.txt file" 348 | echo " public: creates a image with sample bootstrap.txt files (default)" 349 | ;; 350 | esac 351 | 352 | exit 0 353 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-or-later 2 | # myMPDos (c) 2020-2025 Juergen Mang 3 | # https://github.com/jcorporation/myMPDos 4 | 5 | VERSION="1.7.0" 6 | 7 | ARCH="aarch64" 8 | BUILDIMAGE="myMPDos-build.img" 9 | ALPINE_MAJOR_VERSION="3.22" 10 | ALPINE_MINOR_VERSION="0" 11 | ALPINE_VERSION="${ALPINE_MAJOR_VERSION}.${ALPINE_MINOR_VERSION}" 12 | ALPINE_MIRROR="http://dl-cdn.alpinelinux.org/alpine" 13 | COMPRESSIMAGE="true" 14 | PRIVATEIMAGE="false" 15 | BUILDUSER="$USER" 16 | IMAGESIZE="1024" 17 | BOOTPARTSIZE="+512M" 18 | IMAGESIZEBUILD="8192" 19 | BOOTPARTSIZEBUILD="+1024M" 20 | BUILDCPUS="8" 21 | BUILDRAM="8192M" 22 | KEEPIMAGEDAYS="+365" 23 | KEEPPACKAGEDAYS="+31" 24 | TMPDIR="tmp/$ARCH" 25 | IMAGE="myMPDos-$ARCH-${VERSION}-$(date +%Y%m%d).img" 26 | NETBOOT_ARCHIVE="alpine-netboot-${ALPINE_VERSION}-${ARCH}.tar.gz" 27 | ARCHIVE="alpine-rpi-${ALPINE_VERSION}-${ARCH}.tar.gz" 28 | 29 | QEMU="qemu-system-aarch64" 30 | CPU="cortex-a57" 31 | KERNEL="vmlinuz-lts" 32 | INITRAMFS="initramfs-lts" 33 | MODLOOP="modloop-lts" 34 | -------------------------------------------------------------------------------- /docs/.pages: -------------------------------------------------------------------------------- 1 | nav: 2 | - index.md 3 | - UserManual 4 | - References 5 | - AdvancedTopics 6 | - ... 7 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/.pages: -------------------------------------------------------------------------------- 1 | title: Advanced Topics 2 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/bluetooth-internal.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Internal Bluetooth 3 | --- 4 | 5 | ## Enabling internal bluetooth 6 | 7 | If bluetooth is disabled, enable it. 8 | 9 | ```sh 10 | mount -oremount,rw /boot 11 | sed -i 's/dtoverlay=disable-bt/#dtoverlay=disable-bt/' /boot/usercfg.txt 12 | mount -oremount,ro /boot 13 | savereboot.sh 14 | ``` 15 | 16 | The Bluetooth controller is not automatically discovered on the UART. Test attaching it and check that the controller is found. 17 | 18 | ```sh 19 | btattach -B /dev/ttyAMA0 -P bcm -S 115200 -N & 20 | /etc/init.d/bluetooth start 21 | ``` 22 | 23 | After that `bluetoothctl list` should list your bluetooth controller. 24 | 25 | If the interface is discovered after the attach, you can make attaching persistent by uncommenting the line next to "rpi bluetooth" in `/etc/mdev.conf`. 26 | 27 | ```sh 28 | sed -i 's/^#ttyAMA0/ttyAMA0/' /etc/mdev.conf 29 | ``` 30 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/bluetooth.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bluetooth 3 | --- 4 | 5 | Using bluetooth speakers with myMPDos. 6 | 7 | The best is to attach a bluetooth dongle to the raspberry but you can also try to use the [internal bluetooth](bluetooth-internal.md) chip. 8 | 9 | ## Install packages 10 | 11 | Install packages, enable it and restart. 12 | 13 | ```sh 14 | apk add bluez bluez-alsa 15 | rc-update add bluetooth 16 | rc-update add bluealsa 17 | savereboot.sh 18 | ``` 19 | 20 | ## Connect the bluetooth speakers 21 | 22 | ```sh 23 | # Discover the speaker 24 | 25 | bluetoothctl power on 26 | bluetoothctl agent on 27 | bluetoothctl default-agent 28 | bluetoothctl scan on 29 | 30 | # The speaker should appear 31 | # Connect the speaker 32 | 33 | bluetoothctl pair
34 | bluetoothctl trust
35 | bluetoothctl connect
36 | 37 | # Save the bluetooth state 38 | 39 | lbu include /var/lib/bluetooth 40 | lbu commit 41 | ``` 42 | 43 | ## Configure MPD 44 | 45 | Append the following to `/etc/mpd.custom.conf` 46 | 47 | ```text 48 | audio_output { 49 | type "alsa" 50 | name "BT-Speaker" 51 | device "bluealsa:DEV=
,PROFILE=a2dp" 52 | mixer_type "software" 53 | format "44100:16:2" 54 | } 55 | ``` 56 | 57 | Restart MPD 58 | 59 | ```sh 60 | service mpd restart 61 | ``` 62 | 63 | *** 64 | 65 | Reference: [https://wiki.alpinelinux.org/wiki/Raspberry_Pi_3_-_Setting_Up_Bluetooth](https://wiki.alpinelinux.org/wiki/Raspberry_Pi_3_-_Setting_Up_Bluetooth) 66 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/building-the-image.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Building the image 3 | --- 4 | 5 | The `build.sh` script creates a qemu image, starts it and compiles all custom myMPDos packages. The result is custom Alpine Linux image that bootstraps its configuration and uses this repository as additional apk source. 6 | 7 | 1. Create the image with `./build.sh build` 8 | 2. The image is created in the `images` directory 9 | 3. Optionally run `./build.sh cleanup` to cleanup things 10 | 11 | ## Inspect 12 | 13 | You can inspect the created image: 14 | 15 | - Run `./image.sh mount` to mount the image 16 | - Image is mounted to `tmp/mnt` 17 | - Run `./image.sh umount` to unmount the image 18 | 19 | ## Test 20 | 21 | Do not burn the image after test to the sd-card. After first start of an image all bootstrap files are removed. 22 | 23 | - Run `./image.sh start` to start the image with qemu 24 | 25 | ## Build dependencies 26 | 27 | - Qemu (qemu-system-aarch64) 28 | - Working internet connection 29 | - Standard linux tools 30 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/custom-scripts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Run a custom script from myMPD client 3 | --- 4 | 5 | To run a script from the myMPD client that needs root privileges, the script must be configured to be able to run through `doas`. `doas` is a small and secure replacement for `sudo`. 6 | 7 | First, configure the script to run as root with the help of `doas`: 8 | 9 | ```txt 10 | # Create the file /etc/doas.d/custom.conf 11 | permit nopass mympd cmd /root/my-script.sh 12 | ``` 13 | 14 | Next, run a syntax check for `doas`: 15 | 16 | ```sh 17 | doas -C /etc/doas.d/custom.conf 18 | ``` 19 | 20 | Finally, add the script in the myMPD client, calling it with `doas`: 21 | 22 | ```lua 23 | result = mympd.os_capture("doas /root/my-script.sh") 24 | return result 25 | ``` 26 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/customize-mpd.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Customize MPD 3 | --- 4 | 5 | The MPD configuration is created by the script `/usr/bin/configmpd.sh`. This script is executed as soon as an audio device was changed (executed by mdev). 6 | 7 | ## Fully custom mpd.conf 8 | 9 | If the scripts finds a `/etc/mympdos/custom/mpd.conf` then this file is used as mpd configuration file and no further customization appears. 10 | 11 | ## Using the default template 12 | 13 | The script uses the template in `/etc/mympdos/templates/mympdos-mpd-(stable|master).conf.tmpl` and reads configuration values from `/etc/mympdos/mympdos.conf`. 14 | 15 | It processes the template and adds detected soundcards to the mpd configuration. 16 | 17 | You can use the `/etc/mympdos/custom/mpd.replace` file to customize any existing line of the template MPD configuration. The syntax is described in the file directly. 18 | 19 | The default template includes the `/etc/mpd.custom.conf` in the MPD configuration. Use this file for additions. 20 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Advanced Topics 3 | --- 4 | 5 | - [Bluetooth](bluetooth.md) 6 | - [Building the image](building-the-image.md) 7 | - [Control MPD and myMPD with buttons](mpd-control-gpio.md) 8 | - [Customize MPD](customize-mpd.md) 9 | - [Mount a CIFS or NFS share](mount-a-cifs-or-nfs-share.md) 10 | - [Power on and off with a button](power-on-and-off-with-gpio.md) 11 | - [Run a custom script from myMPD client](custom-scripts.md) -------------------------------------------------------------------------------- /docs/AdvancedTopics/mount-a-cifs-or-nfs-share.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mount a CIFS or NFS share 3 | --- 4 | 5 | 1. Enable the netmount service: `rc-update add netmount default` 6 | 2. Add a mount point: `rwdata.sh; mkdir /media/mmcblk0p2/library/nas; rwdata.sh` 7 | 3. Install packages: 8 | - for CIFS/SMB: `apk add cifs-utils` 9 | - for NFS: `apk add nfs-utils` 10 | 4. Add mount point to `/etc/fstab`: 11 | - for CIFS/SMB: `echo "/// /media/mmcblk0p2/library/nas cifs guest,gid=audio,soft,_netdev 0 0" >> /etc/fstab` 12 | - for NFS: `echo ":/ /media/mmcblk0p2/library/nas nfs soft,_netdev 0 0" >> /etc/fstab` 13 | 5. Mount it: `mount -a` 14 | 6. Save changes for next reboot: `save.sh` 15 | 16 | ## Hint 17 | 18 | If the share is not mounted at boot time, you can try to enable the `net-online` service: `rc-update add net-online boot` and edit `/etc/conf.d/net-online` configuration file. 19 | 20 | ## Placeholders 21 | 22 | - ``: name or ip address of the cifs or nfs server 23 | - ``: the share for cifs or export for nfs 24 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/mpd-control-gpio.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Control MPD and myMPD with buttons 3 | --- 4 | 5 | myGPIOd supports natively MPD and myMPD. 6 | 7 | All the examples are enabling the internal pull-up resistors, there is no need for an external one. Simply connect one side of the button to the pin and the other to ground. Debouncing is done through libgpiod (1000 ns debounce period). 8 | 9 | ## Control MPD 10 | 11 | The `mpc` action can execute all available [MPD protocol](https://mpd.readthedocs.io/en/latest/protocol.html) commands. 12 | 13 | In this example GPIO number 19 is used to go to the next song in the queue. 14 | 15 | **/etc/mygpiod.d/19.in** 16 | 17 | ```ini 18 | event_request = falling 19 | bias = pull-up 20 | debounce = 1000 21 | action_falling = mpc:next 22 | ``` 23 | 24 | ## Control myMPD 25 | 26 | The `mympd` action executes myMPD scripts. It connects to the myMPD API on localhost. 27 | 28 | In this example GPIO number 21 is used to call a script named `Jukebox` in the partition `default`. 29 | 30 | **/etc/mygpiod.d/21.in** 31 | 32 | ```ini 33 | event_request = falling 34 | bias = pull-up 35 | debounce = 1000 36 | action_falling = mympd:https://127.0.0.1 default Jukebox 37 | ``` 38 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/power-on-and-off-with-gpio.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Power on and off with GPIO 3 | --- 4 | 5 | myMPDos can be configured to shutdown the Raspberry Pi safely with a press of a button. 6 | 7 | ## Configuration 8 | 9 | - Connect a button to pin 5 (GPIO 3 SCL) and pin 6 (Ground). 10 | - We use the internal pull-up resistor and do not need an external one. 11 | 12 | ```sh 13 | # Add the package mygpiod 14 | 15 | apk add mygpiod 16 | 17 | # Configure GPIO 3 (SCL) 18 | 19 | cat > /etc/mygpiod.d/3.in << EOL 20 | event_request = falling 21 | bias = pull-up 22 | debounce = 1000 23 | action_falling = system:/etc/mygpiod.scripts/shutdown.sh 24 | EOL 25 | 26 | # Add a script for shutdown 27 | 28 | mkdir /etc/mygpiod.scripts 29 | cat > /etc/mygpiod.scripts/shutdown.sh << EOL 30 | #!/bin/sh 31 | doas /usr/bin/saveshutdown.sh 32 | EOL 33 | chmod +x /etc/mygpiod.scripts/shutdown.sh 34 | 35 | # Configure doas 36 | 37 | echo "permit nopass mygpiod cmd /usr/bin/saveshutdown.sh" >> /etc/doas.d/mygpiod.conf 38 | 39 | # Enable and start the mygpiod service 40 | 41 | rc-update add mygpiod 42 | service mygpiod start 43 | ``` 44 | 45 | ## How it works 46 | 47 | ### Power on 48 | 49 | The WAKE_ON_GPIO powers on the the Raspberry Pi if you shorten pin 5 (GPIO 3 SCL) to ground. 50 | 51 | ### Power off 52 | 53 | The myGPIOd daemon listens on pin 5 (GPIO 3 SCL) and calls `/etc/mygpiod.scripts/shutdown.sh`. 54 | 55 | **** 56 | 57 | ### References 58 | 59 | - [myGPIOd](https://github.com/jcorporation/myGPIOd) 60 | - [https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md) 61 | -------------------------------------------------------------------------------- /docs/References/audio-hats.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Audio Hats 3 | --- 4 | 5 | You can define the audio hat in the bootstrap file or configure it afterwards with `audiohat.sh` and rebooting. 6 | 7 | myMPDos supports following audio hats. 8 | 9 | - allo-boss-dac-pcm512x-audio 10 | - allo-boss2-dac-audio 11 | - allo-digione 12 | - allo-katana-dac-audio 13 | - allo-piano-dac-pcm512x-audio 14 | - allo-piano-dac-plus-pcm512x-audio 15 | - applepi-dac 16 | - chipdip-dac 17 | - hifiberry-amp 18 | - hifiberry-amp100 19 | - hifiberry-dac 20 | - hifiberry-dacplus 21 | - hifiberry-dacplusadc 22 | - hifiberry-dacplusadcpro 23 | - hifiberry-dacplusdsp 24 | - hifiberry-dacplushd 25 | - hifiberry-digi 26 | - hifiberry-digi-pro 27 | - iqaudio-codec 28 | - iqaudio-dac 29 | - iqaudio-dacplus 30 | - iqaudio-digi-wm8804-audio 31 | - justboom-digi 32 | - merus-amp 33 | - pibell 34 | - rpi-dac 35 | - rpi-proto 36 | 37 | The list is generated from [https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/overlays/README](https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/overlays/README) and NOT tested. 38 | -------------------------------------------------------------------------------- /docs/References/compatible-devices.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Compatible Devices 3 | --- 4 | 5 | Devices known to work with myMPDos. In theory all Raspberry Pi devices with aarch64 architecture should work. 6 | 7 | If you run myMPD on an other device please drop me a note, so I can add it to the list. 8 | 9 | - Raspberry Pi 4B 10 | - Raspberry Pi 3B 11 | - Raspberry Pi 2B 12 | - Raspberry Pi Zero 2W 13 | -------------------------------------------------------------------------------- /docs/References/filesystem-layout.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Filesystem Layout 3 | --- 4 | 5 | | MOUNTPOINT | DESCRIPTION | 6 | | ---------- | ----------- | 7 | | / | tmpfs | 8 | | /etc/mympdos/ | myMPDos configuration files | 9 | | /boot | Link to /media/mmcblk0p1 | 10 | | /data | Link to /media/mmcblk0p2 | 11 | | /media/mmcblk0p1 | Boot partition (FAT32) on sd-card | 12 | | /media/mmcblk0p2 | Data partition (ext4) on sd-card | 13 | | /media/mmcblk0p2/library | Music library | 14 | | /mnt | Path for automounter | 15 | -------------------------------------------------------------------------------- /docs/References/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: References 3 | --- 4 | 5 | - [Audio hats](audio-hats.md) 6 | - [Filesystem layout](filesystem-layout.md) 7 | - [myMPDos scripts](mympdos-scripts.md) 8 | - [Compatible devices](compatible-devices.md) 9 | - [Packages](packages.md) 10 | -------------------------------------------------------------------------------- /docs/References/mympdos-scripts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Custom Scripts 3 | --- 4 | 5 | This scripts are installed by the mympdos-base package in the directory `/usr/bin`. 6 | 7 | | SCRIPT | DESCRIPTION | 8 | | ------ | ----------- | 9 | | alpine-upgrade.sh | Upgrades alpine linux - used by mympdos-update.sh | 10 | | audiohat.sh | Interactive script to configures an audio hat overlay | 11 | | automount.sh | Automount script, executed by mdev | 12 | | configmpd.sh | MPD configuration script, executed by mdev | 13 | | mympdos-update.sh | myMPDos update script - for package updates and distribution upgrades | 14 | | rwdata.sh | Toggle read/write state of `/media/mmcblk0p2` | 15 | | save.sh | Saves all changes (uses `lbu commit`) | 16 | | savereboot.sh | Save settings and reboot | 17 | | saveshutdown.sh | Save settings and poweroff | 18 | | status.sh | Shows status informations from your raspberry | 19 | -------------------------------------------------------------------------------- /docs/References/packages.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Packages 3 | --- 4 | 5 | myMPDos provides an extra repository for custom packages. This repository can also be used by standard Alpine Linux aarch64 installations. 6 | 7 | - URI: [https://raw.githubusercontent.com/jcorporation/myMPDos/master/repository](https://raw.githubusercontent.com/jcorporation/myMPDos/master/repository) 8 | - Signing public key: [mail@jcgames.de.rsa.pub](https://github.com/jcorporation/myMPDos/blob/master/mympdos/build/mympdos-base/mympdos-base/fs/etc/apk/keys/mail%40jcgames.de.rsa.pub) 9 | 10 | | PACKAGE | DESCRIPTION | 11 | | ------- | ----------- | 12 | | mympdos-base | Base myMPDos package | 13 | | mympdos-libgpiod2 | [libgpiod v2](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/) | 14 | | mympdos-libmpdclient | [Libmympdclient](https://github.com/jcorporation/libmympdclient) | 15 | | mympdos-mpc | [MPC](https://github.com/jcorporation/mpc) | 16 | | mympdos-mpd-master | [MPD from master branch](https://github.com/MusicPlayerDaemon/MPD) | 17 | | mympdos-mpd-stable | [Latest stable mpd release](https://github.com/MusicPlayerDaemon/MPD) | 18 | | mympdos-musicdb-scripts | [musicdb-scripts](https://github.com/jcorporation/musicdb-scripts) | 19 | | mympd | Latest stable [myMPD](https://github.com/jcorporation/myMPD) | 20 | | mygpiod | Latest stable [myGPIOd](https://github.com/jcorporation/myGPIOd) | 21 | -------------------------------------------------------------------------------- /docs/UserManual/.pages: -------------------------------------------------------------------------------- 1 | title: User Manual 2 | nav: 3 | - index.md 4 | - bootstrap.md 5 | - after-first-start.md 6 | - add-music-to-the-library.md 7 | - general.md 8 | - update.md 9 | -------------------------------------------------------------------------------- /docs/UserManual/add-music-to-the-library.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Add music to the library 3 | --- 4 | 5 | MPD is configured with `/media/mmcblk0p2/library` as the music_directory. You can add music to this library in several ways. After adding music you must update the mpd library. 6 | 7 | ## Copy files to the sd-card 8 | 9 | You can copy files directly to this directory if you use a big sd-card. Run `rwdata.sh` before and after copying to toggle the read/write state of the sd-card. You can copy your music files with scp/sftp. 10 | 11 | ## Attach an usb-stick or drive 12 | 13 | Simply attach an usb-stick or drive to the raspberry and myMPDos mounts the drive in the USB sub-directory of your library. 14 | 15 | ## Mounting a NAS 16 | 17 | - You can mount a NFS share via the native MPD implementation. You can configure this in the myMPD gui. 18 | - Alternatively you can configure a [linux mount](../AdvancedTopics/mount-a-cifs-or-nfs-share.md) 19 | -------------------------------------------------------------------------------- /docs/UserManual/after-first-start.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: After first start 3 | --- 4 | 5 | After startup you should be able to connect with ssh and https to your myMPDos instance. 6 | 7 | You need the ip-address of your Raspberry Pi: 8 | 9 | - myMPDos displays the ip-address after startup on the hdmi display 10 | - look at your routers dhcp leases 11 | 12 | ## SSH access 13 | 14 | - User: root 15 | - Password: set via the bootstrap file 16 | 17 | ## Webinterface 18 | 19 | The myMPD webinterface is reachable by `https:///`. In the about dialog is a link to the self generated myMPD certificate authority. Install this certificate as trusted ca certificate to avoid browser warnings. 20 | -------------------------------------------------------------------------------- /docs/UserManual/bootstrap.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bootstrap 3 | --- 4 | 5 | ## First steps 6 | 7 | 1. Download the latest image from the releases page: https://github.com/jcorporation/myMPDos/releases 8 | 2. Transfer it to the sd-card. You can use e. g. [balenaEtcher](https://www.balena.io/etcher/) for this task 9 | 10 | ## Customize the bootstrap file 11 | 12 | Copy the [bootstrap-simple.txt](https://github.com/jcorporation/myMPDos/blob/master/mympdos/bootstrap-simple.txt) or [bootstrap-advanced.txt](https://github.com/jcorporation/myMPDos/blob/master/mympdos/bootstrap-advanced.txt) to bootstrap.txt and change the options to your needs. 13 | 14 | ```ini 15 | # 16 | #Simple bootstrap configuration file for myMPDos 17 | # 18 | ROOT_PASSWORD="your_secure_password" 19 | TIMEZONE="UTC" 20 | 21 | #If WLAN is not set to true eth0 is configured 22 | WLAN_ENABLE="true" 23 | WLAN_SSID="ssid of your wlan" 24 | WLAN_PSK="psk of the ssid" 25 | 26 | AUDIOHAT="allo-digione" 27 | ``` 28 | 29 | ## First start 30 | 31 | At the first start myMPD executes the bootstrap script to configure your instance according to `bootstrap.txt`. 32 | 33 | - It adds a data partition to the sd-card 34 | - It needs internet connectivity to set the time and update the packages. 35 | 36 | The bootstrap log is saved to `/boot/bootstrap.log`. 37 | 38 | ## References 39 | 40 | | FILE | DESCRIPTION | 41 | | ---- | ----------- | 42 | | usercfg.txt | Custom raspberry configuration, edit this and not config.txt. The bootstrap script creates a default usercfg.txt if you don't create it. | 43 | | bootstrap.txt | Bootstrap file for myMPDos, examples are in folder [mympdos](https://github.com/jcorporation/myMPDos/tree/master/mympdos) | 44 | | mpd.conf | Custom mpd.conf, the bootstrap script copies it to /etc/mpd.conf | 45 | | mpd.custom.conf | Custom mpd configuration that is included in the default mpd.conf | 46 | | mpd.replace | Can add, change and remove lines from default [mpd.conf](https://github.com/jcorporation/myMPDos/blob/master/mympdos/build/mympdos-base/mympdos-base-0.1.0/fs/etc/mympdos/templates/mympdos-mpd-stable.conf.tmpl): [example](https://github.com/jcorporation/myMPDos/blob/master/mympdos/mpd.replace) | 47 | -------------------------------------------------------------------------------- /docs/UserManual/general.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: General 3 | --- 4 | 5 | ## Read only sd-card 6 | 7 | myMPDos runs in memory only, also the myMPD settings and MPD database are kept in RAM. This has the advantage that you can simply poweroff your device without the hassle of filesystem corruption, but with the disadvantage that you must manually save the changes to the sd-card. 8 | 9 | There are some helper scripts: 10 | 11 | - `save.sh`: saves the the current state of myMPD, MPD and the base system 12 | - `saveshutdown.sh`: run save.sh and power offs your device 13 | - `savereboot.sh`: run save.sh and reboots your device 14 | -------------------------------------------------------------------------------- /docs/UserManual/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: User Manual 3 | --- 4 | 5 | - [Bootstrap](bootstrap.md) 6 | - [After first start](after-first-start.md) 7 | - [Add music to the library](add-music-to-the-library.md) 8 | - [General](general.md) 9 | - [Update](update.md) 10 | -------------------------------------------------------------------------------- /docs/UserManual/update.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Update 3 | --- 4 | 5 | You should keep myMPDos up to date as all other software. 6 | 7 | Simply run `mympdos-update.sh` to update your system. This scripts updates the base Alpine Linux system and all custom myMPDos packages. There is no need to reflash your sd-card with an updated image. 8 | -------------------------------------------------------------------------------- /docs/assets/css/mympd.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --md-primary-fg-color: #28a745; 3 | --md-primary-fg-color--light: #28a745; 4 | --md-primary-fg-color--dark: #28a745; 5 | --md-accent-fg-color: #28a745; 6 | --md-accent-fg-color--transparent: #28a745; 7 | } 8 | 9 | .d-none { 10 | display: none; 11 | } 12 | -------------------------------------------------------------------------------- /docs/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/docs/assets/favicon.ico -------------------------------------------------------------------------------- /docs/assets/mympd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | permalink: / 4 | title: myMPDos Documentation 5 | --- 6 | 7 | myMPDos is a Raspberry Pi image (aarch64) based on Alpine Linux. It is running entirely in RAM and it does not write to the sd-card unless you want to save settings. Therefore, myMPDos is very robust and you can simply turn off the power without any risk of corruption of your sd-card. 8 | 9 | myMPDos is a turnkey music playback solution and is designed around [MPD](https://www.musicpd.org/) and [myMPD](https://github.com/jcorporation/myMPD). After startup you can access the myMPD webinterface, copy music to the sd-card data partition, mount a music share or simply plugin an usb storage and you can start enjoying your music. 10 | 11 | myMPDos has no configuration dialogs or web ui for initial and further configuration. But there are all common linux utilities installed and more can be installed from the alpine linux repositories. 12 | 13 | The initial configuration is done through a simple bootstrap file, that has sane default values preconfigured. Setting up myMPDos takes only a few minutes. Experts can use the advanced bootstrap file to customize the installation further. 14 | 15 | ## Features 16 | 17 | - Based on latest Alpine Linux 18 | - Runs entirely in RAM 19 | - Very small ressource usage 20 | - Preconfigured MPD and myMPD 21 | - Latest stable MPD and myMPD releases 22 | - Bleeding edge versions of MPD, mpc and libmpdclient 23 | - Automounts USB devices and adds its contents to the mpd database 24 | - Configures MPD outputs automatically 25 | - Use GPIO buttons to control MPD and myMPD with [myGPIOd](https://github.com/jcorporation/myGPIOd) 26 | - Optional bluetooth support 27 | 28 | ## Usage 29 | 30 | 1. Download the latest [release image](https://github.com/jcorporation/myMPDos/releases) 31 | 2. Transfer it to the sd-card, e. g. with [balenaEtcher](https://www.balena.io/etcher/) 32 | 3. Copy `bootstrap-simple.txt` or `bootstrap-advanced.txt` to `bootstrap.txt` 33 | 4. Adapt `bootstrap.txt` 34 | 5. Boot your Raspberry Pi 35 | 36 | ## Processlist 37 | 38 | ```txt 39 | init-+-getty 40 | |-mpd-+-{decoder:mad} 41 | | |-{io} 42 | | |-{output:U24XL US} 43 | | |-{player} 44 | | `-{rtio} 45 | |-mympd-+-{api} 46 | | |-{scripts} 47 | | `-{webserver} 48 | |-ntpd 49 | |-rngd 50 | |-sshd 51 | `-syslogd 52 | ``` 53 | -------------------------------------------------------------------------------- /image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | #save script path and change to it 9 | STARTPATH=$(dirname "$(realpath "$0")") 10 | cd "$STARTPATH" || exit 1 11 | 12 | source config || { echo "config not found"; exit 1; } 13 | IMAGE=$(ls -t "$STARTPATH"/images/myMPDos-"$ARCH"-*.img 2>/dev/null | head -1) 14 | 15 | if [ "$IMAGE" = "" ] 16 | then 17 | echo "No image found, build it with ./build.sh" 18 | exit 1 19 | else 20 | echo "Image: $IMAGE" 21 | fi 22 | 23 | mountimage() { 24 | install -d "$STARTPATH/tmp/mnt" 25 | LOOP=$(sudo losetup --partscan --show -f "$IMAGE") 26 | echo "Mounting image on $STARTPATH/tmp/mnt" 27 | sudo mount -ouid="$BUILDUSER" "${LOOP}p1" "$STARTPATH/tmp/mnt" || exit 1 28 | return 0 29 | } 30 | 31 | umountimage() { 32 | ./build.sh umountbuild 33 | } 34 | 35 | burnimage() { 36 | SDCARD=$1 37 | [ "$SDCARD" = "" ] && exit 1 38 | if mount | grep -q "$SDCARD" 39 | then 40 | echo "$SDCARD seems to be mounted" 41 | exit 1 42 | fi 43 | echo "Transfering $IMAGE to $SDCARD" 44 | sudo dd status=progress bs=4M oflag=sync if="$IMAGE" of="$SDCARD" 45 | } 46 | 47 | startimage() { 48 | mountimage 49 | rm "$STARTPATH"/tmp/mnt/boot/modloop-* 50 | cp "$STARTPATH/tmp/$ARCH/netboot/boot/modloop-lts" tmp/mnt/boot/ 51 | umountimage 52 | $QEMU \ 53 | -M virt -m "$BUILDRAM" -cpu "$CPU" -smp "$BUILDCPUS" \ 54 | -kernel "$STARTPATH/tmp/$ARCH/netboot/boot/$KERNEL" \ 55 | -initrd "$STARTPATH/tmp/$ARCH/netboot/boot/$INITRAMFS" \ 56 | -append "console=ttyAMA0 ip=dhcp" \ 57 | -nographic \ 58 | -drive "file=${IMAGE},format=raw" \ 59 | -nic user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9 60 | } 61 | 62 | case "$1" in 63 | start) 64 | startimage 65 | ;; 66 | mount) 67 | mountimage 68 | ;; 69 | umount) 70 | umountimage 71 | ;; 72 | burn) 73 | if [ "$2" = "" ] 74 | then 75 | echo "Usage: $0 burn " 76 | exit 1 77 | fi 78 | burnimage "$2" 79 | ;; 80 | *) 81 | echo "Usage: $0 (start|mount|umount|burn)" 82 | exit 1 83 | ;; 84 | esac 85 | exit 0 86 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: myMPDos Documentation 2 | site_url: https://jcorporation.github.io/myMPDos 3 | theme: 4 | name: material 5 | features: 6 | - navigation.instant 7 | - navigation.tracking 8 | - content.code.copy 9 | logo: assets/mympd-logo.svg 10 | favicon: assets/favicon.ico 11 | palette: 12 | primary: custom 13 | accent: custom 14 | copyright: "© 2020-2024 Jürgen Mang" 15 | extra_css: 16 | - assets/css/mympd.css 17 | extra: 18 | social: 19 | - icon: fontawesome/brands/github 20 | link: https://github.com/jcorporation/myMPDos 21 | plugins: 22 | - awesome-pages: 23 | collapse_single_pages: true 24 | - include-markdown 25 | - privacy 26 | - search 27 | markdown_extensions: 28 | - tables 29 | - pymdownx.highlight: 30 | anchor_linenums: true 31 | line_spans: __span 32 | pygments_lang_class: true 33 | - pymdownx.inlinehilite 34 | - pymdownx.snippets 35 | - pymdownx.superfences 36 | - admonition 37 | - pymdownx.details 38 | - pymdownx.superfences 39 | - pymdownx.critic 40 | - pymdownx.caret 41 | - pymdownx.keys 42 | - pymdownx.mark 43 | - pymdownx.tilde 44 | -------------------------------------------------------------------------------- /mympdos/bootstrap-advanced.txt: -------------------------------------------------------------------------------- 1 | # Advanced bootstrap configuration file for myMPDos 2 | 3 | ROOT_PASSWORD="your_secure_password" 4 | 5 | TIMEZONE="UTC" 6 | 7 | # Keybord layout 8 | KEYBOARD_LAYOUT="de" 9 | KEYBOARD_VARIANT="de-nodeadkeys" 10 | 11 | # Automounting of USB devices 12 | ENABLE_AUTOMOUNT="true" 13 | 14 | # Automatic MPD configuration (outputs) 15 | ENABLE_CONFIGMPD="true" 16 | 17 | # Software 18 | #MPD version 19 | #1 = MPD stable 20 | #2 = MPD master branch - unstable 21 | MPD_VERSION="1" 22 | 23 | # Add packages: usbutils raspberrypi busybox-extras net-tools 24 | ADVANCED_SOFTWARE="true" 25 | 26 | # Add user defined packages (space separated list) 27 | EXTRA_SOFTWARE="" 28 | 29 | # Services to start 30 | ENABLE_CRON="false" 31 | ENABLE_RNGD="true" 32 | 33 | # MPD settings 34 | # Mixer 35 | ENABLE_MIXER="true" 36 | SOFTWARE_MIXER_FALLBACK="false" 37 | 38 | # Upsampling 39 | UPSAMPLING="false" 40 | AUDIO_OUTPUT_FORMAT="192000:24:2" 41 | SAMPLERATE_CONVERTER="soxr very high" 42 | 43 | # Or use the Resampler 44 | RESAMPLER="libsamplerate" 45 | LIBSAMPLERATE_TYPE="0" 46 | 47 | #RESAMPLER="soxr" 48 | #SOXR_QUALITY="high" 49 | #SOXR_THREADS="1" 50 | 51 | # Network settings 52 | IP_HOSTNAME="myMPDos" 53 | #If WLAN_ENABLED is not set to true eth0 is configured 54 | WLAN_ENABLE="true" 55 | WLAN_SSID="ssid of your wlan" 56 | WLAN_KEYMGMT="WPA-PSK" 57 | WLAN_PSK="psk of the ssid" 58 | IP_TYPE="dhcp" 59 | #IP_COPY_DHCP_TO_STATIC="true" 60 | #Comment IP_TYPE line and uncomment other IP_* settings to configure a static ip 61 | #IP_TYPE="static" 62 | #IP_ADDRESS="" 63 | #IP_NETMASK="" 64 | #IP_GATEWAY="" 65 | #Set to true to configure dns settings 66 | #IP_DNS_CONFIGURE="false" 67 | #IP_DNS_SERVER1="" 68 | #IP_DNS_SERVER2="" 69 | #IP_DNS_DOMAIN="" 70 | #IP_DNS_SEARCH="" 71 | 72 | # Pi settings 73 | # Install bluetooth packages 74 | BT_ENABLE="false" 75 | 76 | # Enable internal bluetooth chip 77 | BT_INTERNAL="false" 78 | 79 | # myMPDos repository 80 | MYMPDOS_REPOSITORY="https://raw.githubusercontent.com/jcorporation/myMPDos/master/repository" 81 | #MYMPDOS_REPOSITORY="https://raw.githubusercontent.com/jcorporation/myMPDos/devel/repository" 82 | 83 | # List of audio hats: https://jcorporation.github.io/myMPDos/references/audio-hats 84 | AUDIOHAT="" 85 | DISABLE_HDMI="false" 86 | 87 | # myMPD configuration 88 | # https://jcorporation.github.io/myMPD/configuration/configuration-files 89 | #MYMPD_ACL="" 90 | #MYMPD_ALBUM_GROUP_TAG="Date" 91 | #MYMPD_ALBUM_MODE="adv" 92 | #MYMPD_COVERCACHE_KEEP_DAYS=32 93 | #MYMPD_HTTP=true 94 | #MYMPD_HTTP_HOST="[::]" 95 | #MYMPD_HTTP_PORT=80 96 | #MYMPD_LOGLEVEL=5 97 | #MYMPD_LUALIBS=all 98 | #MYMPD_URI="" 99 | #MYMPD_SAVE_CACHES=true 100 | #MYMPD_SCRIPTACL="" 101 | #MYMPD_STICKERS=true 102 | #MYMPD_SSL=true 103 | #MYMPD_SSL_PORT=443 104 | #MYMPD_SSL_SAN="" 105 | #MYMPD_CUSTOM_CERT=false 106 | #MYMPD_SSL_CERT="" 107 | #MYMPD_SSL_KEY="" 108 | -------------------------------------------------------------------------------- /mympdos/bootstrap-simple.txt: -------------------------------------------------------------------------------- 1 | # Simple bootstrap configuration file for myMPDos 2 | # For all available options refer to bootstrap-advanced.txt 3 | 4 | ROOT_PASSWORD="your_secure_password" 5 | TIMEZONE="UTC" 6 | 7 | # If WLAN_ENABLED is not set to true eth0 is configured 8 | WLAN_ENABLE="true" 9 | WLAN_SSID="ssid of your wlan" 10 | WLAN_PSK="psk of the ssid" 11 | 12 | #AUDIOHAT="allo-digione" 13 | -------------------------------------------------------------------------------- /mympdos/build/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | BUILDDIR="/usr/build" 9 | POWEROFF="1" 10 | ARCH=$(uname -m) 11 | 12 | #Build packages 13 | B_BUILD="1" 14 | B_MYMPD="1" 15 | B_MYMPD_BRANCH="master" 16 | #B_MYMPD_BRANCH="devel" 17 | B_MYGPIOD_BRANCH="master" 18 | #B_MYGPIOD_BRANCH="devel" 19 | B_LIBMPDCLIENT="1" 20 | B_MPC="1" 21 | B_MPD_STABLE="1" 22 | B_MPD_MASTER="1" 23 | B_LIBGPIOD2="1" 24 | B_MYGPIOD="1" 25 | B_MUSICDB_SCRIPTS="1" 26 | 27 | get_pkgver() { 28 | PKGVER=$(grep ^pkgver "$1/APKBUILD" | cut -d= -f2) 29 | echo "${PKGVER}" 30 | } 31 | 32 | get_pkgname() { 33 | PKGNAME=$(grep ^pkgname "$1/APKBUILD" | cut -d= -f2) 34 | PKGVER=$(grep ^pkgver "$1/APKBUILD" | cut -d= -f2) 35 | PKGREL=$(grep ^pkgrel "$1/APKBUILD" | cut -d= -f2) 36 | echo "${PKGNAME}-${PKGVER}-r${PKGREL}.apk" 37 | } 38 | 39 | echo "" 40 | echo "Starting myMPDos build" 41 | 42 | echo "Setting the local clock" 43 | date -s@"$(cat /media/vda1/date)" 44 | 45 | if [ "$POWEROFF" = "0" ] 46 | then 47 | echo "Setting keymap" 48 | setup-keymap de de-nodeadkeys 49 | fi 50 | 51 | echo "Setup repositories and upgrade" 52 | echo "/media/vda1/apks" > /etc/apk/repositories 53 | setup-apkrepos -1 54 | sed -r -e's/^#\s?(.*\d\/community)/\1/' -i /etc/apk/repositories 55 | while apk update 2>&1 | grep WARNING 56 | do 57 | echo "Error...trying new random repository" 58 | echo "/media/vda1/apks" > /etc/apk/repositorie 59 | setup-apkrepos -r 60 | sed -r -e's/^#\s?(.*\d\/community)/\1/' -i /etc/apk/repositories 61 | done 62 | apk upgrade 63 | 64 | echo "Moving /usr to /dev/vda2" 65 | mount /dev/vda2 /mnt -text4 66 | cp -a /usr/* /mnt 67 | umount /mnt 68 | mount /dev/vda2 /usr -text4 69 | 70 | echo "Setup apkcache" 71 | install -d /usr/build/distfiles -g abuild -m775 72 | setup-apkcache /usr/build/distfiles 73 | 74 | echo "Installing build packages" 75 | apk add alpine-sdk build-base cmake git perl xz 76 | 77 | echo "Adding build user" 78 | adduser -D build -h "$BUILDDIR" 79 | addgroup build abuild 80 | cd "$BUILDDIR" || exit 1 81 | 82 | echo "Setting up package signing key" 83 | if [ -f /media/vda1/mympdos/abuild.tgz ] 84 | then 85 | echo "Restoring .abuild" 86 | cp /media/vda1/mympdos/abuild.tgz . 87 | tar -xzf abuild.tgz 88 | else 89 | if su build -c "abuild-keygen -n -a" 90 | then 91 | tar -czf abuild.tgz .abuild 92 | fi 93 | fi 94 | cp .abuild/*.rsa.pub /etc/apk/keys/ 95 | 96 | su build -c "install -d packages/package/$ARCH/" 97 | ln -s /usr/build/packages/package/ /usr/build/packages/build 98 | 99 | if [ -f /media/vda1/mympdos-apks/APKINDEX.tar.gz ] 100 | then 101 | echo "Restoring existing packages" 102 | su build -c "cp /media/vda1/mympdos-apks/* packages/package/$ARCH/" 103 | else 104 | echo "No existing packages found" 105 | fi 106 | 107 | LIBMPDCLIENT_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-libmpdclient) 108 | B_LIBMPDCLIENT_VER=$(get_pkgver /media/vda1/mympdos/mympdos-libmpdclient) 109 | if [ "$B_LIBMPDCLIENT" = "1" ] && [ ! -f "packages/package/$ARCH/$LIBMPDCLIENT_PACKAGE" ] 110 | then 111 | echo "Build libmpdclient" 112 | su build -c "rm -rf libmpdclient" 113 | su build -c "cp -r /media/vda1/mympdos/mympdos-libmpdclient ." 114 | cd mympdos-libmpdclient || exit 1 115 | su build -c "git clone -b libmympdclient --depth=1 https://github.com/jcorporation/libmympdclient.git" 116 | mv libmympdclient "mympdos-libmpdclient-${B_LIBMPDCLIENT_VER}" 117 | tar -czf mympdos-libmpdclient.tar.gz "mympdos-libmpdclient-${B_LIBMPDCLIENT_VER}" 118 | rm -fr "mympdos-libmpdclient-${B_LIBMPDCLIENT_VER}" 119 | su build -c "abuild checksum" 120 | su build -c "abuild -r" 121 | cd .. 122 | fi 123 | 124 | #install freshly build libmpdclient 125 | echo "/usr/build/packages/package/" >> /etc/apk/repositories 126 | apk update 127 | if ! apk add mympdos-libmpdclient mympdos-libmpdclient-dev 128 | then 129 | echo "Failed" 130 | exit 1 131 | fi 132 | 133 | MPC_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-mpc) 134 | B_MPC_VER=$(get_pkgver /media/vda1/mympdos/mympdos-mpc) 135 | if [ "$B_MPC" = "1" ] && [ ! -f "packages/package/$ARCH/$MPC_PACKAGE" ] 136 | then 137 | echo "Building mpc" 138 | su build -c "rm -rf mympdos-mpc" 139 | su build -c "cp -r /media/vda1/mympdos/mympdos-mpc ." 140 | cd mympdos-mpc || exit 1 141 | su build -c "git clone -b master --depth=1 https://github.com/jcorporation/mpc.git" 142 | mv "mpc" "mympdos-mpc-${B_MPC_VER}" 143 | tar -czf mympdos-mpc.tar.gz "mympdos-mpc-${B_MPC_VER}" 144 | rm -fr "mympdos-mpc-${B_MPC_VER}" 145 | su build -c "abuild checksum" 146 | su build -c "abuild -r" 147 | cd .. 148 | fi 149 | 150 | LIBGPIOD2_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-libgpiod2) 151 | B_LIBGPIOD2_VER=$(get_pkgver /media/vda1/mympdos/mympdos-libgpiod2) 152 | if [ "$B_LIBGPIOD2" = "1" ] && [ ! -f "packages/package/$ARCH/$LIBGPIOD2_PACKAGE" ] 153 | then 154 | echo "Building libgpiod v2" 155 | su build -c "rm -rf mympdos-libgpiod2" 156 | su build -c "cp -r /media/vda1/mympdos/mympdos-libgpiod2 ." 157 | cd mympdos-libgpiod2 || exit 1 158 | su build -c "git clone -b v2.1.x --depth=1 https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git" 159 | mv "libgpiod" "mympdos-libgpiod2-${B_LIBGPIOD2_VER}" 160 | tar -czf mympdos-libgpiod2.tar.gz "mympdos-libgpiod2-${B_LIBGPIOD2_VER}" 161 | rm -fr "mympdos-libgpiod2-${B_LIBGPIOD2_VER}" 162 | su build -c "abuild checksum" 163 | su build -c "abuild -r" 164 | cd .. 165 | fi 166 | 167 | apk update 168 | if ! apk add mympdos-libgpiod2 mympdos-libgpiod2-dev curl-dev 169 | then 170 | echo "Failed" 171 | exit 1 172 | fi 173 | 174 | if [ "$B_MYGPIOD" = "1" ] 175 | then 176 | echo "Build myGPIOd" 177 | su build -c "rm -rf myGPIOd" 178 | su build -c "git clone -b "$B_MYGPIOD_BRANCH" --depth=1 https://github.com/jcorporation/myGPIOd.git" 179 | cd myGPIOd || exit 1 180 | MYGPIOD_PACKAGE=$(get_pkgname contrib/packaging/alpine) 181 | if [ ! -f "../packages/package/$ARCH/$MYGPIOD_PACKAGE" ] 182 | then 183 | sed -i 's/libmpdclient/mympdos-libmpdclient/g' contrib/packaging/alpine/APKBUILD 184 | su build -c "./build.sh pkgalpine" 185 | else 186 | echo "myGPIOd is already up-to-date" 187 | fi 188 | cd .. 189 | fi 190 | 191 | apk update 192 | if ! apk add mygpiod mygpiod-dev 193 | then 194 | echo "Failed" 195 | exit 1 196 | fi 197 | 198 | if [ "$B_MYMPD" = "1" ] 199 | then 200 | echo "Build myMPD" 201 | su build -c "rm -rf myMPD" 202 | su build -c "git clone -b $B_MYMPD_BRANCH --depth=1 https://github.com/jcorporation/myMPD.git" 203 | cd myMPD || exit 1 204 | MYMPD_PACKAGE=$(get_pkgname contrib/packaging/alpine) 205 | if [ ! -f "../packages/package/$ARCH/$MYMPD_PACKAGE" ] 206 | then 207 | ./build.sh installdeps 208 | if [ "$B_MYMPD_BRANCH" != "master" ] 209 | then 210 | su build -c "./build.sh cleanupdist" 211 | su build -c "./build.sh createdist" 212 | fi 213 | su build -c "./build.sh pkgalpine" 214 | else 215 | echo "myMPD is already up-to-date" 216 | fi 217 | cd .. 218 | fi 219 | 220 | MYMPDOS_BASE_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-base) 221 | B_MYMPDOS_BASE_VER=$(get_pkgver /media/vda1/mympdos/mympdos-base) 222 | if [ "$B_BUILD" = "1" ] && [ ! -f "packages/package/$ARCH/$MYMPDOS_BASE_PACKAGE" ] 223 | then 224 | addgroup -S mympd 225 | adduser -S -D -H -h /var/lib/mympd -s /sbin/nologin -G mympd -g myMPD mympd 226 | su build -c "rm -rf mympdos-base" 227 | su build -c "cp -r /media/vda1/mympdos/mympdos-base ." 228 | cd mympdos-base || exit 1 229 | mv mympdos-base "mympdos-base-$B_MYMPDOS_BASE_VER" 230 | tar -czf "mympdos-base-$B_MYMPDOS_BASE_VER.tar.gz" "mympdos-base-$B_MYMPDOS_BASE_VER" 231 | su build -c "abuild checksum" 232 | su build -c "abuild -r" 233 | cd .. 234 | fi 235 | 236 | MPD_STABLE_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-mpd-stable) 237 | B_MPD_STABLE_VER=$(get_pkgver /media/vda1/mympdos/mympdos-mpd-stable) 238 | if [ "$B_MPD_STABLE" = "1" ] && [ ! -f "packages/package/$ARCH/$MPD_STABLE_PACKAGE" ] 239 | then 240 | echo "Building MPD stable" 241 | su build -c "rm -rf mympdos-mpd-stable" 242 | su build -c "cp -r /media/vda1/mympdos/mympdos-mpd-stable ." 243 | cd mympdos-mpd-stable || exit 1 244 | su build -c "wget http://www.musicpd.org/download/mpd/0.24/mpd-${B_MPD_STABLE_VER}.tar.xz" 245 | tar -xf "mpd-${B_MPD_STABLE_VER}.tar.xz" 246 | rm "mpd-${B_MPD_STABLE_VER}.tar.xz" 247 | mv "mpd-${B_MPD_STABLE_VER}" "mympdos-mpd-stable-${B_MPD_STABLE_VER}" 248 | tar -czf mympdos-mpd-stable.tar.gz "mympdos-mpd-stable-${B_MPD_STABLE_VER}" 249 | rm -fr "mympdos-mpd-stable-${B_MPD_STABLE_VER}" 250 | su build -c "abuild checksum" 251 | su build -c "abuild -r" 252 | cd .. 253 | fi 254 | 255 | MPD_MASTER_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-mpd-master) 256 | B_MPD_MASTER_VER=$(get_pkgver /media/vda1/mympdos/mympdos-mpd-master) 257 | if [ "$B_MPD_MASTER" = "1" ] && [ ! -f "packages/package/$ARCH/$MPD_MASTER_PACKAGE" ] 258 | then 259 | echo "Build MDP master" 260 | su build -c "rm -rf mympdos-mpd-master" 261 | su build -c "cp -r /media/vda1/mympdos/mympdos-mpd-master ." 262 | cd mympdos-mpd-master || exit 1 263 | su build -c "git clone -b master --depth=1 https://github.com/MusicPlayerDaemon/MPD.git" 264 | mv MPD "mympdos-mpd-master-${B_MPD_MASTER_VER}" 265 | tar -czf mympdos-mpd-master.tar.gz "mympdos-mpd-master-${B_MPD_MASTER_VER}" 266 | rm -fr "mympdos-mpd-master-${B_MPD_MASTER_VER}" 267 | su build -c "abuild checksum" 268 | su build -c "abuild -r" 269 | cd .. 270 | fi 271 | 272 | MUSICDB_SCRIPTS_PACKAGE=$(get_pkgname /media/vda1/mympdos/mympdos-musicdb-scripts) 273 | B_MUSICDB_SCRIPTS_VER=$(get_pkgver /media/vda1/mympdos/mympdos-musicdb-scripts) 274 | if [ "$B_MUSICDB_SCRIPTS" = "1" ] && [ ! -f "packages/package/$ARCH/$MUSICDB_SCRIPTS_PACKAGE" ] 275 | then 276 | echo "Build musicdb-scripts" 277 | su build -c "rm -rf mympdos-musicdb-scripts" 278 | su build -c "cp -r /media/vda1/mympdos/mympdos-musicdb-scripts ." 279 | cd mympdos-musicdb-scripts || exit 1 280 | su build -c "git clone -b master --depth=1 https://github.com/jcorporation/musicdb-scripts.git" 281 | mv musicdb-scripts "mympdos-musicdb-scripts-${B_MUSICDB_SCRIPTS_VER}" 282 | tar -czf "mympdos-musicdb-scripts-${B_MUSICDB_SCRIPTS_VER}.tar.gz" "mympdos-musicdb-scripts-${B_MUSICDB_SCRIPTS_VER}" 283 | rm -fr "mympdos-musicdb-scripts-${B_MUSICDB_SCRIPTS_VER}" 284 | su build -c "abuild checksum" 285 | su build -c "abuild -r" 286 | cd .. 287 | fi 288 | 289 | echo "Creating repository index" 290 | rm -f packages/package/aarch64/APKINDEX.tar.gz 291 | apk index --rewrite-arch aarch64 --no-warnings -d "myMPDos" -o packages/package/aarch64/APKINDEX.tar.gz packages/package/aarch64/*.apk 292 | abuild-sign -k /usr/build/$(echo .abuild/*.rsa) packages/package/aarch64/APKINDEX.tar.gz 293 | 294 | [ "$POWEROFF" = "1" ] && poweroff 295 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | pkgname=mympdos-base 3 | pkgver=0.9.7 4 | pkgrel=4 5 | pkgdesc="myMPDos base package" 6 | url="https://github.com/jcorporation/myMPDos" 7 | arch="noarch" 8 | license="GPL-3.0-or-later" 9 | makedepends="" 10 | depends="raspberrypi-utils-vcgencmd" 11 | source="$pkgname-$pkgver.tar.gz" 12 | options="!check" #No testsuite exists 13 | 14 | package() { 15 | install -d "$pkgdir" 16 | cp -a "$srcdir"/$pkgname-$pkgver/fs/* "$pkgdir/" 17 | chown -R root:root "$pkgdir"/* 18 | chmod 755 "$pkgdir"/etc/local.d/*.start 19 | chmod 755 "$pkgdir"/usr/bin/*.sh 20 | } 21 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/etc/apk/keys/mail@jcgames.de.rsa.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwA0yjA3OocH71f15vI8U 3 | FD1+oZblqP5ug2QfymIbu6h1xxtL0cuckAEXJKp0VQTfCiyEfzrhaix0DCwmyopF 4 | SaWnHrgywpdTX9c8b7Pa9GxzJe04rrm8ENmHRkynaKYpgV7H9ww9eZaXZswzsOiw 5 | bLEvuFm6kB37Dyw+3pHlAEh85G+nLWDuI27gXoAgjuwYu8J/9EL4bQ/qqrMGrb7E 6 | IwRflZAOhaLavEzC5jlKZZWREuuXDAotj8nvoE9kF6Ad0M/QEv8wAaS4MdeFhLIL 7 | NbMUmyPkJNrYWZlXIGdg7APGpxqb1rBQzWwCjtBOXV9fwKWUvTkjwj1nZiLvWzB2 8 | ZQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/etc/local.d/mympdos.start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | [ -f /etc/mympdos/mympdos.conf ] && source /etc/mympdos/mympdos.conf 9 | 10 | if [ -s /media/mmcblk0p1/myMPDos.version ] 11 | then 12 | read VERSION < /media/mmcblk0p1/myMPDos.version 13 | else 14 | VERSION="n/a" 15 | fi 16 | cat > /etc/issue << EOL 17 | Welcome to myMPDos ${VERSION}! 18 | Kernel \r on an \m (\l) 19 | 20 | EOL 21 | ip -4 -o addr show up scope global | awk '{print $2,":",$4}'| sed -e "s/\/[1-9]*//" >> /etc/issue 22 | 23 | cat > /etc/motd << EOL 24 | Welcome to myMPDos ${VERSION}! 25 | 26 | myMPDos is based on Alpine Linux. 27 | 28 | myMPDos: 29 | 30 | Enjoy the music! 31 | 32 | EOL 33 | 34 | ln -s /media/mmcblk0p1 /boot 35 | ln -s /media/mmcblk0p2 /data 36 | 37 | if [ "$DISABLE_HDMI" = "true" ] 38 | then 39 | if [ -x /opt/vc/bin/tvservice ] 40 | then 41 | /opt/vc/bin/tvservice -off 42 | else 43 | echo "Advanced software is not installed." 44 | echo "Can not deactivate HDMI." 45 | fi 46 | fi 47 | 48 | if [ -f /media/mmcblk0p2/welcome.wav ] 49 | then 50 | aplay /media/mmcblk0p2/welcome.wav 51 | elif [ -f /media/mmcblk0p2/welcome.mp3 ] && [ -x /usr/bin/mpg123 ] 52 | then 53 | mpg123 /media/mmcblk0p2/welcome.mp3 54 | fi 55 | exit 0 56 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/etc/mympdos/templates/mympdos-mpd-master.conf.tmpl: -------------------------------------------------------------------------------- 1 | # Do not edit this file 2 | # https://jcorporation.github.io/myMPDos/advanced-topics/customize-mpd 3 | 4 | music_directory "/media/mmcblk0p2/library" 5 | playlist_directory "/var/lib/mpd/playlists" 6 | log_file "syslog" 7 | pid_file "/run/mpd/pid" 8 | state_file "/var/lib/mpd/state" 9 | sticker_file "/var/lib/mpd/sticker.sql" 10 | bind_to_address "any" 11 | bind_to_address "/run/mpd/socket" 12 | log_level "default" 13 | metadata_to_use "albumartist,artist,album,title,track,genre,disc,originaldate,date,name,MUSICBRAINZ_ALBUMID,MUSICBRAINZ_ALBUMARTISTID,MUSICBRAINZ_ARTISTID,MUSICBRAINZ_RELEASETRACKID,MUSICBRAINZ_TRACKID,MUSICBRAINZ_RELEASEGROUPID" 14 | auto_update "yes" 15 | max_connections "10" 16 | 17 | database { 18 | plugin "simple" 19 | path "/var/lib/mpd/mpd.db" 20 | cache_directory "/var/lib/mpd/cache" 21 | } 22 | 23 | audio_output { 24 | type "httpd" 25 | name "HTTP Stream" 26 | encoder "lame" #to support safari 27 | port "8000" 28 | bitrate "128" 29 | format "44100:16:1" 30 | always_on "yes" 31 | tags "yes" 32 | } 33 | 34 | input_cache { 35 | size "256 MB" 36 | } 37 | 38 | include_optional "/etc/mpd.custom.conf" 39 | 40 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/etc/mympdos/templates/mympdos-mpd-stable.conf.tmpl: -------------------------------------------------------------------------------- 1 | # Do not edit this file 2 | # https://jcorporation.github.io/myMPDos/advanced-topics/customize-mpd 3 | 4 | music_directory "/media/mmcblk0p2/library" 5 | playlist_directory "/var/lib/mpd/playlists" 6 | log_file "syslog" 7 | pid_file "/run/mpd/pid" 8 | state_file "/var/lib/mpd/state" 9 | sticker_file "/var/lib/mpd/sticker.sql" 10 | bind_to_address "any" 11 | bind_to_address "/run/mpd/socket" 12 | log_level "default" 13 | metadata_to_use "albumartist,artist,album,title,track,genre,disc,originaldate,date,name,MUSICBRAINZ_ALBUMID,MUSICBRAINZ_ALBUMARTISTID,MUSICBRAINZ_ARTISTID,MUSICBRAINZ_RELEASETRACKID,MUSICBRAINZ_TRACKID" 14 | auto_update "yes" 15 | max_connections "10" 16 | 17 | database { 18 | plugin "simple" 19 | path "/var/lib/mpd/mpd.db" 20 | cache_directory "/var/lib/mpd/cache" 21 | } 22 | 23 | audio_output { 24 | type "httpd" 25 | name "HTTP Stream" 26 | encoder "lame" #to support safari 27 | port "8000" 28 | bitrate "128" 29 | format "44100:16:1" 30 | always_on "yes" 31 | tags "yes" 32 | } 33 | 34 | input_cache { 35 | size "256 MB" 36 | } 37 | 38 | include_optional "/etc/mpd.custom.conf" 39 | 40 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/etc/sysctl.d/tcp_timestamps.conf: -------------------------------------------------------------------------------- 1 | net.ipv4.tcp_timestamps = 0 2 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/alpine-upgrade.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Upgrades alpine to a new version 8 | 9 | # Set following environment variables to set the version to update: 10 | #export V_MAJOR=3 11 | #export V_MINOR=14 12 | #export V_POINT=0 13 | #export CHECKSUM=0cc1dbad694c93b686bd76a0a5db3aaae2e1357e1b687a99b1bd37df9bae8692 14 | 15 | echo "Updating alpine boot image to ${V_MAJOR}.${V_MINOR}.${V_POINT}" 16 | echo " - Downloading" 17 | BOOTDEV="/media/mmcblk0p1" 18 | ARCHIVE="alpine-rpi-${V_MAJOR}.${V_MINOR}.${V_POINT}-aarch64.tar.gz" 19 | BACKUP_FILE="/tmp/old_boot.tgz" 20 | 21 | if ! wget -q "http://dl-cdn.alpinelinux.org/alpine/v${V_MAJOR}.${V_MINOR}/releases/aarch64/$ARCHIVE" -O "$ARCHIVE" 22 | then 23 | echo "Error downloading alpine base image" 24 | exit 1 25 | fi 26 | 27 | echo " - Checking" 28 | if ! echo "$CHECKSUM $ARCHIVE" | sha256sum -c -w 29 | then 30 | echo "Checksum error" 31 | exit 1 32 | fi 33 | 34 | echo " - Mounting $BOOTDEV rw" 35 | if ! mount -oremount,rw "$BOOTDEV" 36 | then 37 | echo "Error remounting" 38 | exit 1 39 | fi 40 | 41 | echo " - Backup old boot files" 42 | if ! tar -czf "$BACKUP_FILE" "$BOOTDEV" 43 | then 44 | echo "Backup failed" 45 | exit 1 46 | fi 47 | 48 | echo " - Removing old boot files" 49 | rm -rf "${BOOTDEV}/apks" 50 | rm -rf "${BOOTDEV}/overlays" 51 | rm -rf "${BOOTDEV}/boot" 52 | rm -f "${BOOTDEV}"/*.dtb 53 | rm -f "${BOOTDEV}"/*.bin 54 | rm -f "${BOOTDEV}"/*.dat 55 | rm -f "${BOOTDEV}"/*.elf 56 | 57 | echo " - Extracting new boot files" 58 | if ! tar -xzf "$ARCHIVE" -C "$BOOTDEV" 59 | then 60 | echo "Error extracting archiv, restoring old /boot" 61 | rm -fr "${BOOTDEV}"/* 62 | if ! tar -xzf "$BACKUP_FILE" -C / 63 | then 64 | echo "Restore of backup failed!" 65 | fi 66 | exit 1 67 | fi 68 | 69 | echo " - Cleaning up" 70 | rm "$ARCHIVE" 71 | rm "$BACKUP_FILE" 72 | sync 73 | 74 | echo " - Mounting $BOOTDEV ro" 75 | if ! mount -oremount,ro "$BOOTDEV" 76 | then 77 | echo "Remounting ro failed, please reboot system after update" 78 | fi 79 | 80 | echo "Updating repositories" 81 | cp /etc/apk/repositories /etc/apk/repositories.bak 82 | sed -i -r "s/v\d+.\d+/v${V_MAJOR}.${V_MINOR}/g" /etc/apk/repositories 83 | apk update 84 | apk upgrade --available 85 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/audiohat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | BOOTMEDIA="/media/mmcblk0p1" 8 | USERCFG="$BOOTMEDIA/usercfg.txt" 9 | TMP_USERCFG="/tmp/usercfg.txt" 10 | OVERLAY_FILE="/tmp/overlays.txt" 11 | 12 | echo "Downloading audio hats description" 13 | cd /tmp 14 | wget -q https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/overlays/README \ 15 | -O - | grep -B1 -E "(audio card|soundcard|sound card)" | grep "^Name" | awk '{print $2}' > "$OVERLAY_FILE" 16 | 17 | if [ ! -s "$OVERLAY_FILE" ] 18 | then 19 | echo "Overlays file is empty." 20 | exit 1 21 | fi 22 | 23 | I=0 24 | for O in $(cat /tmp/overlays.txt) 25 | do 26 | I=$((I+1)) 27 | echo " $I) $O" 28 | done 29 | read -p "Select overlay: " -r NR 30 | OVERLAY=$(sed -n "${NR}p" < "$OVERLAY_FILE") 31 | 32 | OLDOVERLAY="" 33 | for O in $(grep dtoverlay "$USERCFG" | sed -r 's/^.+=(.+)$/\1/') 34 | do 35 | if grep -q -E "^${O}$" "$OVERLAY_FILE" 36 | then 37 | OLDOVERLAY="$O" 38 | break 39 | fi 40 | done 41 | 42 | if [ "$OLDOVERLAY" != "" ] 43 | then 44 | grep -v -E "dtoverlay\s*=\s*$OLDOVERLAY" "$USERCFG" > "$TMP_USERCFG" 45 | else 46 | cp "$USERCFG" "$TMP_USERCFG" 47 | fi 48 | 49 | echo "dtoverlay=$OVERLAY" >> "$TMP_USERCFG" 50 | mount -oremount,rw "$BOOTMEDIA" 51 | mv "$TMP_USERCFG" "$USERCFG" 52 | mount -oremount,ro "$BOOTMEDIA" 53 | 54 | echo "" 55 | [ "$OLDOVERLAY" != "" ] && echo "Disabled overlay: $OLDOVERLAY" 56 | echo "Enabled overlay: $OVERLAY" 57 | echo "Details: https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/overlays/README" 58 | echo "" 59 | 60 | rm -f "$OVERLAY_FILE" 61 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/automount.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Automount script for mdev 8 | 9 | MOUNTDIR="/mnt" 10 | 11 | [ "$(echo $MDEV | sed 's/sd.//')" = "" ] && exit 12 | [ "$MDEV" = "" ] && exit 1 13 | [ "$ACTION" = "" ] && [ -b "/dev/$MDEV" ] && ACTION="add" 14 | [ "$ACTION" = "" ] && [ -d "$MOUNTDIR/$MDEV" ] && ACTION="remove" 15 | 16 | if [ "$ACTION" = "add" ] 17 | then 18 | mkdir "$MOUNTDIR/$MDEV" 19 | mount -oro,noatime /dev/${MDEV} ${MOUNTDIR}/${MDEV} 20 | [ -f /run/mpd/pid ] && mpc update 21 | elif [ "$ACTION" = "remove" ] 22 | then 23 | umount ${MOUNTDIR}/${MDEV} 24 | rmdir ${MOUNTDIR}/${MDEV} 25 | [ -f /run/mpd/pid ] && mpc update 26 | fi 27 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/configmpd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Autoconfiguration of MPD 8 | 9 | [ -f /tmp/configmpd.lock ] && exit 0 10 | 11 | if [ "$MDEV" != "" ] && [ "$(echo "$MDEV" | grep controlC)" = "" ] 12 | then 13 | #run from mdev only for controlC* devices 14 | exit 0 15 | fi 16 | 17 | if [ -f /etc/mympdos/custom/mpd.conf ] 18 | then 19 | cp /etc/mympdos/custom/mpd.conf /etc/mpd.conf 20 | [ -f /run/mpd/pid ] && service mpd restart 21 | exit 0 22 | fi 23 | 24 | source /etc/mympdos/mympdos.conf 25 | 26 | echo "Configuring sound devices" 27 | touch /tmp/configmpd.lock 28 | MPD=$(apk info | grep -E "^mympdos-mpd-(stable|master)$") || MPD="mympdos-mpd-stable" 29 | cp /etc/mympdos/templates/${MPD}.conf.tmpl /etc/mpd.conf.new 30 | 31 | if [ "$UPSAMPLING" = "true" ] 32 | then 33 | cat >> /etc/mpd.conf.new << EOF 34 | audio_output_format "$AUDIO_OUTPUT_FORMAT" 35 | samplerate_converter "$SAMPLERATE_CONVERTER" 36 | EOF 37 | elif [ "$RESAMPLER" = "libsamplerate" ] 38 | then 39 | cat >> /etc/mpd.conf.new << EOF 40 | resampler { 41 | plugin "libsamplerate" 42 | type "$LIBSAMPLERATE_TYPE" 43 | } 44 | EOF 45 | elif [ "$RESAMPLER" = "soxr" ] 46 | then 47 | cat >> /etc/mpd.conf.new << EOF 48 | resampler { 49 | plugin "soxr" 50 | quality "$SOXR_QUALITY" 51 | threads "$SOXR_THREADS" 52 | } 53 | EOF 54 | fi 55 | 56 | LAST_CARD_ID="" 57 | LAST_DEVICE_ID="" 58 | for CARD in /proc/asound/card[0-9]/pcm?p 59 | do 60 | while read -r KEY VALUE 61 | do 62 | VALUE=$(echo "$VALUE" | sed 's/"//g') 63 | case "$KEY" in 64 | name) DEVICE_NAME="$VALUE";; 65 | card) CARD_ID="$VALUE";; 66 | subdevice) DEVICE_ID="$VALUE";; 67 | esac 68 | done << EOF 69 | $(sed -r -e 's/: / "/' -e 's/$/"/' "$CARD/info") 70 | EOF 71 | if [ "$LAST_CARD_ID" = "$CARD_ID" ] && [ "$LAST_DEVICE_ID" = "$DEVICE_ID" ] 72 | then 73 | echo "Skipping duplicate entry" 74 | continue 75 | fi 76 | LAST_CARD_ID="$CARD_ID" 77 | LAST_DEVICE_ID="$DEVICE_ID" 78 | CARD_NAME=$(cat /proc/asound/card$CARD_ID/id) 79 | echo " Soundcard $CARD_NAME - $DEVICE_NAME" 80 | cat >> /etc/mpd.conf.new << EOF 81 | audio_output { 82 | name "$CARD_NAME $DEVICE_NAME" 83 | device "hw:$CARD_ID,$DEVICE_ID" 84 | type "alsa" 85 | auto_resample "no" 86 | auto_format "no" 87 | EOF 88 | if [ "$ENABLE_MIXER" = "true" ] 89 | then 90 | IFS="|" read -r MIXER_CONTROL MIXER_ID << EOF 91 | $(amixer -c "$CARD_ID" | grep -m1 "Simple mixer control" -A1 | grep pvolume -B1 | tr -d '\n' | sed -r "s/.*'([^']+)',(\d+).*/\1\|\2/") 92 | EOF 93 | if [ "$MIXER_CONTROL" != "" ] && [ "$MIXER_ID" != "" ] 94 | then 95 | echo " Mixer: $MIXER_CONTROL" 96 | echo " mixer_type \"hardware\"" >> /etc/mpd.conf.new 97 | echo " mixer_device \"hw:$CARD_ID\"" >> /etc/mpd.conf.new 98 | echo " mixer_control \"$MIXER_CONTROL\"" >> /etc/mpd.conf.new 99 | else 100 | if [ "$SOFTWARE_MIXER_FALLBACK" = "true" ] 101 | then 102 | echo " Mixer: none" 103 | echo " mixer_type \"software\"" >> /etc/mpd.conf.new 104 | else 105 | echo " Mixer: none" 106 | echo " mixer_type \"none\"" >> /etc/mpd.conf.new 107 | fi 108 | fi 109 | fi 110 | echo "}" >> /etc/mpd.conf.new 111 | done 112 | 113 | if [ -f /etc/mympdos/custom/mpd.replace ] 114 | then 115 | while read -r ACTION KEY VALUE 116 | do 117 | case "$ACTION" in 118 | A) 119 | echo "$KEY $VALUE" >> /etc/mpd.conf.new 120 | ;; 121 | C) 122 | sed -r -i "s/^\s*$KEY\s+.*$//" /etc/mpd.conf.new 123 | echo "$KEY $VALUE" >> /etc/mpd.conf.new 124 | ;; 125 | D) 126 | sed -r -i "s/^(\s*$KEY\s+.*)$/#\1/" /etc/mpd.conf.new 127 | ;; 128 | esac 129 | done << EOF 130 | $(grep -E '^(A|C|D)' /etc/mympdos/custom/mpd.replace) 131 | EOF 132 | fi 133 | 134 | if ! cmp /etc/mpd.conf /etc/mpd.conf.new > /dev/null 2>&1 135 | then 136 | echo "Updating MPD configuration" 137 | [ -f /etc/mpd.conf ] && cp /etc/mpd.conf /etc/mpd.conf.bak 138 | mv /etc/mpd.conf.new /etc/mpd.conf 139 | [ -f /run/mpd/pid ] && service mpd restart 140 | else 141 | rm /etc/mpd.conf.new 142 | fi 143 | 144 | echo "Unmuting soundcards" 145 | for CARD in $(grep "^\s\d" /proc/asound/cards | sed -r 's/^\s(\d+)\s.*/\1/') 146 | do 147 | for F in $(amixer -c "$CARD" | grep -B1 pvolume | grep "mixer control" | sed -r "s/.+'([^']+)'.*/\1/") 148 | do 149 | echo "$CARD:$F" 150 | amixer -c "$CARD" set "$F" unmute > /dev/null 151 | done 152 | done 153 | 154 | rm /tmp/configmpd.lock 155 | 156 | exit 0 157 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/mympdos-update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Updates myMPDos and installs updates packages 8 | 9 | if [ -e /dev/mmcblk0 ] 10 | then 11 | BOOTMEDIA="/media/mmcblk0p1" 12 | BOOTDEV="/dev/mmcblk0p1" 13 | elif [ -e /dev/vda ] 14 | then 15 | BOOTMEDIA="/media/vda1" 16 | BOOTDEV="/dev/vda1" 17 | else 18 | echo "Unsupported drive" 19 | exit 1 20 | fi 21 | 22 | read -r VERSION < "${BOOTMEDIA}/myMPDos.version" 23 | [ "$VERSION" = "" ] && exit 1 24 | 25 | TMPDIR=$(mktemp -d) 26 | cd $TMPDIR || exit 1 27 | 28 | download() { 29 | [ "$CHANNEL" = "" ] && CHANNEL="master" 30 | URI="https://raw.githubusercontent.com/jcorporation/myMPDos/$CHANNEL/updates/${VERSION}" 31 | 32 | if wget -q "$URI/update.sha256" -O "$TMPDIR/update.sha256" 2>/dev/null && \ 33 | wget -q "$URI/update.tar.gz" -O "$TMPDIR/update.tar.gz" 2>/dev/null 34 | then 35 | echo -n " - Checking signature " 36 | openssl base64 -d -in "$TMPDIR/update.sha256" -out "$TMPDIR/update.sig" 37 | if openssl dgst -sha256 -verify /etc/apk/keys/mail@jcgames.de.rsa.pub \ 38 | -signature "$TMPDIR/update.sig" "$TMPDIR/update.tar.gz" 39 | then 40 | return 0 41 | else 42 | echo " - Signature check failed" 43 | fi 44 | fi 45 | return 1 46 | } 47 | 48 | do_update() { 49 | echo " - Unpacking update" 50 | tar -xzf update.tar.gz 51 | echo " - Executing update script" 52 | cd update || return 1 53 | chmod +x update.sh 54 | if eval ./update.sh 55 | then 56 | read -r NEWVERSION < myMPDos.version 57 | echo " - Setting version to $NEWVERSION" 58 | mount -oremount,rw "${BOOTDEV}" 59 | cp myMPDos.version "${BOOTMEDIA}/myMPDos.version" 60 | mount -oremount,ro "${BOOTDEV}" 61 | echo "Update finished" 62 | return 0 63 | else 64 | echo "Update failed" 65 | return 1 66 | fi 67 | } 68 | 69 | echo "Starting myMPDos update" 70 | echo " - Current version: $VERSION" 71 | echo " - Checking for update" 72 | if download 73 | then 74 | if do_update 75 | then 76 | echo " - Saving changes" 77 | lbu_commit 78 | fi 79 | else 80 | echo " - No update found" 81 | echo "" 82 | echo "Updating apks" 83 | apk update 84 | apk upgrade 85 | fi 86 | 87 | cd / 88 | rm -fr "$TMPDIR" 89 | 90 | #echo "Syncing apk cache" 91 | #apk -v cache sync 92 | 93 | exit 0 94 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/rwdata.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2023 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # This script toggles the writeable state of the data partition 8 | 9 | if grep -q -E '/dev/mmcblk0p2.*ro,' /etc/mtab 10 | then 11 | mount -oremount,rw /media/mmcblk0p2/ 12 | echo "Data media is now writeable" 13 | else 14 | mount -oremount,ro /media/mmcblk0p2/ 15 | echo "Data media is now readonly" 16 | fi 17 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/save.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Write myMPD state to disc if running 8 | if [ -f /var/run/myMPD.pid ] 9 | then 10 | echo "Saving myMPD state" 11 | MTIME_OLD=$(stat -c%Y /var/lib/mympd/state/trigger_list) 12 | MTIME_NEW=$MTIME_OLD 13 | killall -HUP mympd 14 | # Give myMPD some time to write the state files 15 | I=0 16 | while [ "$MTIME_OLD" -eq "$MTIME_NEW" ] 17 | do 18 | I=$((I+1)) 19 | sleep 1 20 | MTIME_NEW=$(stat -c%Y /var/lib/mympd/state/trigger_list) 21 | [ "$I" -eq 10 ] && break 22 | done 23 | fi 24 | 25 | echo "Saving alsa state" 26 | alsactl store 27 | 28 | echo "Saving swclock" 29 | touch /var/lib/misc/openrc-shutdowntime 30 | 31 | # Save the state to /media/mmcblk0p2/ 32 | echo "Commiting changes" 33 | lbu_commit -d 34 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/savereboot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Stop myMPD to save the current state to disc, before wie call lbu_commit 8 | service mympd stop 9 | # Stop MPD to save the current state to disc, before wie call lbu_commit 10 | service mpd stop 11 | # Save the state 12 | /usr/bin/save.sh 13 | # Reboot 14 | reboot 15 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/saveshutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | # Stop myMPD to save the current state to disc, before wie call lbu_commit 8 | service mympd stop 9 | # Stop MPD to save the current state to disc, before wie call lbu_commit 10 | service mpd stop 11 | # Save the state 12 | /usr/bin/save.sh 13 | # Shutdown 14 | poweroff 15 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-base/mympdos-base/fs/usr/bin/status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | 7 | TEMP=$(vcgencmd measure_temp | cut -d= -f2) 8 | VOLTS_CORE=$(vcgencmd measure_volts core | cut -d= -f2 | sed 's/V/ V/') 9 | CLOCK_CORE=$(vcgencmd measure_clock arm | cut -d= -f2) 10 | THROTTLED_MASK=$(vcgencmd get_throttled | cut -d= -f2) 11 | 12 | echo "myMPDos: $(cat /boot/myMPDos.version)" 13 | echo "Model: $(cat /sys/firmware/devicetree/base/model)" 14 | echo "Temperature: $TEMP" 15 | echo "Core voltage: $VOLTS_CORE" 16 | echo "Core clock: $(echo "scale=0;$CLOCK_CORE / 1000000" | bc -l) MHz" 17 | if [ "$THROTTLED_MASK" != "0x0" ] 18 | then 19 | echo "" 20 | echo "WARNING" 21 | [ $(( $THROTTLED_MASK & 0x80000 )) = $(( 0x80000 )) ] && echo "Soft temperature limit has occurred" 22 | [ $(( $THROTTLED_MASK & 0x40000 )) = $(( 0x40000 )) ] && echo "Throttling has occurred" 23 | [ $(( $THROTTLED_MASK & 0x20000 )) = $(( 0x20000 )) ] && echo "Arm frequency capping has occurred" 24 | [ $(( $THROTTLED_MASK & 0x10000 )) = $(( 0x10000 )) ] && echo "Under-voltage has occurred" 25 | [ $(( $THROTTLED_MASK & 0x8 )) = $(( 0x8 )) ] && echo "Soft temperature limit active" 26 | [ $(( $THROTTLED_MASK & 0x4 )) = $(( 0x4 )) ] && echo "Currently throttled" 27 | [ $(( $THROTTLED_MASK & 0x2 )) = $(( 0x2 )) ] && echo "Arm frequency capped" 28 | [ $(( $THROTTLED_MASK & 0x1 )) = $(( 0x1 )) ] && echo "Under-voltage detected" 29 | fi 30 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-libgpiod2/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | pkgname=mympdos-libgpiod2 3 | pkgver=2.2 4 | pkgrel=2 5 | pkgdesc="C library and tools for interacting with the linux GPIO character device" 6 | url="https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/" 7 | arch="all" 8 | license="LGPL-2.1-or-later" 9 | options="!check" # no test suite 10 | makedepends="autoconf automake libtool linux-headers autoconf-archive python3-dev doxygen help2man" 11 | subpackages="$pkgname-dev $pkgname-doc" 12 | source="mympdos-libgpiod2.tar.gz" 13 | 14 | prepare() { 15 | default_prepare 16 | } 17 | 18 | build() { 19 | ./autogen.sh \ 20 | --enable-tools=yes \ 21 | --prefix=/usr 22 | make 23 | } 24 | 25 | package() { 26 | make DESTDIR="$pkgdir" install 27 | } 28 | 29 | sha512sums="" 30 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-libmpdclient/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | pkgname=mympdos-libmpdclient 3 | pkgver=2.23 4 | pkgrel=5 5 | pkgdesc="An asynchronous API library for interfacing MPD in the C, C++ & Objective C languages" 6 | url="https://github.com/jcorporation/libmympdclient" 7 | arch="all" 8 | license="BSD-3-Clause" 9 | makedepends="meson" 10 | provides="libmpdclient libmpdclient-dev" 11 | source="mympdos-libmpdclient.tar.gz" 12 | subpackages="$pkgname-dev $pkgname-doc" 13 | options="!check" 14 | 15 | build() { 16 | meson setup \ 17 | --prefix=/usr \ 18 | --sysconfdir=/etc \ 19 | --mandir=/usr/share/man \ 20 | --localstatedir=/var \ 21 | --buildtype=release \ 22 | . output 23 | ninja -C output 24 | } 25 | 26 | package() { 27 | DESTDIR="$pkgdir" ninja -C output install 28 | 29 | mkdir -p "$pkgdir"/usr/share/licenses/$pkgname/ 30 | } 31 | 32 | sha512sums="" 33 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpc/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | # Based on: https://git.alpinelinux.org/aports/tree/community/mpc/APKBUILD?h=3.18-stable 3 | pkgname=mympdos-mpc 4 | pkgver=0.36 5 | pkgrel=4 6 | pkgdesc="Minimalist command line interface to MPD" 7 | url="https://www.musicpd.org/clients/mpc/" 8 | arch="all" 9 | license="GPL-2.0-or-later" 10 | makedepends="mympdos-libmpdclient-dev meson check-dev" 11 | subpackages="$pkgname-bash-completion:bashcomp:noarch $pkgname-doc" 12 | source="mympdos-mpc.tar.gz" 13 | 14 | build() { 15 | abuild-meson \ 16 | -Dtest=true \ 17 | . output 18 | meson compile ${JOBS:+-j ${JOBS}} -C output 19 | } 20 | 21 | check() { 22 | meson test --no-rebuild --print-errorlogs -C output 23 | } 24 | 25 | package() { 26 | DESTDIR="$pkgdir" meson install --no-rebuild -C output 27 | } 28 | 29 | bashcomp() { 30 | depends="" 31 | pkgdesc="Bash completions for $pkgname" 32 | install_if="$pkgname=$pkgver-r$pkgrel bash-completion" 33 | 34 | mkdir -p "$subpkgdir"/usr/share/bash-completion/completions 35 | mv "$pkgdir"/usr/share/doc/mpc/contrib/mpc-completion.bash \ 36 | "$subpkgdir"/usr/share/bash-completion/completions/$pkgname 37 | } 38 | 39 | sha512sums="" -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-master/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | # Based on: https://pkgs.alpinelinux.org/package/edge/community/x86_64/mpd 3 | pkgname=mympdos-mpd-master 4 | pkgver=0.25.0 5 | pkgrel=4 6 | pkgdesc="Music daemon that plays MP3, FLAC and Ogg Vorbis files" 7 | url="https://musicpd.org" 8 | pkgusers="mpd" 9 | pkggroups="mpd audio" 10 | provides="mpd" 11 | arch="all" 12 | license="GPL-2.0-or-later" 13 | makedepends=" 14 | alsa-lib-dev 15 | curl-dev 16 | expat-dev 17 | faad2-dev 18 | ffmpeg-dev 19 | flac-dev 20 | fmt-dev 21 | glib-dev 22 | icu-dev 23 | lame-dev 24 | libcap 25 | libid3tag-dev 26 | libmad-dev 27 | mpg123-dev 28 | libnfs-dev 29 | libogg-dev 30 | libsamplerate-dev 31 | liburing-dev 32 | libvorbis-dev 33 | meson 34 | mympdos-libmpdclient-dev 35 | nlohmann-json 36 | opus-dev 37 | pcre2-dev 38 | soxr-dev 39 | sqlite-dev 40 | wavpack-dev" 41 | install="$pkgname.pre-install" 42 | subpackages="$pkgname-dbg $pkgname-doc $pkgname-openrc" 43 | source="mympdos-mpd-master.tar.gz 44 | ${pkgname}.initd 45 | ${pkgname}.confd 46 | stacksize.patch 47 | " 48 | options="!check setcap" 49 | 50 | build() { 51 | meson setup \ 52 | --prefix=/usr \ 53 | --sysconfdir=/etc \ 54 | --mandir=/usr/share/man \ 55 | --localstatedir=/var \ 56 | --bindir=/usr/bin \ 57 | --buildtype=release \ 58 | -Dqobuz=disabled \ 59 | -Dneighbor=false \ 60 | -Ddbus=disabled \ 61 | -Dbzip2=disabled \ 62 | -Diso9660=disabled \ 63 | -Dzzip=disabled \ 64 | -Db_ndebug=true \ 65 | . output 66 | ninja -C output 67 | } 68 | 69 | package() { 70 | DESTDIR="$pkgdir" ninja -C output install 71 | # mpd attempts to configure real-time scheduling on linux 72 | # add the capability which allows doing that 73 | # see: https://www.musicpd.org/doc/html/user.html#real-time-scheduling 74 | setcap cap_sys_nice+ep "$pkgdir"/usr/bin/mpd 75 | 76 | install -m755 -D "$srcdir"/$pkgname.initd \ 77 | "$pkgdir"/etc/init.d/mpd 78 | install -m644 -D "$srcdir"/$pkgname.confd \ 79 | "$pkgdir"/etc/conf.d/mpd 80 | install -d -g audio -o mpd -m775 \ 81 | "$pkgdir"/run/mpd \ 82 | "$pkgdir"/var/lib/mpd \ 83 | "$pkgdir"/var/lib/mpd/playlists 84 | } 85 | 86 | sha512sums="" 87 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-master/mympdos-mpd-master.confd: -------------------------------------------------------------------------------- 1 | # conf.d file for music player daemon 2 | 3 | # 4 | # Specify daemon $OPTS here. 5 | # 6 | 7 | OPTS="" 8 | 9 | # set memlock limit to 64 MB 10 | rc_ulimit="-l 65536" 11 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-master/mympdos-mpd-master.initd: -------------------------------------------------------------------------------- 1 | #!/sbin/openrc-run 2 | 3 | # init.d file for music player daemon 4 | 5 | name="Music Player Daemon" 6 | description="A daemon for playing music" 7 | 8 | command=/usr/bin/mpd 9 | command_args="$MPD_OPTS" 10 | 11 | command_user="${M_USER:-mpd}:${M_GROUP:-audio}" 12 | 13 | depend() { 14 | need localmount 15 | use net netmount nfsmount esound pulseaudio 16 | after firewall 17 | } 18 | 19 | start_pre() { 20 | checkpath --directory --quiet \ 21 | --owner "${M_USER:-mpd}" --mode 0775 /var/run/mpd 22 | } 23 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-master/mympdos-mpd-master.pre-install: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | adduser -S -D -h /var/lib/mpd -s /sbin/nologin -G audio -g mpd mpd 2>/dev/null 4 | 5 | exit 0 6 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-master/stacksize.patch: -------------------------------------------------------------------------------- 1 | --- ./src/thread/Thread.cxx.orig 2 | +++ ./src/thread/Thread.cxx 3 | @@ -35,8 +35,12 @@ 4 | if (handle == nullptr) 5 | throw MakeLastError("Failed to create thread"); 6 | #else 7 | - int e = pthread_create(&handle, nullptr, ThreadProc, this); 8 | - 9 | + pthread_attr_t attr, *attrptr = nullptr; 10 | + if ((pthread_attr_init(&attr) == 0) 11 | + && (pthread_attr_setstacksize(&attr, 1024*1024) == 0)) { 12 | + attrptr = &attr; 13 | + } 14 | + int e = pthread_create(&handle, attrptr, ThreadProc, this); 15 | if (e != 0) 16 | throw MakeErrno(e, "Failed to create thread"); 17 | #endif 18 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-stable/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | # Based on: https://pkgs.alpinelinux.org/package/edge/community/x86_64/mpd 3 | pkgname=mympdos-mpd-stable 4 | pkgver=0.24.4 5 | pkgrel=1 6 | pkgdesc="Music daemon that plays MP3, FLAC and Ogg Vorbis files" 7 | url="https://musicpd.org" 8 | pkgusers="mpd" 9 | pkggroups="mpd audio" 10 | provides="mpd" 11 | arch="all" 12 | license="GPL-2.0-or-later" 13 | makedepends=" 14 | alsa-lib-dev 15 | curl-dev 16 | expat-dev 17 | faad2-dev 18 | ffmpeg-dev 19 | flac-dev 20 | fmt-dev 21 | glib-dev 22 | icu-dev 23 | lame-dev 24 | libcap 25 | libid3tag-dev 26 | libmad-dev 27 | mpg123-dev 28 | libnfs-dev 29 | libogg-dev 30 | libsamplerate-dev 31 | liburing-dev 32 | libvorbis-dev 33 | meson 34 | mympdos-libmpdclient-dev 35 | nlohmann-json 36 | opus-dev 37 | pcre2-dev 38 | soxr-dev 39 | sqlite-dev 40 | wavpack-dev" 41 | install="$pkgname.pre-install" 42 | subpackages="$pkgname-dbg $pkgname-doc $pkgname-openrc" 43 | source="mympdos-mpd-stable.tar.gz 44 | ${pkgname}.initd 45 | ${pkgname}.confd 46 | stacksize.patch 47 | " 48 | options="!check setcap" 49 | 50 | build() { 51 | meson setup \ 52 | --prefix=/usr \ 53 | --sysconfdir=/etc \ 54 | --mandir=/usr/share/man \ 55 | --localstatedir=/var \ 56 | --buildtype=release \ 57 | -Dqobuz=disabled \ 58 | -Dneighbor=false \ 59 | -Ddbus=disabled \ 60 | -Dbzip2=disabled \ 61 | -Diso9660=disabled \ 62 | -Dzzip=disabled \ 63 | -Db_ndebug=true \ 64 | . output 65 | ninja -C output 66 | } 67 | 68 | package() { 69 | DESTDIR="$pkgdir" ninja -C output install 70 | 71 | # mpd attempts to configure real-time scheduling on linux 72 | # add the capability which allows doing that 73 | # see: https://www.musicpd.org/doc/html/user.html#real-time-scheduling 74 | setcap cap_sys_nice+ep "$pkgdir"/usr/bin/mpd 75 | 76 | install -m755 -D "$srcdir"/$pkgname.initd \ 77 | "$pkgdir"/etc/init.d/mpd 78 | install -m644 -D "$srcdir"/$pkgname.confd \ 79 | "$pkgdir"/etc/conf.d/mpd 80 | install -d -g audio -o mpd -m775 \ 81 | "$pkgdir"/run/mpd \ 82 | "$pkgdir"/var/lib/mpd \ 83 | "$pkgdir"/var/lib/mpd/playlists 84 | } 85 | 86 | sha512sums="" 87 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-stable/mympdos-mpd-stable.confd: -------------------------------------------------------------------------------- 1 | # conf.d file for music player daemon 2 | 3 | # 4 | # Specify daemon $OPTS here. 5 | # 6 | 7 | OPTS="" 8 | 9 | # set memlock limit to 64 MB 10 | rc_ulimit="-l 65536" 11 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-stable/mympdos-mpd-stable.initd: -------------------------------------------------------------------------------- 1 | #!/sbin/openrc-run 2 | 3 | # init.d file for music player daemon 4 | 5 | name="Music Player Daemon" 6 | description="A daemon for playing music" 7 | 8 | command=/usr/bin/mpd 9 | command_args="$MPD_OPTS" 10 | 11 | command_user="${M_USER:-mpd}:${M_GROUP:-audio}" 12 | 13 | depend() { 14 | need localmount 15 | use net netmount nfsmount esound pulseaudio 16 | after firewall 17 | } 18 | 19 | start_pre() { 20 | checkpath --directory --quiet \ 21 | --owner "${M_USER:-mpd}" --mode 0775 /var/run/mpd 22 | } 23 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-stable/mympdos-mpd-stable.pre-install: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | adduser -S -D -h /var/lib/mpd -s /sbin/nologin -G audio -g mpd mpd 2>/dev/null 4 | 5 | exit 0 6 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-mpd-stable/stacksize.patch: -------------------------------------------------------------------------------- 1 | --- ./src/thread/Thread.cxx.orig 2 | +++ ./src/thread/Thread.cxx 3 | @@ -35,8 +35,12 @@ 4 | if (handle == nullptr) 5 | throw MakeLastError("Failed to create thread"); 6 | #else 7 | - int e = pthread_create(&handle, nullptr, ThreadProc, this); 8 | - 9 | + pthread_attr_t attr, *attrptr = nullptr; 10 | + if ((pthread_attr_init(&attr) == 0) 11 | + && (pthread_attr_setstacksize(&attr, 1024*1024) == 0)) { 12 | + attrptr = &attr; 13 | + } 14 | + int e = pthread_create(&handle, attrptr, ThreadProc, this); 15 | if (e != 0) 16 | throw MakeErrno(e, "Failed to create thread"); 17 | #endif 18 | -------------------------------------------------------------------------------- /mympdos/build/mympdos-musicdb-scripts/APKBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: Juergen Mang 2 | pkgname=mympdos-musicdb-scripts 3 | pkgver=0.1.0 4 | pkgrel=7 5 | pkgdesc="myMPDos musicdb-scripts" 6 | url="https://github.com/jcorporation/musicdb-scripts" 7 | arch="noarch" 8 | license="GPL-3.0-or-later" 9 | makedepends="" 10 | depends="python3" 11 | install="" 12 | source="$pkgname-$pkgver.tar.gz" 13 | options="!check" #No testsuite exists 14 | 15 | package() { 16 | install -d -g root -o root -m775 \ 17 | "$pkgdir/usr/bin" 18 | install -g root -o root -m755 "$srcdir/$pkgname-$pkgver/"*.sh \ 19 | "$pkgdir/usr/bin/" 20 | install -d -g root -o root -m775 \ 21 | "$pkgdir/usr/lib/lyrics" 22 | install -g root -o root -m755 "$srcdir/$pkgname-$pkgver/lyrics/"*.py \ 23 | "$pkgdir/usr/lib/lyrics/" 24 | } 25 | -------------------------------------------------------------------------------- /mympdos/mpd.replace: -------------------------------------------------------------------------------- 1 | #Customizes the mpd configuration 2 | #Syntax is: 3 | #ACTION KEY VALUE 4 | #ACTION: 5 | # A: adds a line 6 | # C: changes a line 7 | # D: deletes a line 8 | # 9 | #Examples: 10 | #Adds auto_update_depth to 5 11 | #A auto_update_depth "5" 12 | # 13 | #Changes auto_update to no 14 | #C auto_update "no" 15 | # 16 | #Deletes the auto_update setting 17 | #D auto_update 18 | -------------------------------------------------------------------------------- /mympdos/netboot/init.patch: -------------------------------------------------------------------------------- 1 | # mympd build 2 | echo "Adding myMPDos build service to firstboot" 3 | sed -i -e 's|eend $rc|/media/vda1/mympdos/build.sh\n\teend $rc|' "${sysroot}/etc/init.d/firstboot" 4 | -------------------------------------------------------------------------------- /mympdos/overlay/etc/.default_boot_services: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/mympdos/overlay/etc/.default_boot_services -------------------------------------------------------------------------------- /mympdos/overlay/etc/conf.d/local: -------------------------------------------------------------------------------- 1 | rc_verbose=yes 2 | -------------------------------------------------------------------------------- /mympdos/overlay/etc/local.d/mympdos-bootstrap.start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | export BOOTSTRAP="true" 9 | if [ -e /dev/mmcblk0 ] 10 | then 11 | export SDCARD="mmcblk0" 12 | export BOOTPART="p1" 13 | export DATAPART="p2" 14 | elif [ -e /dev/vda ] 15 | then 16 | export SDCARD="vda" 17 | export BOOTPART="1" 18 | export DATAPART="2" 19 | else 20 | echo "Unsupported drive" 21 | exit 1 22 | fi 23 | 24 | export BOOTDEV="/dev/${SDCARD}${BOOTPART}" 25 | export BOOTMEDIA="/media/${SDCARD}${BOOTPART}" 26 | export DATADEV="/dev/${SDCARD}${DATAPART}" 27 | export DATAMEDIA="/media/${SDCARD}${DATAPART}" 28 | export LBUMEDIA="${SDCARD}${DATAPART}" 29 | export REBOOT=1 30 | export NETWORK_CHECK=1 31 | 32 | chmod +x /usr/local/bin/mympdos-bootstrap.sh 33 | /usr/local/bin/mympdos-bootstrap.sh 2>&1 | tee /var/log/bootstrap.log 34 | 35 | echo "Writing $BOOTMEDIA/bootstrap.log" 36 | mount -o remount,rw "$BOOTMEDIA" 37 | cp /var/log/bootstrap.log "$BOOTMEDIA/bootstrap.log" 38 | mount -o remount,ro "$BOOTMEDIA" 39 | 40 | echo "myMPDos installation is finished" 41 | [ "$REBOOT" -eq 1 ] && reboot 42 | -------------------------------------------------------------------------------- /mympdos/overlay/etc/runlevels/default/local: -------------------------------------------------------------------------------- 1 | /etc/init.d/local -------------------------------------------------------------------------------- /mympdos/overlay/usr/local/bin/mympdos-bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # myMPDos (c) 2020-2024 Juergen Mang 5 | # https://github.com/jcorporation/myMPDos 6 | # 7 | 8 | export BOOTSTRAP="true" 9 | if [ -e /dev/mmcblk0 ] 10 | then 11 | SDCARD="mmcblk0" 12 | BOOTPART="p1" 13 | DATAPART="p2" 14 | elif [ -e /dev/vda ] 15 | then 16 | SDCARD="vda" 17 | BOOTPART="1" 18 | DATAPART="2" 19 | else 20 | echo "Unsupported drive" 21 | exit 1 22 | fi 23 | 24 | BOOTDEV="/dev/${SDCARD}${BOOTPART}" 25 | BOOTMEDIA="/media/${SDCARD}${BOOTPART}" 26 | DATADEV="/dev/${SDCARD}${DATAPART}" 27 | DATAMEDIA="/media/${SDCARD}${DATAPART}" 28 | LBUMEDIA="${SDCARD}${DATAPART}" 29 | REBOOT=1 30 | NETWORK_CHECK=1 31 | 32 | read -r VERSION < "$BOOTMEDIA/myMPDos.version" || { echo "$BOOTMEDIA/myMPDos.version not found"; exit 1; } 33 | 34 | echo "" 35 | echo "myMPDos $VERSION bootstrap script" 36 | echo "" 37 | 38 | #Bootstrap configuration 39 | MYMPDOS_REPOSITORY="https://raw.githubusercontent.com/jcorporation/myMPDos/master/repository" 40 | IP_TYPE="dhcp" 41 | WLAN_ENABLE="false" 42 | WLAN_KEYMGMT="WPA-PSK" 43 | IP_HOSTNAME="myMPDos" 44 | MPD_VERSION="1" 45 | KEYBOARD_LAYOUT="us" 46 | KEYBOARD_VARIANT="us" 47 | BT_ENABLE="false" 48 | BT_INTERNAL="false" 49 | ADVANCED_SOFTWARE="true" 50 | TIMEZONE="UTC" 51 | ENABLE_RNGD="true" 52 | DISABLE_HDMI="false" 53 | UPSAMPLING="false" 54 | RESAMPLER="libsamplerate" 55 | LIBSAMPLERATE_TYPE="0" 56 | ENABLE_AUTOMOUNT="true" 57 | ENABLE_CONFIGMPD="true" 58 | ENABLE_MIXER="true" 59 | SOFTWARE_MIXER_FALLBACK="false" 60 | if [ -f "$BOOTMEDIA/bootstrap.txt" ] 61 | then 62 | . "$BOOTMEDIA/bootstrap.txt" 63 | else 64 | echo "No bootstrap.txt found, using defaults" 65 | WLAN_ENABLE="false" 66 | fi 67 | 68 | [ -z "$WLAN_SSID" ] && WLAN_ENABLE="false" 69 | 70 | #Setup sdcard 71 | wait_for_device() 72 | { 73 | printf "Waiting for %s" "$1" 74 | #first check device exists and is a block device 75 | I=0 76 | while [ ! -b "$1" ] 77 | do 78 | printf "." 79 | I=$((I+1)) 80 | sleep 1 81 | if [ "$I" = "10" ] 82 | then 83 | echo " timeout" 84 | return 1 85 | fi 86 | done 87 | I=0 88 | #Check if device has a filesystem 89 | if [ "$2" = "FS" ] 90 | then 91 | while [ "$(blkid "$1")" = "" ] 92 | do 93 | printf "." 94 | I=$((I+1)) 95 | sleep 1 96 | if [ "$I" = "10" ] 97 | then 98 | echo " timeout" 99 | return 1 100 | fi 101 | done 102 | fi 103 | echo " found with $2" 104 | return 0 105 | } 106 | 107 | if [ ! -b "$DATADEV" ] 108 | then 109 | #Unmount sd-card to avoid a extra reboot 110 | /etc/init.d/modloop stop 111 | umount "$BOOTDEV" 112 | echo "Creating data partition on sd card" 113 | fdisk "/dev/$SDCARD" <<-EOF 114 | n 115 | p 116 | 2 117 | 118 | 119 | w 120 | 121 | EOF 122 | #wait for devices to appear 123 | if ! wait_for_device "$BOOTDEV" FS 124 | then 125 | echo "Rebooting" 126 | reboot 127 | exit 0 128 | fi 129 | I=0 130 | while ! mount -t vfat "$BOOTDEV" "$BOOTMEDIA" > /dev/null 2>&1 131 | do 132 | I=$((I+1)) 133 | if [ "$I" = 10 ] 134 | then 135 | echo "Can not mount $BOOTDEV" 136 | exit 1 137 | fi 138 | sleep 1 139 | done 140 | /etc/init.d/modloop start 141 | fi 142 | 143 | if ! wait_for_device "$DATADEV" NOFS 144 | then 145 | echo "Rebooting" 146 | reboot 147 | exit 0 148 | elif [ "$(blkid "$DATADEV")" = "" ] 149 | then 150 | echo "Formating data partition on sd card" 151 | apk add e2fsprogs 152 | mkfs.ext4 "$DATADEV" 153 | fi 154 | 155 | echo "Mounting data partition on sd card" 156 | install -d "$DATAMEDIA" 157 | if ! grep -q "$DATADEV" /etc/fstab 158 | then 159 | echo "$DATADEV $DATAMEDIA ext4 noatime,ro,defaults 0 0" >> /etc/fstab 160 | fi 161 | 162 | if ! mount "$DATADEV" 163 | then 164 | echo "Can not mount $DATADEV" 165 | exit 1 166 | fi 167 | 168 | echo "" 169 | echo "Filesystem usage" 170 | df -h 171 | echo "" 172 | echo "Mounts" 173 | mount 174 | echo "" 175 | 176 | #setup networking 177 | find_wlan_device() 178 | { 179 | for DEV in /sys/class/net/* 180 | do 181 | if [ -e "${DEV}"/wireless ] || [ -e "${DEV}"/phy80211 ] 182 | then 183 | echo "${DEV##*/}" 184 | fi 185 | done 186 | } 187 | 188 | write_interfaces_dhcp() 189 | { 190 | cat <<-EOF > /etc/network/interfaces 191 | auto lo 192 | iface lo inet loopback 193 | 194 | auto ${IFACE} 195 | iface ${IFACE} inet dhcp 196 | hostname myMPDos 197 | EOF 198 | } 199 | 200 | write_interfaces_static() 201 | { 202 | cat <<-EOF > /etc/network/interfaces 203 | auto lo 204 | iface lo inet loopback 205 | 206 | auto ${IFACE} 207 | iface ${IFACE} inet static 208 | address $IP_ADDRESS 209 | netmask $IP_NETMASK 210 | gateway $IP_GATEWAY 211 | hostname $IP_HOSTNAME 212 | EOF 213 | } 214 | 215 | if [ "$WLAN_ENABLE" = "true" ] 216 | then 217 | echo "Configuring wlan" 218 | IFACE=$(find_wlan_device) 219 | if [ "$IFACE" != "" ] 220 | then 221 | apk add wpa_supplicant 222 | cat <<-EOF > /etc/wpa_supplicant/wpa_supplicant.conf 223 | network={ 224 | ssid="$WLAN_SSID" 225 | key_mgmt=$WLAN_KEYMGMT 226 | psk="$WLAN_PSK" 227 | } 228 | EOF 229 | rc-service wpa_supplicant start 230 | rc-update add wpa_supplicant boot 231 | else 232 | echo "No wlan device found, falling back to eth0" 233 | IFACE="eth0" 234 | fi 235 | else 236 | echo "Configuring eth0" 237 | IFACE="eth0" 238 | fi 239 | 240 | if [ "$IP_TYPE" = "dhcp" ] 241 | then 242 | write_interfaces_dhcp 243 | else 244 | write_interfaces_static 245 | fi 246 | 247 | if [ "$IP_DNS_CONFIGURE" = "true" ] 248 | then 249 | cp /dev/null /etc/resolv.conf 250 | [ "$IP_DNS_SEARCH" != "" ] && echo "search $IP_DNS_SEARCH" >> /etc/resolv.conf 251 | [ "$IP_DNS_DOMAIN" != "" ] && echo "domain $IP_DNS_DOMAIN" >> /etc/resolv.conf 252 | [ "${IP_DNS_SERVER1}${IP_DNS_SERVER2}" = "" ] && IP_DNS_SERVER1="$IP_GATEWAY" 253 | [ "$IP_DNS_SERVER1" != "" ] && echo "nameserver $IP_DNS_SERVER1" >> /etc/resolv.conf 254 | [ "$IP_DNS_SERVER2" != "" ] && echo "nameserver $IP_DNS_SERVER2" >> /etc/resolv.conf 255 | fi 256 | 257 | rc-service networking start 258 | hostname "$IP_HOSTNAME" 259 | echo "$IP_HOSTNAME" > /etc/hostname 260 | 261 | if [ "$IP_TYPE" = "dhcp" ] && [ "$IP_COPY_DHCP_TO_STATIC" = "true" ] 262 | then 263 | echo "Setting static ip address from dhcp" 264 | IP_ADDRESS=$(ifconfig "$IFACE" | grep -m 1 "inet addr" | sed -r 's/.*inet addr:(\S+)\s.*/\1/') 265 | IP_NETMASK=$(ifconfig "$IFACE" | grep -m 1 "inet addr" | sed -r 's/.*Mask:(\S+)/\1/') 266 | IP_GATEWAY=$(route -n | grep -m 1 "^0.0.0.0" | sed -r 's/0\.0\.0\.0\s+(\S+)\s.*/\1/') 267 | if [ "$IP_ADDRESS" != "" ] && [ "$IP_NETMASK" != "" ] && [ "$IP_GATEWAY" != "" ] 268 | then 269 | write_interfaces_static 270 | rc-service networking restart 271 | fi 272 | #check 273 | NIP_ADDRESS=$(ifconfig "$IFACE" | grep -m 1 "inet addr" | sed -r 's/.*inet addr:(\S+)\s.*/\1/') 274 | NIP_NETMASK=$(ifconfig "$IFACE" | grep -m 1 "inet addr" | sed -r 's/.*Mask:(\S+)/\1/') 275 | NIP_GATEWAY=$(route -n | grep -m 1 "^0.0.0.0" | sed -r 's/0\.0\.0\.0\s+(\S+)\s.*/\1/') 276 | if [ "$IP_ADDRESS" != "$NIP_ADDRESS" ] || [ "$IP_NETMASK" != "$NIP_NETMASK" ] || [ "$IP_GATEWAY" != "$NIP_GATEWAY" ] 277 | then 278 | echo "Setting static ip address failed, reverting to dhcp" 279 | cat /etc/network/interfaces 280 | write_interfaces_dhcp 281 | rc-service networking restart 282 | fi 283 | fi 284 | 285 | if [ "$NETWORK_CHECK" -eq 1 ] 286 | then 287 | printf "Checking network connectivity" 288 | I=0 289 | while ! wget dl-cdn.alpinelinux.org > /dev/null 2>&1 290 | do 291 | printf "." 292 | I=$((I+1)) 293 | if [ "$I" = "15" ] 294 | then 295 | echo "ERROR" 296 | exit 1 297 | fi 298 | sleep 2 299 | done 300 | echo "OK" 301 | fi 302 | 303 | printf "Setup NTP" 304 | I=0 305 | while ! ntpd -n -q -p pool.ntp.org > /dev/null 2>&1 306 | do 307 | printf "." 308 | I=$((I+1)) 309 | [ "$I" = "5" ] && break; 310 | done 311 | echo "" 312 | setup-ntp -c busybox 313 | [ "$TIMEZONE" != "" ] && setup-timezone -z "$TIMEZONE" 314 | 315 | echo "Setup OpenSSH" 316 | setup-sshd -c openssh 317 | echo "Enabling ssh root login" 318 | echo "PermitRootLogin yes" >> /etc/ssh/sshd_config 319 | service sshd restart 320 | 321 | echo "Setting keymap to ${KEYBOARD_LAYOUT} ${KEYBOARD_VARIANT}" 322 | apk add kbd-bkeymaps 323 | if [ -f "/usr/share/bkeymaps/${KEYBOARD_LAYOUT}/${KEYBOARD_VARIANT}.bmap.gz" ] 324 | then 325 | setup-keymap "$KEYBOARD_LAYOUT" "$KEYBOARD_VARIANT" 326 | else 327 | echo "Invalid keyboard layout or variant configured." 328 | exit 1 329 | fi 330 | apk del kbd-bkeymaps 331 | 332 | echo "Setting up apk cache" 333 | setup-apkcache "$DATAMEDIA/apkcache" 334 | 335 | echo "Adding repositories and upgrade" 336 | echo "${BOOTMEDIA}/apks" > /etc/apk/repositories 337 | setup-apkrepos -c -1 338 | while apk update 2>&1 | grep WARNING 339 | do 340 | echo "Error...trying new random repository" 341 | echo "${BOOTMEDIA}/apks" > /etc/apk/repositories 342 | setup-apkrepos -c -r 343 | done 344 | 345 | echo "$MYMPDOS_REPOSITORY" >> /etc/apk/repositories 346 | 347 | echo "Adding myMPDos archiv signing public key" 348 | cp "$BOOTMEDIA"/mympdos-apk-keys/*.rsa.pub /etc/apk/keys/ 349 | 350 | echo "Upgrading all packages" 351 | apk update 352 | apk upgrade 353 | 354 | PKGLIST_ADV="usbutils raspberrypi busybox-extras net-tools mpg123 mympdos-libgpiod2 mygpiod" 355 | PKGLIST="mympdos-base mympd mympdos-libmpdclient mympdos-mpc doas alsa-utils ca-certificates" 356 | [ "$BT_ENABLE" = "true" ] && PKGLIST="$PKGLIST bluez bluez-alsa" 357 | [ "$ENABLE_RNGD" = "true" ] && PKGLIST="$PKGLIST rng-tools" 358 | [ "$ADVANCED_SOFTWARE" = "true" ] && PKGLIST="$PKGLIST $PKGLIST_ADV" 359 | case "$MPD_VERSION" in 360 | 1) 361 | PKGLIST="$PKGLIST mympdos-mpd-stable";; 362 | 2) 363 | PKGLIST="$PKGLIST mympdos-mpd-master";; 364 | *) 365 | echo "Invalid MPD package configured";; 366 | esac 367 | echo "Installing packages: $PKGLIST" 368 | apk add $PKGLIST 369 | 370 | if [ "$EXTRA_SOFTWARE" != "" ] 371 | then 372 | echo "Installing extra packages: $PKGLIST" 373 | apk add $EXTRA_SOFTWARE 374 | fi 375 | 376 | echo "Creating user and groups" 377 | adduser mympd audio 378 | addgroup -S mpd 379 | 380 | echo "Creating files in data partition" 381 | mount -oremount,rw "$DATAMEDIA" 382 | install -d "$DATAMEDIA/library" -o mpd -g audio -m 775 383 | ln -s /mnt "$DATAMEDIA/library/USB" 384 | mount -oremount,ro "$DATAMEDIA" 385 | 386 | echo "Installing myMPD scripts" 387 | install -d /var/lib/mympd/scripts 388 | cp -v /usr/local/defaults/mympd-scripts/*.lua /var/lib/mympd/scripts 389 | chown -R mympd:mympd /var/lib/mympd/scripts 390 | 391 | echo "Setting defaults" 392 | install -d /var/lib/mpd/cache -o mpd -g mpd 393 | cp /usr/local/defaults/etc/doas.conf /etc/doas.d/mympd.conf 394 | 395 | if [ "$ENABLE_CONFIGMPD" = "true" ] 396 | then 397 | echo "Enable automatic reconfiguration of MPD" 398 | sed -i -r 's/^SUBSYSTEM=sound.*/SUBSYSTEM=sound;\.\* root:audio 0660 \*\/usr\/bin\/configmpd.sh/' /etc/mdev.conf 399 | fi 400 | if [ "$ENABLE_AUTOMOUNT" = "true" ] 401 | then 402 | echo "Enable automount" 403 | sed -i -r 's/^sd\[a-z\]\.\*.*/sd\[a-z\]\.\* root:disk 0660 \*\/usr\/bin\/automount.sh/' /etc/mdev.conf 404 | fi 405 | 406 | # Set read permissions for all users for vcgencmd 407 | cat >> /etc/mdev.conf << EOL 408 | 409 | #vcgencmd 410 | vcio root:root 0664 411 | 412 | EOL 413 | 414 | echo "#myMPDos configuration file" > /etc/mympdos/mympdos.conf 415 | echo "DISABLE_HDMI=\"$DISABLE_HDMI\"" >> /etc/mympdos/mympdos.conf 416 | echo "RESAMPLER=\"$RESAMPLER\"" >> /etc/mympdos/mympdos.conf 417 | echo "ENABLE_MIXER=\"$ENABLE_MIXER\"" >> /etc/mympdos/mympdos.conf 418 | echo "SOFTWARE_MIXER_FALLBACK=\"$SOFTWARE_MIXER_FALLBACK\"" >> /etc/mympdos/mympdos.conf 419 | if [ "$UPSAMPLING" = "true" ] 420 | then 421 | echo "UPSAMPLING=\"true\"" >> /etc/mympdos/mympdos.conf 422 | echo "AUDIO_OUTPUT_FORMAT=\"$AUDIO_OUTPUT_FORMAT\"" >> /etc/mympdos/mympdos.conf 423 | echo "SAMPLERATE_CONVERTER=\"$SAMPLERATE_CONVERTER\"" >> /etc/mympdos/mympdos.conf 424 | elif [ "$RESAMPLER" = "libsamplerate" ] 425 | then 426 | echo "LIBSAMPLERATE_TYPE=\"$LIBSAMPLERATE_TYPE\"" >> /etc/mympdos/mympdos.conf 427 | elif [ "$RESAMPLER" = "soxr" ] 428 | then 429 | echo "SOXR_QUALITY=\"$SOXR_QUALITY\"" >> /etc/mympdos/mympdos.conf 430 | echo "SOXR_THREADS=\"$SOXR_THREADS\"" >> /etc/mympdos/mympdos.conf 431 | fi 432 | 433 | echo "Configuring MPD" 434 | install -d /etc/mympdos/custom 435 | [ -f "$BOOTMEDIA/mpd.replace" ] && cp "$BOOTMEDIA/mpd.replace" /etc/mympdos/custom/ 436 | [ -f "$BOOTMEDIA/mpd.conf" ] && cp "$BOOTMEDIA/mpd.conf" /etc/mympdos/custom/ 437 | [ -f "$BOOTMEDIA/mpd.custom.conf" ] && cp "$BOOTMEDIA/mpd.custom.conf" /etc/ 438 | /usr/bin/configmpd.sh 439 | 440 | echo "Enabling boot services" 441 | [ "$ENABLE_RNGD" = "true" ] && rc-update add rngd boot 442 | rc-update add networking boot 443 | rc-update add seedrng boot 444 | rc-update add alsa boot 445 | [ "$ENABLE_CRON" = "true" ] && rc-update add crond boot 446 | if [ "$BT_ENABLE" = "true" ] 447 | then 448 | rc-update add bluetooth boot 449 | rc-update add bluealsa boot 450 | fi 451 | if [ "$BT_INTERNAL" = "true" ] 452 | then 453 | sed -i 's/^#ttyAMA0/ttyAMA0/' /etc/mdev.conf 454 | fi 455 | 456 | echo "Enabling default services" 457 | rc-update add mpd default 458 | rc-update add mympd default 459 | 460 | if [ "$ROOT_PASSWORD" != "" ] 461 | then 462 | echo "Setting root password" 463 | printf "%s\n%s\n" "$ROOT_PASSWORD" "$ROOT_PASSWORD" | passwd 464 | fi 465 | 466 | mount -o remount,rw "$BOOTMEDIA" 467 | 468 | echo "Setting usercfg.txt" 469 | echo "" >> "$BOOTMEDIA/usercfg.txt" 470 | [ "$WLAN_ENABLE" = "false" ] && echo "dtoverlay=disable-wifi" >> "$BOOTMEDIA/usercfg.txt" 471 | [ "$BT_INTERNAL" = "false" ] && echo "dtoverlay=disable-bt" >> "$BOOTMEDIA/usercfg.txt" 472 | [ "$AUDIOHAT" != "" ] && echo "dtoverlay=$AUDIOHAT" >> "$BOOTMEDIA/usercfg.txt" 473 | 474 | echo "Removing installation files" 475 | rm "$BOOTMEDIA/mympdos-bootstrap.apkovl.tar.gz" 476 | rm -f "$BOOTMEDIA/bootstrap.txt" 477 | rm -f "$BOOTMEDIA/bootstrap-simple.txt" 478 | rm -f "$BOOTMEDIA/bootstrap-advanced.txt" 479 | rm -f "$BOOTMEDIA/mpd.replace" 480 | rm -f "$BOOTMEDIA/mpd.conf" 481 | rm -f "$BOOTMEDIA/mpd.custom.conf" 482 | 483 | mount -o remount,ro "$BOOTMEDIA" 484 | 485 | if [ "$WLAN_ENABLE" = "false" ] 486 | then 487 | echo "Removing wlan packages" 488 | apk del wpa_supplicant wpa_supplicant-openrc dbus-libs 489 | fi 490 | 491 | echo "Removing obsolet users and groups" 492 | for DU in lp mail postmaster ftp at squid xfs games cyrus vpopmail smmsp guest news operator 493 | do 494 | deluser "$DU" > /dev/null 2>&1 495 | done 496 | for DG in mail tape 497 | do 498 | delgroup "$DG" > /dev/null 2>&1 499 | done 500 | 501 | echo "Cleaning up" 502 | sed -i -r 's/tty(2|3|4|5|6)/#tty\1/' /etc/inittab 503 | rm /etc/local.d/mympdos-bootstrap.start 504 | for DIR in /usr/local/defaults /etc/logrotate.d /etc/openldap /etc/pkcs11 /etc/acpi /etc/sasl2 \ 505 | /etc/dbus-1 /etc/opt /media/cdrom /media/floppy /media/usb 506 | do 507 | rm -rf "$DIR" 508 | done 509 | 510 | echo "Create myMPD configuration" 511 | export MYMPD_ACL 512 | export MYMPD_ALBUM_GROUP_TAG 513 | export MYMPD_ALBUM_MODE 514 | export MYMPD_COVERCACHE_KEEP_DAYS 515 | export MYMPD_HTTP 516 | export MYMPD_HTTP_HOST 517 | export MYMPD_HTTP_PORT 518 | export MYMPD_LOGLEVEL 519 | export MYMPD_LUALIBS 520 | export MYMPD_URI 521 | export MYMPD_SAVE_CACHES 522 | export MYMPD_SCRIPTACL 523 | export MYMPD_STICKERS 524 | export MYMPD_SSL 525 | export MYMPD_SSL_PORT 526 | export MYMPD_SSL_SAN 527 | export MYMPD_CUSTOM_CERT 528 | export MYMPD_SSL_CERT 529 | export MYMPD_SSL_KEY 530 | mympd -c 531 | 532 | echo "Trusting myMPD CA" 533 | cp /var/lib/mympd/ssl/ca.pem /etc/ssl/certs/mympd.pem 534 | update-ca-certificates 535 | 536 | echo "Setting swclock" 537 | install -d /var/lib/misc/ 538 | touch /var/lib/misc/openrc-shutdowntime 539 | 540 | echo "Saving configuration" 541 | echo "LBU_MEDIA=$LBUMEDIA" > /etc/lbu/lbu.conf 542 | LBU_INCLUDES="/var/lib/mympd /var/lib/mpd /var/lib/alsa /var/lib/misc/openrc-shutdowntime" 543 | for INCLUDE in $LBU_INCLUDES 544 | do 545 | lbu_include "$INCLUDE" 546 | done 547 | if [ "$BT_ENABLE" = "true" ] 548 | then 549 | lbu include /var/lib/bluetooth 550 | fi 551 | alsactl store 552 | lbu_commit -v 553 | -------------------------------------------------------------------------------- /mympdos/overlay/usr/local/defaults/etc/doas.conf: -------------------------------------------------------------------------------- 1 | permit nopass mympd cmd /usr/bin/savereboot.sh 2 | permit nopass mympd cmd /usr/bin/saveshutdown.sh 3 | permit nopass mympd cmd /usr/bin/rwdata.sh 4 | -------------------------------------------------------------------------------- /mympdos/overlay/usr/local/defaults/mympd-scripts/RW-Library.lua: -------------------------------------------------------------------------------- 1 | -- {"order":1,"arguments":[]} 2 | result = mympd.os_capture("doas /usr/bin/rwdata.sh") 3 | return result -------------------------------------------------------------------------------- /mympdos/overlay/usr/local/defaults/mympd-scripts/Reboot.lua: -------------------------------------------------------------------------------- 1 | -- {"order":2,"arguments":[]} 2 | os.execute("doas /usr/bin/savereboot.sh") -------------------------------------------------------------------------------- /mympdos/overlay/usr/local/defaults/mympd-scripts/Shutdown.lua: -------------------------------------------------------------------------------- 1 | -- {"order":3,"arguments":[]} 2 | os.execute("doas /usr/bin/saveshutdown.sh") -------------------------------------------------------------------------------- /mympdos/usercfg.txt: -------------------------------------------------------------------------------- 1 | [pi0] 2 | kernel=boot/vmlinuz-rpi 3 | initramfs boot/initramfs-rpi 4 | 5 | [pi2] 6 | kernel=boot/vmlinuz-rpi 7 | initramfs boot/initramfs-rpi 8 | 9 | [all] 10 | disable_splash=1 11 | dtparam=audio=off 12 | dtparam=i2c1=off 13 | dtparam=spi=off 14 | enable_uart=1 15 | 16 | -------------------------------------------------------------------------------- /repository/aarch64/APKINDEX.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/APKINDEX.tar.gz -------------------------------------------------------------------------------- /repository/aarch64/mygpiod-0.8.0-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mygpiod-0.8.0-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mygpiod-dbg-0.8.0-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mygpiod-dbg-0.8.0-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mygpiod-dev-0.8.0-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mygpiod-dev-0.8.0-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mygpiod-doc-0.8.0-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mygpiod-doc-0.8.0-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mympd-21.0.1-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympd-21.0.1-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mympd-dbg-21.0.1-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympd-dbg-21.0.1-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mympd-doc-21.0.1-r0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympd-doc-21.0.1-r0.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-base-0.9.7-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-base-0.9.7-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libgpiod2-2.2-r2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libgpiod2-2.2-r2.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libgpiod2-dev-2.2-r2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libgpiod2-dev-2.2-r2.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libgpiod2-doc-2.2-r2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libgpiod2-doc-2.2-r2.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libmpdclient-2.23-r5.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libmpdclient-2.23-r5.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libmpdclient-dev-2.23-r5.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libmpdclient-dev-2.23-r5.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-libmpdclient-doc-2.23-r5.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-libmpdclient-doc-2.23-r5.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpc-0.36-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpc-0.36-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpc-bash-completion-0.36-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpc-bash-completion-0.36-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpc-doc-0.36-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpc-doc-0.36-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-master-0.25.0-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-master-0.25.0-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-master-dbg-0.25.0-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-master-dbg-0.25.0-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-master-doc-0.25.0-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-master-doc-0.25.0-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-master-openrc-0.25.0-r4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-master-openrc-0.25.0-r4.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-stable-0.24.4-r1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-stable-0.24.4-r1.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-stable-dbg-0.24.4-r1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-stable-dbg-0.24.4-r1.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-stable-doc-0.24.4-r1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-stable-doc-0.24.4-r1.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-mpd-stable-openrc-0.24.4-r1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-mpd-stable-openrc-0.24.4-r1.apk -------------------------------------------------------------------------------- /repository/aarch64/mympdos-musicdb-scripts-0.1.0-r7.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/repository/aarch64/mympdos-musicdb-scripts-0.1.0-r7.apk -------------------------------------------------------------------------------- /repository/mail@jcgames.de.rsa.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwA0yjA3OocH71f15vI8U 3 | FD1+oZblqP5ug2QfymIbu6h1xxtL0cuckAEXJKp0VQTfCiyEfzrhaix0DCwmyopF 4 | SaWnHrgywpdTX9c8b7Pa9GxzJe04rrm8ENmHRkynaKYpgV7H9ww9eZaXZswzsOiw 5 | bLEvuFm6kB37Dyw+3pHlAEh85G+nLWDuI27gXoAgjuwYu8J/9EL4bQ/qqrMGrb7E 6 | IwRflZAOhaLavEzC5jlKZZWREuuXDAotj8nvoE9kF6Ad0M/QEv8wAaS4MdeFhLIL 7 | NbMUmyPkJNrYWZlXIGdg7APGpxqb1rBQzWwCjtBOXV9fwKWUvTkjwj1nZiLvWzB2 8 | ZQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /updates/0.1.0/update.sha256: -------------------------------------------------------------------------------- 1 | NyyzaMsDs1WZwd5XA58J3iHyJk9N96St5sfpURHncclEbSscaYbKnmR6WotLsd25 2 | zoVPp+QiF683Nn3sW94fLOmR0jvTG8FBfoWGd6ZdIUWbm9dHP/ZOQCkDsdpAhQN9 3 | gJkC4nK0Hm8J5o1JMIrZUr7ei3YoUVsdoUWV06oKUCHPXqb90RME3kwlPEctVoXa 4 | c1BWBptTBZoiw9wpooXWvtCrkQYIeEzuVLLC1zLtjInQCFFnRuu0UsKBIRNKmMK6 5 | zIKsybeCNb7Fq54xqliYOsycPUMNrghqINWmQAo6WQNXFf+Nu4PVkdzlAsznHHkw 6 | BcclkZczOA+Iih2y31EOPg== 7 | -------------------------------------------------------------------------------- /updates/0.1.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.1.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.1.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.2.0 2 | -------------------------------------------------------------------------------- /updates/0.1.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo "Updating alpine base image to 3.12.1" 3 | echo " - Downloading" 4 | ARCHIVE="alpine-rpi-3.12.1-aarch64.tar.gz" 5 | CHECKSUM="125fcbc1e21d092dd68df6e457fa5e0b76964d00ffd7706e93c9eb9578f4f729" 6 | if wget -q "http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/aarch64/$ARCHIVE" -O "$ARCHIVE" 7 | then 8 | echo " - Checking" 9 | if echo "$CHECKSUM $ARCHIVE" | sha256sum -c -w 10 | then 11 | echo " - Extracting" 12 | mount -oremount,rw /media/mmcblk0p1 13 | tar -xzf "$ARCHIVE" -C /media/mmcblk0p1 14 | mount -oremount,ro /media/mmcblk0p1 15 | echo " - Cleaning up" 16 | rm "$ARCHIVE" 17 | else 18 | echo "Checksum error" 19 | exit 1 20 | fi 21 | else 22 | echo "Error downloading alpine base image" 23 | exit 1 24 | fi 25 | 26 | exit 0 27 | -------------------------------------------------------------------------------- /updates/0.2.0/update.sha256: -------------------------------------------------------------------------------- 1 | DrajNF0IxoKcEyVz+sMjlaryLdAleApuErMreclCh6SYne9p1I2YTfv6H9pVro+m 2 | 9TV2LmsEuyrXSC8wSSGwgH2PACMwzZC2vzXGD0kWx9JS8HGQFFofJqYX62rXoV3A 3 | l84L8zujQRi+9FpsYLwDn+kOuAjymdYYE3ZouxNyMA7rqN2lu4UzNRz+F4D324Fv 4 | NJdyHcrnMsueG3BLcq2l18n0bDW3Bv6g7BnQV6MavwgSaT4GjIdMZbgIhJnCsila 5 | 7Vd1NuVk4+3LGosuS3t4B2wpv3WPyAUXEcrdcqeX7ULEMCxe9S+8hZQ8pad/3ulM 6 | TwFzQllpOIQhBgSZnubYYQ== 7 | -------------------------------------------------------------------------------- /updates/0.2.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.2.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.2.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.3.0 2 | -------------------------------------------------------------------------------- /updates/0.2.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | -------------------------------------------------------------------------------- /updates/0.3.0/update.sha256: -------------------------------------------------------------------------------- 1 | tjXyiwRPjJa4ds/fz2ofVo0HAJ1LzEsghGTnAR6foQg23rJCwRIvq2CEXjj8pDIW 2 | +CPlNJ/LHVSORsETj/Jl+cMvb/aiKTopDZxMqfnXII8n/ZNRl+RJmNgqaIqH6cgz 3 | tPq3qV9acC9aYy94eHQEVsVsw8MDGSthvtZ3SNohJj5z/71ExUtFvOGgRFYnuQqk 4 | a+HAuYvXTIsI86usGqaX6Vzmlzth9/zTLWAO/BNY4VuFPsCk6gEqPxkxtlPMpRP6 5 | uo3VE15CRpqqsvz/eFAPVVGS/j3moVsUtWqlvZPHX4cU0f6RdmDoae6C3PYbjbtn 6 | rx25pd/gIj+yEEbPNpPonA== 7 | -------------------------------------------------------------------------------- /updates/0.3.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.3.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.3.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.4.0 2 | -------------------------------------------------------------------------------- /updates/0.3.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | -------------------------------------------------------------------------------- /updates/0.4.0/update.sha256: -------------------------------------------------------------------------------- 1 | DlC+juuK8b2mH+qj9ZBEOqPtg+WRa+phr/JMEl9F5nlTYC+F0fe7Jqy+4RB33QoK 2 | ZWR4J6KwOaBHs1IIR501sVuDpDJomS7eUKEh3Mu4Sq4HyuXtxg4ZGNIXs3YPDPjf 3 | /INAw3LwQq/VGDppBFNMrPgbP01Kn1fttVuu0g63zmu3ZrERGImA0T99NaM1Cp/w 4 | +J4kNjIDM8eH0gTc+BRsq1QHhXWJN6lSbDstfYJNTCgOw/RqjTnE+YHWEHxvFNvt 5 | 1TSmZ5sZe40f6E6HGPTCNKZL+GBbQ3xQN2dRMhh/kW9K7MXT1481yyEVMzt2lj2f 6 | kk7ZnTrXtHkIlFzdogRy0g== 7 | -------------------------------------------------------------------------------- /updates/0.4.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.4.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.4.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.5.0 2 | -------------------------------------------------------------------------------- /updates/0.4.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | -------------------------------------------------------------------------------- /updates/0.5.0/update.sha256: -------------------------------------------------------------------------------- 1 | h3+7VMKNka3fvVHEQnbROv3MQCcq3EEQlHT/AYQxe7hZ/lX5buT12GaTQWZ+ehdB 2 | Z/JX3CrfZpe59nKcOX3kHxaeYWNWppnxVrVtkdiLO3dZFOyouiRQB1XkEhwRd0B7 3 | 2rsAio58hPFHC25BJjn4Y5+himA1ESMpVHp8MB5oQVK8y26SyHYatjRbgzE4oi1l 4 | YA8TBPhET+4JlMcSrHtFfiDGcq3vSRcRuHQN5zOjTakni7npLzeKIJxMEk42TRVJ 5 | rqV5Ix5sCoPqA97gt9ixb7Yj5CSLc+bEFD3PByth9GoRP+649uSsLjrqcxHWYyjm 6 | tOAHYYeyiQputyFdMb2/bQ== 7 | -------------------------------------------------------------------------------- /updates/0.5.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.5.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.5.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.6.0 2 | -------------------------------------------------------------------------------- /updates/0.5.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | 5 | echo "Updating alpine boot image to 3.13.1" 6 | echo " - Downloading" 7 | BOOTDEV="/media/mmcblk0p1" 8 | ARCHIVE="alpine-rpi-3.13.1-aarch64.tar.gz" 9 | CHECKSUM="bccaaab7cb4a167ed05e18d72fdde71b101568c03d94fee60c193c019f4b0944" 10 | if wget -q "http://dl-cdn.alpinelinux.org/alpine/v3.13/releases/aarch64/$ARCHIVE" -O "$ARCHIVE" 11 | then 12 | echo " - Checking" 13 | if echo "$CHECKSUM $ARCHIVE" | sha256sum -c -w 14 | then 15 | echo " - Mounting $BOOTDEV rw" 16 | mount -oremount,rw "$BOOTDEV" 17 | echo " - Removing old boot files" 18 | rm -rf "${BOOTDEV}/apks" 19 | echo " - Extracting" 20 | tar -xzf "$ARCHIVE" -C "$BOOTDEV" 21 | echo " - Mounting $BOOTDEV ro" 22 | if ! mount -oremount,ro "$BOOTDEV" 23 | then 24 | echo "Remounting ro failed, please reboot system after update" 25 | fi 26 | echo " - Cleaning up" 27 | rm "$ARCHIVE" 28 | else 29 | echo "Checksum error" 30 | exit 1 31 | fi 32 | else 33 | echo "Error downloading alpine base image" 34 | exit 1 35 | fi 36 | 37 | echo "Updating repositories" 38 | sed -i -e 's/v3\.12/v3.13/g' /etc/apk/repositories 39 | apk update 40 | apk upgrade 41 | -------------------------------------------------------------------------------- /updates/0.6.0/update.sha256: -------------------------------------------------------------------------------- 1 | C5dxN0dTXaYokZ6GRf7el1Y2OtenRbknKaHfy3vQtZMX17aUvRqEKlaz8QnTi9kf 2 | O7f5z2lAUvAJ2+Yg95VAGG5qXiYrNk0Wv9bclx6Ksuq6NjN2aQqM/I4tHOUfkTvO 3 | cJswRzV6GbOMZJhL5RrMWR4mfAJ0gRHkSMI9oSvMUzOERcPkd3NiDct4txbkiyos 4 | 2lefLroakxarFsot28hXTjtNZKJKmUTjaaR4qxmAV3GSG2K3slwIvG3Xrn/3gpTV 5 | AUksqsFni22Gokb/pfALxv7mNjdkj8ZfvlnE0j8kTOiosuLcQvH9yf2p2zLyUWFE 6 | dqJW5opnoyOvTKl9hMtWzA== 7 | -------------------------------------------------------------------------------- /updates/0.6.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.6.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.6.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.7.0 2 | -------------------------------------------------------------------------------- /updates/0.6.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | 5 | VERSION="3.13.2" 6 | ARCHIVE="alpine-rpi-${VERSION}-aarch64.tar.gz" 7 | CHECKSUM="3dc14236dec90078c5b989db305be7cf0aff0995c8cdb006dcccf13b0ac92f97" 8 | BOOTDEV="/media/mmcblk0p1" 9 | 10 | echo "Updating alpine boot image to ${VERSION}" 11 | echo " - Downloading" 12 | if wget -q "http://dl-cdn.alpinelinux.org/alpine/v3.13/releases/aarch64/$ARCHIVE" -O "$ARCHIVE" 13 | then 14 | echo " - Checking" 15 | if echo "$CHECKSUM $ARCHIVE" | sha256sum -c -w 16 | then 17 | echo " - Mounting $BOOTDEV rw" 18 | mount -oremount,rw "$BOOTDEV" 19 | echo " - Removing old boot files" 20 | rm -rf "${BOOTDEV}/apks" 21 | echo " - Extracting" 22 | tar -xzf "$ARCHIVE" -C "$BOOTDEV" 23 | echo " - Mounting $BOOTDEV ro" 24 | if ! mount -oremount,ro "$BOOTDEV" 25 | then 26 | echo "Remounting ro failed, please reboot system after update" 27 | fi 28 | echo " - Cleaning up" 29 | rm "$ARCHIVE" 30 | else 31 | echo "Checksum error" 32 | exit 1 33 | fi 34 | else 35 | echo "Error downloading alpine base image" 36 | exit 1 37 | fi 38 | -------------------------------------------------------------------------------- /updates/0.7.0/update.sha256: -------------------------------------------------------------------------------- 1 | oyQcIUDDAnu6QjpLMOdJ0jD9O30+2jfvW77f7hR8G3BKS1PB+REpKravY9Hhg4Yu 2 | OJtTn8PnxyuAvL4DyeueDAvo0rkr1+TiXciWfRVETWlcNvPHWEYzS1UnBpPlmpDE 3 | yebL7tni+nuvRPs/ix/kq3O1VwrJRNN758OYLG4rjNPo1Wt+YY2WuU441cq4LaxF 4 | lXXwxjpHcf2JSHIe4qbCjLp2XNAWpyJPq/Gw17srJTajxW9y/qw7nvsFTdNeTADf 5 | 1iVTAP4U323Q9Fn/MYSa164OzcaWPIcLStzZkNDbeEJzVGeCNDVy1bibgP7OaqfI 6 | n6VYdxZpsGbuRHX0USh5Jw== 7 | -------------------------------------------------------------------------------- /updates/0.7.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.7.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.7.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.8.0 2 | -------------------------------------------------------------------------------- /updates/0.7.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo "Updating alpine boot image to 3.14" 3 | echo " - Downloading" 4 | BOOTDEV="/media/mmcblk0p1" 5 | ARCHIVE="alpine-rpi-3.14.0-aarch64.tar.gz" 6 | CHECKSUM="0cc1dbad694c93b686bd76a0a5db3aaae2e1357e1b687a99b1bd37df9bae8692" 7 | if wget -q "http://dl-cdn.alpinelinux.org/alpine/v3.14/releases/aarch64/$ARCHIVE" -O "$ARCHIVE" 8 | then 9 | echo " - Checking" 10 | if echo "$CHECKSUM $ARCHIVE" | sha256sum -c -w 11 | then 12 | echo " - Mounting $BOOTDEV rw" 13 | mount -oremount,rw "$BOOTDEV" 14 | echo " - Removing old boot files" 15 | rm -rf "${BOOTDEV}/apks" 16 | echo " - Extracting" 17 | tar -xzf "$ARCHIVE" -C "$BOOTDEV" 18 | echo " - Mounting $BOOTDEV ro" 19 | if ! mount -oremount,ro "$BOOTDEV" 20 | then 21 | echo "Remounting ro failed, please reboot system after update" 22 | fi 23 | echo " - Cleaning up" 24 | rm "$ARCHIVE" 25 | else 26 | echo "Checksum error" 27 | exit 1 28 | fi 29 | else 30 | echo "Error downloading alpine base image" 31 | exit 1 32 | fi 33 | 34 | echo "Updating repositories" 35 | sed -i -e 's/v3\.13/v3.14/g' /etc/apk/repositories 36 | apk update 37 | apk upgrade 38 | -------------------------------------------------------------------------------- /updates/0.8.0/update.sha256: -------------------------------------------------------------------------------- 1 | vOn2yIQORS1c+vOqmf+cAY/cwN4s9JTJlkzwKb8WZcq09+usrXqGmcvb/HxEoOQa 2 | 4rQNdp9SdDZzzTdm/2newlbb4FC+9rBOHZ4t5JTCUyDJB4iGOxdj+Xe3gBGjzrq5 3 | 340SqOw0MARfvHbRKccHw4WaP3G1a31ryPYFWUntjhL03aTEtZTvSu8dxgRsINnK 4 | 2SgiqaZt/GnGsAQWO6BSizJTojBWAiKPDjipe4F4KBl2u1l8ahTHAuyggZWkBkps 5 | YPSueNgNyLjmmrP7oCS0I1PkY12MfXsbx1QVsy6be8rAkWnbmvi/U7hByU+DzfBr 6 | DBAmL+1mMw7uPThoEM5mEg== 7 | -------------------------------------------------------------------------------- /updates/0.8.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.8.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.8.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.0 2 | -------------------------------------------------------------------------------- /updates/0.8.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #Remove obsolet local apk repository 3 | mount -oremount,rw /dev/mmcblk0p1 4 | rm -rf /media/mmcblk0p1/mympdos-apks 5 | sed -i -r '/mympdos-apks/d' /etc/apk/repositories 6 | sync 7 | mount -oremount,ro /dev/mmcblk0p1 8 | -------------------------------------------------------------------------------- /updates/0.9.0/update.sha256: -------------------------------------------------------------------------------- 1 | sYxpRCM4zUfMCAphOr1D4UD1YXsqFtqN5peC5glnrXdNzO0seKpLOkXhd2/A0uGf 2 | k7ECSgh2aUBS/e2qd+cH1vmbou35sKUpTUBjwM3aSJ6MQg0Cc4lYfxjPHdBq2XVH 3 | NxU06yY+V01rgv0RlVVF9d6IRmOPKSo2MLpxG60xH6oOS+kYBTbTBljQCCL7et8I 4 | nI8D5Bb18sBRTQ+lvzLL+JXBKFdokb1/ImAFW6joaDLnO/5Lr3LzK2eGd0JZOKmI 5 | 2femrMahOKiJ35jYUdABpgrIIprUIefJpfzu3k19p0PBPMfqncjHvpJcZBximxjj 6 | dUhYmb5xkDnhLgZrQZtD6Q== 7 | -------------------------------------------------------------------------------- /updates/0.9.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.0/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.1 2 | -------------------------------------------------------------------------------- /updates/0.9.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | lbu exclude /var/lib/mympd/covercache 3 | export V_MAJOR=3 4 | export V_MINOR=14 5 | export V_POINT=1 6 | export CHECKSUM=376627f9f44142198a26123544c6505cf126b84199697fe436f6603de0b466a7 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/0.9.1/update.sha256: -------------------------------------------------------------------------------- 1 | UXGFrXukjs3wqC9j7vAV9Ayu50joPM40r0TcaXBWyhM5K45rP003/qcTHNg+DaUb 2 | pFTJrfr9in1uXKFvUyperbW2zksKLbp123e7naeR/+FVLpT+hSynzzgM5g3YCSUX 3 | +7ZA7rs8wynKOrszEHvUxwBc7N891vethCjQ9Ed9KAxTSDHXXsBPlUSAii6RHKpw 4 | 9S4wj9n34AHdRk9bjPjpXkfMBd8BR6OS+j8647DlGGlRQQcq5V+QUbcA5XOWMUb8 5 | iUTCnlmg6Gzf7TIe2DbdCGrlYFRNBhe1XUwcbERcmbNY48HJ680Z+wEd4TFeMdHv 6 | /UP81uRJbRKoloyWtZH67w== 7 | -------------------------------------------------------------------------------- /updates/0.9.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.1/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.2 2 | -------------------------------------------------------------------------------- /updates/0.9.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export V_MAJOR=3 3 | export V_MINOR=14 4 | export V_POINT=2 5 | export CHECKSUM=0824cadf015a45d24ff9429da4cb1b5b20a091606601e59dc8575b9aa6e9d81a 6 | alpine-upgrade.sh 7 | -------------------------------------------------------------------------------- /updates/0.9.2/update.sha256: -------------------------------------------------------------------------------- 1 | LHfRyf44JfXYMJMlLxrP8wuEiL0ht4ZmMmIGB6AlubkX+NaYudPnYQsNDwWnBxp/ 2 | j7KMEvqarM0EU9dPRNHQBgqYEi/acor9hKb1wyfEQFSCTOJO6ccLyNUTiHTudAho 3 | W99PDz1TP7+s7vL7SUYXO6yDRJQY1JL2ePY2QdoL4rtIQ4HlZISVjqHhF8AnS/Jc 4 | hWberzRLAzASlV0zgtZ1BK7J47YW73reWShTo9wRu6Oj9EEmD3vMYWXYfEqe6frR 5 | ZzpHUU/4JDhyKBlQHpo64CxcKmopVNZcBF/UwS+gBbjCdiUGtzD/wvfecYE40CrS 6 | U98Hi4wDzk/9TO4YNfI8zw== 7 | -------------------------------------------------------------------------------- /updates/0.9.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.2/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.3 2 | -------------------------------------------------------------------------------- /updates/0.9.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export V_MAJOR=3 3 | export V_MINOR=14 4 | export V_POINT=3 5 | export CHECKSUM=aa7796b4108a776a9df65c2508d90a1036bbf217292d57297b49513dc59c60f2 6 | alpine-upgrade.sh 7 | -------------------------------------------------------------------------------- /updates/0.9.3/update.sha256: -------------------------------------------------------------------------------- 1 | asgN240dw2WZjaLWItLm8U328Wq3nL6lCkHtWEN+t1c8iYzH3gp2Jz0ZkvD3gMUr 2 | 4PTLEUcKDZd7pDvXYrlZsjFwe7PTab1FS8nSEyy1AyTqJ7NC8HjZjuy+ChXDK6R4 3 | z5iHGQ4wPLpMqXMM2THO1QirhCDhUklTf0iZaY065CvEYuEol+x9X3lOz39Un6hz 4 | kyhhbi6LpbSLbwreKSNdBDoWLVv825Z1Eg8YnT7Y0gGkEdfFJEbQOo/5lf+yVt6x 5 | 6mZiX0xkknH0je2XE8b64BJUYPu8vkxfbGWJzdTPv5t0HzMfYcjHNK7axN4RcCY1 6 | EkRoqrMyIqJOOjm9gisQog== 7 | -------------------------------------------------------------------------------- /updates/0.9.3/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.3/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.3/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.4 2 | -------------------------------------------------------------------------------- /updates/0.9.3/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export V_MAJOR=3 3 | export V_MINOR=15 4 | export V_POINT=0 5 | export CHECKSUM=5b1b42973294325fca4581eeda62d30d7a4741c7946234956b32ab98cda7b4fe 6 | 7 | #remove old lua scripts with sudo 8 | rm -f /var/lib/mympd/scripts/Shutdown.lua 9 | rm -f /var/lib/mympd/scripts/Reboot.lua 10 | rm -f /var/lib/mympd/scripts/RW-Library.lua 11 | 12 | #upgrade 13 | alpine-upgrade.sh 14 | 15 | #replace sudo with doas 16 | apk del sudo 17 | apk add doas 18 | 19 | #add doas config 20 | cat > /etc/doas.d/mympd.conf << EOL 21 | permit nopass mympd cmd /usr/bin/savereboot.sh 22 | permit nopass mympd cmd /usr/bin/saveshutdown.sh 23 | permit nopass mympd cmd /usr/bin/rwdata.sh 24 | 25 | EOL 26 | 27 | #remove sudo config 28 | rm -f /etc/sudoers 29 | rm -f /etc/sudoers.apk-new 30 | -------------------------------------------------------------------------------- /updates/0.9.4/update.sha256: -------------------------------------------------------------------------------- 1 | eAe5bIcuEd6g8Efs4PF5UtKdOgMLQk5QX/eSaCAGlNpBbfa/QMec2KhjWd2Mo7Ap 2 | ARyrKVADhDFSpLPD1zPWeu7zKyEKAH+CJqoHw/mkLHYmmV1x7fBXZ08sydrR+krl 3 | vhzqBMAE2C2krPRGYkk0o5K7Fi5EbGMF2MfeKJeC0jWgJDrLMYUM35yWI30pjNQk 4 | RAr/CqnM/AFusiqiwg83yIcKN2PXDK3F4Ed+T17JWaA06kO1LHkl8MAsaeUnVLbc 5 | ar6Lq7IVdqYhptqB/F0MuyXb8S8pS3zN0xBRblWX/ZLsIBedVVKx/xh11TBhm/0P 6 | 7jsL133bybXSLy2HIx6TPg== 7 | -------------------------------------------------------------------------------- /updates/0.9.4/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.4/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.4/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.5 2 | -------------------------------------------------------------------------------- /updates/0.9.4/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -f /etc/mympdos/templates/mympd.conf.tmpl 4 | rm -f /etc/mympd.conf 5 | 6 | export V_MAJOR=3 7 | export V_MINOR=15 8 | export V_POINT=1 9 | export CHECKSUM=10ab2cd658d7b86def7bf6c05e748d107132a190935ceb0cc58d32f4a6215726 10 | alpine-upgrade.sh 11 | -------------------------------------------------------------------------------- /updates/0.9.5/update.sha256: -------------------------------------------------------------------------------- 1 | cyHo5LIRFAbEq/2AzKv6aUBbVm/INiHV4obSKTduTP8V5Yg6r4Q5Jc+VlPueK8T+ 2 | x7hRzilY2XFzXOfIBLjlPE3O0nueSzSs9e7r6mV7O3jeKOBq1ns6tejJxUaUFaSD 3 | BKp7E2kNJSetLY9Yy20ASp/XEU5bmFKALS2s4XIMD4z+76fivq1s6ARg8pOK9ONY 4 | OelwW2PZNlm/nq6IMK8RX0O3BqGck7nUDX6sb0O+Go6kAFcqoPM9WhGDlDPmMKb5 5 | 5CxdIoKYj1J1pYm1vpWSEh6kJdnP5FkJTHzlNKh7kONeyUKHhr1LFuahMvzp//p0 6 | B7Fd7mkCm8oy+9l0c6XwiQ== 7 | -------------------------------------------------------------------------------- /updates/0.9.5/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.5/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.5/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.6 2 | -------------------------------------------------------------------------------- /updates/0.9.5/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=15 5 | export V_POINT=2 6 | export CHECKSUM=685da914bd39bec75101b9d130cc0c1cb8e33f609a53e66b3fa2e7e78861ed21 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/0.9.6/update.sha256: -------------------------------------------------------------------------------- 1 | qloqJu5ndo43TVK2xgaY5NkJVT5gXepA4eQpE1mcezUEDhLWp+Xx20LMawV6eJl9 2 | iMwg07owGpwXw2EXJnWUQtfMTPYp64Vl1C07goy2mDY/M2ajQBM7AsMsYw1b6pZX 3 | CJWOP+s2FfZxx0c5UlEjD4twojqcdyvoVA843bpmDwLgDKJ2ie7mhMc6Yyolqu+B 4 | AEK8qIf5LVUmo5h0Od1hCnUNmTQ6OoJgt4dh3fYh0cJV5xT/nfjb5HzOTiVnT5v7 5 | ePx6WgOC8rP2cycvmEIDhJ1aZ1Zc3yH9HEJ1Y0CuTPxWZ2kYoiff3DqoSwUDZr9e 6 | MuMIHi649CEQ4B4ZusRWHA== 7 | -------------------------------------------------------------------------------- /updates/0.9.6/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.6/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.6/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.7 2 | -------------------------------------------------------------------------------- /updates/0.9.6/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=15 5 | export V_POINT=3 6 | export CHECKSUM=14b535f2fe854350e0dd7dc0e57218c6b564a5e0b9f488e0d63fe95a9ac5c5d6 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/0.9.7/update.sha256: -------------------------------------------------------------------------------- 1 | LRV1eBgKNPUQpHdw8cmZGIPB2iJyYEsgLVf0ax2sSNJKaqPDiiLm3RP5LNAOGDtL 2 | J+0aF4Zvac3NoKtYPEIoPhFwQbuTAPpQbNGEk8fbNZGkiDIU/SFJDnjsiauUkLNB 3 | tJYmoVuVIaSkcL4uFVmObKheC7yBNDuqyuYooaWjmVXHjmW3lvNE/aojKCXiKwpL 4 | 23Np+9MBVc7nq4v6p/Pg2irZapdmqUNvXjRASuLbHKt+5EUFf+Lg4lkY6ctOlz40 5 | BSsJcMou7tKuudQchyr9UwWjcogcgITlXH4WbM5r4k7AEtX+9gkBCz8aQybWgc1Q 6 | 7X84Km3L5+X5xX/wUTER8A== 7 | -------------------------------------------------------------------------------- /updates/0.9.7/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.7/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.7/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.8 2 | -------------------------------------------------------------------------------- /updates/0.9.7/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=15 5 | export V_POINT=4 6 | export CHECKSUM=c19966c40bcea7614a37c9ab5e42393de831e5e26e7b0cea21ac42c39d61d3c6 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/0.9.8/update.sha256: -------------------------------------------------------------------------------- 1 | Sj0lHgAkenA4Cv2cNHT9FNrcwWOMJgPiOQLPLdIWY0XHfrenkjUW+B3Ze/Htil/r 2 | vZebLTp9Y/C1chL4MOTYtyz/ee0bvZ+IsNL50q0sTXPQGQzfWezJzttgOS7h29NN 3 | IRmUJsGQZxVc4uhNYmFGJSTORs6dR5relXYPxNbMbcFzlzewYLySPiRVkVcuybcv 4 | We2/ioOIqN0Mb6vMyT5Es7/a45IDIYvjn0YReT+KPVYtOyC19jnAIH+KaJx36pts 5 | l8Im0hg7fZhRGAyWfsLmf6y7oY5OT6i6qkiH6MKBSnRrWZZ+2T6BOcMO4mk/09y/ 6 | QYgtRswcgp4e82BcAYhF5A== 7 | -------------------------------------------------------------------------------- /updates/0.9.8/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.8/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.8/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 0.9.9 2 | -------------------------------------------------------------------------------- /updates/0.9.8/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=16 5 | export V_POINT=0 6 | export CHECKSUM=5639e1492a7e24b2098a9675c50040c13caa4bbf91852e1ef3bdcee43e027aae 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/0.9.9/update.sha256: -------------------------------------------------------------------------------- 1 | KZxAKbkUYz32y/OZpmF6vDeBBUhVIGELYJ0sKXzDUoNZtap2BV32zHg20a2FhUU/ 2 | fMs2cMqm0fMnMKqdNiBz08REK7VzH7b9zeCOqepywMaeWRyF28Jodp0ot1Fcb8xd 3 | 9Q+6b5SbjeTvUBDXBLlG6ULkZ4viIbIYbQSjd1WdjRxe/XdPq2G9u8MtO0JLKXns 4 | XdqsOAqGoC3P5psfMplwCBcE04R1DlfPSVDedDuqGWdaHLWarZ0jlH8Uq7M2aroo 5 | GPatF/o8XK6kHCyJtKD3bhA9KJLzIVpTXfo4o+eOEJaCvfOs0p9ioedViKoAwiiG 6 | U2NEEkGzu3oEKssuCx0vSQ== 7 | -------------------------------------------------------------------------------- /updates/0.9.9/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/0.9.9/update.tar.gz -------------------------------------------------------------------------------- /updates/0.9.9/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /updates/0.9.9/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=16 5 | export V_POINT=1 6 | export CHECKSUM=f182857f89f05d0420f4b5c2df32a73e06c8559d0286bb912d04b99a458db536 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.0.0/update.sha256: -------------------------------------------------------------------------------- 1 | rX718hJUEn9ukCRaiPJR8O/1tw/saXPV3kE/ISZVWCGfWWg4pb+xF29vTKm8PrUJ 2 | J/Js90uwAjWnd1qyiLdJgHEd0+GL82g711H+wQusLaDUOk3dQR1GWzpE95tYTv6Z 3 | cHfHMXx0P3kTM7OJmSqziEVEV+c4lb7bUGh3wU6p8wf3csGDhbqyc2h7KWax4oXb 4 | hc5U176/yvYlri8yvt8ku7o/mOCCfLUOCEUCojGL3GzIvXt6JgL8sPCf1+hf0Noy 5 | 8xXY42XUru59cW8IRy3wYBu2zhF3Qn7gTiluuq9nLpEqy+FCAU53lD0v/iK7UkI/ 6 | Dl0ohckY0oB1Qegj6KK74Q== 7 | -------------------------------------------------------------------------------- /updates/1.0.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.0.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.0.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.0.1 2 | -------------------------------------------------------------------------------- /updates/1.0.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=16 5 | export V_POINT=2 6 | export CHECKSUM=accb13b1606d40aec1e542ed8993e7a615be16125e8764ca1e51fa18e3c1bc7b 7 | alpine-upgrade.sh 8 | 9 | -------------------------------------------------------------------------------- /updates/1.0.1/update.sha256: -------------------------------------------------------------------------------- 1 | L5NRpmF/yWXpel+RTxso89HysAaXGxczjfQSP1rP/1QtyxBQgBPvW1845pudAGwZ 2 | 9cKdvquClbM6YFxIyrapxMi7YKCfSFcjrp80mPLeSryGulGzZCSOcDRCyNrMFd0N 3 | qe0FYAknfcMjssJjietBDsjObjLcWDi8D1jC8WXd4kUqqNxXwBqpkGvvnV+qH4/i 4 | bGHEAKoFdjZ20/N7lWg5goEjLF0TNyI8ITRDY/mwCrzgWoI1xgB0rz/Tcbv8WUkI 5 | jKYw0ueFhAPnJyVG//0I/nrIrlT00gPS/guC0Lp+cN+rt26qNsMiCcb0uZIxyzco 6 | Hwpl6ey9hEG6/dqFcwqZOw== 7 | -------------------------------------------------------------------------------- /updates/1.0.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.0.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.0.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.0.2 2 | -------------------------------------------------------------------------------- /updates/1.0.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=16 5 | export V_POINT=3 6 | export CHECKSUM=7de019765f238588ef55fad7423744c4522948b1b4d9dd484de1d4f46a127936 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.0.2/update.sha256: -------------------------------------------------------------------------------- 1 | VU7NqUX5ZHO53OgWxc8DN4HUQ/8l31NFO6KVVGyB8QMAXIUT532cUa8UAMcYMWy8 2 | sZU8RdVrJX2AIQt9r8XBY1snWCiBncNF5exahtooMT9/eR6D/ATBwh9Pt++B/l3Q 3 | FQlQ3fCY5Wg42/e0+SxtZV8RMqhWfqJmpqCFfMOS3K6jNX4L/Z+suWHinK71DlfU 4 | 1NCXYC6MlP+CDS2TUGz2hHLdzYyOXlKGw38foy98qSwckqwN/qaLgUyjM4hg0HPN 5 | rVjWaEHbDau0BKoJoxdSOXVqQ0c3wxrbJJ7T4ghs1wD99MmOcrKLLiACttLjah7p 6 | atlBFLADFNHxrt/4aPojFw== 7 | -------------------------------------------------------------------------------- /updates/1.0.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.0.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.0.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /updates/1.0.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=17 5 | export V_POINT=0 6 | export CHECKSUM=75958328cb8e0ab89e1ad5efc33eff028b7eb09ddf0e95575f85947b02275536 7 | alpine-upgrade.sh 8 | 9 | -------------------------------------------------------------------------------- /updates/1.1.0/update.sha256: -------------------------------------------------------------------------------- 1 | W9AbrVhLL7+kwxn4qAxaWs8CNRgwWxpejOafQjf020m9lS6kKdNtEi3DpcXbvIqx 2 | 3+IuqJQ8SP4bthOwKtgv8fqMJ30qvMu/TxnAuF1A6iWVOyiC6QitaKwWa+Y1xzin 3 | TXWBQljDWuYWGYpNuC+ZQtYG5kt4YqpNqu1j8X1ymxIwd8hLrVrWHb+36pfeZd98 4 | PAzeiNJFVtQdvl5df80lhNK7xRnS+6SM3QwcpuqH+JX8yJpFfYmyVv4UutwTQQJ3 5 | TlGXsQglvrRIhhlllbPb2w0whGwbTbek+SKRmKGp9VbhUftSuJ+Le7Grb/vtXVCM 6 | Q8by/nL4OSBxDpuEdAYYuw== 7 | -------------------------------------------------------------------------------- /updates/1.1.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.1.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.1.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.1.1 2 | -------------------------------------------------------------------------------- /updates/1.1.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=17 5 | export V_POINT=1 6 | export CHECKSUM=5475fc89462914748348fab607cf84bc39ee7c8e6423e79757fa5299a5f70dd3 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.1.1/update.sha256: -------------------------------------------------------------------------------- 1 | i2V8Ib7Ua+xEkwW5uo4MuSNVDhiZr7NbNpT19dxO3w4AugHWLIj1d8epFfvAZMr4 2 | GAY6o5phjV7AljRdjbFhzegs1LfmTLmdz5C87cPLCyuEig787X3TaXfylrYcN+8A 3 | MskziG3k/Zd08ftcjUWMu1YgXJZpYOTNlRU7XrzaQhqQrOShdjV6TIhfHKMXHf7L 4 | aI5ULyx3PX8OMpPc6EidXkSnYN3SRd1SDE50qJaFvzf93gFcbvphuWi3vx2qXQvZ 5 | lhFI7pWMNWaPWLzgly+82Ur8QNfwjAH4gSu7BWflZgSiNU1Q2kK+HYQQljIvlhqh 6 | 4s9ObUAfAy5C31LXGBxlOA== 7 | -------------------------------------------------------------------------------- /updates/1.1.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.1.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.1.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.1.2 2 | -------------------------------------------------------------------------------- /updates/1.1.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=17 5 | export V_POINT=2 6 | export CHECKSUM=0cb8df694f26be91d3313023c79eb7bd5687c9b0e5a5975dc11dd6e42066dd4e 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.1.2/update.sha256: -------------------------------------------------------------------------------- 1 | FlCG/nGYV2bEQoWFr9Phiw27C+/pCLD7fELEyo3fT0WzTVlY8YuLlzZjYPQETq0H 2 | ljOgLcTJt98yrgLumeIuFe+VkqInn1/iItk8QrBqrNZA1LmDhe6BptNTltS7vGbu 3 | gjnlXAlOjFf2LxXeC+l8Q1rH/VyNbm1hkRaqMFu/DKtOErPNBkrnj+UveH0Cebe+ 4 | DaTfff4vPSortxNaF1mS9nrxtWcQ7h+GT6Sb1bIVqcIEsNRNrOS0EDMOSl0tZVqe 5 | YxULsg6w/mvigOdyAhrOsD2/LCkrUQy7236PcpTdyR4zxkxLmki+OUrG2x7iZugD 6 | Vu43F/lh+Zl+OxufA1RW+g== 7 | -------------------------------------------------------------------------------- /updates/1.1.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.1.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.1.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.1.3 2 | -------------------------------------------------------------------------------- /updates/1.1.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=17 5 | export V_POINT=3 6 | export CHECKSUM=2ca8cb1259f6c43b13e7f2a1dd1662779440ac4471405a5e285e75e26f19e5e8 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.1.3/update.sha256: -------------------------------------------------------------------------------- 1 | kseRnbKoQ0ivvbA6lnTQKHZfmaw53mIpeDDcPjHVf6zTDukXgvXPKaBUZhOBKipm 2 | IyZg0t4/4aZlt8RHzDknkMnW95mpeTEtI3q1WUj03SSROFWr/PYJrBDU0t6lltLZ 3 | MyOWVpL9xhiaCQg8Au8lWk7kZcRSbvCW+39ZkdIVeX6z374aI/wf1/DTdYgpeV30 4 | bo0YZhfn6v47PGbsASgN82EgNHVGPskKyju2cMntHfDO3HsZgvP/Pxl6tzifeY4K 5 | dmNJMYUxGulMKpYdBNFaKaoFr+PXmHs65+t7lmSjrdVwxJ3YtKfdy5epb6qXW6hE 6 | OAa6Bnci9Uqet8R9AMEjlQ== 7 | -------------------------------------------------------------------------------- /updates/1.1.3/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.1.3/update.tar.gz -------------------------------------------------------------------------------- /updates/1.1.3/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /updates/1.1.3/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=18 5 | export V_POINT=0 6 | export CHECKSUM=d28034e61f15b4a8231e12ce361485d50fb1525ae1e1de25fcc49e92caccd8d0 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.2.0/update.sha256: -------------------------------------------------------------------------------- 1 | Tw9jhJhWve/tPo8dK5LTqsvN1uC7k7Z0ipkC7BvEte5H6T3wVk048G3/QMPf76B6 2 | r8p52XkMOVTnGQ9ilD7Wg2pkR82+7GoixSUQttXQiFvKimJ5G1+AQqUCnz8oSy9F 3 | YVOAZS/B+sPNq4b7ASlGhrw1yqhl0EJZnxZzlqTIndn/JRz7/wvs/AUEE+QLJ22k 4 | 2bhwbJuHO847ctf2pxxjSzGY5ui7q+soyJefw71VxVFFkbJ9jIESgwVttrJzS8Vn 5 | b7+Yf6j660bWPfbDYjSqsCuJbR3kJMlr+QX1xvHCwi41226aMqcghVSaummlLrTu 6 | NB0anicJatMDxZt5o3Pv+A== 7 | -------------------------------------------------------------------------------- /updates/1.2.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.2.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.2.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.2.1 2 | -------------------------------------------------------------------------------- /updates/1.2.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=18 5 | export V_POINT=2 6 | export CHECKSUM=16afb0361414bf3c0a326fc03ee77fe56ce3f63174a204922b196c81d56e945c 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.2.1/update.sha256: -------------------------------------------------------------------------------- 1 | slLwMhfewx/lbIN9S614JKQghg7gsU/hhdQ4S1Y41EbyEokWMq0p+LFIUPnFENfT 2 | 9Y96Cxi5Mt/Zt1L1vKmpr2JmB6fLePSdZLRWX5pAPHhwQZcUUYSYb3Lfi0+4JDAC 3 | bNlUSKDRt4yQ7Qa5eD/5JDR7Wruq8LnVrl4mQJbaNGKDvfwsIzP4yvBauOIqGty0 4 | 1qQoiN7dfqLp1j8rNxsFvEm6/1CrnINFo57EDlVTW00YUyIDWCALjRqE4mYN28Hn 5 | C3kIspsCvP88XJKHEeuwJfp8t65ueo93Yiyn720Rs7kbmW4u27rUtX0OQLL774ag 6 | Zv1rYugPY894LhIxAz4lHw== 7 | -------------------------------------------------------------------------------- /updates/1.2.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.2.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.2.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.2.2 2 | -------------------------------------------------------------------------------- /updates/1.2.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # replace mpc with mympdos fork 4 | apk del mpc 5 | apk add mympdos-mpc 6 | -------------------------------------------------------------------------------- /updates/1.2.2/update.sha256: -------------------------------------------------------------------------------- 1 | sGPpBEnD43MoXeV7eBBsbodmpR0tcgQ4XLxsjrXGb7FADkGY5GW5zyHm2vc+uosD 2 | RtD2peS/dL+bP21pBJdvoX2nvaYCU4eh2jzHJ30DMubPbKVU70iExqEUk1/PtfM+ 3 | mAvcp5e9i7HgKt4P5FhEPbouHdzBUTQmvXS2FMgQW/Oc5T2zjqx75bcOexLrKB0r 4 | 4eS1LN58kk3SYiyDAa09KhwMQaanPFqG1Rg06D0JGG4+X8zaXmEJQq75DCCucB1f 5 | nVThjv9HNobVLwUCJxGaU0oKdHup6jUozy6Q6LYOmTRYFd/EwQtQBVypufi8E8d9 6 | cO7/hsTTcF7I+C1xbh7vMA== 7 | -------------------------------------------------------------------------------- /updates/1.2.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.2.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.2.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.2.3 2 | -------------------------------------------------------------------------------- /updates/1.2.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -f /etc/sysctl.d/disable_ipv6.conf 4 | rm -f /etc/sysctl.d/mympdos.conf 5 | -------------------------------------------------------------------------------- /updates/1.2.3/update.sha256: -------------------------------------------------------------------------------- 1 | v2acTVnvnZlUiBa8QNtXvUj4BDPB+O2dQetf6RUz4Lz5ybUM+QlFJB83RanzZ1as 2 | 5UD3Ch/knU6agHUFGrPCpasiNk7+9i5+oIolTmkoQzVWEZyh1QUi6kKdsLAgzhcu 3 | DtByoXeN+Lu3Lu5k0MUq14tuDJg//QCgI3p2yqrNxt7XSKWlciDLssq06LSEVMgQ 4 | RIHkKblUGhnA/Oahaa4oMKh7KWpKSp73gU0yAgxy2aKE28yVEiMb3Gb1QmulNSlH 5 | 8JgeBJ2g3P7NuTCyxbIFOukhmSHX0p/rJDijGhk3eUG/MnhrZzxNbbWaRmEabPgY 6 | CHR1PRTBmQf7/fgqmViGOg== 7 | -------------------------------------------------------------------------------- /updates/1.2.3/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.2.3/update.tar.gz -------------------------------------------------------------------------------- /updates/1.2.3/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.2.4 2 | -------------------------------------------------------------------------------- /updates/1.2.3/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=18 5 | export V_POINT=3 6 | export CHECKSUM=dcc31a58f67eaee0cce24d4141a2f63a911c7baa0939dfc123218fd2f1bb9d4b 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.2.4/update.sha256: -------------------------------------------------------------------------------- 1 | BLNDHdFBWz1e2KEaWNznSbzjFZsmtkY1LgO16iS49Jz2KBZvF+mX0CBDcNDXl337 2 | Es5pSqeUrbT5mKGj0ZFg1thNIqoWydcr0H3nmEUm0G68yYVp8a+xDV6xz1nQRnCD 3 | WhmbGoY0bNg9uips5AWGE3tudhjbvu1qTUh34v3Na/7KWUNQ1htCUU11/Mxf/+gf 4 | H06Q/9kcYLvhGXOCdQroL30Tjg2X96ocMitQKZqMPUvdUqeO/N7xVZ4TKW+5c/DE 5 | MdIh8OF5pYVv70UecV5OH6gTu5PfeZWTEeQ36Pt24zx/oA3zdmxnk6NLA/tGsR94 6 | Bbie+L5HSVj/v+8gSWFvRw== 7 | -------------------------------------------------------------------------------- /updates/1.2.4/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.2.4/update.tar.gz -------------------------------------------------------------------------------- /updates/1.2.4/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /updates/1.2.4/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=18 5 | export V_POINT=4 6 | export CHECKSUM=ec0c111a465b2fcf8190b45d5b8c41cf9c8b9160f9eb3153590076f8ca1a9942 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.3.0/update.sha256: -------------------------------------------------------------------------------- 1 | rZB6o9ZZsavQaKcPniwXAyzxOwHAswq3U90mwP3ldpAPyOLNUn9RGvtWywqEDoO6 2 | 0J5W5+RQTB732kowWE9NA3Zichu57yQjc+SBEVPs1/2JXkfXI46nPDllaoBuNcIl 3 | vWMPMyBZ1BkK7o/ccoNyRGodjEJRLWGVypxCMcpgA1g/Qnes7+HkvWlYr5sybE0Y 4 | fOce3Zl4idgoD3EG2oy65ENntXIVUdYFAQ2I7TOVul5xHRvpXLy0Ug1D+D+gfZ2f 5 | ufqYQadPPs9rKFBdojaQwJm15ukWkboLL2dpuFTHadBWqWgPMzxoIzamwoD4leVa 6 | WSopHSVi76E0V+8tNPkXTw== 7 | -------------------------------------------------------------------------------- /updates/1.3.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.3.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.3.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.4.0 2 | -------------------------------------------------------------------------------- /updates/1.3.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if apkinfo mygpiod 4 | then 5 | HAVE_LIBGPIOD=1 6 | apk del libgpiod mygpiod 7 | else 8 | HAVE_LIBGPIOD=0 9 | fi 10 | 11 | export V_MAJOR=3 12 | export V_MINOR=19 13 | export V_POINT=0 14 | export CHECKSUM=5621e7e597c3242605cd403a0a9109ec562892a6c8a185852b6b02ff88f5503c 15 | alpine-upgrade.sh 16 | 17 | # Save shutdowntime in apkovl 18 | lbu_include /var/lib/misc/openrc-shutdowntime 19 | 20 | if apkinfo libgpiod 21 | then 22 | apk update 23 | apk add mympdos-libgpiod2 mygpiod 24 | fi 25 | -------------------------------------------------------------------------------- /updates/1.4.0/update.sha256: -------------------------------------------------------------------------------- 1 | sPiqKGkqqzyFn9uRkfnXp8plkmWd3VmLjlEIEnea5BBam3RdzRjDKuiRUF+aVgy1 2 | vAThIJ8JL147qgTD21F/O1kRJm1b5bDoQyODqMq7kdld9kK4qmXU91bfXl4UzE9C 3 | l1hIPEUbrtu7DdqmyciY+uPA5JVudNaO8Ixrm1oUvGtBZoyK4L2ZmRYqvhYxs89N 4 | c69l6Gle/JufIeCaqTQoQX/s6ZntiJbaeN8LeRb/CedPsgdQVvVbhsLlxqH3togv 5 | 2wLrnEpyurWkhBrX4yw76T4IbJ9p9y2iy+vWXLyy8MfABEhXsk+vyMMMvOsueG5e 6 | 0cw5JMgikzz/+bOtYIT9Dg== 7 | -------------------------------------------------------------------------------- /updates/1.4.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.4.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.4.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.4.1 2 | -------------------------------------------------------------------------------- /updates/1.4.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=19 5 | export V_POINT=1 6 | export CHECKSUM=e277d6f474e2f8e503257fb1d0b8c5a32874081629e291ab8a1cc6142d8a881c 7 | alpine-upgrade.sh 8 | 9 | echo "Trusting myMPD CA" 10 | cp /var/lib/mympd/ssl/ca.pem /etc/ssl/certs/mympd.pem 11 | update-ca-certificates 12 | -------------------------------------------------------------------------------- /updates/1.4.1/update.sha256: -------------------------------------------------------------------------------- 1 | deZwIWJbN/wXMlPLgcMT7k3FecS7nQv9/b3mEP7j6X8DBheiLZu1oTEouzboKnnI 2 | LnIOc92uGlckSugEdESTZbYn3NkrzvYOL8XweJZHfNoKFW22TzLdNaAbHtA0WbVh 3 | jbebngzoK5qGT2Os1MTsD3Nf/Pvub0TqLOM3ttqYeT0e3Cm789//MZVQ/wYz8FUt 4 | ZbLm/vTegAuaN0WaLFDoVqoJ9orq7tM+hu1RtToRz7EWuZfSIxbuPbD++2UHtpWo 5 | NtwRGEwn7xEQeFbP7JgToilek+85s9pa+t38qZONpTEwBACIZ2/Zymmw5GNDuXul 6 | PZFX63GiDbzOCy906Y3xqQ== 7 | -------------------------------------------------------------------------------- /updates/1.4.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.4.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.4.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.4.2 2 | -------------------------------------------------------------------------------- /updates/1.4.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #export V_MAJOR=3 4 | #export V_MINOR=14 5 | #export V_POINT=1 6 | #export CHECKSUM=376627f9f44142198a26123544c6505cf126b84199697fe436f6603de0b466a7 7 | #alpine-upgrade.sh 8 | 9 | -------------------------------------------------------------------------------- /updates/1.4.2/update.sha256: -------------------------------------------------------------------------------- 1 | aj8ydXU6iL9Xqj2DkEkuPfp4iDOk+pd98TjZA8pKcs3l+b11X40VR4WWg3HDNu4Z 2 | 3R06pvHnulUenAR0TWGU1yaaZ6Qc01EKN60I/AazIivVxkxbbVjvrcgBK+Mitwc4 3 | diaLv7aLuq8LhVtC/OeWKgK7YTAX76S+hbPGCm/wSVnN+6bhh3IDahJy4SRS9ftz 4 | aP5J5WT8SXzxw/wAXJ+1mumlsjtUsH16skIecQsFYPIejX5bRpy3AskRHkFuZtLa 5 | XMSkduR1FLNE3r3hZTj51iwypBz/96gsz7kWWAUIkqRwjuKOc15Z4FSYRxgdHkez 6 | qDeOq4MVFoZTPPvC3Stjlw== 7 | -------------------------------------------------------------------------------- /updates/1.4.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.4.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.4.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /updates/1.4.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=20 5 | export V_POINT=0 6 | export CHECKSUM=b18c3f819e1c3dee06de3d3d0241fe96af204cc386866ae3c31eb146ae2b8628 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.5.0/update.sha256: -------------------------------------------------------------------------------- 1 | HNyQJzC13ZIwg8y/NYkYeFYDy+ngRAOeFMKzC+MS1fusNk0+zsvc+l2p9rTU6KHk 2 | EsHG+Y5HfNOfhBm/LQHQlwoenEcf2hB962r5tgNaGHUIKO0dxwbX//QJLjlsOJNk 3 | 2IMb7o39pNgW/ODCtBSOw+J2BvlxY0O8U2WFHZaqJfDN28J1DXwFYQW5S8Qr86wS 4 | IBu7VrkXge5z3QTuYvjQfEcZasie7pbG6h+6gRQ77YJxL7/FtLtMPYu3iw/bHVrq 5 | LysNr8QX6nTegfaDI+wiXgdDEWN7AYavfNvn/6jlQKV6PL5tiYeEz7jtWu5nVAbl 6 | jFF061OWrlURzd2U84hQrw== 7 | -------------------------------------------------------------------------------- /updates/1.5.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.5.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.5.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.5.1 2 | -------------------------------------------------------------------------------- /updates/1.5.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=20 5 | export V_POINT=1 6 | export CHECKSUM=572d498bdbe1146851defe17a763c78c4adbe470c74c666161b120999ea2ee6d 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.5.1/update.sha256: -------------------------------------------------------------------------------- 1 | WxmDNucnWkxpN4sUjdLa1zzWrhzHLqT5BEan7UcCzpxyUzlcDb6z+NZ0CNt+2tHW 2 | n/ZC5kgbsnfJUyQn0+1wzaaFsA40Z3OBMLpaRmru243PftSXAVHAQVqTHqrModMp 3 | g3+T01CfnjaLWj92G38q7pPCrHR+wVD0+V/dXzRDODvCuGuXCoMF7dt5lkKQJuoO 4 | KiZTCR8V/T9QzX+MmgIYE/ZfVnrusEjV9dcIsg/qRLQCchaiZPP+TfERVmPMrHMg 5 | iMzG2JujuPF3AppoZuewNXGuKD06zZd0unxqkmzkQDsBFpHTW08WcvuupB7lH1h0 6 | M6k0zLNXgcSfrO85HXwuNA== 7 | -------------------------------------------------------------------------------- /updates/1.5.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.5.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.5.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.5.2 2 | -------------------------------------------------------------------------------- /updates/1.5.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=20 5 | export V_POINT=2 6 | export CHECKSUM=252e969760f53de420777ba7297c2f81cfb726ce6e5d48066d19cf2215ea0e88 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.5.2/update.sha256: -------------------------------------------------------------------------------- 1 | AcvNP+um1CtyQ+fDZK7VkNcBFZ0ESKLbV3IMNngY8kMnsOm7VE/4J5oWNQ04mCN3 2 | DLZfcKwBkDUygSkXck7P0ZRWU+WmzbrkCnKbiJFblbbKkiD4GSIX46I79SXlcbAR 3 | KEjgS+pA6s2rMZP7ELHwbI30vMrmpZXG7cVuMtBBlccwch1ycxl208yL6+323TfJ 4 | iiOT0+8YBG0adIiqZjUu16muWFK8R7MorL/Jc9F5cKUMNfQyXUzhoR+PNDP+a/rN 5 | 5lUi1K+uqhRhnhjHkTsGYPiQ6X1nyE5JJ0yRhTmUmt/5KN0rddOSoNpFEh7nr/AN 6 | Bw7Nrz/Qt+EcOyIbMsERCQ== 7 | -------------------------------------------------------------------------------- /updates/1.5.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.5.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.5.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.5.3 2 | -------------------------------------------------------------------------------- /updates/1.5.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=20 5 | export V_POINT=3 6 | export CHECKSUM=077ac4604f8a5fc1be6bd3fbc8b0ca8afcec1c79c0a1e528e001677392c2745b 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.5.3/update.sha256: -------------------------------------------------------------------------------- 1 | MMV/dyaGqNkCqgNSJs3vkPgvT2G7/t4yGIHpN0EitDqrKdqSNgznlQ7ND7XzocHw 2 | 5vcigX4Lz37kK8NI2Uul0kgjU+mUsKEXLVjr2apQj/jx7RHdnpMWAOpif4wjq7a6 3 | irHqahgiaC640j24V4L3wQkioOKbO2HukqlCJz5T1lucSXSWsL1urxMQMTTSThZn 4 | E++FQn471XEmXu1gv5UG45ako2KrVP+YYq83OC0hrwjd1C5JIPXX3mIi/sBoA54N 5 | rhg4GOASIuk3/fF0RQKKMR2YwEvcQ9ypiK+eUpt2Iy0SYhNVWVI+3N+dbdPbvwka 6 | wFOycSEGogL7D5pob0fibA== 7 | -------------------------------------------------------------------------------- /updates/1.5.3/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.5.3/update.tar.gz -------------------------------------------------------------------------------- /updates/1.5.3/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.5.4 2 | -------------------------------------------------------------------------------- /updates/1.5.3/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Set read permissions for all users for vcgencmd 4 | cat >> /etc/mdev.conf << EOL 5 | 6 | #vcgencmd 7 | vcio root:root 0664 8 | 9 | EOL 10 | -------------------------------------------------------------------------------- /updates/1.5.4/update.sha256: -------------------------------------------------------------------------------- 1 | iBprdjeBQ0VLBDtnW/3bnHE/Y4zXm7vXVdStMpmuh95Fz3TNtFhObnsziNwlvZRq 2 | UkvtJMNXclXo9axVFw+FbmW5Zn/1POsmD+YRzTunCqe2Q8Nk2okA8GVIusbM198h 3 | YGERhKLOaTz+HtBEY3TUS5YbjsnT5oihiHYDbuh/AFLpTtIg8Pi3RGTUN4Awopmz 4 | Azc//p6bgpkttN2L+Z0Foksz3/msCUCV6x8agous8kLPqS1dLCWu9thJ6b3PnfZk 5 | 8JpqeYbuXOX8i2VfYzlF2Aab+Pfae4J9G7EWs3N+s/fgiolyXdU8RO6YiBm3dBlz 6 | MiB+sg0qkU2rUFiw+ngVHw== 7 | -------------------------------------------------------------------------------- /updates/1.5.4/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.5.4/update.tar.gz -------------------------------------------------------------------------------- /updates/1.5.4/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.6.0 2 | -------------------------------------------------------------------------------- /updates/1.5.4/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=21 5 | export V_POINT=0 6 | export CHECKSUM=aa43adf1fff1d03c7a774d3962557a19d2300698a8e6fb6ce6e088cafbf4c710 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.6.0/update.sha256: -------------------------------------------------------------------------------- 1 | e0DV33mDgNJOwnTPUolqDTOKOlZjhFvQvLJ7tk3HpGIh2KevlaIwD8g0K3uerzBO 2 | 5EQl4YYhYKltahJIynqtSz3CrWEqLxlXwyJva3/Aoo/FNbuTEQ8NzITm1jvuCoXL 3 | kGEFs88QVWMag0ug/XX2v1K72CrJC6KXix91ER/AYMEICqgaeng3J/j9x5c+Scv0 4 | o6yKmpewFRQyOP6fNfYbwFig4Xd9aoYUqhodalqwg8dDXfnTUCTHpVkVDxr2eB6N 5 | qFF9pBvXcsGbBd3X3RH3cPbTo0mdN0IYZHDQ4pXnVrfmVgT8UP9lIyoFPYbAWe3i 6 | fNqbkIDxtSKCf0wfmfdAdg== 7 | -------------------------------------------------------------------------------- /updates/1.6.0/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.6.0/update.tar.gz -------------------------------------------------------------------------------- /updates/1.6.0/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.6.1 2 | -------------------------------------------------------------------------------- /updates/1.6.0/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | apk update 4 | apk upgrade 5 | apk add ca-certificates 6 | -------------------------------------------------------------------------------- /updates/1.6.1/update.sha256: -------------------------------------------------------------------------------- 1 | tICyO0bCVTiRLqEvgAnSfx5kOlnuL5+v5gYWRjPu8mvMX3frQmorgzlaucFhEVdr 2 | 8fxuS18Fdqix+tzdWN3y1/aQMG290UoKBM7ct6pCKQcnO3az/dKUodyjPm6O+N9n 3 | dV6koG03l2yBRETxowJjghIE3U3B+rYQKPc8Yje4HK67SOXSs0mBr9IXY0BpxJFL 4 | eJ+zA2nlYBdGIWHtwMMcVJoL413HO98j6DOdPzoRAYQ2WTOgHjl2zmGl3XqOzY+z 5 | SNNrM5j9Wpb6BJE4ciSNG/Juh08VIO1+QZ90Kqf369w7xXnB4mlL64l77BwdwdXE 6 | O0JTLtMziv/aZFRpRZitWQ== 7 | -------------------------------------------------------------------------------- /updates/1.6.1/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.6.1/update.tar.gz -------------------------------------------------------------------------------- /updates/1.6.1/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.6.2 2 | -------------------------------------------------------------------------------- /updates/1.6.1/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=21 5 | export V_POINT=2 6 | export CHECKSUM=090be50ac6682d8472e2821519c06ce0aa248e0b4768c5e53388f93f1125396a 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.6.2/update.sha256: -------------------------------------------------------------------------------- 1 | fEl0o/mr9v/IbX7sLYEdcw6puhSw8iHFzJxYfFUfvgJsSiWCBZ3ZUzekumdEHrQu 2 | 3ZvhZx3sDxGMGs40bPtEnzF/WkHcIdQLdN6v1oZnaKqzrw65DpkwohIUIEtNyAkW 3 | xU4Z1b8TDFanHdE3Nho+zp1wG6UwXcHfsYGfH1F9MiR10OGt9OhJqYgqKvWEnuxB 4 | yiNAeBzeo2xKK8bFrej3bbwpehV3iLSz/xoT0cyHd9Lyot2jcMHHmij6Pv80PRis 5 | W+17qVhtmr3Fz+JglRy1nxqOviNJCqT7vsgCswylxMEMMsVi4FrcycMzuyP/qNKi 6 | V1Z3FvFjdcNL4EGOZXM1Mw== 7 | -------------------------------------------------------------------------------- /updates/1.6.2/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.6.2/update.tar.gz -------------------------------------------------------------------------------- /updates/1.6.2/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.6.3 2 | -------------------------------------------------------------------------------- /updates/1.6.2/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=21 5 | export V_POINT=3 6 | export CHECKSUM=5e5efeb3de14ec05bcdb2785ddf801f4f216de9132db3fbe506b72a642d13f55 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/1.6.3/update.sha256: -------------------------------------------------------------------------------- 1 | ck+LCQFDv31RevW26ZbArkQJ2RI5D3JlZ7JMHhGcru/rhaiJME1V1cAxaRizOqmI 2 | uHR8fq+ugGXrshsbK8HRkb1goa0E/YhdDf2YzhCXmHxeUFJloOsMTgGFHvMKlPoX 3 | /CuP6DfJ8/zjmHCbYovJ9VoIhvpVkcVRK+S7J5h6a3XkREGukHZMbqcQEOLbIxyP 4 | KPEX95hHkPBiicFAIok6MX/IAnznwhTvU+oFQzF2S4KI1dVfI23tMGTfukodtXxk 5 | cXDCn8y1UuTvght+U3a0Yw1UDvxOEVARvrcyYfJ5amsnHqGrMeiVciuUB8Gw0xWX 6 | mP9AssPv3lTQ3L2D3DKThg== 7 | -------------------------------------------------------------------------------- /updates/1.6.3/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.6.3/update.tar.gz -------------------------------------------------------------------------------- /updates/1.6.3/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.6.4 2 | -------------------------------------------------------------------------------- /updates/1.6.3/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | apk update 4 | 5 | if apk list -I | grep -q mympdos-mpd-master 6 | then 7 | apk del mympdos-mpd-master 8 | apk add mympdos-mpd-stable 9 | fi 10 | 11 | apk upgrade 12 | savereboot.sh 13 | -------------------------------------------------------------------------------- /updates/1.6.4/update.sha256: -------------------------------------------------------------------------------- 1 | Oi+xmdnv718vPyqIpnJ6tHddKYUCEjTNVj/+ypCWP1XiQHY5+gykAhN23/MIKet9 2 | d4Ay3IgVtL1pGKInsbB2ZRQEpKCySuL9/W1shLedphl/ZM58Wpa1eZnVBtiGniL3 3 | dxl+1HnkuiIqe5vd/uoWuSEsoZ8T8CbC9xn5F2kBT5xMVYWmUFUVuVsWtlYVGdAb 4 | LlrJRV7lCKELq0eZ95ewYaU933nxH4PLIuSLpuylsA6txQpxkMfzow4vBQHXV4// 5 | WP2SY4TUgOJdTazBnVwN6PZpL5kCr9eby1l97CUZHsnwUNYop9Tbj5QfpXhSsGir 6 | gNpT0e5tb+SvHzJYXrNSDA== 7 | -------------------------------------------------------------------------------- /updates/1.6.4/update.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcorporation/myMPDos/2d9d1115e03c03cd9b144ef53b1562cbf476a975/updates/1.6.4/update.tar.gz -------------------------------------------------------------------------------- /updates/1.6.4/update/myMPDos.version: -------------------------------------------------------------------------------- 1 | 1.7.0 2 | -------------------------------------------------------------------------------- /updates/1.6.4/update/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export V_MAJOR=3 4 | export V_MINOR=22 5 | export V_POINT=0 6 | export CHECKSUM=213a32b147dfd6522ed8d76784fbfc4947469cf010288d65af32f7024809ca10 7 | alpine-upgrade.sh 8 | -------------------------------------------------------------------------------- /updates/createupdate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | KEY="../../keys/.abuild/mail@jcgames.de.rsa" 4 | ACTION="$1" 5 | FROM="$2" 6 | TO="$3" 7 | 8 | skel() { 9 | mkdir -p "$FROM"/update 10 | cat > "$FROM/update/update.sh" << EOL 11 | #!/bin/sh 12 | 13 | #export V_MAJOR=3 14 | #export V_MINOR=14 15 | #export V_POINT=1 16 | #export CHECKSUM=376627f9f44142198a26123544c6505cf126b84199697fe436f6603de0b466a7 17 | #alpine-upgrade.sh 18 | EOL 19 | echo "$TO" > "$FROM/update/myMPDos.version" 20 | } 21 | 22 | package() { 23 | cd "$FROM" || exit 1 24 | find ./ -name \*~ -delete 25 | tar -czf "update.tar.gz" update 26 | openssl dgst -sha256 -sign "$KEY" -out "update.sig" "update.tar.gz" 27 | openssl base64 -in "update.sig" -out "update.sha256" 28 | rm "update.sig" 29 | exit 0 30 | } 31 | 32 | usage() { 33 | echo "Usage: (skel|package) " 34 | } 35 | 36 | if [ "$2" = "" ] || [ "$3" = "" ] 37 | then 38 | usage 39 | exit 1 40 | fi 41 | 42 | case "$1" in 43 | skel) 44 | skel 45 | ;; 46 | package) 47 | package 48 | ;; 49 | *) 50 | usage 51 | exit 1 52 | ;; 53 | esac 54 | --------------------------------------------------------------------------------