Raspbian : UPnP renderer: Porovnání verzí
(Založena nová stránka s textem „== What we are aiming for == A music system with a Raspberry Pi plugged in to an amplifier playing music that you choose with your mobile phone. The musi…“) |
|||
(Není zobrazeno 11 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
− | == What we are aiming for == | + | === What we are aiming for === |
A music system with a Raspberry Pi plugged in to an amplifier playing music that you choose with your mobile phone. The music can come from MP3s on your phone, from files on your server, files “in the cloud” or from internet radio stations. If there’s more than one Android phone in your household you can have them all synchronised, showing the same playlist and controlling the same music. If you have multiple Raspberry Pis you can put one in each room and choose which one to play the music with. This is all achieved with free software and open standards. I’ve just written some instructions to show how to do it. | A music system with a Raspberry Pi plugged in to an amplifier playing music that you choose with your mobile phone. The music can come from MP3s on your phone, from files on your server, files “in the cloud” or from internet radio stations. If there’s more than one Android phone in your household you can have them all synchronised, showing the same playlist and controlling the same music. If you have multiple Raspberry Pis you can put one in each room and choose which one to play the music with. This is all achieved with free software and open standards. I’ve just written some instructions to show how to do it. | ||
Řádek 11: | Řádek 11: | ||
As usual I started from [http://www.raspberrypi.org/downloads/ the latest Raspbian distribution] (2014-01-07) which needs a 4GB SDCard card apparently. Once the Raspberry Pi is up and running and on the network, log in (user: “pi”, password “raspberry”), run the first-time configuration command and then update to the very latest firmware. These following commands also show the before and after versions in case that is useful for people: | As usual I started from [http://www.raspberrypi.org/downloads/ the latest Raspbian distribution] (2014-01-07) which needs a 4GB SDCard card apparently. Once the Raspberry Pi is up and running and on the network, log in (user: “pi”, password “raspberry”), run the first-time configuration command and then update to the very latest firmware. These following commands also show the before and after versions in case that is useful for people: | ||
− | + | ||
− | $ uname -a | + | '''$ uname -a''' |
− | Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux | + | ''Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux'' |
− | $ sudo raspi-config | + | '''$ sudo raspi-config''' |
− | $ sudo apt-get install rpi-update | + | '''$ sudo apt-get install rpi-update''' |
− | $ sudo shutdown -r now | + | '''$ sudo shutdown -r now''' |
− | + | ||
Once it has rebooted, log in again check the new status and upgrade all the installed packages: | Once it has rebooted, log in again check the new status and upgrade all the installed packages: | ||
− | + | '''$ uname -a''' | |
− | $ uname -a | + | ''Linux raspberrypi 3.12.19+ #681 PREEMPT Fri May 9 16:36:10 BST 2014 armv6l GNU/Linux'' |
− | Linux raspberrypi 3.12.19+ #681 PREEMPT Fri May 9 16:36:10 BST 2014 armv6l GNU/Linux | + | '''$ /opt/vc/bin/vcgencmd version''' |
− | $ /opt/vc/bin/vcgencmd version | + | ''May 9 2014 16:52:52'' |
− | May 9 2014 16:52:52 | + | ''Copyright (c) 2012 Broadcom'' |
− | Copyright (c) 2012 Broadcom | + | ''version c8ed097f7c23249e702bea3ed6b5720136ba00e4 (tainted) (release)'''' |
− | version c8ed097f7c23249e702bea3ed6b5720136ba00e4 (tainted) (release) | + | '''$ sudo apt-get update''' |
− | $ sudo apt-get update | + | '''$ sudo apt-get upgrade''' |
− | $ sudo apt-get upgrade=== Installing gstreamer 1.0 === | + | |
− | + | === Installing gstreamer 1.0 === | |
[https://github.com/hzeller/gmrender-resurrect Henner Zeller has made the gmrender-resurrect UPnP renderer] and it is known to work best with gstreamer 1.0. Unfortunately Raspbian currently still comes with gstreamer 0.10. Fortunately, Christi Scarborough has compiled the necessary gstreamer 1.0 packages for the Raspberry Pi and provided them as debian packages. She has [http://www.coraline.org/non-fiction/raspi-upnp-renderer documented it all] and very honestly included the warning that using these packages means you have to trust her not to have slipped in some malware or something. Some of the instructions on this page are just a duplication of hers. Christi also provides a ready-made build of gmediarender but as I wasn’t sure which version that was, I wanted to use Henner’s directly. | [https://github.com/hzeller/gmrender-resurrect Henner Zeller has made the gmrender-resurrect UPnP renderer] and it is known to work best with gstreamer 1.0. Unfortunately Raspbian currently still comes with gstreamer 0.10. Fortunately, Christi Scarborough has compiled the necessary gstreamer 1.0 packages for the Raspberry Pi and provided them as debian packages. She has [http://www.coraline.org/non-fiction/raspi-upnp-renderer documented it all] and very honestly included the warning that using these packages means you have to trust her not to have slipped in some malware or something. Some of the instructions on this page are just a duplication of hers. Christi also provides a ready-made build of gmediarender but as I wasn’t sure which version that was, I wanted to use Henner’s directly. | ||
Řádek 38: | Řádek 38: | ||
$ sudo wget -O - http://www.chiark.greenend.org.uk/~christi/debian/christi@coraline.org.gpg.key \ | sudo apt-key add - | $ sudo wget -O - http://www.chiark.greenend.org.uk/~christi/debian/christi@coraline.org.gpg.key \ | sudo apt-key add - | ||
− | Then, using “vi”, “nano” or whatever, create a new file to hold the address of Christi’s Debian repository, call it <tt>/etc/apt/sources.list.d/upnprender.list</tt> and add just one line: | + | Then, using “vi”, “nano” or whatever, create a new file to hold the address of Christi’s Debian repository, call it |
+ | <tt>/etc/apt/sources.list.d/upnprender.list</tt> | ||
+ | |||
+ | and add just one line: | ||
+ | deb http://www.chiark.greenend.org.uk/~christi/debian/ wheezy main | ||
We then need to update the local cache of available packages to include Christi’s packages and then follow [https://github.com/hzeller/gmrender-resurrect/blob/master/INSTALL.md Henner’s instructions for installing gmrender-resurrect]: | We then need to update the local cache of available packages to include Christi’s packages and then follow [https://github.com/hzeller/gmrender-resurrect/blob/master/INSTALL.md Henner’s instructions for installing gmrender-resurrect]: | ||
Řádek 47: | Řádek 51: | ||
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ | gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ | ||
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ | gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ | ||
− | gstreamer1.0-alsa | + | gstreamer1.0-alsa |
</pre> | </pre> | ||
+ | === Installing gmediarender === | ||
Continuing with Henner’s instructions: | Continuing with Henner’s instructions: | ||
Řádek 70: | Řádek 75: | ||
Edit the init script if you need to (e.g. set the name of the renderer). Then use the <tt>update-rc.d</tt> command to put in the necessary symbolic links to the init script that start or stop the service at different runlevels (the following <tt>ls</tt> command shows these for interest): | Edit the init script if you need to (e.g. set the name of the renderer). Then use the <tt>update-rc.d</tt> command to put in the necessary symbolic links to the init script that start or stop the service at different runlevels (the following <tt>ls</tt> command shows these for interest): | ||
− | + | ||
− | $ sudo update-rc.d gmediarenderer defaults | + | '''$ sudo update-rc.d gmediarenderer defaults''' |
− | $ ls -l /etc/rc*.d/*gmed* | + | '''$ ls -l /etc/rc*.d/*gmed*''' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc0.d/K01gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc0.d/K01gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc1.d/K01gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc1.d/K01gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc2.d/S04gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc2.d/S04gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc3.d/S04gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc3.d/S04gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc4.d/S04gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc4.d/S04gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc5.d/S04gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc5.d/S04gmediarenderer -> ../init.d/gmediarenderer'' |
− | lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc6.d/K01gmediarenderer -> ../init.d/gmediarenderer | + | ''lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc6.d/K01gmediarenderer -> ../init.d/gmediarenderer'' |
− | |||
Rebooting now should give us a system with gmediarender running, which we can test with <tt>ps</tt>: | Rebooting now should give us a system with gmediarender running, which we can test with <tt>ps</tt>: | ||
− | + | ||
− | $ sudo shutdown -r now | + | '''$ sudo shutdown -r now''' |
− | (wait a bit and log in again) | + | ''(wait a bit and log in again)'' |
− | $ ps aux|grep gmed | + | '''$ ps aux|grep gmed''' |
− | pi 2078 15.5 9.1 198996 40828 ? Ssl 11:05 0:05 /usr/local/bin/gmediarender -f Garden -d -u bd1dcf3e746aa69812943cb1d00f7ebc --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --gstout-initial-volume-db=-10 | + | ''pi 2078 15.5 9.1 198996 40828 ? Ssl 11:05 0:05 /usr/local/bin/gmediarender -f Garden -d -u bd1dcf3e746aa69812943cb1d00f7ebc --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --gstout-initial-volume-db=-10'' |
− | pi 2123 0.0 0.1 3548 800 pts/0 S+ 11:06 0:00 grep --color=auto gmed | + | ''pi 2123 0.0 0.1 3548 800 pts/0 S+ 11:06 0:00 grep --color=auto gmed'' |
− | |||
=== Using a USB audio card === | === Using a USB audio card === | ||
Řádek 98: | Řádek 101: | ||
Plug in your USB audio card (which can cause the RPi to reboot…) and then set it up by following an [https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/instructions Adafruit tutorial]. | Plug in your USB audio card (which can cause the RPi to reboot…) and then set it up by following an [https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/instructions Adafruit tutorial]. | ||
− | I have a CM109 chipset so all I had to do was edit <tt>/etc/modprobe.d/alsa-base.conf</tt> and change <tt>options snd-usb-audio index=-2</tt> to <tt>options snd-usb-audio index=0</tt> | + | I have a CM109 chipset so all I had to do was edit |
+ | <tt>/etc/modprobe.d/alsa-base.conf</tt> | ||
+ | and change | ||
+ | <tt>options snd-usb-audio index=-2</tt> to <tt>options snd-usb-audio index=0</tt> | ||
Reboot again and decent sound comes out of the USB sound card! | Reboot again and decent sound comes out of the USB sound card! | ||
+ | |||
+ | [[Kategorie:Raspbian]] |
Aktuální verze z 28. 10. 2016, 15:56
What we are aiming for
A music system with a Raspberry Pi plugged in to an amplifier playing music that you choose with your mobile phone. The music can come from MP3s on your phone, from files on your server, files “in the cloud” or from internet radio stations. If there’s more than one Android phone in your household you can have them all synchronised, showing the same playlist and controlling the same music. If you have multiple Raspberry Pis you can put one in each room and choose which one to play the music with. This is all achieved with free software and open standards. I’ve just written some instructions to show how to do it.
I have blogged on this topic two times previously (here and here). Each time it gets simpler as the Raspberry Pi eco-system evolves. I needed a new Raspberry Pi UPnP renderer to be attached to an amplifier and speakers.
My previous post explains lots more about how the system as a whole works, how to test it and how you control the music. This post merely updates the instructions for installing gmediarender and includes some info on using a USB sound card.== Setting up a Raspberry Pi to be a UPnP media renderer ==
Installing the base operating system
As usual I started from the latest Raspbian distribution (2014-01-07) which needs a 4GB SDCard card apparently. Once the Raspberry Pi is up and running and on the network, log in (user: “pi”, password “raspberry”), run the first-time configuration command and then update to the very latest firmware. These following commands also show the before and after versions in case that is useful for people:
$ uname -a Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux $ sudo raspi-config $ sudo apt-get install rpi-update $ sudo shutdown -r now
Once it has rebooted, log in again check the new status and upgrade all the installed packages:
$ uname -a Linux raspberrypi 3.12.19+ #681 PREEMPT Fri May 9 16:36:10 BST 2014 armv6l GNU/Linux $ /opt/vc/bin/vcgencmd version May 9 2014 16:52:52 Copyright (c) 2012 Broadcom version c8ed097f7c23249e702bea3ed6b5720136ba00e4 (tainted) (release)'' $ sudo apt-get update $ sudo apt-get upgrade
Installing gstreamer 1.0
Henner Zeller has made the gmrender-resurrect UPnP renderer and it is known to work best with gstreamer 1.0. Unfortunately Raspbian currently still comes with gstreamer 0.10. Fortunately, Christi Scarborough has compiled the necessary gstreamer 1.0 packages for the Raspberry Pi and provided them as debian packages. She has documented it all and very honestly included the warning that using these packages means you have to trust her not to have slipped in some malware or something. Some of the instructions on this page are just a duplication of hers. Christi also provides a ready-made build of gmediarender but as I wasn’t sure which version that was, I wanted to use Henner’s directly.
First we have to install Christi’s GPG key to show that we trust her packages:
$ sudo wget -O - http://www.chiark.greenend.org.uk/~christi/debian/christi@coraline.org.gpg.key \ | sudo apt-key add -
Then, using “vi”, “nano” or whatever, create a new file to hold the address of Christi’s Debian repository, call it
/etc/apt/sources.list.d/upnprender.list
and add just one line:
deb http://www.chiark.greenend.org.uk/~christi/debian/ wheezy main
We then need to update the local cache of available packages to include Christi’s packages and then follow Henner’s instructions for installing gmrender-resurrect:
$ sudo apt-get update $ sudo apt-get install libupnp-dev libgstreamer1.0-dev \ gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ gstreamer1.0-alsa
Installing gmediarender
Continuing with Henner’s instructions:
$ cd $ git clone https://github.com/hzeller/gmrender-resurrect.git $ cd gmrender-resurrect $ sudo apt-get install autoconf $ ./autogen.sh $ ./configure $ sudo make install
This puts gmediarender into /usr/local/bin and a couple of icons into /usr/local/share/gmediarender
Henner has provided an init script to start and stop the gmediarender software, so we’ll copy this into the appropriate place:
$ sudo cp scripts/init.d/gmediarenderer /etc/init.d
Edit the init script if you need to (e.g. set the name of the renderer). Then use the update-rc.d command to put in the necessary symbolic links to the init script that start or stop the service at different runlevels (the following ls command shows these for interest):
$ sudo update-rc.d gmediarenderer defaults $ ls -l /etc/rc*.d/*gmed* lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc0.d/K01gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc1.d/K01gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc2.d/S04gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc3.d/S04gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc4.d/S04gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc5.d/S04gmediarenderer -> ../init.d/gmediarenderer lrwxrwxrwx 1 root root 24 May 10 11:03 /etc/rc6.d/K01gmediarenderer -> ../init.d/gmediarenderer
Rebooting now should give us a system with gmediarender running, which we can test with ps:
$ sudo shutdown -r now (wait a bit and log in again) $ ps aux|grep gmed pi 2078 15.5 9.1 198996 40828 ? Ssl 11:05 0:05 /usr/local/bin/gmediarender -f Garden -d -u bd1dcf3e746aa69812943cb1d00f7ebc --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --gstout-initial-volume-db=-10 pi 2123 0.0 0.1 3548 800 pts/0 S+ 11:06 0:00 grep --color=auto gmed
Using a USB audio card
Basically it all works at this point, though using the built-in audio output of the Raspberry Pi never gives a great quality sound. There are various really interesting high quality DAC cards now available for the RPi which connect directly to the circuit board but for now I went for the simple option of getting a dirt-cheap USB audio card (for 99p you can’t really go wrong…). It does sound much better than the built-in output and is automatically picked up by the latest Raspbian version.
Plug in your USB audio card (which can cause the RPi to reboot…) and then set it up by following an Adafruit tutorial.
I have a CM109 chipset so all I had to do was edit
/etc/modprobe.d/alsa-base.conf
and change
options snd-usb-audio index=-2 to options snd-usb-audio index=0
Reboot again and decent sound comes out of the USB sound card!