Himbeereis: Unterschied zwischen den Versionen
Zeile 197: | Zeile 197: | ||
</ices> | </ices> | ||
</pre> | </pre> | ||
[[Kategorie:Projekt | Nun wieder mit der Tastenkombination "Strg+O" speichern und mit "Strg-X" schließen. | ||
jetzt müsst ihr den Ices2 dienst nur noch mit<pre>sudo systemctl restart ices2</pre> neustarten. Ob sich der RaspberryPi korrekt verbunden hat könnt Ihr mit <pre>sudo systemctl status ices2</pre> nachprüfen. | |||
Herzlichen Glückwunsch! Ihr habt nun einen Streamingdevice für den Universalen Einsatz! | |||
[[Kategorie:Projekt]] |
Version vom 29. Oktober 2019, 09:55 Uhr
Ansprechpartner
Beschreibung
Projekt Himbeereis basiert auf der Idee eine einfache Möglichkeit zu haben um Analoge Audiosignale mittels eines RaspberryPi an einen Icecast2 Server zu übermitteln. Nachfolgen wird Erklärt welche Hardware zur Verarbeitung der Audiosignale verwendet wird, welche Software installiert werden muss und wie der RaspberryPi in betrieb genommen wird.
Hardware
- RaspberryPi 3 B+
- HiFiBerry DAC+ ADC
- HiFiBerry universal case
- Micro USB Netzgerät mit 5V 2,4A
- Class10 microSD Karte 32GB (Kingston empfohlen!)
Software
Anleitung
Zusammenbau
ACHTUNG: Das Universalgehäuse benötigt eine zusätzliche Aussparung für den Klinken-Eingang! Hierfür muss mit einer kleinen fräse oder einer feile ein runder ausschnitt in das Gehäuse gemacht werden.
Steckt das HiFiBerry DAC+ ADC board auf den RaspberryPi und montiert es fest mit den beiliegenden Kunststoffschrauben. Mit einer kleinen zange müssen nun beide vorbereiteten Aussparungen aus dem Gehäuse gelöst werden. Zusätzlich muss mit einer kleinen feile ein runder Ausschnitt in das Gehäuse in höhe des Klinkenbuchse gefeilt werden. Jetzt muss der RaspberryPi in das Gehäuse eingesetzt werden bis er einrastet.
Die SD Karte wird wie hier beschrieben mit einem Raspbian Lite installiert und in den RaspberryPi gesteckt.
Nun den Raspberry mit Strom und Netzwerk/Internet versorgen und an einem Bildschirm mit Tastatur einrichten.
Software
Nachdem der RaspberryPi gestartet ist erscheint
raspberrypi login:
Anschließen einfach mit dem username "pi" und dem password "raspberry" anmelden. Wenn die anmeldung erfolgreich war seht Ihr die eingabeaufforderung:
pi@raspberrypi:~ $
Es ist sehr wahrscheinlich, dass der RaspberryPi anfangs ein englisches Tastaturlayout erwartet. Solltet Ihr ein Deutsches Tastaturlayout verwenden und es kommt zu Problemen beim login, tauscht einfach die buchstaben "Z" und "Y" miteinander aus ;-)
Raspbian Buster aktualisieren
Zunächst muss der RaspberryPi auf den aktuellsten stand gebracht werden. Hierfür muss im Terminal
sudo apt update
und anschließend
sudo apt upgrade
eingegeben werden. Alle verfügbaren updates mit der ENTER taste bestätigen und installieren.
Basiskonfiguration des RaspberryPi
Standartmäßig ist der RaspberryPi für ein englisches Tastaturlayout vorgesehen, um die Arbeit mit anderen Tastaurlayouts zu erleichtern sollten die Spracheinstellungen des RaspberryPi (localization settings) angepasst werden. Hierfür einfach
sudo raspi-config
in die Konsole tippen und mit den Pfeiltasten auf die Einstellung "localization options" navigieren und ENTER drücken. Es wird Empfohlen alle einstellungen anzupassen (Timezone, charset, locales)
Um den RaspberryPi mittels des avahidaemons auch ohne bekannte IP adresse im netzwerk zu finden, sollte der Hostname des raspberryPi ebenfalls geändert werden. Hierfür einfach erneut den Befehl "sudo raspi-config" in die Konsole eintippen und in der option "Hostname" einen neuen Hostname vergeben. Für diese Anleitung verwenden wir den Hostnamen: "ADCberry"
SSH mit publickey
Wir wollen den RaspberryPi ausschliesslich über das Netzwerk erreichen und ohne Bildschirm und Tastatur betreiben. Hierfür benötigen wir einen sicheren Zugang zum Terminal des RaspberryPi über SSH. Nachfolgen wird erklärt wie ein sicherer SSH Zugang mittels publickey verfahren erstellt wird.
HINWEIS: Die Nachstehende Anleitung ist für die Verwendung mit einem Ubuntu 18.04 erstellt. Viele Linux Systeme funktionieren ähnlich. Wie ihr einen SSH Schlüssel auf einem Windows oder Mac erstellt, könnt ihr hier nachlesen
SSH Schlüsselpaar unter Linux auf dem client erstellen
Öffnet auf dem Gerät womit ihr den RaspberryPi administrieren wollt das Terminal
wechselt in das versteckte verzeichnis "/.ssh/" mit:
cd /home/username/.ssh/
anschließend mit dem befehl
sudo ssh-keygen -t rsa -b 4096 -C "pi@ADCberry.local"
ein SSH Schlüsselpärchen generieren. Das sollte ungefähr so aussehen:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):
Wenn das Schlüsselpaar an einem andren Ort gespeichert werden soll, gebt nun einen Dateipfad an. Andernfalls drückt einfach ENTER.
Nun gebt ein Kennwort für euren Schlüssel an:
Enter passphrase (empty for no passphrase)
Dieses Kennwort wird in Zukunft für die Anmeldung benötigt!
Kennwort erneut eingeben und zuschauen wie der Schlüssel generiert wird.
Um zu schauen ob die schlüssel generiert wurden gebt:
ls- al
ein. Es sollte zwei neue Dateien geben:
- id_rsa <- der privatekey
- id_rsa.pub <- der publickey
Bitte NIEMALS den privatekey an andere weitergeben!
SSH Schlüssel auf den RaspberryPi kopieren
Num muss der SSH Schlüssel auf den RaspberryPi kopiert werden, um die identität bestätigen zu können. Am einfachsten geht das mit dem tool "ssh-copy-id". einfach:
ssh-copy-id pi@ADCberry.local
eingeben. Nun sollte sich der RaspberryPi zurückmelden:
The authenticity of host '192.168.0.120' can't be established. ECDSA key fingerprint is SHA256:/KdeEfkcNce332KdLPqadkKaPapvcN32. Are you sure you want to continue connecting (yes/no)? yes
mit "yes" bestätigen.
nun das Kennwort des Benutzers "pi" eingeben. In unserem Fall das default kennwort: raspberry
pi@ADCberry.local's password:
Wenn alles funktioniert hat solltet Ihr folgendes sehen:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh pi@ADCberry.local" and check to make sure that only the key(s) you wanted were added.
Nun ist der RaspberryPi für die verwendung mit dem PublicKey verfahren eingerichtet. Wenn Ihr euch nun mit
ssh pi@ADCberry.local
verbindet fragt euch euer System nach dem SSH Schlüsselkennwort welches Ihr bei erstellung des Schlüsselpärchens vergeben musstet. Evtl. könnt Ihr das automatische freischalten des schlüssel aktivieren, dann müsst Ihr bei Zukünftigen Login kein Kennwort mehr eingeben!
SSH Passwort Login deaktivieren
Da Ihr euch nun ohne Kennwort Authentifizieren könnt kann der Login mit Kennwort beim RaspberryPi deaktiviert werden. Dazu muss das die Konfigurationsdatei von SSH angepasst werden. Verbindet euch zunächst per SSH auf euren RaspberryPi und editiert die Konfigurationsdatei von SSH mit nano:
sudo nano /etc/ssh/sshd_config
Sucht in der Datei nach dem Eintrag: "PasswordAuthentication" und setzt ihn auf "No". Speichert die datei mit der Testenkombination: "Strg+O" und beendet mit "Strg+X". Damit die änderungen aktiv werden muss der SSH Dienst neu gestartet werden:
sudo systemctl restart ssh
Um den Status von SSH abzufragen, verwendet
sudo systemctl status ssh
HiFiBerry DAC+ ADC treiber aktivieren
damit das HiFiBerry DAC+ ADC verwendet werden kann müssen Zunächst die im Betriebssystem bereits mitgelieferten Treiber aktiviert werden. Dazu muss die datei "config.txt" editiert werden. Zunächst die datei mit:
sudo nano /boot/config.txt
öffnen, den eintrag "dtparam=audio=on" suchen und durch "dtoverlay=hifiberry-dacplusadc" ersetzen. Die Datei mit der Tastenkombination: "Strg+O" speichern und mit "Strg+X" schließen. Zusätzlich ist es praktisch, wenn die Audiokarte Standartmäßig vom System verwendet werden soll. Hierfür muss die Konfigurationdatei "asound.conf" im Verzeichnis "/etc/" erstellt werden:
sudo nano /etc/asound.conf
in diese leere datei dann:
pcm.!default { type hw card 0 } ctl.!default { type hw card 0 }
einfügen, mit der Tasenkombination "Strg+O" speichern und mit "Strg+X" schließen.
Jetzt den RaspberryPi mit:
sudo systemctl reboot
neustarten. Wenn der RaspberryPi neu gestartet ist, müsst Ihr euch wieder über SSH verbinden! Um zu Prüfen ob alles funktioniert hat und ob der Eingang richtig erkannt wurde, kann mit
arecord -l
nachgeschaut werden ob alsa alles richtig erkannt hat. Es sollte dann so aussehen:
**** Liste der Hardware-Geräte (CAPTURE) ****Karte 0: sndrpihifiberry [snd_rpi_hifiberry_dacplusadc], Gerät 0: HiFiBerry DAC+ADC HiFi multicodec-0 [] Sub-Geräte: 0/1 Sub-Gerät #0: subdevice #0
Ices2 installieren
Damit das Audiosignal an einen Icecast2 Server gesendet werden kann muss die Software Ices2 installiert werden. Das geht ganz einfach mit:
sudo apt install ices2
Mit ENTER alle zusätzlichen Pakete installieren. Fertig! Ices2 ist installiert.
Ices2 in einen dienst verwandeln
Damit das Betriebssystem sicher mit der Software umgehen kann ist es wichtig es in einen service zu überführen. Das geht so:
cat <<EOT | sudo tee /lib/systemd/system/ices2.service
dann mit ENTER bestätigen und nachfolgend alles zeile für zeile eintippen:
[Unit] Description=Ices2 [Service] User=pi Group=audio ExecStart=/usr/bin/ices2 /etc/ices.xml [Install] WantedBy=multi-user.target
EOT
Mit dem Befehl:
sudo systemctl start ices2
kann Ices2 jederzeit gestartet werden. Um zu überprfen ob der Service läuft kann mit:
sudo systemctl status ices2
geprüft werden.
Ices2 konfigurieren
Damit sich der RaspberryPi auch mit einem Server verbindet muss eine Konfigurationsdatei für Ices2 erstellt werden. Das geht mit:
sudo nano /etc/ices.xml
Ich habe für den RaspberryPi ein Standartkonfigurationsfile erstellt welches Ihr einfach kopieren könnt:
<?xml version="1.0"?> <!-- Sample ices configuration to stream from the DAC+ ADC --> <ices> <background>0</background> <logpath>/var/log/ices</logpath> <logfile>ices.log</logfile> <logsize>2048</logsize> <!-- 1=error, 2=warn, 3=infoa ,4=debug --> <loglevel>3</loglevel> <consolelog>1</consolelog> <!-- optional filename to write process id to --> <!-- <pidfile>/home/ices/ices.pid</pidfile> --> <stream> <!-- metadata used for stream listing --> <metadata> <name>Radio Name</name> <genre>Musik</genre> <description>Beschreibung des Radios</description> <url>Serveradresse</url> </metadata> <input> <module>alsa</module> <param name="rate">44100</param> <param name="channels">2</param> <param name="device">hw:0,0</param> </input> <instance> <hostname>yourhostname</hostname> <port>8000</port> <password>yoursourcepassword</password> <mount>/Himbeereis.ogg</mount> <yp>1</yp> <!-- allow stream to be advertised on YP, default 0 --> <reconnectattempts>5</reconnectattempts> <retry-initial>1</retry-initial> <encode> <quality>9</quality> <samplerate>44100</samplerate> <channels>2</channels> </encode> <downmix>0</downmix> <savefile>/home/pi/StreamDump.ogg</savefile> </instance> </stream> </ices>
Nun wieder mit der Tastenkombination "Strg+O" speichern und mit "Strg-X" schließen.
jetzt müsst ihr den Ices2 dienst nur noch mit
sudo systemctl restart ices2
neustarten. Ob sich der RaspberryPi korrekt verbunden hat könnt Ihr mit
sudo systemctl status ices2
nachprüfen.
Herzlichen Glückwunsch! Ihr habt nun einen Streamingdevice für den Universalen Einsatz!