Press "Enter" to skip to content

Logitech Media Server and FreeBSD/FreeNAS

There are 3 ways to install Logitech Media Server on you FreeBSD computer: ports, packages and DIY (yes … you have to compile everything)

Package built by me (beta)

Ports are not constantly updated so I decided to create an installer which is easy to maintain for my personal use.

This will allow you to 1- Install Logitech Media Server, 2- Uninstall Logitech Media Server, 3- Update LMS whenever I’ll publish an updated version (works only if you have installed LMS with this software)

It will install Logitechmediaserver 7.9.3 updated at the latest commit (refer to the date written in the changelog) with these included binaries:

  • SoX with DSD support
  • Flac 1.3.3
  • Faad2 2.8.8
  • Wavpack 4.80.0

Instructions (must be executed as root!)
pkg install curl
curl -o /usr/local/bin/lms_installer
chmod +x /usr/local/bin/lms_installer

Please, this software is still in beta, I really do need some feedback from you all! If something is not working as expected leave a comment below!

Using this software you are agreeing to its EULA.

For those of you who installed lms_installer when it was in ALPHA please delete it and reinstall it.

Changelog ALPHA
(ALPHA) 18/10/2019. slimserver commit 8a9e9fb, vendor commit 8b05092. First release of installer software, tested on FreeBSD/FreeNAS >= 11	 	 
(ALPHA) 22/10/2019. installer update to fix some bugs
(ALPHA) 14/12/2019. installer update to support FreeBSD 12.1-RELEASE
Changelog Installer
(BETA) 09/01/2020. First beta released. Installer can now auto-update itself
(BETA) 24/01/2020. Software completely rewritten in c++. Added option to choose what version of lms install.
Changelog LMS
(BETA) 09/01/2020. slimserver-vendor commit 8b05092. slimserver commit 8d85ddd
(BETA) 21/01/2020 updated to LMS 7.9.3 slimserver commit 4f7c9f49
(STABLE-7.9.3) 24/01/2020. updated to version 1579448956
(BETA-8.0.0) 24/01/2020. added version 1579786032
(STABLE-7.9.3) 20/03/2020. updated to version 1582867832
(BETA-8.0.0) 20/03/2020. updated to version 1584422335

Installing LMS from my installer script means that you are accepting Logitechmediaserver license -> License_eng


Just type:

pkg install portmaster
portmaster audio/logitechmediaserver

IMPORTANT: while configuring the options of all softwares you are going to install, when logitechmediaserver options will be prompted make sure that “TEST” will NOT be ticked.

Note that the last update of this port was at the 11th July 2017.

DIY, aka: compile everything from source

Before starting this is what you need:

  • libtime.a
  • libpatience.a
  • Knowledges about what are jails (I will use CBSD to manage them)

Let’s start creating a jail that we will use to build everything:

cbsd jconstruct-tui

In “pkglist” insert manually:

unzip bash gmake rsync nasm wget libgd gcc perl5-5.24.1 automake libtool

Enter in the jail:

cbsd jstart build
cbsd jlogin build

I’m going to use /tmp to download everything and build lms:

cd /tmp
unzip 7*
tar xjf l*

Let’s start compiling:

cd slimserver-vendor-public-7.9/CPAN
./ -t | tee /tmp/build.log
cd /tmp/logitechmediaserver-7.9.1-1489743085/CPAN/arch/5.24
rm -rf 5.1* && rm -rf 5.8 && rm -rf 5.22 && rm -rf 5.20
cp -Rp /tmp/slimserver-vendor-public-7.9/CPAN/build/arch/5.24/amd64-freebsd-thread-multi .
rm -rf x*

cd /tmp
tar cf FreeBSD-lms-7.9.1.tar logitechmediaserver-7.9.1-1489743085

tar xf f*
cd flac-1.3.2
autoreconf -i
./configure --enable-static --disable-shared

cd /tmp
cd faad2-2.7
./configure --enable-static --disable-shared

cd /tmp
tar xf wavpack-5.1.0.tar.bz2
cd wavpack-5.1.0
autoreconf -i
./configure --enable-static --disable-shared

Now we have to exit from this jail and move everything we have just compiled to a new jail when logitechmediaserver will run.

First of all exit from the build jail:


Create a new jail like we did before including the following packages:

wget perl5-5.24.1 libiconv

