From b0817b5e65a46388e8cdb79eebe789ad3588363b Mon Sep 17 00:00:00 2001 From: s-martin Date: Fri, 23 Oct 2020 10:11:31 +0200 Subject: [PATCH 1/8] Changes for 2.1 update --- components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh index add059670..3806a3a7a 100755 --- a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh +++ b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh @@ -17,9 +17,9 @@ printf "Please make sure that the Pirate Audio HAT is connected...\n" question "Continue" printf "Stopping and disabling GPIO button service...\n" -#TODO this might not be necessary -sudo systemctl stop phoniebox-gpio-buttons.service -sudo systemctl disable phoniebox-gpio-buttons.service +#TODO this might not be necessary, see https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/1109 +sudo systemctl stop phoniebox-gpio-service.service +sudo systemctl disable phoniebox-gpio-service.service printf "Adding settings to /boot/config.txt...\n" if [[ ! -f /boot/config.txt.bak ]]; then From dbf5ace2879146b2800f86c69f21c6e31684b154 Mon Sep 17 00:00:00 2001 From: s-martin Date: Fri, 23 Oct 2020 10:15:24 +0200 Subject: [PATCH 2/8] Fix description --- components/audio/PirateAudioHAT/README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/audio/PirateAudioHAT/README.md b/components/audio/PirateAudioHAT/README.md index 191105984..80975ef8d 100644 --- a/components/audio/PirateAudioHAT/README.md +++ b/components/audio/PirateAudioHAT/README.md @@ -7,19 +7,21 @@ These instructions are for the following Pimoroni PirateAudio HATs: The PirateAudio HATs use the same DAC as the hifiberry, so some of the instructions from can be applied as well. -The `setup_pirateAudioHAT.sh` script can be used to set it up to work with Phoniebox. +## Automatic Script -## Install steps in writing +Please use `setup_pirateAudioHAT.sh` script to set it up to work with Phoniebox. + +## Manual install steps (not recommended) (Discussions regarding *Pirate Audio HAT* should take place in the same thread where the below instructions were taken from: [#950](https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/950) NOTE: changes to the installation should find their way into the script `setup_pirateAudioHAT.sh`. Please create pull requests *after* having tested your changes. :) 1. Connect Pirate Audio Hat to your Raspberry Pi -2. Install Phoniebox (develop branch!) +2. Install Phoniebox 3. Stop and disable the GPIO button service: - `sudo systemctl stop phoniebox-gpio-buttons.service` - `sudo systemctl disable phoniebox-gpio-buttons.service` + `sudo systemctl stop phoniebox-gpio-control.service` + `sudo systemctl disable phoniebox-gpio-control.service` 4. Add the following two lines to /boot/config.txt `gpio=25=op,dh` `dtoverlay=hifiberry-dac` @@ -76,4 +78,4 @@ NOTE: changes to the installation should find their way into the script `setup_p ``` 12. Enable access for modipy user `sudo usermod -a -G spi,i2c,gpio,video mopidy` -13. Reboot Raspberry Pi \ No newline at end of file +13. Reboot Raspberry Pi From 47fe8113a222dbc1d590e6c0885272739d465c75 Mon Sep 17 00:00:00 2001 From: s-martin Date: Mon, 26 Oct 2020 22:01:36 +0100 Subject: [PATCH 3/8] * Added GPIO control settings, when using Classic edition * extend script for both Classic and Spotify * integrate into install script currently untested yet --- .../PirateAudioHAT/requirements-mopidy.txt | 5 +++ .../audio/PirateAudioHAT/requirements.txt | 2 - .../PirateAudioHAT/setup_pirateAudioHAT.sh | 45 +++++++++++++------ .../gpio_settings.ini.pirate-audio-hat.sample | 34 ++++++++++++++ .../installscripts/buster-install-default.sh | 32 +++++++++++++ 5 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 components/audio/PirateAudioHAT/requirements-mopidy.txt create mode 100644 misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample diff --git a/components/audio/PirateAudioHAT/requirements-mopidy.txt b/components/audio/PirateAudioHAT/requirements-mopidy.txt new file mode 100644 index 000000000..7ad1af1b5 --- /dev/null +++ b/components/audio/PirateAudioHAT/requirements-mopidy.txt @@ -0,0 +1,5 @@ +# PirateAudioHAT related requirements +# You need to install these with `sudo python3 -m pip install --upgrade --force-reinstall -q -r requirements-mopidy.txt` + +Mopidy-PiDi +mopidy-raspberry-gpio diff --git a/components/audio/PirateAudioHAT/requirements.txt b/components/audio/PirateAudioHAT/requirements.txt index 0380e1855..ef42e68de 100644 --- a/components/audio/PirateAudioHAT/requirements.txt +++ b/components/audio/PirateAudioHAT/requirements.txt @@ -1,7 +1,5 @@ # PirateAudioHAT related requirements # You need to install these with `sudo python3 -m pip install --upgrade --force-reinstall -q -r requirements.txt` -Mopidy-PiDi pidi-display-pil pidi-display-st7789 -mopidy-raspberry-gpio diff --git a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh index 3806a3a7a..e45885e4c 100755 --- a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh +++ b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh @@ -3,6 +3,15 @@ HOME_DIR="/home/pi" JUKEBOX_HOME_DIR="${HOME_DIR}/RPi-Jukebox-RFID" +EDITION=$1 + +if [[ -n "$EDITION" ]]; then + echo "Configuring Pirate Audio HAT for ${EDITION} edition" +else + echo "Error: please pass classic or spotify to script." + exit -1 +fi + question() { local question=$1 read -p "${question} (y/n)? " choice @@ -16,10 +25,11 @@ question() { printf "Please make sure that the Pirate Audio HAT is connected...\n" question "Continue" -printf "Stopping and disabling GPIO button service...\n" -#TODO this might not be necessary, see https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/1109 -sudo systemctl stop phoniebox-gpio-service.service -sudo systemctl disable phoniebox-gpio-service.service +if [ "${EDITION}" == "spotify" ]; then + printf "Stopping and disabling GPIO control service...\n" + sudo systemctl stop phoniebox-gpio-control.service + sudo systemctl disable phoniebox-gpio-control.service +fi printf "Adding settings to /boot/config.txt...\n" if [[ ! -f /boot/config.txt.bak ]]; then @@ -92,13 +102,17 @@ sudo raspi-config nonint do_spi 0 printf "Installing Python dependencies...\n" sudo apt-get -y -qq install python3-pil python3-numpy -printf "Installing mopidy plugins...\n" +printf "Installing Python packages...\n" sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements.txt -# Only add, if it does not exist already -printf "Editing mopidy configuration...\n" -if ! sudo grep -qe "raspberry-gpio" /etc/mopidy/mopidy.conf; then - sudo tee -a /etc/mopidy/mopidy.conf << EOH > /dev/null +if [ "${EDITION}" == "spotify" ]; then + printf "Installing mopidy plugins...\n" + sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements-mopidy.txt + + # Only add, if it does not exist already + printf "Editing mopidy configuration...\n" + if ! sudo grep -qe "raspberry-gpio" /etc/mopidy/mopidy.conf; then + sudo tee -a /etc/mopidy/mopidy.conf << EOH > /dev/null [raspberry-gpio] enabled = true @@ -111,12 +125,17 @@ bcm20 = volume_up,active_low,150 enabled = true display = st7789 EOH + else + printf "/etc/mopidy/mopidy.conf is already configured. Skipping...\n" + fi + + printf "Enable access for modipy user...\n" + sudo usermod -a -G spi,i2c,gpio,video mopidy else - printf "/etc/mopidy/mopidy.conf is already configured. Skipping...\n" -fi + cp "${jukebox_dir}"/misc/sampleconfigs/gpio_settings.ini.priate-audio-hat.sample "${jukebox_dir}"/settings/gpio_settings.ini -printf "Enable access for modipy user...\n" -sudo usermod -a -G spi,i2c,gpio,video mopidy + # TODO configure display +fi printf "You need to reboot to apply the settings.\n" question "Do you want to reboot now" diff --git a/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample b/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample new file mode 100644 index 000000000..98575734a --- /dev/null +++ b/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample @@ -0,0 +1,34 @@ +[DEFAULT] +enabled: True + +[PlayPause] +enabled: True +Type: Button +Pin: 5 +pull_up: True +bouncetime: 250 +functionCall: functionCallPlayerPause + +[VolumeUp] +enabled: True +Type: Button +Pin: 20 +pull_up: True +bouncetime: 250 +functionCall: functionCallVolU + +[VolumeDown] +enabled: True +Type: Button +Pin: 6 +pull_up: True +bouncetime: 250 +functionCall: functionCallVolD + +[NextSong] +enabled: True +Type: Button +Pin: 16 +pull_up: True +bouncetime: 250 +functionCall: functionCallPlayerNext diff --git a/scripts/installscripts/buster-install-default.sh b/scripts/installscripts/buster-install-default.sh index f8f36fc31..3cc295795 100755 --- a/scripts/installscripts/buster-install-default.sh +++ b/scripts/installscripts/buster-install-default.sh @@ -1193,6 +1193,38 @@ finish_installation() { done esac + echo "If you are using a sound card, connect it to your RPi." + # Use -e to display response of user in the logfile + read -e -r -p "Have you connected your sound card [Y/n] " response + case "$response" in + [nN][oO]|[nN]) + ;; + *) + echo 'Please select the sound card you want to use' + options=("Pimoroni Pirate Audio" "Manual configuration") + select opt in "${options[@]}"; do + case $opt in + "Pimoroni Pirate Audio") + if [ "$SPOTinstall" == "YES" ]; then + bash "${jukebox_dir}"/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh spotify + break + ;; + else + bash "${jukebox_dir}"/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh classic + break + ;; + fi + "Manual configuration") + echo "Please configure your sound card manually." + break + ;; + *) + echo "This is not a number" + ;; + esac + done + esac + echo echo "DONE. Let the sounds begin." echo "Find more information and documentation on the github account:" From a29ec8909b6fdd676ebf60b5e450df9160b7c8c8 Mon Sep 17 00:00:00 2001 From: s-martin Date: Mon, 26 Oct 2020 22:05:05 +0100 Subject: [PATCH 4/8] fix bug --- scripts/installscripts/buster-install-default.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/installscripts/buster-install-default.sh b/scripts/installscripts/buster-install-default.sh index 3cc295795..3fb0c931d 100755 --- a/scripts/installscripts/buster-install-default.sh +++ b/scripts/installscripts/buster-install-default.sh @@ -1207,13 +1207,11 @@ finish_installation() { "Pimoroni Pirate Audio") if [ "$SPOTinstall" == "YES" ]; then bash "${jukebox_dir}"/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh spotify - break - ;; else bash "${jukebox_dir}"/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh classic - break - ;; fi + break + ;; "Manual configuration") echo "Please configure your sound card manually." break From 81d5381971782ab324059ea9eee9186fccdfc4b6 Mon Sep 17 00:00:00 2001 From: s-martin Date: Thu, 29 Oct 2020 22:49:45 +0100 Subject: [PATCH 5/8] add separate Hifiberry installer script start implementation of display control --- components/audio/Hifiberry/README.md | 0 components/audio/Hifiberry/setup_Hifiberry.sh | 80 +++++++++++++++++++ ...oniebox-pirateaudio-display.service.sample | 13 +++ .../PirateAudioHAT/pirate_audio_display.py | 47 +++++++++++ .../PirateAudioHAT/requirements-mopidy.txt | 4 +- .../audio/PirateAudioHAT/requirements.txt | 5 +- .../PirateAudioHAT/setup_pirateAudioHAT.sh | 75 ++++------------- .../installscripts/buster-install-default.sh | 6 +- 8 files changed, 165 insertions(+), 65 deletions(-) create mode 100644 components/audio/Hifiberry/README.md create mode 100644 components/audio/Hifiberry/setup_Hifiberry.sh create mode 100644 components/audio/PirateAudioHAT/phoniebox-pirateaudio-display.service.sample create mode 100644 components/audio/PirateAudioHAT/pirate_audio_display.py diff --git a/components/audio/Hifiberry/README.md b/components/audio/Hifiberry/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/components/audio/Hifiberry/setup_Hifiberry.sh b/components/audio/Hifiberry/setup_Hifiberry.sh new file mode 100644 index 000000000..e53e00a6b --- /dev/null +++ b/components/audio/Hifiberry/setup_Hifiberry.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +HOME_DIR="/home/pi" +JUKEBOX_HOME_DIR="${HOME_DIR}/RPi-Jukebox-RFID" + +question() { + local question=$1 + read -p "${question} (y/n)? " choice + case "$choice" in + y|Y ) ;; + n|N ) exit 0;; + * ) echo "Error: invalid" ; question ${question};; + esac +} + +printf "Please make sure that the Hifiberry is connected...\n" +question "Continue" + +printf "Adding settings to /boot/config.txt...\n" +if [[ ! -f /boot/config.txt.bak ]]; then + sudo cp /boot/config.txt /boot/config.txt.bak +fi + +if ! sudo grep -qe "dtoverlay=hifiberry-dac" /boot/config.txt; then + echo "dtoverlay=hifiberry-dac" | sudo tee -a /boot/config.txt > /dev/null +fi + +printf "Adding settings to /etc/asound.conf...\n" +# Create backup of /etc/asound.conf if it already exists +if [[ -f /etc/asound.conf && ! -f /etc/asound.conf.bak ]]; then + sudo cp /etc/asound.conf /etc/asound.conf.bak +fi + +# Do not add, but replace content if file already exists +sudo tee /etc/asound.conf << EOF > /dev/null +pcm.hifiberry { + type softvol + slave.pcm "plughw:CARD=sndrpihifiberry,DEV=0" + control.name "Master" + control.card 1 +} +pcm.!default { + type plug + slave.pcm "hifiberry" +} +ctl.!default { + type hw + card 1 +} +EOF + +# Create backup of /etc/mpd.conf if it already exists +if [[ -f /etc/mpd.conf && ! -f /etc/mpd.conf.bak ]]; then + sudo cp /etc/mpd.conf /etc/mpd.conf.bak +fi + +printf "Add hifiberry as audio_output in /etc/mpd.conf...\n" +# Only add, if it does not exist already +if ! sudo grep -qe "HiFiBerry DAC+ Lite" /etc/mpd.conf; then + sudo sed -i "/# An example of an ALSA output:/ r /dev/stdin" /etc/mpd.conf <<'EOG' +audio_output { + enabled "yes" + type "alsa" + name "HiFiBerry DAC+ Lite" + device "hifiberry" + auto_resample "no" + auto_channels "no" + auto_format "no" + dop "no" +} +EOG +else + printf "/etc/mpd.conf is already configured. Skipping...\n" +fi + +printf "Set mixer_control name in /etc/mpd.conf...\n" +mixer_control_name="Master" +sudo sed -i -E "s/^(\s*mixer_control\s*\")[^\"]*(\"\s*# optional)/\1\\${mixer_control_name}\2/" /etc/mpd.conf + +printf "You should reboot later to apply the settings.\n" diff --git a/components/audio/PirateAudioHAT/phoniebox-pirateaudio-display.service.sample b/components/audio/PirateAudioHAT/phoniebox-pirateaudio-display.service.sample new file mode 100644 index 000000000..518a5b766 --- /dev/null +++ b/components/audio/PirateAudioHAT/phoniebox-pirateaudio-display.service.sample @@ -0,0 +1,13 @@ +[Unit] +Description=Phoniebox Pirate Audio Display Service +After=network.target phoniebox-rfid-reader.service + +[Service] +User=pi +Group=pi +Restart=always +WorkingDirectory=/home/pi/RPi-Jukebox-RFID +ExecStart=/home/pi/RPi-Jukebox-RFID/components/audio/PirateAudioHAT/pirate_audio_display.py + +[Install] +WantedBy=multi-user.target diff --git a/components/audio/PirateAudioHAT/pirate_audio_display.py b/components/audio/PirateAudioHAT/pirate_audio_display.py new file mode 100644 index 000000000..2f3fcd00a --- /dev/null +++ b/components/audio/PirateAudioHAT/pirate_audio_display.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +from PIL import Image +from PIL import ImageDraw +from PIL import ImageFont +import time + +import ST7789 + + +MESSAGE = "Hello World! How are you today?" + +# Create ST7789 LCD display class. +disp = ST7789.ST7789( + port=0, + cs=ST7789.BG_SPI_CS_FRONT, # BG_SPI_CSB_BACK or BG_SPI_CS_FRONT + dc=9, + backlight=19, # 18 for back BG slot, 19 for front BG slot. + spi_speed_hz=80 * 1000 * 1000 +) + +# Initialize display. +disp.begin() + +WIDTH = disp.width +HEIGHT = disp.height + + +img = Image.new('RGB', (WIDTH, HEIGHT), color=(0, 0, 0)) + +draw = ImageDraw.Draw(img) + +font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 30) + +size_x, size_y = draw.textsize(MESSAGE, font) + +text_x = disp.width +text_y = (80 - size_y) // 2 + +t_start = time.time() + +while True: + x = (time.time() - t_start) * 100 + x %= (size_x + disp.width) + draw.rectangle((0, 0, disp.width, 80), (0, 0, 0)) + draw.text((int(text_x - x), text_y), MESSAGE, font=font, fill=(255, 255, 255)) + disp.display(img) diff --git a/components/audio/PirateAudioHAT/requirements-mopidy.txt b/components/audio/PirateAudioHAT/requirements-mopidy.txt index 7ad1af1b5..c6fc70c42 100644 --- a/components/audio/PirateAudioHAT/requirements-mopidy.txt +++ b/components/audio/PirateAudioHAT/requirements-mopidy.txt @@ -1,5 +1,7 @@ -# PirateAudioHAT related requirements +# PirateAudioHAT related for spotify edition # You need to install these with `sudo python3 -m pip install --upgrade --force-reinstall -q -r requirements-mopidy.txt` Mopidy-PiDi mopidy-raspberry-gpio +pidi-display-pil +pidi-display-st7789 diff --git a/components/audio/PirateAudioHAT/requirements.txt b/components/audio/PirateAudioHAT/requirements.txt index ef42e68de..82a4dff2e 100644 --- a/components/audio/PirateAudioHAT/requirements.txt +++ b/components/audio/PirateAudioHAT/requirements.txt @@ -1,5 +1,4 @@ -# PirateAudioHAT related requirements +# PirateAudioHAT related requirements (for classic edition) # You need to install these with `sudo python3 -m pip install --upgrade --force-reinstall -q -r requirements.txt` -pidi-display-pil -pidi-display-st7789 +st7789 diff --git a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh index e45885e4c..4951f0c6f 100755 --- a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh +++ b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh @@ -40,61 +40,8 @@ fi if ! sudo grep -qe "gpio=25=op,dh" /boot/config.txt; then echo "gpio=25=op,dh" | sudo tee -a /boot/config.txt > /dev/null fi -if ! sudo grep -qe "dtoverlay=hifiberry-dac" /boot/config.txt; then - echo "dtoverlay=hifiberry-dac" | sudo tee -a /boot/config.txt > /dev/null -fi - -printf "Adding settings to /etc/asound.conf...\n" -# Create backup of /etc/asound.conf if it already exists -if [[ -f /etc/asound.conf && ! -f /etc/asound.conf.bak ]]; then - sudo cp /etc/asound.conf /etc/asound.conf.bak -fi - -# Do not add, but replace content if file already exists -sudo tee /etc/asound.conf << EOF > /dev/null -pcm.hifiberry { - type softvol - slave.pcm "plughw:CARD=sndrpihifiberry,DEV=0" - control.name "Master" - control.card 1 -} -pcm.!default { - type plug - slave.pcm "hifiberry" -} -ctl.!default { - type hw - card 1 -} -EOF - -# Create backup of /etc/mpd.conf if it already exists -if [[ -f /etc/mpd.conf && ! -f /etc/mpd.conf.bak ]]; then - sudo cp /etc/mpd.conf /etc/mpd.conf.bak -fi - -printf "Add hifiberry as audio_output in /etc/mpd.conf...\n" -# Only add, if it does not exist already -if ! sudo grep -qe "HiFiBerry DAC+ Lite" /etc/mpd.conf; then - sudo sed -i "/# An example of an ALSA output:/ r /dev/stdin" /etc/mpd.conf <<'EOG' -audio_output { - enabled "yes" - type "alsa" - name "HiFiBerry DAC+ Lite" - device "hifiberry" - auto_resample "no" - auto_channels "no" - auto_format "no" - dop "no" -} -EOG -else - printf "/etc/mpd.conf is already configured. Skipping...\n" -fi -printf "Set mixer_control name in /etc/mpd.conf...\n" -mixer_control_name="Master" -sudo sed -i -E "s/^(\s*mixer_control\s*\")[^\"]*(\"\s*# optional)/\1\\${mixer_control_name}\2/" /etc/mpd.conf +bash "${JUKEBOX_HOME_DIR}/component/audio/Hifiberry/setup_Hifiberry.sh" printf "Activating SPI...\n" sudo raspi-config nonint do_spi 0 @@ -102,11 +49,8 @@ sudo raspi-config nonint do_spi 0 printf "Installing Python dependencies...\n" sudo apt-get -y -qq install python3-pil python3-numpy -printf "Installing Python packages...\n" -sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements.txt - if [ "${EDITION}" == "spotify" ]; then - printf "Installing mopidy plugins...\n" + printf "Installing Python packages...\n" sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements-mopidy.txt # Only add, if it does not exist already @@ -132,9 +76,20 @@ EOH printf "Enable access for modipy user...\n" sudo usermod -a -G spi,i2c,gpio,video mopidy else - cp "${jukebox_dir}"/misc/sampleconfigs/gpio_settings.ini.priate-audio-hat.sample "${jukebox_dir}"/settings/gpio_settings.ini + printf "Installing Python packages...\n" + sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements.txt + + cp "${jukebox_dir}"/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample "${jukebox_dir}"/settings/gpio_settings.ini + + sudo cp "${jukebox_dir}"/misc/sampleconfigs/phoniebox-pirateaudio-display.service.sample "/etc/systemd/system/phoniebox-pirateaudio-display.service" + sudo chown root:root /etc/systemd/system/phoniebox-pirateaudio-display.service + sudo chmod 644 /etc/systemd/system/phoniebox-pirateaudio-display.service + # enable the services needed + sudo systemctl enable phoniebox-pirateaudio-display - # TODO configure display + # restart services + sudo systemctl restart phoniebox-gpio-control + sudo systemctl restart phoniebox-pirateaudio-display fi printf "You need to reboot to apply the settings.\n" diff --git a/scripts/installscripts/buster-install-default.sh b/scripts/installscripts/buster-install-default.sh index 3fb0c931d..7a35b17dc 100755 --- a/scripts/installscripts/buster-install-default.sh +++ b/scripts/installscripts/buster-install-default.sh @@ -1201,9 +1201,13 @@ finish_installation() { ;; *) echo 'Please select the sound card you want to use' - options=("Pimoroni Pirate Audio" "Manual configuration") + options=("Hifiberry" "Pimoroni Pirate Audio" "Manual configuration") select opt in "${options[@]}"; do case $opt in + "Hifiberry") + bash "${jukebox_dir}"/components/audio/Hifiberry/setup_Hifiberry.sh + break + ;; "Pimoroni Pirate Audio") if [ "$SPOTinstall" == "YES" ]; then bash "${jukebox_dir}"/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh spotify From 7e393fb3890b826a9964644647ee54da6d23575d Mon Sep 17 00:00:00 2001 From: s-martin Date: Mon, 23 Nov 2020 22:57:53 +0100 Subject: [PATCH 6/8] added README.md --- components/audio/Hifiberry/README.md | 11 +++++++++++ .../audio/PirateAudioHAT/pirate_audio_display.py | 1 + 2 files changed, 12 insertions(+) diff --git a/components/audio/Hifiberry/README.md b/components/audio/Hifiberry/README.md index e69de29bb..a0259dc8c 100644 --- a/components/audio/Hifiberry/README.md +++ b/components/audio/Hifiberry/README.md @@ -0,0 +1,11 @@ +# How to setup a Hifiberry sound card + +These instructions are for Hifiberyy soundcards: + + + +More details and troubleshooting can be found here: . + +## Automatic Script + +Please use `setup_Hifiberry.sh` script to set it up to work with Phoniebox. diff --git a/components/audio/PirateAudioHAT/pirate_audio_display.py b/components/audio/PirateAudioHAT/pirate_audio_display.py index 2f3fcd00a..9807426fe 100644 --- a/components/audio/PirateAudioHAT/pirate_audio_display.py +++ b/components/audio/PirateAudioHAT/pirate_audio_display.py @@ -3,6 +3,7 @@ from PIL import Image from PIL import ImageDraw from PIL import ImageFont +from mpd import MPDClient import time import ST7789 From 4e1f682285098af45d1e7e74ad08703bd96f69e2 Mon Sep 17 00:00:00 2001 From: s-martin Date: Sun, 3 Jan 2021 22:06:37 +0100 Subject: [PATCH 7/8] fix typo --- components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh index 4951f0c6f..439de00be 100755 --- a/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh +++ b/components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh @@ -79,9 +79,9 @@ else printf "Installing Python packages...\n" sudo python3 -m pip install --upgrade --force-reinstall -q -r "${JUKEBOX_HOME_DIR}"/components/audio/PirateAudioHAT/requirements.txt - cp "${jukebox_dir}"/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample "${jukebox_dir}"/settings/gpio_settings.ini + cp "${JUKEBOX_HOME_DIR}"/misc/sampleconfigs/gpio_settings.ini.pirate-audio-hat.sample "${JUKEBOX_HOME_DIR}"/settings/gpio_settings.ini - sudo cp "${jukebox_dir}"/misc/sampleconfigs/phoniebox-pirateaudio-display.service.sample "/etc/systemd/system/phoniebox-pirateaudio-display.service" + sudo cp "${JUKEBOX_HOME_DIR}"/misc/sampleconfigs/phoniebox-pirateaudio-display.service.sample "/etc/systemd/system/phoniebox-pirateaudio-display.service" sudo chown root:root /etc/systemd/system/phoniebox-pirateaudio-display.service sudo chmod 644 /etc/systemd/system/phoniebox-pirateaudio-display.service # enable the services needed From e46f90cec658c724aedcc5d89217ebb286937c5a Mon Sep 17 00:00:00 2001 From: s-martin Date: Sun, 3 Jan 2021 22:16:03 +0100 Subject: [PATCH 8/8] differentiate between Miniamp and AMP2 --- components/audio/Hifiberry/setup_Hifiberry.sh | 17 ++++++++++++++++- .../installscripts/buster-install-default.sh | 10 +++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/components/audio/Hifiberry/setup_Hifiberry.sh b/components/audio/Hifiberry/setup_Hifiberry.sh index e53e00a6b..366b5ad7e 100644 --- a/components/audio/Hifiberry/setup_Hifiberry.sh +++ b/components/audio/Hifiberry/setup_Hifiberry.sh @@ -3,6 +3,15 @@ HOME_DIR="/home/pi" JUKEBOX_HOME_DIR="${HOME_DIR}/RPi-Jukebox-RFID" +TYPE=$1 + +if [[ -n "$TYPE" ]]; then + echo "Configuring Hifiberry ${TYPE} sound card" +else + echo "Error: please pass miniamp or amp2 to script." + exit -1 +fi + question() { local question=$1 read -p "${question} (y/n)? " choice @@ -74,7 +83,13 @@ else fi printf "Set mixer_control name in /etc/mpd.conf...\n" -mixer_control_name="Master" +mixer_control_name="Master" # for miniamp + +if [ "${TYPE}" == "amp2" ]; then + # see https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/1198#issuecomment-750757106 + mixer_control_name="Digital" +fi + sudo sed -i -E "s/^(\s*mixer_control\s*\")[^\"]*(\"\s*# optional)/\1\\${mixer_control_name}\2/" /etc/mpd.conf printf "You should reboot later to apply the settings.\n" diff --git a/scripts/installscripts/buster-install-default.sh b/scripts/installscripts/buster-install-default.sh index 9276a6d62..8092a4368 100755 --- a/scripts/installscripts/buster-install-default.sh +++ b/scripts/installscripts/buster-install-default.sh @@ -1200,11 +1200,15 @@ finish_installation() { ;; *) echo 'Please select the sound card you want to use' - options=("Hifiberry" "Pimoroni Pirate Audio" "Manual configuration") + options=("Hifiberry Miniamp" "Hifiberry AMP2" "Pimoroni Pirate Audio" "Manual configuration") select opt in "${options[@]}"; do case $opt in - "Hifiberry") - bash "${jukebox_dir}"/components/audio/Hifiberry/setup_Hifiberry.sh + "Hifiberry Miniamp") + bash "${jukebox_dir}"/components/audio/Hifiberry/setup_Hifiberry.sh miniamp + break + ;; + "Hifiberry AMP2") + bash "${jukebox_dir}"/components/audio/Hifiberry/setup_Hifiberry.sh amp2 break ;; "Pimoroni Pirate Audio")