application | ||
contrib | ||
hardware/case | ||
.gitignore | ||
luniebox.sh | ||
README.md |
luniebox
lunibox is a RFID jukebox based on a Raspberry Pi. It is similar to the Phoniebox [https://github.com/MiczFlor/RPi-Jukebox-RFID] and an upgrade of the TonUINO (de) which both are DIY versions of the popular Toniebox©. The main focus for now is to play Spotify© content and playing local files (also supports Spotify© download for offline use). Other sources will be integrated later.
Prerequisites
You need to be familiar with ssh (Putty on Windows). For the usage of Spotify© a premium account is required.
Hardware
- Raspberry Pi (tested with Raspberry Pi 3 Model B, Zero W, Zero 2 W) [starting at ~14€]
- power supply (5V ~2.5A) [starting at ~6€]
- Micro SD card (at least 4GB) [starting at ~4€]
- RC522 RFID Reader connected to [TODO] [starting at ~1.50€]
- RFID (MiFare) cards or chips [starting at ~2€]
- a Audio Card:
- Pimoroni Audio Amp SHIM (3W Mono Amp) [starting at ~11€] with passive speaker [starting at ~5€]
- Pimoroni Audio DAC SHIM [starting at ~14€] with active speaker
- Adafruit Speaker Bonnet for Raspberry Pi
- ...something else (use custom setup!)
- (optional) MPU9250 9-axis sensor [TODO] [starting at ~1.50€]
- (optional) Waveshare UPS HAT + 2x 18650 18650 Li battery [starting at ~30€]
- some wires or dupont connectors [starting at ~2€]
- case for all above
- depending on hardware: soldering equipment
A minimal setup (Raspberry Zero 2 W, power supply, Micro SD, RC522, Cards, Audio Amp) should be about ~40€ plus case materials.
Software
- latest Raspberry Pi OS blank installation on Micro SD card (Instructions: raspberrypi.com/software/)
- WiFi connection
- ssh enabled
Optional: Headless installation
If you're using a Raspberry Pi Zero or have missing peripherals to setup WiFi and ssh please perform the following steps:
- insert Micro SD card with Raspberry Pi OS into a computer
- place an empty file called
ssh
into/boot
folder/partioon - place a filed called
wpa_supplicant.conf
into/boot
folder/partition with following content
country=$COUNTRY_CODE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="$WIFI_SSID"
psk="$WIFI_PASSWORD"
}
- replace
$COUNTRY_CODE
with upper-case country code (eg. GB or DE) and$WIFI_SSID
and$WIFI_PASSWORD
with your WiFi credentials - plug card back into your Pi and connect power supply
Setup
Establish a ssh connection to your Pi:
- the Pi should be reachable under
raspberrypi
orraspberrypi.local
in your network, if not try to find out it's IP address from your router. - default username is
pi
and default password israspberry
- Example:
ssh pi@raspberrypi.local
orssh pi@192.168.2.100
⚠️ Warning: you should change the default password by executing
passwd
after login
Automatic setup
⚠️ Warning: executing scripts from the internet without checking is bad. This is only done to get things done fast. In any doubts you can perform the Manual setup and execute all commands step-by-step to understand what's going on.
- download and excecute setup script (you will be prompted to confirm certain steps beforehand anyway)
curl https://git.bstly.de/Lurkars/luniebox/raw/branch/main/luniebox.sh -o luniebox.sh
chmod +x luniebox.sh
./luniebox.sh
Manual setup
Software setup
go to home directory
cd /home/pi
install git
, python3-venv
and python3-pip
sudo apt install -y git python3-venv python3-pip
clone repository https://git.bstly.de/Lurkars/luniebox.git
with sources and config:
git clone https://git.bstly.de/Lurkars/luniebox.git luniebox
setup application
cd /home/pi/luniebox/application
python -m venv venv
source venv/bin/activate
export CFLAGS=-fcommon
pip install -r requirements.txt
deactivate
mkdir /home/pi/luniebox/config
cp /home/pi/luniebox/contrib/config/luniebox.cfg /home/pi/luniebox/config/luniebox.cfg
sudo cp /home/pi/luniebox/contrib/service/luniebox-app.service /etc/systemd/system/
sudo cp /home/pi/luniebox/contrib/service/luniebox-daemon.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable luniebox-app luniebox-daemon
setup spotifyd
mkdir /home/pi/luniebox/bin
wget -c https://github.com/Spotifyd/spotifyd/releases/download/v0.3.3/spotifyd-linux-armv6-slim.tar.gz -O - | tar -xz -C /home/pi/luniebox/bin
cp /home/pi/luniebox/contrib/config/spotifyd.cfg /home/pi/luniebox/config/spotifyd.cfg
(if you use other audio hardware, you may need to adjust thebackend
anddevice
properties to your needs!)
sudo cp /home/pi/luniebox/contrib/service/spotifyd.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable spotifyd
setup mpd
mkdir /home/pi/luniebox/library
sudo apt install -y mpd
sudo cp /home/pi/luniebox/contrib/config/mpd.conf /etc/mpd.conf
(if you use other audio hardware, you may need to adjust theaudio_output
section to your needs!)
setup ClSpotify
git clone https://github.com/agent255/clspotify.git /home/pi/clspotify
cd /home/pi/clspotify
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
deactivate
sed -i "s/^zspotify_path =.*$/zspotify_path = \/home\/pi\/clspotify\//" /home/pi/luniebox/config/luniebox.cfg
start/restart all services
sudo systemctl restart mpd spotifyd luniebox-daemon luniebox-app
Hardware Setup
enable SPI for RFID Reader
uncomment dtparam=spi=on
in /boot/config.txt
sudo sed -i "/dtparam=spi=on/s/^#//g" /boot/config.txt
enable I2C for MPU9250 9-axis sensor
install i2c-tools
and python3-smbus
sudo apt install -y i2c-tools python3-smbus
uncomment dtparam=i2c_arm=on
in /boot/config.txt
sudo sed -i "/dtparam=i2c_arm=on/s/^#//g" /boot/config.txt
add dtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24
to /boot/config.txt
printf "dtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24" | sudo tee -a /boot/config.txt
Setup Audio
for Pimoroni Amp or DAC
disable onboard audio comment out dtparam=audio=on
in /boot/config.txt
sudo sed -i "/dtparam=audio=on/s/^/#/g" /boot/config.txt
setup hifiberry-dac by adding
dtoverlay=hifiberry-dac
gpio=25=op,dh
to /boot/config.txt
printf "dtoverlay=hifiberry-dac\ngpio=25=op,dh" | sudo tee -a /boot/config.txt
for Adafruit Speaker Bonnet for Raspberry Pi
disable onboard audio comment out dtparam=audio=on
in /boot/config.txt
sudo sed -i "/dtparam=audio=on/s/^/#/g" /boot/config.txt
setup hifiberry-dac and i2s by adding
dtoverlay=hifiberry-dac
dtoverlay=i2s-mmap
to /boot/config.txt
printf "dtoverlay=hifiberry-dac\ndtoverlay=i2s-mmap" | sudo tee -a /boot/config.txt
create /etc/asound.conf
file with following content:
pcm.speakerbonnet {
type hw card 0
}
pcm.dmixer {
type dmix
ipc_key 1024
ipc_perm 0666
slave {
pcm "speakerbonnet"
period_time 0
period_size 1024
buffer_size 8192
rate 44100
channels 2
}
}
ctl.dmixer {
type hw card 0
}
pcm.softvol {
type softvol
slave.pcm "dmixer"
control.name "PCM"
control.card 0
}
ctl.softvol {
type hw card 0
}
pcm.!default {
type plug
slave.pcm "softvol"
}
After setup, reboot system.
sudo reboot
Planned features
- status LEDs
- indicators for UPS HAT
- WiFi Hotspot (https://www.raspberryconnect.com/projects/65-raspberrypi-hotspot-accesspoints/158-raspberry-pi-auto-wifi-hotspot-switch-direct-connection)