cbsd jstart lms
mv /usr/jails/jails-data/build-data/tmp/FreeBSD-lms-7.9.1.tar /usr/jails/jails-data/lms-data/tmp
cbsd jlogin lms

Now I’m going to copy lms and the binaries we have compile above in the “lms” jail. I will include the modified version of SoX able to convert in DSD; for further info: Logitechmediaserver, C-3PO and PCM to DSD conversion

cd /tmp
tar xf F*
pw groupadd -n lms -g 20000
pw useradd -n lms -u 20000 -g lms -s /usr/sbin/nologin -c "Logitech Media Server" -d /nonexistent
mkdir /usr/local/lms
mv logitechmediaserver-7.9.1-1489743085 /usr/local/lms/
cd /usr/local/lms
mv logitechmediaserver-7.9.1-1489743085/* /usr/local/lms
rmdir logitechmediaserver-7.9.1-1489743085
rm -rf Bin/a* && rm -rf Bin/i* && rm -rf Bin/p* && rm -rf Bin/s* && rm -rf Bin/x*
cd Bin
mv sox-FreeBSD sox


Move flac, faad, wavpack binaries into the Bin folder of LMS:

mv /usr/jails/jails-data/build-data/tmp/flac-1.3.2/src/flac/flac /usr/jails/jails-data/lms-data/usr/local/lms/Bin/
mv /usr/jails/jails-data/build-data/tmp/faad2-2.7/frontend/faad /usr/jails/jails-data/lms-data/usr/local/lms/Bin/
mv /usr/jails/jails-data/build-data/tmp/wavpack-5.1.0/cli/wvunpack /usr/jails/jails-data/lms-data/usr/local/lms/Bin/

Back into lms jail:

cbsd jlogin lms
chown -R lms:lms /usr/local/lms
chmod -R 755 /usr/local/lms/Bin
mkdir /var/log/lms
mkdir /var/db/lms
mkdir /var/db/lms/cache
mkdir /var/db/lms/prefs
mkdir /var/db/lms/playlists
chown -R lms:lms /var/db/lms
chown -R lms:lms /var/log/lms
cd /etc/rc.d
chmod 555 lms
echo 'lms_enable="YES"' >> /etc/rc.conf && echo 'lms_logdir="/var/log/lms"' >> /etc/rc.conf && echo 'lms_cachedir="/var/db/lms/cache"' >> /etc/rc.conf && echo 'lms_prefsdir="/var/db/lms/prefs"' >> /etc/rc.conf && echo 'lms_playlistdir="/var/db/lms/playlists"' >> /etc/rc.conf


Now restart the jail and Logitech Media Server will start at boot (if you are lucky 😉 )

cbsd jstop lms
cbsd jstart lms


  1. Wayne Wayne 6 Gennaio 2018

    Many thanks for this!

    I couldn’t get the port to install no matter what, so your pkg has been a big help!

    Any chance we can have an update to the latest 7.9.1 please?


    • Simone Simone 6 Gennaio 2018

      Hi Wayne! At the moment I am quite busy but I think that within the end of January I can update the packages, be patient and thanks again!

      • Wayne Wayne 6 Gennaio 2018

        No worries there is no rush. 7.9.0 is working very nicely at the moment. Again thanks very much for doing this! Much appreciated 🙂

        • Simone Simone 6 Gennaio 2018

          Well, it seems that you are quite lucky! Try to pkg update and pkg upgrade and tell me if logitechmediaserver will upgrade to 7.9.1. I tried on my VM and it works!

          • Wayne Wayne 6 Gennaio 2018

            Yes pkg upgrade is done quick and easy. I’ll do some proper testing tomorrow and I find anything strange I’ll report back.

            Thanks a lot!!

  2. Aljosa Aljosa 11 Febbraio 2018

    Hi, I am gettin error when try to LMS from ports

    fetch: size of remote file is not known

    Logitech-slimserver-7.9.0.g2016.09.30-c835a1f_ 179 MB 6178 kBps 00m30s

    => Fetched file size mismatch (expected 187923230, actual 187921541)

    => Trying next site

    => Attempting to fetch

    fetch: Not Found

    => Couldn’t fetch it – please try to retrieve this

    => port manually into /usr/ports/distfiles// and try again.

    *** Error code 1


    make[1]: stopped in /usr/ports/audio/logitechmediaserver

    *** Error code 1


    make: stopped in /usr/ports/audio/logitechmediaserver

    ===>>> make build failed for audio/logitechmediaserver

    ===>>> Aborting update

    ===>>> You can restart from the point of failure with this command line:

    portmaster audio/logitechmediaserver audio/faad audio/mac devel/yasm audio/sox audio/flac audio/libogg audio/gsm audio/lame audio/libao audio/libid3tag audio/libmad audio/libsndfile audio/libvorbis audio/opusfile audio/opus devel/libltdl

    This command has been saved to /tmp/portmasterfail.txt

    root@LMS:/ #

    any idea how to solve this?

    I did try to do pkg upgrade.

    • Simone Simone 11 Febbraio 2018

      It seems that your port list is not updated. You are using the port for lms 7.9.0 but there is already a port for 7.9.1 Try to First update the ports list.

  3. dwhacks dwhacks 28 Febbraio 2018

    I used your repository to install in a FreeNAS jail. I had to do:
    echo ‘logitechmediaserver_enable=”YES”‘ >> /etc/rc.conf
    service logitechmediaserver start

    To get it to start, and it seems to be working now.

  4. Giorgio Giorgio 15 Marzo 2018

    Many thanks for this!
    is it possible to install it on version – Pilingitam (revisione 4374) ?

    • Simone Simone 15 Marzo 2018

      I think you are using NAS4Free. I’ve never tested on this s.o. but as long it uses pkg (like FreeBSD) as package manager you should be able to install everything. Just try and let me know!

  5. Giorgio Giorgio 15 Marzo 2018

    Sorry for my English
    I’ve tried but it gives me a version error (use version 11)
    I tried with a virtual Nas4free version 11 and it works but I installed the 10 on my nas.
    If you want, I can send you the error. I install a virtual Nas4free with the same version of my real

  6. Giorgio Giorgio 15 Marzo 2018

    This is the error

    pkg: wrong architecture: freebsd:11:x86:64 instead of FreeBSD:10:amd64
    pkg: repository audiodigitale contains packages with wrong ABI: freebsd:11:x86:64

  7. Giorgio Giorgio 15 Marzo 2018

    setenv ABI freebsd:11:x86:64

    • Simone Simone 15 Marzo 2018

      Perfect 😉 Is everything working?

  8. AA AA 26 Marzo 2018

    Thanks for the great tips and instructions!

    Just a note that you can make your life easier if you build against a static Perl installation that is not dependent on ports changes. Just download Perl sources from CPAN ( and install into alternate location, e.g.:
    cd perl-5.24.3
    ./Configure -des -Dprefix=/usr/home/squeezeboxserver/perl-5.24.3-LMS -Dusethreads
    make test
    make install-strip

    Now you can build LMS using this alternate version of Perl with “./ -t -p /home/squeezeboxserver/perl-5.24.3-LMS/bin/perl”, and next time you upgrade FreeBSD release, you just need to re-build Perl 5.23.4 as above, and you are good to go! Remember to update the interpreter command in the start-up script and the perl executable in to /home/squeezeboxserver/perl-5.24.3-LMS/bin/perl.

    BTW, I had a problem building latest CPAN modules, and had to make a change to the script (comment out one patch line:
    #patch -p0 < ../../icu58_patches/digitlst.cpp.patch). You might want to uncomment build IO::Socket::SSL as well if you are planning to ever use Spotty plugin.

    • Simone Simone 26 Marzo 2018

      Thanks for the tips, really useful!

  9. ERIK ERIK 17 Agosto 2018

    Thanks for all of the information. I installed via pkg but run into an error when I try to start the service:
    Starting logitechmediaserver
    The following modules failed to load: DBI EV XML::Parser::Expat JSON::XS Digest::SHA1 YAML::XS Sub::Name

    Any assistance would be greatly appreciated!


    • Simone Simone 18 Agosto 2018

      Mmm, I have an idea. When you install a package pkg tries to find the dependencies from all the mirrors, if you have multiple mirrors he will choose the one with the last version ofc. Maybe (?) the compiled version of LMS in my repo has some problem with the last version of perl. You can try to uninstall the packages and dependencies that you have installed, comment the link to the official repository and leave only my repository, try to install LMS and only after that restore the the FreeBSD.conf file.
      I will recompile and update every package as soon as possibl, but for the moment try to do this and let me know.


        I completely removed the FreeBSD repository from the file. I then installed LMS and it is running. I did receive an error when I started the service but I forgot to capture the error before deploying the unit. I will try to grab it next time I am connected to that machine and post it back here. I believe it was a SSL error but am not 100% positive. Thanks for the info on the repo solution!

  10. emi emi 10 Novembre 2019

    > Ports are not constantly updated so I decided to create an installer script which is easy to maintain for my personal use.

    Why not just update the Ports instead? Then everybody will benefit from your work without having to go outside the package manager 🙂

    • Simone Simone 8 Dicembre 2019

      Because with ports you have to compile everything. It take hours and it’s not user friendly at all. This is a quick and functional solution that is way more convenient that I created for myself and shared. And anyone can benefit from it anyway!

  11. Erik Sorensen Erik Sorensen 8 Febbraio 2020

    I installed your package in Freenas 11.2 u7 and had no problems,
    Thank you

  12. Thomas Thomas 12 Febbraio 2020

    installed no problems and i can see the service is running but i cant access the server / webinterface port 9000
    any ideas ?

    • Simone Simone 13 Febbraio 2020

      Are you running LMS in a jail? If so you might need to add a firewall rule to enable port forwarding for port 9000. Let me know!

  13. Thomas Thomas 13 Febbraio 2020

    Rule on my PFSense or in freenas ?
    if PFSense then i dont understand why
    and i cant find any firewallrules in Freenas 🙂

    • Simone Simone 14 Febbraio 2020

      FreeNAS. Have you created the jail using NAT or VNET? Tested right now with VNET and it works

  14. Thomas Thomas 15 Febbraio 2020

    right now i am trying again
    reinstalled Freenas 11.3 last night
    now i choose


    Name = LMS
    Jail Type= Clone Jail
    Release= 11.3
    NAT= False
    JAIL PROPERTIES i dont touch

    host_domainname = My
    CUSTUM PROPERTIES i dont touch
    it installs Jail no problem

    I Shell in and rupdate the jail
    root@lms:~ # pkg update
    root@lms:~ # pkg upgrade
    all packages is up to date.
    i install curl
    root@lms:~ # pkg install curl
    i get your script
    root@lms:~ # curl -o /usr/local/bin/lms_installer
    i chmod the script
    root@#lms:~ # chmod +x /usr/local/bin/lms_installer
    i run the installer
    root@lms:~ # curl -o /usr/l
    option 1= install LMS
    option 2 = 7.9.3
    it install no problems.

    Service -e shows

    Introduction to manual pages: man man
    FreeBSD directory layout: man hier

    Edit /etc/motd to change this login announcement.
    root@lms:~ # service -e

    i restart the Jail
    and everything checks out again
    LMS is loaded.

    root@lms:~ #
    root@lms:~ # ifconfig
    lo0: flags=8049 metric 0 mtu 16384
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    inet netmask 0xff000000
    nd6 options=21
    groups: lo
    epair0b: flags=8843 metric 0 mtu 9000
    ether XX:XX:XX:XX:XX:XX
    hwaddr XX:XX:XX:XX:XX:XX:XX
    inet netmask 0xffffff00 broadcast
    nd6 options=1
    media: Ethernet 10Gbase-T (10Gbase-T )
    status: active
    group: epair

    i see no problems.

    and it is working.

    hmm yesterday i used 8.0
    could it be the problem ?

    this is strange

  15. Thomas Thomas 15 Febbraio 2020

    yes the same procedure but with 8.0 do not work.

  16. Thomas Thomas 15 Febbraio 2020

    i restarted the jail 4 times now an now it is working
    sorry to have wasted your time.

  17. Thomas Thomas 15 Febbraio 2020

    For the LMS server to have access to the mountpoint i need to set permissions.
    i am guessing i have to create a user on Freenas
    User = slimserv
    but how about password

    or do you have another idea ?

    • Simone Simone 15 Febbraio 2020

      Please Thomas edit the same post otherwise it’s a bit confusing. Now the problem is that you want to mount the storage where your music library is inside the jail right? For this refers to FreeNAS handbook: . You can create the user without a password using adduser, just leave it empty. Or you can use pw to add a user, refers to FreeBSD handbook for syntax.

  18. Thomas Thomas 15 Febbraio 2020

    Sorry 🙁 Thanks ill give it a try.
    got patreon or something else for donating ?

    • Simone Simone 15 Febbraio 2020

      No problem. At the bottom of the article “SqueezeCore a minimal audio OS” there is the PayPal link. Thanks for support; if the problem persist write here in the comments, we’ll figure out a solution for sure!


Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

%d blogger hanno fatto clic su Mi Piace per questo: