PandoraBar – Pandora Radio Client

In November 2011, I stumbled up a gem on the internet. I was looking for a way to get into some Linux hacking, and I stumbled upon Jeff’s MightyOhm engineering website. One particular project was the Wifi Radio using a ASUS WL-520GU Wireless Router. I promptly went on Newegg and got my own router right away. From there it was several months of debugging hell as I struggled to learn the ins and outs of Linux and OpenWRT.

I didn’t want to create a carbon copy of Jeff’s Wifi Radio, so I kept my newly earned knowledge in the back of my head, always looking for cool ideas and new projects to work on. A few months ago, I discovered Pianobar, a CLI client for Pandora Radio. In case you don’t know, Pandora Radio is a browser-based internet radio. What makes it different from other radio websites is the service will recommend new songs based on your music tastes. Hence, it is a great way to discover new artists and even new genres of music. Pandora only works in the US, but you proxy to the service through a US server.

The neurons in my brain made the connection right away and I knew what I wanted to create. I wanted a wifi radio that can run Pandora, with all the features of the browser client (Love song, Ban song, etc). At first I tried compiling Pianobar for OpenWRT on the Asus router, but to no avail. I needed something more powerful. I had a BeagleBoard laying around and started playing with the toy. After a few month’s worth of weekends and afterwork programming binges, I finally finished the project.

Here’s a few videos of the device in action.

The alarm and backlight settings.

If you want to make your own device, I’ll be posting write-ups in parts and will probably post a new segment every other week. Of course if you just want Pandora on a stand-alone device, you can always check for something like the SqueezeBox. It takes away the fun from the DIY though.

1. Platform Development
2. Compiling Pianobar
3. Circuit Design
4. Layout and Fabrication
5. Assembly
6. LCD Drivers
7. Rotary Encoder Drivers
8. Creating the BSP
9. Using an Event Processor
10. Finishing Touches

More coming soon. Check back for updates.

22 Responses to PandoraBar – Pandora Radio Client

  1. flink says:

    That is a very cool build! I’m thinking a steampunkish device would do nicely in my living room!

  2. Ronin says:

    This would be an awesome build up. When do you think you will start posting the ins and outs of Beagleboard, Router and development? I don’t currently use PianoBar, but do use Pithos which is just the GUI version, same developer I believe. Anyway great looking Media center, looking forward to some new write-ups.

  3. Johann says:

    For info, Pandora is no longer US only. It’s not available everywhere but they have a list of territories somewhere on their site.

  4. Saul Cepeda says:

    This is awesome, im new to the hacking world and would love to get a step by step play of how u did it. i’d love to create something similar..

  5. Matt says:

    This is fantastic, great implementation. How’s the audio quality from the custom box?

  6. Panikos says:


    Could you please share the part numbers for those buttons?


  7. jliu83 says:

    @Matt. The speakers are Altec Lansing BXR1220 2.0 Speaker System. Audio quality is decent. I am not an audiophile, so I can’t say that it is great or anything. For me, it was definitely good enough.


  8. jliu83 says:

    @Panikos. Look up “rotary encoder” at and filter through to the ones with an integrated switch. The ones I used are ACZ11BR1E-20FD1-20C from CUI Inc.


  9. jliu83 says:

    @Johann. Thanks for the info. I will update it soon.

  10. jliu83 says:

    @Saul. It’s coming. Need time to do these write ups.

  11. TCommander says:

    Does this implementation time out or play continuously without asking if you are still listening?

    Also I know you said you had a beagleboard laying around but what are the chances a raspberry pi device could handle the job at a much lower price?

  12. jliu83 says:

    @TCommander. If Pianobar compiles on the rPi, it’ll work just fine. It shouldn’t be a problem on an ARM platform. I couldn’t compile Pianobar on Mips (on a router that I had), so your mileage may vary. I have a stack of rPi’s around in my lab. Don’t know where I put them, but I have other plans for them.

    With regard to the question about “if you are still listening”. I think that portion is not implemented on the server side, but rather on the client side, so no, it doesn’t time out. However that can be written in the main interface program very easily.

  13. gannon says:

    Nice job! I actually just started a raspberry pi radio earlier today. Currently I have it set up to boot into pianobar and start playing a station; outputting artist / title data to a tiny 16×2 LCD display I had laying around. Still deciding on how many buttons and such it should have, but for now I’ll live with piping commands to it over the network.

  14. MaDoGK says:

    Cool! If you a tutorial I would love to try this! i want to make a full instalation around my house. would amazing with speakers in every room….

  15. jliu83 says:

    @MaDoGK. It’s coming. I need to get some circuit diagrams in order. Thanks for the interest.


  16. jliu83 says:

    @Gannon. Glad to know it works on the rPi. Would make for a cheaper setup for sure.


  17. gannon says:

    Unfortunately one thing I have noticed with the raspberry pi is that the audio tends to pop when starting a song (with analog out). Also it will pop under heavy CPU load. A USB audio card or the digital audio through HDMI shouldn’t have the popping issue I think…

  18. jgdempsey says:

    Re Johann’s comment further up.. Pandora is definitely not available in Canada directly at the moment, although something like unblock-us would probably take care of the problem

  19. Now this would be cool if it had built in tethering capabilities for a couple different phones so I could use it on the lake in the fishin boat. Also a button to in realtime send the pandora feed through a basic stamp pic to do a RTTL conversion, and then send the respective notes through the speakers just for a Shiz n’ Giggles mode.

  20. CMDP says:

    I am thinking about building one of these for a gift, but I’m curious as to the total price using what you have. Also, would I be able to use an old Palm Treo LCD screen be programmed the same way you programmed your LCD? I have one lying around.

  21. jliu83 says:

    @CMPD. You’ll have to write the drivers for that LCD. I have no idea what interface it uses. If it is something fast like LVDS, you’ll need something that can do the bridging.


  22. Tomas says:

    Firstly, thanks for documenting your wonderful project! Forgive me if I’ve ovcrlooked something but I can’t seem to find any reference to the audio interface for this. I see that you used an amplifier and speakers from some retail desktop speaker set but I’m wondering how you interfaced with it. I’m guessing the amplifier for the speaker also had a DAC right? But how did you transmit the audio stream from the MCU to the DAC/Amp?

Leave a Reply

Your email address will not be published. Required fields are marked *