I love cloud computing so I developed my solution at home to store all my datas and my favourite music at home. DLNA is the right protocol to share and control through all the devices TVs, Android devices, PCs. This idea born because I needed my music in the bathroom. I extended the idea to receive the internet radios because my girlfriend loved to listen a internet radio in the bathroom with the laptop but it isn't practical of course.
The project consist in 2 parts: a linux part and an arduino part. The linux part manage the network protocols and the arduino part manage the display and the encoders to change volume and radio channels.
I had an unused little router WR710N so I decided to use it with OpenWrt to develop the linux part. OpenWrt is a linux for routers and it is perfect for this purpose because this application don't need a lot of power, just consider that a raspberry pi would be overkill. The WR710N is very compact and has an internal power supply so I used it also to feed the arduino side. Two shell script manage the communication with arduino and provide to change the radio parameters through the mpc/mpd running on OpenWrt. Upmpdcli is a simple program that run in background and provide to DLNA support.
The arduino side manage the display, the encoders (volume and channels change) , the power on button and it talk with OpenWrt by the serial port. The encoders information are sent to Openwrt. It also provide to show the information received by OpenWrt on the display (16x2 with I2C interface).
How to put all together. I connected a USB hub to the USB port of WR710N and consequently an arduino nano and an USB audio stick. I connected also a 1GB USB stick but I verified that it is absolutely not mandatory. All the hardware connection are more explained in the README on github.