Himbeereis: Unterschied zwischen den Versionen

Aus Hackerspace Bielefeld Wiki
Zur Navigation springen Zur Suche springen
(Sollte feritg sein… grob :-))
 
Zeile 204: Zeile 204:
Herzlichen Glückwunsch! Ihr habt nun einen Streamingdevice für den Universalen Einsatz!
Herzlichen Glückwunsch! Ihr habt nun einen Streamingdevice für den Universalen Einsatz!


Genaue Informationen und optionen über die Konfigurationsmöglichkeiten von Ices2 erhaltet Ihr in der [https://www.icecast.org/ices/docs/ices-2.0.2/ offiziellen Dokumentation]
== Funktionen ==
Nachstehend findet Ihr die wichtigsten befehle zum Anpassen eurer konfiguration, starten und stoppen des Streams und wie Ihr nachschauen könnt ob alles funktioniert.
Ices2 starten: <pre> sudo systemctl start ices2</pre>
Ices2 stoppen: <pre> sudo systemctl stop ices2</pre>
Konfigurationdatei editieren: <pre>sudo nano /etc/ices.xml</pre>
Ices2 statusabfrage: <pre> sudo systemctl status ices2</pre>


[[Kategorie:Projekt]]
[[Kategorie:Projekt]]

Aktuelle Version vom 29. Oktober 2019, 10:01 Uhr

Ansprechpartner

Horstwursti

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

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!


Genaue Informationen und optionen über die Konfigurationsmöglichkeiten von Ices2 erhaltet Ihr in der offiziellen Dokumentation


Funktionen

Nachstehend findet Ihr die wichtigsten befehle zum Anpassen eurer konfiguration, starten und stoppen des Streams und wie Ihr nachschauen könnt ob alles funktioniert.

Ices2 starten:

 sudo systemctl start ices2

Ices2 stoppen:

 sudo systemctl stop ices2

Konfigurationdatei editieren:

sudo nano /etc/ices.xml

Ices2 statusabfrage:

 sudo systemctl status ices2