Dies ist eine Kurzanleitung, wie Sie mit einem Raspberry Pi moderne Plattenspieler mit USB-Ausgang drahtlos auf einer Sonos-Installation abspielen können. Diese Anleitung konzentriert sich auf diesen Anwendungsfall, kann aber auch zum Streamen auf andere Lautsprecher verwendet werden, da wir einen MP3-Stream erstellen werden, der von praktisch jedem abgespielt werden kann, der Audio streamen kann.
Zuerst benötigen wir eine Neuinstallation von Raspbian auf einer SD-Karte. Da wir keine Grafiken oder etwas Besonderes benötigen, können wir Raspbian Lite verwenden. Außerdem benötigen wir nicht viel Speicherplatz, wahrscheinlich ist alles ab 2 GB gut. Nach der Installation verwende ich nur noch 1,5 GB meiner SD-Karte.
Für meine Installation habe ich die Buster
Version von Raspbian OS Lite (September 2022) verwendet. Möglicherweise probieren Sie eine neuere Version aus, diese ist jedoch nicht getestet.
Installieren Sie Raspberry Pi OS Lite (64-Bit) über den Raspberry Pi Imager https://www.raspberrypi.com/software/
Klicken Sie auf das Zahnradsymbol, um erweiterte Optionen anzuzeigen
vinyl
ein.Schließen Sie Ihren Raspberry Pi an, stellen Sie eine SSH-Verbindung her und führen Sie Folgendes aus
smorton@homepc: ~ $ ssh [email protected]
vinyl@vinyl: ~ $ cd /tmp && wget https://github.com/stephencmorton/USB-Turntables-to-Sonos-with-RPi/archive/master.zip && unzip master.zip && USB-Turntables-to-Sonos-with-RPi-master/scripts/install.sh
Fahren Sie mit „Überprüfen Sie, ob das Dämpfen funktioniert“ fort.
Verbinden Sie nun den Plattenspieler über USB mit dem Raspberry Pi. Mit dem Befehl arecord -l
können Sie prüfen, ob Ihr Gerät erkannt wurde. Meins zeigt Folgendes:
vinyl@vinyl:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: CODEC [USB AUDIO CODEC], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
Notieren Sie sich in meinem Fall die Kartennummer 1
(„ card: 1
“) oder noch besser den Namen („CODEC“ oben). Dies gilt wahrscheinlich auch für Sie, aber wenn es anders ist, müssen Sie es sich möglicherweise merken und in den folgenden Schritten entsprechend ändern. Sie werden es in der Datei asound.conf
unten verwenden.
ALSA ist das unterste Linux-Sound-Subsystem. Wir konfigurieren die Eingabe so, dass Darkice sie verwenden kann.
Da die meisten USB-Plattenspieler nicht über eine Hardware-Lautstärkeregelung verfügen und die Eingangslautstärke etwa auf der Hälfte ihres eigentlichen Werts liegt, müssen wir eine Software-Lautstärkeregelung hinzufügen. Erstellen Sie die Datei /etc/asound.conf und bearbeiten Sie sie, um den folgenden Inhalt hinzuzufügen:
pcm.dmic_hw {
type hw
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
channels 2
# format S16_LE # Use this if "format dat" doesn't work. Only difference is S16_LE = 44.1 kHz sampling vs dat = 48 kHz
format dat
}
pcm.dmic_mm {
type mmap_emul
slave.pcm dmic_hw
}
pcm.dmic_sv {
type softvol
slave.pcm dmic_hw
control {
name "Boost Capture Volume"
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
}
min_dB -5.0
max_dB 20.0
}
Führen Sie als Nächstes diesen Befehl aus, um den Alsa-Status zu aktualisieren und auch VU-Meter anzuzeigen, um die Eingangslautstärke zu testen:
arecord -D dmic_sv -r 48000 -f dat -c 2 --vumeter=stereo /dev/null
(Es wird keine Lautstärke angezeigt, bis Sie etwas auf Ihrem Plattenspieler abspielen.)
Möglicherweise fällt Ihnen auf, dass die Lautstärke viel zu niedrig ist. Wenn ja, können Sie alsamixer
verwenden, um die Lautstärke zu ändern. Drücken Sie F6
, um das USB-Plattenspielergerät auszuwählen, und drücken Sie TAB
, bis Sie den Boost-Schieberegler sehen. Ich habe es in meinem Setup auf 65
eingestellt, aber Sie können es ausprobieren. Stellen Sie sicher, dass Sie den Wert nicht zu hoch aufdrehen, da sich sonst die Klangqualität aufgrund von Übersteuerungen verschlechtern könnte.
Führen Sie die folgenden Befehle aus:
sudo apt-get update
sudo apt-get install -y darkice icecast2
Wählen Sie Yes
um Icecast zu konfigurieren. Sie können alles als Standard belassen, aber wenn Sie das Passwort ändern, stellen Sie sicher, dass Sie das Passwort in den nächsten Schritten in der Konfiguration ändern.
Darkice ist die Software, die vom USB-Gerät aufnimmt und diese in MP3 kodiert. Um es zu konfigurieren, erstellen oder bearbeiten Sie die Datei /etc/darkice.cfg und fügen Sie diese ein:
# this section describes general aspects of the live streaming session
[general]
duration = 0 # duration of encoding, in seconds. 0 means forever
bufferSecs = 1 # size of internal slip buffer, in seconds
reconnect = yes # reconnect to the server(s) if disconnected
realtime = yes # run the encoder with POSIX realtime priority (default==yes)
rtprio = 4 # scheduling priority for the realtime threads (default==4)
# this section describes the audio input that will be streamed
[input]
device = dmic_sv # OSS DSP soundcard device for the audio input
sampleRate = 48000 # other settings have crackling audo, esp. 44100
bitsPerSample = 16 # bits per sample. try 16
channel = 2 # channels. 1 = mono, 2 = stereo
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode = cbr
format = mp3
bitrate = 320
server = vinyl
port = 8000
mountPoint = turntable.mp3
name = Turntable
description = Music from our record player
# highpass = 18
# lowpass = 20000
url = http://vinyl.local:8080/
genre = vinyl
public = no
password = hackme # or whatever you set your icecast2 password to
Weitere Informationen zu dieser Datei und den Parametern, die Sie ändern können, finden Sie auf der Manpage „darkice.cfg“.
Darkice und Icecast verwenden altmodische init.d-Steuerelemente. Lassen Sie uns sie einfach modernisieren, wenn wir schon dabei sind.
# Remove old-fashioned init.d controls
sudo update-rc.d darkice remove
sudo update-rc.d icecast2 remove
Kopieren Sie den folgenden Code nach /etc/systemd/system/darkice.service und /etc/systemd/system/icecast2.service. Dann lauf
sudo systemctl enable icecast2
sudo systemctl enable darkice
Darkice.service
[Unit]
Description =DarkIce Icecast Network Audio Streamer
After =icecast.target
[Service]
Type =simple
ExecStart =/usr/bin/darkice -c /etc/darkice.cfg
ExecReload =/bin/kill -HUP $MAINPID
User =root
Group =root
# WorkingDirectory=/usr/share/icecast2/
Restart =always
RestartSec =5
[Install]
WantedBy =multi-user.target
icecast2.service
[Unit]
Description =Icecast Network Audio Streaming Server
After =network.target
[Service]
Type =simple
ExecStart =/usr/bin/icecast2 -c /etc/icecast2/icecast.xml
ExecReload =/bin/kill -HUP $MAINPID
User =icecast2
Group =icecast
# WorkingDirectory=/usr/share/icecast2/
Restart =always
[Install]
WantedBy =multi-user.target
Starten Sie den Raspberry Pi neu, um zu überprüfen, ob alles richtig eingerichtet ist und weil wir einige Konfigurationsdateien geändert haben und um sicherzustellen, dass Darkice läuft.
Öffnen Sie nun Ihren Browser und gehen Sie zu http://vinyl.local:8000
(Standard-Icecast2-Port). Dort sollte ein Mountpoint Mount Point /turntable.mp3
angezeigt werden. Wenn nicht, gehen Sie noch einmal zurück und überprüfen Sie, ob Sie alles wie beschrieben gemacht haben. Klicken Sie mit der rechten Maustaste auf den M3U-Link (oben rechts) und kopieren Sie die Linkadresse. Dies ist Ihre Steam-URL. Sie können dies in iTunes, VLC, Ihrem Browser oder über jeden anderen Audio-Client öffnen, der Streaming unterstützt.
Öffne die Sonos-App auf deinem Desktop (dies funktioniert nicht auf Mobilgeräten). Gehen Sie zu Manage
> Add Radio Station...
und fügen Sie Ihre Stream-URL ein. Sie können einen beliebigen Namen wählen. Um den Stream auf Ihrem Sonos abzuspielen, gehen Sie zu Radio by TuneIn
> My Radio Stations
. Dort sollte Ihr Stream auftauchen! Klicken Sie mit der rechten Maustaste, um es zu Ihren Favoriten hinzuzufügen, wenn Sie möchten! :-) Sie können mit dem Spielen von Mobilgeräten aus beginnen, Sie können ihnen jedoch keinen Netzwerk-Stream hinzufügen.
Sie können die Startzeit Ihres Raspberry Pi verkürzen
Dies bleibt dem Leser als Übung überlassen, es gibt jedoch verschiedene Codeausschnitte in „fasterboot.sh“ zum Ansehen sowie verschiedene Links in technischen Hinweisen und Referenzen.
Siehe auch