(→Einige Hinweise zu nano, dem Textedit des Raspberry:) |
|||
Zeile 36: | Zeile 36: | ||
Danach einloggen mittels pi und raspberry | Danach einloggen mittels pi und raspberry | ||
− | Als erstes habe ich dem root ein Passwort vergeben: sudo passwd root | + | Als erstes habe ich dem root ein Passwort vergeben (Das Passwort merken / aufschreiben!): |
+ | sudo passwd root | ||
danach mit exit wieder raus und als root neu angemeldet | danach mit exit wieder raus und als root neu angemeldet | ||
Zeile 83: | Zeile 84: | ||
gemeldet werden und wann er fertig hochgefahren ist. | gemeldet werden und wann er fertig hochgefahren ist. | ||
− | Dann apt-get update um die Liste zu aktualisieren. | + | Dann |
− | + | apt-get update | |
+ | um die Liste zu aktualisieren. | ||
+ | |||
+ | apt-get upgrade | ||
+ | |||
+ | um das System zu aktualisieren. | ||
Die nächste Frage mit Enter bejahen (Enter bedeutet, dass der Standard, welcher groß geschrieben ist, übernommen wird (Y/n). | Die nächste Frage mit Enter bejahen (Enter bedeutet, dass der Standard, welcher groß geschrieben ist, übernommen wird (Y/n). | ||
Zwischendurch evtl. Fragen bestätige ich einfach mit ENTER. | Zwischendurch evtl. Fragen bestätige ich einfach mit ENTER. | ||
Zeile 360: | Zeile 366: | ||
auf 50 Prozent gesetzt werden. | auf 50 Prozent gesetzt werden. | ||
− | + | ==Weblinks== | |
+ | [http://www.roboternetz.de/community/threads/58946-Internetradio Thread im Roboternetz] | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] |
Version vom 26. August 2012, 19:41 Uhr
An diesem Artikel arbeitet gerade Mitglied peterfido.
Am besten momentan noch keine gravierenden Ergänzungen / Änderungen vornehmen. Dieser Hinweis verschwindet wenn der Autor soweit ist. Sollte dieser Hinweis länger als drei Tage auf einer Seite sein, bitte beim Autor peterfido per PM / Mail oder Forum nachfragen ob er vergessen wurde. |
Anbei mein "kleines" Projekt, den Raspberry Pi als Internet Radio zu betreiben. Die Steuerung erfolgt über einen AVR, welcher im Frontend seines Gehäuses im Wohnzimmer sitzt.
Das Gehäuse ist vom MediaReceiver X300T von der Telekom, welche es nicht zurück haben wollte, obwohl bei mir kein IP-TV möglich war. So habe ich ich mich damit befasst, dem Atmega88 auf dem Frontend ein eigenes Programm zu schreiben, um ihn für eigene Zwecke einzusetzen...
Man kann den Atmega88 "direkt" per Pegelwandler mit dem Raspberry verbinden.
Benötigt:
1 Raspberry Pi
1 SD-Karte (2GB aufwärts)
FTP-Software auf dem PC (Totalcommander)
Linuxfähiger Texteditor auf dem PC (Notepadd++)
optional eine USB Soundkarte (Speedlink mit C-Media Chip)
Irgendwas, was mit dem Raspberry Pi seriell kommunizieren kann. (AVR, PIC, Terminalsoftware,...)
Einige Hinweise zu nano, dem Textedit des Raspberry:
Mittels den Pfeiltasten wird navigiert. Bild auf/Bild ab blätter eine ganze Seite. Zahlen nicht über den 10er Block (Ziffernblock) der Tastatur eingeben. STRG-X beendet nano. Falls gewünschte Änderungen gemacht wurden, kann man mit y und anschließend ENTER diese bestätigen oder falls man sich vertan hat, mit n einfach ohne zu speichern raus. Wird Putty genutzt, lässt sich der Inhalt der Zwischenablage mit einem Rechtsklick an der aktuellen Cursorposition einfügen. Man kann auch den Cursor irgendo platzieren, mit gedrückter linken Maustaste etwas markieren und dann mit Rechtsklick an der Cursorposition einfügen. Markierter Text wird automatisch in die Zwischenablage kopiert und ist in anderen Programmen verfügbar.
Von Vorteil ist ein Projektordner auf dem PC, worin man arbeitet und Dateien ablegt. Nach jedem reboot muss man sich natürlich wieder einloggen. Mittels Putty und ssh einfach auf das Icon am Fensterrand klicken und restart Session auswählen. Wird dieses nicht angeboten, einfach mal im Fenster ein paar Tasten drücken und ENTER hinterher. Dann sollte Putty irgendwann merken, dass am anderen Ende keiner mehr reagiert. Die ganze Zeit über benötigt der RasPi eine Internetverbindung.
Installation des Wheezy Raspian (Version 2012-15-07) per Imagewriter wie öfter beschrieben.
Die Verbindung zum Raspberry läuft bei mir per FTDI USB - Seriell Wandler. Achtung! darauf achten dass die Pegel auf 3,3V eingestellt sind! Über die Software Putty (Comport wählen, 115200 Baud, 8N1) Oder man schließt einen TV/Monitor und eine Tastatur an.
Danach einloggen mittels pi und raspberry Als erstes habe ich dem root ein Passwort vergeben (Das Passwort merken / aufschreiben!):
sudo passwd root
danach mit exit wieder raus und als root neu angemeldet
Danach startet automatisch die Konfigurationsoberfläche. Falls nicht, einfach
raspi-config
eingeben
Die Bedienung erfolgt per Tastatur. Mit den Pfeiltasten kann man wählen und mittels TAB springt man zu den Optionsfeldern. Dort die locale auf de_DE.UTF 8 umgestellt. Die Default locale im nächsten Fenster habe ich einfach mit ok auf en_GB gelassen. Anschließend auf Set Keyboard layout Danach dann Set Timezone auf EUROPE BERLIN Bei ssh sichergestellt, dass es aktiviert ist. zuletzt expand_rootfs ausgewählt, um die gesamte SD-Karte nutzen zu können.
NEUSTART durch Unterbrechung der Stromversorung oder Eingabe von
reboot
Nach dem Einloggen erscheint womöglich gleich wieder das Config Tool. Das beende ich dann gleich wieder per Auswahl fon FINISH. Die Netzwerkeinstellungen stehen in der Datei /etc/network/interfaces. Zum Anpassen
nano /etc/network/interfaces
eingegeben, um auf eine statische IP-Adresse zu wechseln, damit ich ihn immer unter der selben Adresse erreiche. Alternativ kann man auch im Router einstellen, dass dem Raspi per DHCP immer die selbe Adresse zugewiesen werden soll.
auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.2.37 netmask 255.255.255.0 gateway 192.168.2.1
Beendet wird nano mittels STRG+X Dann die Speichern Frage mit y bestätigen und nochmals Enter, um den Dateinamen beizubehalten. Dann mittels Befehl
reboot
neu gestartet. Jetzt im Putty auf SSH gewechselt. Ein zweites Putty Fenster beobachtet die Ausgabe des Raspi auf dem Terminal, so kann man sehen, ob Fehler gemeldet werden und wann er fertig hochgefahren ist.
Dann
apt-get update
um die Liste zu aktualisieren.
apt-get upgrade
um das System zu aktualisieren. Die nächste Frage mit Enter bejahen (Enter bedeutet, dass der Standard, welcher groß geschrieben ist, übernommen wird (Y/n). Zwischendurch evtl. Fragen bestätige ich einfach mit ENTER. Nach der Frage, ob aktualisiert werden soll, was etwas dauert, ist erstmal Zeit für eine Kaffeepause... Diese kann auch nutzen, indem man sich einen Linux - fähigen Texteditor installiert. (Ich nutze Notepad++)
reboot
raspi-config
Jetzt den MemorySplit auf 240 MB Arbeitsspeicher und 16 MB Videospeicher ändern.
Die Frage nach dem Reboot bejahen...
Jetzt brauchen wir noch ein paar Programme auf dem Raspberry Pi. gcc, um eigene Programm zu erstellen (Könnte schon vorhanden sein), einen FTP-Server zur bequemen Dateiübertragung und natürlich eine Software für das Internetradio. Da habe ich mich für mpd entschieden.
apt-get install gcc apt-get install mpd mpc apt-get install vsftpd
Jetzt im Putty, welcher per UART angeschlossen its, das Logging einschalten: Change Settings > Session>Logging Dann
reboot
einmal hochfahren. Nach dem Erscheinen der Login Meldung dann mal das Log öffnen (Notepad++) und nach evtl. Fehlern suchen. Bei mir werden keine gemeldet.
Jetzt
nano /etc/ftpusers
Dort die Zeile root auskommentieren.
#root
Dann STRG-X, y, ENTER
Jetzt
nano /etc/vsftpd.conf
Dort die # am Anfang der Zeile #local_enable=YES entfernen
local_enable=YES
und anonymous_enable=YES ändern auf
anonymous_enable=NO
und #write_enable=YES ändern auf
write_enable=YES
Dann STRG-X, y, ENTER
Jetzt mit
service vsftpd restart
den ftp Server neu starten.
Jetzt sollte der Zugriff per ftp möglich sein.
Als nächstes benötigen wir eine URL Liste von Internetradios. Viele Sender erwähnen ihre Livestream-URLs nicht direkt. Ich habe die Adressen herausgefunden, indem ich einfach in der Fritzbox den Verkehr mitgeloggt (fritz.box/html/capture.html) und per Wireshark durchsucht habe.
Es gibt aber auch Internetseiten, wo einige URLs aufgelistet sind.
Zum Anfang reicht uns eine Liste mit 3 URLs.
http://www.energyradio.de/rock http://www.energyradio.de/berlin http://www.energyradio.de/hot
Diese wird mit einem Linuxfähigen Editor erstellt, abgespeichert als radiosender.m3u und per ftp nach /var/lib/mpd/playlists/ kopiert.
Anschließend die Rechte der Datei ändern, damit mpd darauf zugreifen kann.
chmod 644 /var/lib/mpd/playlists/radiosender.m3u
Jetzt mpd anpassen:
nano /etc/mpd.conf
Die Zeile
bind_to_address "localhost"
wurde zu
bind_to_address "127.0.0.1"
Da er anscheinen localhost nicht auflösen kann.
Dort kann man auch einen anderen Adressbereich angeben, um z.B. aus dem Netzwerk darauf zugreifen zu können.
Auskommentiert (#) habe ich folgende Zeilen: log_file und state_file so wird das loggen abgeschaltet, mit state_file spielt der mpd sofort nach dem Start dort weiter, wo er aufgehört hat, das wollte ich nicht.
Weiter unten noch unter audio_output habe ich für den USB-Sound-Stick folgendes stehen:
audio_output { type "alsa" name "My ALSA Device" device "hw:1,0" # optional für Headphone-Anschluss: "hw:0,0" format "44100:16:2" # optional mixer_device "default" # optional mixer_control "PCM" # optional mixer_index "0" # optional }
noch weiter unten wird die auskommentierte Zeile
#mixer_type "software"
durch wegnehmen der # aktiviert. Für den analogen Anschluss des Raspberry wird der Hardware Mixer aktiviert.
Die Zeilen
#audio_buffer_size "2048" #buffer_before_play "10%"
werden auch aktiviert.
STRG-X, y, ENTER
/etc/init.d/mpd restart
startet den mpd mit den neuen Einstellungen neu
jetzt einmal
mpc
eingeben. Wenn die Verbdinung steht, sollte da sowas in der Art rauskommen:
volume:100% repeat: off random: off single: off consume: off
jetzt laden wir die playlist:
mpc load radiosender
Die erste URL öffnen geht mit
mpc play 1
Die Zweite URL mit
mpc play 2
und so weiter.
mpc stop
beendet die wiedergabe
mpc play
spielt dort weiter, wo aufgehört wurde.
Wenn das alles klappt, können wir uns der Steuerung über UART widmen. Dazu habe ich ein Programmpaket erstellt, welches die Aufrufe des mpc automatisch nach empfangenen Daten macht.
Da ich die interne UART nutzen möchte, gebe ich diese als erstes frei.
Hier wäre ein guter Punkt, wo eine Datensicherung der SD-Karte durchgeführt wird. Den Raspberry Pi abschalten Die SD-Karte in einen Kartenleser stecken. Den Win32DiskImager starten Bei Device sicherstellen, dass der richtige Buchstabe ausgewählt ist Den Dateinamen angeben, unter welchem gesichert werden soll (Blaues Ordnersymbol) Den Dateinamen angeben z.B. 2012-08-26RaspiRadio.img Dann den Button READ! auswählen
Es kann vorkommen, dass beim ersten Start nichts vernünftiges aus den Lautsprechern herauskommt. Daher bietet es sich an, beim Start eine kleine Datei abspielen zu lassen. Diese kann man sich z.B. recht einfach bei Windows besorgen. Ich habe mich für c:\windows\media\Windows-Hardware hinzufügen.wav entschieden. Die gewählte wav Datei am besten in den Raspberry Arbeitsordner kopieren und in z.B. start.wav umbenennen. Zur Vorbereitung für später werden unter /var zwei Ordner erstellt.
mkdir /var/scripte mkdir /var/sounds/
Danach muss die Datei noch auf die SD-Karte des Raspberry. Der Einfachheit wegen per ftp nach /var/sounds. Jetzt die Datei noch für alle lesbar freigeben.
chmod -r 644 /var/sounds/start.wav
Damit das Soundsystem (und später noch andere Programme) initialisert wird, bietet es sich an, eine eigene Startdatei zu erstellen. Sozusagen die autoexec.bat von damals.
nano /var/scripte/autostart.sh
Der Inhalt sieht erstmal so aus:
#!/bin/bash # # Autostart # # ##sound amixer cset numid=3 1 amixer -c 0 cset numid=2 on,off amixer set PCM 96% aplay /var/sounds/start.wav
STRG-X, y, ENTER
Damit diese Datei später auch ausgeführt wird, muss sie auch aufgerufen werden und ausführbar sein. Das lässt sich in der rc.local machen.
chmod 755 /var/scripte/autostart.sh nano /etc/rc.local
Dort in der freien Zeile über exit 0 kommt der Aufruf rein.
/var/scripte/autostart.sh
STRG-X, y, ENTER
Wenn jetzt die rc.local nochmal gestartet wird, sollten die Mixereinstellungen gezeigt die Audiodatei abgespielt werden.
/etc/rc.local
Um zu testen, ob alles läuft:
reboot
Wer möchte, kann jetzt nochmal das Putty Log analysieren, denn Putty schreibt immer noch fleißig mit. Anschließend das Logging in Putty wieder abschalten, wenn man möchte.
Um die interne UART auf den GPIOs freizugeben, müssen 2 Dateien bearbeitet werden. Diese sind für den Start von Relevanz und die Bearbeitung muss demnach auch gewissenhaft durchgeführt werden. Daher evtl. nochmal die SD Karte sichern, wie oben beschrieben.
Um das Syslog abzuschalten, geht es jetzt an die /boot/cmdline.txt
nano /boot/cmdline.txt
Wie der Name schon sagt, besteht die Datei aus einer Zeile.
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Die interne UART heisst ttyAMA0 und dieser Teil stört für das Projekt, deswegen kommt er weg. Die neue Zeile:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
STRG-X, y, ENTER
Testen, ob es noch hochfährt.
reboot
Warten, bis start.wav ertönt und dann neu einloogen.
Jetzt ist noch eine Konsole über UART offen, diese lässt sich in der inittab abschalten.
nano /etc/inittab
Dort wird alles, was ttyAMA0 beinhaltet mittels # deaktiviert. Normal in der letzten Zeile eine # voran gesetzt.
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
STRG-X, y, ENTER
reboot
Ist alles richtig gemacht, dürfte sich auf dem Putty, welches über die UART verbunden ist, nichts mehr tun. Jetzt sollte, nach dem Einloggen natürlich, mittels den Befehlen
mpc load radiosender mpc play 1
Radio abgespielt werden.
Die Lautstärke kann z.B. mit
mpc volume 50
auf 50 Prozent gesetzt werden.