loading

Build a wall-mounted "SqueezePlayer"-based network music player using Squeezelite, Jivelite and a Raspberry Pi. I built this project because Logitech has stopped making its "Squeeze" line of networked music players. Since the server software is open source, and because I continue to have several network players around the house that only work off of the Logitech Media Server (originally called the Squeezebox Server), and finally because a few intrepid souls in the Squeeze forums (http://forums.slimdevices.com/showthread.php?97046-Announce-Squeezelite-a-small-headless-squeezeplay-emulator-for-linux-%28alsa-only%29) built software emulators for a network music player and its interface; I decided to put together this project.

Here is a video of the completed player:



This project shows how to both build the hardware and set up a Raspberry Pi with the correct software. The parts required may vary based on what kind of a system you want; but here I use a Raspberry Pi Model B and a Mimo UM-720F USB Touchscreen Display (http://www.mimomonitors.com/products/mimo-720-f-flex-screen-mountable-touchscreen-usb-monitor). In addition, I've used a Rosewill powered USB hub to power both the Raspberry Pi and the monitor, and a T-amp amplifier to power a pair of JBL in-ceiling speakers.

The project consists of two main parts. First, prepare the Raspberry Pi to run the appropriate software to connect to the music server and display the interface; and second, install the hardware in the wall.

Image Files Available for pi1 and pi2

For those who don't want to build their own system up from scratch, I have created a disk image of a working system. You can download the compressed image from here. You may select the image for the Raspberry Pi 1 or the Raspberry Pi 2. Unzip the file and write it to a SD card (2GB or larger should work).

You will need to change the root password (currently "root" and the squeezeuser password (currently "squeeze"). You will also need to copy the appropriate xorg config file to /etc/X11/xorg.conf.d/20-displaylink.conf. There are two examples in the /home/squeezeuser/ directory. One is for the Mimo screen used in this project and the other is for the Lilliput 7" UM-70/C/T MiniUSB Touch Screen Monitor. As delivered, the image uses the Lilliput xorg file. Finally, you will need to calibrate your touchscreen by uncommenting the xinpu_calibrator line in the .xinitrc file in the squeezeuser's home directory. The output will be in a text file and you should copy this information into /etc/X11/xorg.conf.d/90-calibrator.conf.

Step 1: Install and Setup Arch Linux

In this project, we'll use Arch Linux. Arch is a great distribution on which to learn, and the Arch community is second to none when it comes to providing helpful and clear advice.

Install Arch Linux First, acquire the Raspberry Pi flavor of Arch Linux from here: http://downloads.raspberrypi.org/arch_latest
Prepare your media and copy the image file to your media as provided in the Raspberry Pi instructions here: http://elinux.org/RPi_Easy_SD_Card_Setup. There is a lot of good information on setting up Arch available through the Arch Wiki at http://wiki.archlinux.org, but a good place to start is the Arch Beginner's Guide available here: http://wiki.archlinux.org/index.php/Beginners%27_Guide. I've included the essential steps below.

I've assumed the following, that the non-root username is "squeezeuser", and that this user has sudo rights.

First, set your location by opening up the list of locales:
 # nano /etc/locale.gen

un-comment the appropriate locale for your country (e.g., en_US.UTF-8 UTF-8)
then generate the local information with:
 # locale-gen

Determine your timezone by finding the appropriate file in the timezone directory:
 # ls /usr/share/zoneinfo/
 # ls /usr/share/zoneinfo/America

Create a symbolic link to /etc/localtime
 # ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

Establish a hostname for your Pi:
 # echo squeezeboxPi > /etc/hostname

Set up a non-root user. Ensure that it is given permission for the audio hardware.
 # useradd -m -g users -G audio -s /bin/bash squeezeuser

Set a password for this user.
 # passwd squeezeuser

Setup autologin of squeezeuer by following this guide: http://wiki.archlinux.org/index.php/Automatic_login_to_virtual_console

Optional but highly recommended
Give sudo rights to non-root user by editing the sudoers file. Additional information can be found here: http://wiki.archlinux.org/index.php/Sudo
 # EDITOR=nano visudo
add the line:
squeezeuser ALL=(ALL) ALL

Update system
 # pacman -Syu

Reboot and login as non-root user:
 # reboot


**NOTE: From here on out, I will assume that you are logged in as the non-root user and that user has sudo rights. If your non-root user does not have sudo rights, simply use the su command to escalate your privileges where appropriate. Also note that building files from the Arch User Repository (AUR) often assumes that the user has sudo rights.**

Step 2: Audio and Video Setup


Install needed files for audio and video (and a few others)

$ sudo pacman -S alsa-utils xorg-server xorg-server-utils xorg-xinit xf86-video-fbdev xorg-twm xorg-xclock xterm sudo mlocate openbox
Audio should work out of the box. If it does not, make sure that your user (in the examples here, "squeezeuser") is part of the "audio" group. If not, add them with:
$ sudo usermod -aG audio squeezeuser

Also make sure that your PCM audio is not muted and that the volume is up:
$ alsamixer

And test that you have sound coming out
$ speaker-test -c 2
If none of that works, make sure that the appropriate module has been loaded:
$ lsmod | grep snd
You should see snd_bcm2835 as part of the output. If not try:
$ sudo modprobe snd_bcm2835
And then test again to see if the audio device has been loaded. If not, I recommend you post to the RaspberryPi Forum

Establish xorg config file for Mimo screen.

I've created an xorg config file that works for me. You can download it from here: 20-displaylink.conf
I've also placed a copy below. You may need to adjust the lines for the framebuffer device ("fbdev") and for the touchscreen. You can see what framebuffer devices you have by issuing the command:
$ ls /dev/fb*
And you can similarly see the touchscreen name with:
$ ls /dev/input/by-id/
Here is what my xorg config file looks like:
################ DisplayLink Stuff ###################                                                                                                                                                                                       
Section "Device"
       Identifier      "DisplayLinkDevice"
       Driver          "fbdev"
       BusID           "USB"               # needed to use multiple DisplayLink devices 
       Option          "fbdev" "/dev/fb1"  # change to whatever device you want to use
       Option          "ShadowFB" "off"
#      Option          "rotate" "CCW"      # uncomment for rotation
EndSection

Section "Monitor"
       Identifier      "DisplayLinkMonitor"
EndSection

Section "Screen"
       Identifier      "DisplayLinkScreen"
       Device          "DisplayLinkDevice"
       Monitor         "DisplayLinkMonitor"
#       DefaultDepth    16
EndSection

####################### TOUCHSCREEN ####################
Section "InputDevice"
        Identifier "touchscreen"
        Driver "evdev"
#        Option "Device" "/dev/input/event3"
        Option "Device" "/dev/input/by-id/usb-e2i_Technology__Inc._USB_Touchpanel_L000000000-event-if00
        Option "DeviceName" "touchscreen"
        Option "ReportingMode"  "Raw"
        Option "SendCoreEvents" "On"
        Option "Calibrate" "1"
        Option "InvertY"        "true"
#       Option "InvertX"        "true"
#       Option "MinX" "630"  
#       Option "MinY" "31000"  
#       Option "MaxX" "31700"  
#       Option "MaxY" "1000"  
EndSection

Section "ServerLayout" 
       Identifier      "default" 
       Screen 0        "DisplayLinkScreen" 0 0 
       InputDevice "touchscreen" "CorePointer"
EndSection

Step 3: Install Squeezelite and Jivelite

Get ready to use AUR

The Arch User Repository (AUR) is a great resource. The process is very simple. After setting up an appropriate environment, you download a tarball of source+scripts, untar it, then use "makepkg" to build a package that can be installed by pacman. Makepkg will handle grabbing dependencies if needed.

$ sudo pacman -S --needed base-devel
$ sudo pacman -S git wget
$ cd ~
$ mkdir builds
$ cd builds


Get squeezelite source and build AUR package
$ wget 
$ tar -xvzf squeezelite-git.tar.gz
$ cd squeezelite-git
$ makepkg -s

List the package built (it will look something like squeezelite-git-0.r78.gae7f3e0-1-armv6h.pkg.tar.xz)
$ ls *.tar.xz

Install the package using pacman
$ sudo pacman -U squeezelite-git-0.r78.gae7f3e0-1-armv6h.pkg.tar.xz

Download and edit the systemd service file. A copy is available here
You will need to edit the file to include the name of your non-root user, the MAC address of you Raspberry Pi and the name you want to give your player (optional).

You can determine the MAC address of your Raspberry Pi by issuing the following command:

$ ip link

You should look for something like "eth0", or "wlan0" if you are using a wireless adapter. The MAC address will be in the form of xx:xx:xx:xx:xx:xx and will use hexidecimal.

###################################################                                                                                                                                                                                          
# file located at /lib/systemd/system/squeezelite.service
# use "systemctl enable squeezelite.service to load
# based on a template from RPMFusion and R.G. Newbury from this thread:
# <a href="http://www.gossamer-threads.com/lists/mythtv/users/516650?search_string=mythbackend.service%20;#516650" rel="nofollow">  <a href="http://www.gossamer-threads.com/lists/mythtv/user..." rel="nofollow"> http://www.gossamer-threads.com/lists/mythtv/user...</a>>

#Usage: ./squeezelite [options] []
#             Connect to server server at given IP address, otherwise uses autodiscovery
#  -o    Specify output device, default "default"
#  -l                    List output devices
#  -a:     Specify ALSA buffer_time (ms) and period_count, default 20:4
#  -b :  Specify internal Stream and Output buffer sizes in Kbytes
#  -c ,  Restrict codecs those specified, otherwise loads all available codecs; known codecs: flac,pcm,mp3,ogg,aac
#  -d =      Set logging level, logs: all|slimproto|stream|decode|output, level: info|debug|sdebug
#  -f           Write debug to logfile
#  -m          Set mac address, format: ab:cd:ef:12:34:56
#  -n              Set the player name
#  -r              Max sample rate for output device, enables output device to be off when squeezelite is started
#  -z                    Daemonize
#  -t                    License terms

[Unit]
Description=Squeezelite Daemon

Requires=network.target sound.target
After=network.target sound.target

[Service]
Type=simple

# NOTE: using the "squeezeuser" user, NOT root.
User=squeezeuser

## note use your mac address as given by ifconfig and the name you wish to give your player
ExecStart=/usr/bin/squeezelite -m [xx:xx:xx:xx:xx:xx] -a 80 -n "Pi Player"

[Install]
WantedBy=multi-user.target
Note: if you get popping or other sound distortion, alter the squeezelite command line by upping the figure after "-a" to 160.

Get source for jivelite and install packages needed to build
Jivelite is the GUI frontend for the squeezelite player.

$ cd ~
$ cd build
$ git clone  https://code.google.com/p/jivelite/>
$ cd jivelite


********************************************
NOTE: earlier versions of this instructable included instructions to download a patch file so that make would look for several header files in locations appropriate for Arch Linux. Triode has altered the Jivelite code so that the patch is no longer needed and the next few instructions are obsolete. The instruction is maintained below for completeness. You do not need to download and patch the code.


The source files for Jivelite assume a Debian-type environment where include files are located in the path of /usr/local/include.
Because Arch uses the Redhat format, we need to patch the files so that the location of the lua.h file (and a few others) is adjusted to follow the Arch conventions. I have made a patch file that should work against the latest source and it can be downloaded here with the command:
$ wget <a href="https://raw.github.com/ggalt/RaspberryArch/master/fix_lua_includes.patch" rel="nofollow">  https://raw.github.com/ggalt/RaspberryArch/master...>

Patch the git repository by first checking the patch:
$ git apply --check fix_lua_includes.patch

Then apply the patch:
$ git am --signoff fix_lua_includes.patch
(NOTE: you could issue “git apply fix_lua_includes.patch”, but using “git am --signoff” documents your application of the patch in case you later want to modify your branch).

NOTE: end of obsolete section
*****************************************************************************

Before compiling, add the libraries needed by jivelite:
$ sudo pacman -S luajit sdl sdl_image sdl_ttf sdl_gfx
Make the jivelite binary using the PREFIX define we inserted with the patch file:
$ make PREFIX=/usr
Jivelite should now be in a "bin" file in the directory where you built jivelite.

Create .xinitrc file to start X

To start openbox and the jivelite client, you will need to prepare an .xinitrc file that establishes your environment. An example of what I used can be found at my github page. You will need to make sure that the last line is correct for your path to the jivelite binary file.


Make the .xinitrc file executable.

$ chmod +x .xinitrc

Modify Openbox Configuration

Openbox relies upon a simple XML configuration file. For our touchscreen we don't want to show any of the standard window decorations that a normal window manager shows so we need to make a slight edit to this file.

First create a directory in the squeezeuser's home director call ".config". Please NOTE the "." before the word "config" and make sure it is there. This will make this directory a hidden directory and it is where Openbox will look for the configuration file. Next, make a subdirectory within the ".config" directory entitled "openbox".

$ mkdir .config 
$ mkdir .config/openbox

Next, copy the standard Openbox configuration file into this directory.

$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/

Finally edit the rc.xml file to add the following lines near the bottom:

$ nano ~/.config/openbox/rc.xml
<!-- match all windows and remove their decorations -->
	<application class="*">
	  <decor>no</decor>
	</application>

This should be inserted just before the end of the document right after the lines that read:

# end of the example<br>-->

And right before the very end of the document, which ends with:

</applications>
</openbox config>

so the full end of the document should be:

<br># end of the example<br>--><br>
<!-- match all windows and remove their decorations --><br>     <application class="*"><br>        <decor>no</decor><br>      </application><br></applications><br></openbox config><br>

Step 4: Prepare the Cabinet

To install the Raspberry Pi in the wall, I used a circuit breaker cabinet from the hardware store. It is the correct depth for a wall cavity and -- assuming you get one that has a cover plate with a flange to sit against the drywall (be careful, I didn't!!) -- it looks reasonably profession.

Layout the Location of Parts
Even though the cabinet seems roomy, make sure you have room for everything in there and that there isn't going to be a problem with airflow. The parts that ended up in my cabinet include the Raspberry Pi, a Lepai amplifier, a Rosewill 7-port powered USB hub, a small box to hold the 120-volt power connection and wall warts for both the USB hub and the amplifier. You can quickly run out of space, so carefully consider placement and test, test test!!

Once you have laid out the placement of the parts, drill and tap holes so you can attach the various parts. The amp I chose had convenient mounting holes as did the case for the Raspberry Pi. Always make sure to clean and debur your holes and ensure that any metal shavings are removed from the interior of the case.

I also drilled a set of holes on the side of the circuit breaker cabinet so it could be attached to the stud in the wall.

The amp and the powered USB hub both require full line voltage (120 AC in the US), so pull power from a nearby socket or wall switch. Make sure to follow your local code to attach the wires properly. Install a small box so that you can put in a 2-socket outlet.

Sequencing
Installation squence is important here. Since I was mounting the little Mimo screen on the wall outside of the circuit breaker cabinet, I needed to make sure that the USB cable was pulled through the wall and the screen was mounted BEFORE the circuit breaker cabinet was attached to the wall. Because the mount points for the Mimo screen pull the screen tight to the wall, the sequence I used was:
  1. Locate and drill holes for the Mimo screen
  2. Pull the USB cable through the wall
  3. Plug the USB cable into the Mimo screen
  4. Mount the Mimo screen on the wall using the appropriately sized screws and washers
  5. Position the circuit breaker cabinet near the opening
  6. Pull the USB cable into the circuit breaker cabinet
  7. Pull the speaker cables into the circuit breaker cabinet
  8. Pull the Ethernet cable into the circuit breaker cabinet
  9. Pull the line-voltage power cable into the circuit breaker cabinet and attach per code (I used Romex cable and standard screw-down compression attachments).
  10. Insert the circuit breaker cabinet in the wall and attach to stud.

Once you have the circuit breaker cabinet in the wall, you can mount all of your parts and start running cables.


Step 5: Finishing Up

Run the appropriate cables for your setup. Proper cable management is important as you have limited space, and while the Raspberry Pi doesn't put out much heat, together with the amp you want to make sure you have reasonable airflow.

During the construction of the room in which the player was being installed, I had run speakerwire and an Ethernet cable to the location where the circuit breaker cabinet was located. After the room was finished, I cut holes in the ceiling to insert the in-ceiling speakers. I used these JBL speakers that were reasonably priced and good quality (don't pay the price listed on the JBL site, they are much cheaper elsewhere).

Test you speaker connections before you insert the speakers in the ceiling. They will come back out if you work at it, but it can be difficult.

Once you have everything working, close up the circuit breaker cabinet. In my circuit breaker cabinet, the front plate contains small breakouts for each circuit breaker. If you need to get access to the interior of the cabinet to adjust the volume or to otherwise work with the other parts, you would not be able to reach through any of the holes. Instead, I cut out the portion of the plate (behind the door) that holds the circuit breakers. This gives a reasonable sized opening so you can easily access the interior of the circuit breaker cabinet. Make sure you clean up your cuts and debur the opening.

I hope you enjoy this project.

George Galt
<p>HI. Nice neat end product. However, am I right in thinking that if one wanted to avoid the expense of the display the linked to files would be enough to set up the RPi as a network controlled head-unit and control could be achieved through a smart phone app?</p><p>Could you maybe add info on how to achive this please?</p>
<p>Jim: Sorry I must have missed your original question. I agree with @etiolate that this is a relatively easy thing to accomplish. In addition to the tutorial @etiolate mentioned, you should also look at the piCorePlayer software. This is a complete headless squeezelite based system that is build on top of TinyCore Linux. The advantage is that it is very fast and because it loads the entire running image into RAM there are no open files if the power to your rPi dies (a big no-no for SD cards). It runs a simple web interface for updating and maintaining the image. Take a look here: </p><p><a href="https://sites.google.com/site/picoreplayer/home" rel="nofollow">https://sites.google.com/site/picoreplayer/home</a></p>
<p>What you're looking to do is exactly the setup I currently have at home. I have a headless rPi in my ceiling hooked up to an amp which power in-ceiling speakers. I control the rPi via my smartphone using Squeezer (https://play.google.com/store/apps/details?id=uk.org.ngo.squeezer&amp;hl=en). </p><p>I recommend the following tutorial for a headless rPi squeezebox client: </p><p><a href="http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-installing-squeezelite-player-on-raspbian/." rel="nofollow">http://www.gerrelt.nl/RaspberryPi/wordpress/tutori...</a></p><p>Remember: you need a squeezebox server installed and running somewhere on your network. The rPi (in these instructables) are only acting as clients, and they need a server to stream the media from.</p>
<p>Thanks for posting this. Do you know if this setup will play napster/rhapsody and or spotify?</p>
<p>I haven't tried, but I believe people have had success using the squeezelite client (used here) and Spotify. There isn't really anything special about squeezelite on this setup, so if it works elsewhere, it should work here. Sorry I can't be of more help.</p>
<p>Thanks for your reply. I'm not sure why i mentioned spotify as it is Napster that is causing the problem with my current setup (a selection of squeezebox duets) due to their new encryption type launched earlier this year. You couldnt give it a try could you? There's a 30day free trial. </p>
<p>If I can find time, I'll give it a try. I'll let you know if I find anything.</p>
<p>Hi George,</p><p>im very impressed of your work. I`ve got not much experience in linux so I decided to download your image. I`m using a rpi2 with an adafruit HDMI 5&quot; 800X480 DISPLAY BACKPACK - WITH TOUCHSCREEN.</p><p>When I power on my pi The Arch just begins to install and it errors out at &quot;Please also check the log file at /etc/X11/xorg.conf.d/20-displaylink.conf for additional information&quot;. This error repeat every 20 sec. Do you know the reason why ? </p><p>Best regards</p><p>Christian</p>
<p>nothing shows up on the GNU nano .-. what did I do wrong?</p>
<p>I'm not sure I understand your question. Do you mean that nothing showed up in the nano editor when you tried to edit a file? If that is the issue, please let me know what the full command was that you issued. If you mean something else, please explain further.</p>
<p>This is great, but as a novice I have no idea how to get this to work with the stuff I have</p><p>I downloaded the file but get the error about the xorg, I plugged in my TV into HDMI and I want to get a touch screen, but only about 5inch at biggest.</p><p>I also have a Durio Dac in the I2S and can't get it to work at all.</p><p>Any help you can give me to get this to work on the TV to start with and to use the Durio Dac</p>
<p>@KeithA2:</p><p>The image file assumes that you are using one of two touchscreen displays that plug in through the USB port, not the HDMI or RCA ports. If you want to use the HDMI port with a separate touchscreen interface (presumably USB), you may have to set up an Xorg.conf file for your display and touchscreen -- though possibly not as modern Xorg installations are pretty good at detecting both of these items -- and you will probably want to use a video driver that has more capabilities than the framebuffer driver used in this instructable (at least the VESA driver that will give you somewhat better response). </p><p>As for the screen size, the relevant measure is the resolution of the screen, not its dimensions. This instructable uses a template designed for an 800x480 display. If that matches your resolution (or if you have a higher resolution), the template will work. If your resolution is lower, there are other templates that come with JiveLite that might work for you, but you will have to match them to your display. I'd suggest looking on the JiveLite site for clues.</p><p>Finally, I'm not familiar with the Durio Dac. The squeezelite audio player can list the available audio devices and you can adjust the line in the service file that launches the squeezelite player (search this instructable for &quot;squeezelite.service&quot;) and insert the proper information in the line that launches the squeezelite player using the &quot;-o&quot; switch.</p>
<p>Hi George,</p><p>I love this instructable? I decided to just download your image. When I power on my pi I don't get the option to change anything. The Arch just begins to install and it errors out at &quot;Please also check the log file at /etc/X11/xorg.conf.d/20-displaylink.conf for additional information&quot;. Can you please tell me what I'am doing wrong. Thanks</p>
@BrentK2:<br>What hardware are you using (both Raspberry Pi version and which touchscreen)? The image is VERY rudimentary and would only work with the correct hardware. If your hardware differs, you should still have a running Arch system but no graphics. You would then have to configure an Xorg.conf file to match your screen. Let me know what your hardware setup is and I will see if I can help.
<p>Thank you for the reply!</p><p>I'am running the Raspberry Pi model B and a basic 7 inch(RCA) monitor. It looks like I would need an understanding of how to configure the Xorg.config file. Any help would be great.</p>
<p>@BrentK2:</p><p>This project was very specific for a particular type of monitor that connects using a USB port. If you are connecting using the HDMI or RCA (composite) port, you would need to configure both an X driver for your monitor and a touchscreen driver for your screen (if it is a touchscreen). It sounds like you may be using a video monitor that plugs in through the RCA (composite) jack. My guess is that the basic Arch distribution framebuffer driver should work, though you will want to look over the Raspberry Pi forums to determine what (if anything) you need for a Xorg.conf file.</p><p>You should be aware that the Jivelite program used in this project uses a 800X460 template, which is NOT the resolution of a video monitor, so you will not see the screen that is shown in the video above. I'm also not sure if the SDL module (needed for Jivelite) will output to the composite jack. If you look at NickRout's comments below, he points to a very inexpensive HDMI touchscreen that you will probably have better luck with.</p><p>Let me know if I can be of further help.</p><p>George</p>
<p>Hi George,</p><p> Great Instructable!! I have a question about that amp. How did you determine the best volume to set the amp to? I have been bumping into this concern lately with one of my own projects. Do you use the amps hardware volume control or the players digital? </p><p>I assume with your project that you go with the digital since your hardware knob is buried in the wall. But just curious how you determined what is in essence a permanent volume setting?</p>
<p>@JasonB10</p><p>The amp's volume control is still accessible, just not convenient, so I use the volume control on the application that is running on the RaspberryPi. Since Linux also has its own volume controls (alsa), I first turn the volume all the way up on the OS using alsamixer and leave it there. I then turn the volume all the way up through the Jivelite application (which controls Squeezelite, the software decoding and playing the music). I then use the volume knob on the amp and set it to the maximum volume I want the system to deliver (use something loud for the test case). That way the software volume controls in Jivelite are limited to something that won't blow the speakers.</p><p>If, for some reason, you have to install and cover the amp's volume knob before you can really test the system, I'd then simply set the amp's volume knob all the way up (or as high as you feel comfortable), and then when you have your system installed, connect to the RaspberryPi via SSH and set a maximum volume using alsamixer (which is a console app and will run without an X server) to set the maximum volume the system can deliver. Since it takes a little effort to get to alsamixer, my guess is that most normal users won't get to it and your speakers will be safe.</p><p>George</p>
Hi George,<br> Thank you very much for that info. I am very excited to work on this as I am looking to tie it into my home automation system but also have a nice audio player for each room. Killer instructable, i have come back to it many times for the jivelite touch screen stuff and now for the audio portion. Keep in touch, would love to see what else you are working on
<p>Thanks! I'm glad you are finding it useful. FYI, if you get stuck, look in some of the notes below. I've posted an image of a working system to SourceForge. </p><p>Also, note that there has been a somewhat recent update to Xorg to have the X run as non-root (through systemd). The elegant thing to do would be to restructure how I start the X so that it worked in the new default behavior, but I'm short on time. To fix the issue, you **may** have to create a file at /etc/X11/Xwrapper.conf that contains the following lines:</p><blockquote>## /etc/X11/Xwrapper.config</blockquote><blockquote>## force execution as root.</blockquote><blockquote>needs_root_rights = yes</blockquote><p>Currently, I'm trying to get <a href="https://www.adafruit.com/products/1983" rel="nofollow">this little screen</a> from Adafruit working to make a smaller package, but it is a touch slog as I'm having to build my own kernel for Arch Linux. If I succeed, I'll post an Instructable on it.</p><p>Let me know how the build goes and if you have any problems.</p><p>George</p>
<p>Hi George</p><p>I'd follow the instuctions, and squeezelite is running but; </p><p>jivelite could not find the USB-Mimo monitor, the output is;</p><p>JiveLite 0.1.0<br>20140707 19:15:17.166 ERROR jivelite.ui.draw - jiveL_initSDL:198 SDL_Init(V|T|A): No available video device</p><p>What do I wrong?</p><p>I'd follow every 'line' step-by-step, but I have only a green screen on the Mimo.</p><p>I tested Mimo on a Win-PC, before, when I started this workarround.</p>
<p>Henk55: What is the output from &quot;lsusb&quot; ? Also, can you list the framebuffer devices in /dev (it should look something like /dev/fb0 /dev/fb1 ....). My recollection is that there was an issue with the framebuffer Xorg driver a while back, and you may have been caught by that, but if you can get me the above information, I'll see what I can do.</p>
<p>hello,</p><p>i have the some problem/error.<br>User &quot;squeezeuser&quot; couldn't start jivelite :-/<br>User &quot;root&quot; works fine. <br>Please help.</p>
<p>@SonkeR, where do you see this error message and what exactly is the message? What permissions does the squeezeuser have (cat /etc/group | grep squeezeuser)? My permissions look like this &quot;audio:x:92:squeezeuser&quot;). Also, what video drivers do you have installed (try sudo pacman -Qet | grep xf86)? Finally, what is the output of the commands &quot;lsusb&quot; and &quot;ls /dev/fb*&quot;?</p>
<p>User squeezebox executing jivelite:</p><p>JiveLite 0.1.0<br>20141125 17:51:39.372 INFO jivelite - JiveMain.lua:267 JiveLite version 0.1.0<br>20141125 17:51:39.466 ERROR jivelite.ui.draw - jiveL_initSDL:198 SDL_Init(V|T|A): No available video device</p><p>User root works fine.<br><br>Some information about my system:<br>&quot;cat /etc/group | grep squeezeuser&quot; -&gt; audio:x:92:squeezeuser<br>&quot;pacman -Qet | grep xf86&quot; -&gt; xf86-video-fbdev 0.4.4-3<br><br>&quot;lsusb&quot; -&gt;<br>Bus 001 Device 005: ID 1241:1503 Belkin Keyboard<br>Bus 001 Device 004: ID 05a4:9881 Ortek Technology, Inc. IR receiver [VRC-1100 Vista MCE Remote Control]<br>Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter<br>Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. SMC9512/9514 USB Hub<br>Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub</p><p>&quot;ls /dev/fb*&quot; -&gt; /dev/fb0</p><p>Any idea?</p>
<p>@SonkerR:</p><p>Look above to the note I posted to @henk55. I've created an image file that should work for you -- with a few modifications. Good luck.</p>
<p>You should see your Displaylink device in the list of usb devices. It should look something like: </p><p>Bus 001 Device 007: ID 17e9:0335 DisplayLink</p><p>and you should see more than one framebuffer device (at least I've always seen 2 devices). I believe /dev/fb0 may the composite out (TV) device. I have the vesa driver also loaded as well as the framebuffer driver (I've always loaded it because I start off using the HDMI out and so I need the driver). I'm not sure if having the vesa driver may do something to create more than one framebuffer device, but that may be the difference between our setups. </p><p>I would try 2 things. First, change the line in the Xorg config file (20-displaylink.conf) from Option &quot;fbdev&quot; &quot;/dev/fb1&quot; to Option &quot;fbdev&quot; &quot;/dev/fb0&quot; to see if /dev/fb0 is really you displaylink device. Since you aren't seeing a displaylink device in the list of usb devices, I doubt this will work.</p><p>Second, I'd try installing the vesa Xorg driver (pacman -S xf86-video-vesa) to see if this gives you any change. </p><p>I'm not sure why the displaylink device isn't showing in your list of usb devices. I know from working with some people with the Mimo 720S that the usb hub that Mimo used in that screen was very flaky. It's possible that if your screen is from a different batch, that Mimo used the flaky usb hubs in the 720f as well -- sorry! </p><p>One other thing to check is the permissions for the /dev/fb0 device. It should look like this: </p><p>crw-rw---- 1 root video 29, 0 Dec 31 1969 /dev/fb0</p><p>if the device does not have &quot;video&quot; as the group permission, it may be that you will need to adjust the permissions on your video devices. This seems like it might be the case since you can run Jivelite on the display if you run it as root.</p>
<p>I placed the project in the &quot;It won't work Box&quot; I've spend over 100+ hours to got it work, so sad.</p><p>But sometimes I had something good on the screen (only on HDMI output!)</p><p>and the touch-screen will never works here.</p><p>I' have many other things todo, and this project cost me to much to go further.</p><p>The only try I would/could do if you share the working image-file to us,</p><p>whe (and I) have so many tries and error.</p>
<p>@henk55:</p><p>I'm sorry this project hasn't worked for you and I'm sorry that you never responded to my request for more information. I'd be happy to try to help if possible. I've never succeeded at making an image file that works, but I'll give it another try to see what I can do.</p><p>George</p>
<p>Please @ggait try this one USB Image Tool from Alex; alexpage.de</p><p>Before that shutdown/switchoff the Rasp. Pi and place the SD-card in an Card-reader and just follow the steps Alex explained..</p><p>This one from Alex works all the times for me (Linux-image).</p><p>Thanks ahead.</p>
<p>@henk55: I've created an image. You can download it here: </p><p><a href="https://sourceforge.net/projects/piarchsqueezelitejivelite/" rel="nofollow">https://sourceforge.net/projects/piarchsqueezelite...</a></p><p>The user is &quot;squeezeuser&quot; with a password of &quot;squeeze&quot;. The root user's password is &quot;root&quot;. This is a fresh install and should be up to date. One slight change from the directions above, my Mimo screen died, so I replaced it with a Lilliput screen. There are Xorg config files for both in the home directory of the squeezeuser, simply copy the correct on to /etc/X11/xorg.conf.d/20-displaylink.conf. You should also look at the .xinitrc file in the squeezeuser's home directory. If you comment out the line about xinput_calibrator, it will allow you to calibrate the touchscreen and will copy the correct information to a text file in the user's home directory. You must then move that file to /etc/X11/xorg.conf.d/99-calibrator.conf.</p>
<p>Hi George, recognise you from the mythtv mailing list. I remember your efforts with mythsqueeze. </p><p>I love this instructable, particularly as I wasn't previously aware of jivelite. Cool stuff.</p><p>I intend to have a couple of touch screens installed in the wall when our house is repaired (earthquake victims so every wall lining off at present!) and also get this working in my BMW with a pibus (http://pibus.info ) - the BM will require me to get right into the keyboard control of jivelite, as there is no touchscreen.</p><p>Very inspiring, many thanks.</p>
<p>Hey Nick! I hope all is well in New Zealand. This isn't leftover damage from the Christ Church earthquake from a few years back, is it? I've found that the Mimo touchscreen isn't cheap anymore, but take a look at <a href="http://hardkernel.com/main/products/prdt_info.php?g_code=G140383714860" rel="nofollow">ODROID-VU</a> from the HardKernel site. It's a 9&quot; HDMI multi-touch capacitive display for about $120US. It ships from South Korea, so it will probably get to you faster than me. I've also used the Odroid U3 from that site as a Raspberry Pi substitute. It uses the processor from a Samsung Galaxy 3 (I believe) and is much quicker than the Pi, though about $30US more. If you got that route, let me know as there are a few quirks to getting Squeezelite and Jivelite working under Arch Linux on the Odroid.</p>
<p>Yeah we are still renting and paying mortgage waiting on the insurance company and their builders to fix the house... </p><p>I already have the pi's and have been looking at this sort of touch screen </p><p><a href="http://www.dx.com/p/7-digital-touch-screen-drive-board-hdmi-vga-2av-for-raspberry-pcduino-cubieboard-318884" rel="nofollow">http://www.dx.com/p/7-digital-touch-screen-drive-b...</a> - cheap enough to take a punt on I guess. Although having now clicked on the Odroid VU link, that does look very nice, tidy too.</p><p>So nice to hear from you, cheers, Nick.</p>
<p>Nick:</p><p>That's a nice screen! I'll have to look into use one of those next time. FYI, I've written a 1024x768 screen for JiveLite. It's based on the joggler screen (which is optimized for touch), but adds a small clock in the lower-right. It could easily be adapted to the 1024x600 resolution of these screens. Let me know if you want the code. It's a bit ugly, but it works.</p>
Hi George. Thanks very much for the nice guide. Did you suffer from clicks and pops from the standard pi audio? I did and read elsewhere that you had to resort to a USB DAC for any sort of reasonable sound. <br>Cheers <br>Peter
Peter: <br>There is an occasional slight pop, but by adjusting the ALSA buffers available to the squeezelite client (the &quot;-a 80&quot; portion of the command line contained in the squeezelite.service file) seems to minimize it. On one of my Raspberry Pis I've had to adjust it to -a 160 to get reliable sound. But I'm not an audiophile, so perhaps my ears aren't as attuned to the issue. <br>George

About This Instructable

94,830views

97favorites

More by ggalt:Wall Mounted SqueezePlayer with Raspberry Pi 
Add instructable to: