sle118 / squeezelite-esp32

ESP32 Music streaming based on Squeezelite, with support for multi-room sync, AirPlay, Bluetooth, Hardware buttons, display and more
1.15k stars 104 forks source link

Manually point Squeezelite-esp32 to a different LMS network subnet? #183

Closed NonaSuomy closed 1 year ago

NonaSuomy commented 1 year ago

Does anyone know how to point Logitech Media Server (docker) 10.42.42. at a different IP range (wifi) 10.13.37. where the squeezelite-esp32 exists?

Or Squeezelite-esp32 to where the LMS is?

Thank you.

sle118 commented 1 year ago

I recommend you check either in the LMS forums, or that you ask the question to the owner of the docket image you are running. I am not using such image, so I can't help.

https://forums.slimdevices.com/index.php

NonaSuomy commented 1 year ago

What do you use? The owner of the docker image is Logitech I believe https://github.com/Logitech/slimserver-platforms/tree/public/8.3/Docker

Is there anyway to tell squeezelite-esp32 where the LMS server is manually?

daduke commented 1 year ago

you mean like -s 192.168.0.1?

NonaSuomy commented 1 year ago

@daduke thanks for commenting. Where would you enter this into squeezelite-esp32 webui?

Found this on a random site with your nudge in the right direction. Not sure where the official documentation is for it:

COMMAND LINE INPUT | DESCRIPTION
-s <server>[:<port>] Connect to specified server, otherwise uses autodiscovery to find server
-o <output device> Specify output device, default „default“, – = output to stdout
-l List output devices
-a <b>:<p>:<f>:<m> Specify ALSA params to open output device, b = buffer time in ms or size in bytes, p = period count or size in bytes, f sample format (16\|24\|24_3\|32), m = use mmap (0\|1)
-a <f> Specify sample format (16\|24\|32) of output file when using -o – to output samples to stdout (interleaved little endian only)
-b <stream>:<output> Specify internal Stream and Output buffer sizes in Kbytes
-c <codec1>,<codec2> Restrict codecs to those specified, otherwise load all available codecs; known codecs: flac,pcm,mp3,ogg,aac,wma,alac,dsd (mad,mpg for specific mp3 codec)
-C <timeout> Close output device when idle after timeout seconds, default is to keep it open while player is ‚on‘
-d <log>=<level> Set logging level, logs: all\|slimproto\|stream\|decode\|output\|ir, level: info\|debug\|sdebug
-G <Rpi GPIO#>:<H/L> Specify the BCM GPIO# to use for Amp Power Relay and if the output should be Active High or Low
-e <codec1>,<codec2> Explicitly exclude native support of one or more codecs; known codecs: flac,pcm,mp3,ogg,aac,wma,alac,dsd (mad,mpg for specific mp3 codec)
-f <logfile> Write debug to logfile
-i [<filename>] Enable lirc remote control support (lirc config file ~/.lircrc used if filename not specified)
-m <mac addr> Set mac address, format: ab:cd:ef:12:34:56
-M <modelname> Set the squeezelite player model name sent to the server (default: SqueezeLite)
-n <name> Set the player name
-N <filename> Store player name in filename to allow server defined name changes to be shared between servers (not supported with -n)
-W Read wave and aiff format from header, ignore server parameters
-p <priority> Set real time priority of output thread (1-99)
-P <filename> Store the process id (PID) in filename
-r <rates>[:<delay>] Sample rates supported, allows output to be off when squeezelite is started; rates = <maxrate>\|<minrate>-<maxrate>\|<rate1>,<rate2>,<rate3>; delay = optional delay switching rates in ms
-S <Power Script> Absolute path to script to launch on power commands from LMS
-R -u [params] Resample, params = <recipe>:<flags>:<attenuation>:<precision>:<passband_end>:<stopband_start>:<phase_response>,recipe = (v\|h\|m\|l\|q)(L\|I\|M)(s) [E\|X], E = exception – resample only if native rate not supported, X = async – resample to max rate for device, otherwise to max sync rateflags = num in hex,attenuation = attenuation in dB to apply (default is -1db if not explicitly set),precision = number of bits precision (NB. HQ = 20. VHQ = 28),passband_end = number in percent (0dB pt. bandwidth to preserve. nyquist = 100%),stopband_start = number in percent (Aliasing/imaging control. > passband_end),phase_response = 0-100 (0 = minimum / 50 = linear / 100 = maximum)
-D[delay] Output device supports DSD over PCM (DoP), delay = optional delay switching between PCM and DoP in ms
-v Visualiser support
-L List volume controls for output device
-U <control> Unmute ALSA control and set to full volume (not supported with -V)
-V <control> Use ALSA control for volume adjustment, otherwise use software volume adjustment
-Q Sync local ALSA volume changes with Squeezebox Server Volume when using -V option
-X <gpio_button> Use a GPIO Button to switch between Play and Pause – works well with rotary encoders (Volume control) with integrated button for Play/Pause
-B Use to set PowerOn/Off Player on status of connected Bluetooth-Speakers (only for Pulse Audiooutput)Attention: Does not work with „-C“ parameter.
-I <port> Squeezebox Server CLI Port (optional). Default 9090
-z Daemonize
-z <rate> Report rate to server in helo as the maximum sample rate we can support
-t License terms
-? Display this help text

Under NVS Editor I put the IP:Port of the LMS server autoexec1:

squeezelite -b 500:2000 -d all=info -C 30 -W -n "squeezelite-face01" -o I2S -s 10.42.42.64:9000

It still didn't connect so I tried to edit these settings on the LMS server LMS-Server -> Server Settings -> Security -> Allowed IP Addresses: 10.42.42.64,10.13.37.*

daduke commented 1 year ago

yes autoexec1 is correct. If it still won't connect, something's iffy in your network.

NonaSuomy commented 1 year ago

Thank you for confirming that. Is the port correct? I noticed there are other ports listed what are they for?

LMS docker-compose.yml

version: "3.9"
services:
  logitech-media-server:
    container_name: lms
    hostname: lms-docker
    image: lmscommunity/logitechmediaserver:latest
    #restart: unless-stopped
    ports:
      - "9000:9000"
      - "9090:9090"
      - "3483:3483"
      - "3483:3483/udp"
    volumes:
      # Folder where LMS stores its data (cache, logs, prefs)
      - /var/lib/libvirt/images/usb001/lms/config:/config
      # Folder where LMS should look for music
      - /var/lib/libvirt/images/usb001/audio/music:/music
      # use time of host
      - /etc/localtime:/etc/localtime:ro
      #- /etc/timezone:/etc/timezone:ro
    mac_address: de:ad:be:ef:fa:ce
    networks:
      - dhcp
    environment:
      - PUID=1000
      - PGID=1003

networks:
  dhcp:
    name: dbrv100
    external: true

sudo docker-compose up

daduke commented 1 year ago

LMS default is 9000, as for the others: https://superuser.com/questions/1442385/which-ports-must-be-open-on-the-server-to-use-logitech-media-server-lms-for-sq

NonaSuomy commented 1 year ago

So should I be pointing the player device at "3483 TCP: Physical Squeezebox" instead of "9000 TCP: Web GUI" or maybe just leave the port blank as it seems to notation that it's optional?

squeezelite -b 500:2000 -d all=info -C 30 -W -n "squeezelite-face01" -o I2S -s 10.42.42.64:3483

So after pointing it at 3483 it picked it up right away. Now I just have to understand why no sound is playing with the volume at max... n/m looks like it was just some of the radio stations are broken. Switched to another then it spouted to life. Also tested not adding a port and it still worked.

Thanks for your help @daduke

Elkropac commented 1 year ago

Thanks, adding -s ip helped with discovery in home assistant. It seems it's not needed for later usage. I noticed, it keeps dissapearing from the input box after reboot