aesculus / denonavpcontrol

LMS plugin for Denon/Marrantz receivers
15 stars 6 forks source link

Issues configuring Marantz MODEL M1 #28

Closed sbellon closed 2 months ago

sbellon commented 3 months ago

Hi there,

I have trouble configuring the plugin for a Marantz MODEL M1.

I entered the IP address and tried default port 23 as well as port 1255 (where I can manually enter HEOS CLI commands if I connect to that port with telnet).

In both cases I do get:

Plugins::DenonAvpControl::DenonAvpComms::_catch (809) Error: 10 consecutive comm errors for Livingroom AVR at HTTP://192.168.1.179:23. Check network connection...

or

Plugins::DenonAvpControl::DenonAvpComms::_catch (809) Error: 10 consecutive comm errors for Livingroom AVR at HTTP://192.168.1.179:1255. Check network connection...

When lowering the log level to DEBUG, I can see the following:

Plugins::DenonAvpControl::Plugin::newPlayerCheck (318) *** DenonAvpControl: Livingroom is: Slim::Player::SqueezePlay=ARRAY(0x55d88bdc0800)
Plugins::DenonAvpControl::Plugin::newPlayerCheck (352) *** DenonAvpControl: Plugin Enabled:
Plugins::DenonAvpControl::Plugin::newPlayerCheck (353) *** DenonAvpControl: Quick Select: 0
Plugins::DenonAvpControl::Plugin::newPlayerCheck (354) *** DenonAvpControl: Zone: 0
Plugins::DenonAvpControl::Plugin::newPlayerCheck (355) *** DenonAvpControl: Speakers: 0
Plugins::DenonAvpControl::Plugin::newPlayerCheck (356) *** DenonAvpControl: Audio Menu Enabled: 0
Plugins::DenonAvpControl::Plugin::newPlayerCheck (357) *** DenonAvpControl: Multi-zone Enabled: 0
Plugins::DenonAvpControl::Plugin::newPlayerCheck (358) *** DenonAvpControl: AVR Type: 2
Plugins::DenonAvpControl::Plugin::newPlayerCheck (359) *** DenonAvpControl: IP Address: HTTP://192.168.1.179:23
Plugins::DenonAvpControl::Plugin::newPlayerCheck (360) *** DenonAvpControl: MAC Address: 00:04:20:aa:bb:cc
Plugins::DenonAvpControl::Plugin::newPlayerCheck (361) *** DenonAvpControl: Client ID: 00:04:20:aa:bb:cc
Plugins::DenonAvpControl::Plugin::newPlayerCheck (366) *** DenonAvpControl: Player output level is: Variable
Plugins::DenonAvpControl::Plugin::newPlayerCheck (367) *** DenonAvpControl: Player model is: Squeezebox Touch
Plugins::DenonAvpControl::Plugin::newPlayerCheck (368) *** DenonAvpControl: Player type is: fab4
Plugins::DenonAvpControl::Plugin::newPlayerCheck (382) *** DenonAvpControl: Turning Livingroom off to sync with plugin
Plugins::DenonAvpControl::Plugin::newPlayerCheck (399) *** DenonAvpControl: added Client ID to clientid array
Plugins::DenonAvpControl::Plugin::newPlayerCheck (400) *** DenonAvpControl: Client ID table is: 00:04:20:aa:bb:cc 
Plugins::DenonAvpControl::Plugin::newPlayerCheck (455) Number of registered plugin players = 1
Plugins::DenonAvpControl::Plugin::commandCallback (2144) *** DenonAvpControl: commandCallback() p0: playlist
Plugins::DenonAvpControl::Plugin::commandCallback (2145) *** DenonAvpControl: commandCallback() p1: addtracks
Plugins::DenonAvpControl::Plugin::commandCallback (2146) *** DenonAvpControl: commandCallback() p2: 
Plugins::DenonAvpControl::Plugin::commandCallback (2160) *** DenonAvpControl: commandCallback() Player: Livingroom
Plugins::DenonAvpControl::Plugin::commandCallback (2144) *** DenonAvpControl: commandCallback() p0: power
Plugins::DenonAvpControl::Plugin::commandCallback (2145) *** DenonAvpControl: commandCallback() p1: 
Plugins::DenonAvpControl::Plugin::commandCallback (2146) *** DenonAvpControl: commandCallback() p2: 0
Plugins::DenonAvpControl::Plugin::commandCallback (2160) *** DenonAvpControl: commandCallback() Player: Livingroom
Plugins::DenonAvpControl::Plugin::commandCallback (2168) *** DenonAvpControl: commandCallback() Self-initiated command - bypassing 
Plugins::DenonAvpControl::Plugin::prefSetCallback (2098) *** DenonAvpControl: prefSetCallback() Player Livingroom is powered off
Plugins::DenonAvpControl::Plugin::getAvpModelInfo (2808) *** DenonAvpControl: getting AVR model string for device: HTTP://192.168.1.179:23
Plugins::DenonAvpControl::DenonAvpComms::SendNetAvpGetModelInfo (736) Calling writemsg for model info query
Plugins::DenonAvpControl::DenonAvpComms::writemsg (780) Sent AVR command request: SYMO
Plugins::DenonAvpControl::Plugin::commandCallback (2144) *** DenonAvpControl: commandCallback() p0: mixer
Plugins::DenonAvpControl::Plugin::commandCallback (2145) *** DenonAvpControl: commandCallback() p1: volume
Plugins::DenonAvpControl::Plugin::commandCallback (2146) *** DenonAvpControl: commandCallback() p2: 100
Plugins::DenonAvpControl::Plugin::commandCallback (2160) *** DenonAvpControl: commandCallback() Player: Livingroom
Plugins::DenonAvpControl::Plugin::commandCallback (2144) *** DenonAvpControl: commandCallback() p0: power
Plugins::DenonAvpControl::Plugin::commandCallback (2145) *** DenonAvpControl: commandCallback() p1: 
Plugins::DenonAvpControl::Plugin::commandCallback (2146) *** DenonAvpControl: commandCallback() p2: 1
Plugins::DenonAvpControl::Plugin::commandCallback (2160) *** DenonAvpControl: commandCallback() Player: Livingroom
Plugins::DenonAvpControl::Plugin::commandCallback (2196) *** DenonAvpControl: commandCallback() Power: 1 
Plugins::DenonAvpControl::Plugin::calculateAvrVolume (2353) *** DenonAvpControl: Max AVR volume: 10 
Plugins::DenonAvpControl::Plugin::calculateAvrVolume (2355) *** DenonAvpControl: Client volume: 25 
Plugins::DenonAvpControl::Plugin::calculateAvrVolume (2356) *** DenonAvpControl: Raw subVol: 450 
Plugins::DenonAvpControl::Plugin::calculateAvrVolume (2371) *** DenonAvpControl: Calc Vol: 45 
Plugins::DenonAvpControl::Plugin::commandCallback (2232) *** DenonAvpControl: commandCallback() Power On for AVP/AVR model: inprogress
Plugins::DenonAvpControl::Plugin::commandCallback (2233) *** DenonAvpControl: commandCallback() Player output level is: Variable 
Plugins::DenonAvpControl::DenonAvpComms::_catch (793) Socket write _catch routine called... 
Plugins::DenonAvpControl::DenonAvpComms::_catch (799) Warning: problem connecting to AVR at HTTP://192.168.1.179:23, request=SYMO, message=Timed out waiting for data
Plugins::DenonAvpControl::DenonAvpComms::_catch (884) Model info request timed out - retrying
Plugins::DenonAvpControl::Plugin::handleSendPowerOn (2454) *** DenonAvpControl: handling Send Power ON 
Plugins::DenonAvpControl::DenonAvpComms::SendNetAvpOn (558) Calling writemsg for On command
Plugins::DenonAvpControl::DenonAvpComms::writemsg (780) Sent AVR command request: ZMON
Plugins::DenonAvpControl::DenonAvpComms::SendNetAvpGetModelInfo (736) Calling writemsg for model info query
Plugins::DenonAvpControl::DenonAvpComms::writemsg (780) Sent AVR command request: SYMO
Plugins::DenonAvpControl::DenonAvpComms::_catch (793) Socket write _catch routine called... 
Plugins::DenonAvpControl::DenonAvpComms::_catch (799) Warning: problem connecting to AVR at HTTP://192.168.1.179:23, request=ZMON, message=Timed out waiting for data
Plugins::DenonAvpControl::DenonAvpComms::_catch (844) Calling handlePowerOn2
Plugins::DenonAvpControl::Plugin::handlePowerOn2 (2477) *** DenonAvpControl: handling Power ON 2
Plugins::DenonAvpControl::Plugin::handlePowerOn2 (2510) Could not change source to: |inputs/optical_in_1|
Plugins::DenonAvpControl::Plugin::handleVolumeRequest (2533) *** DenonAvpControl: getting current volume from AVR: Livingroom
Plugins::DenonAvpControl::DenonAvpComms::SendNetAvpVolSetting (216) Calling writemsg for volume request: MV?
Plugins::DenonAvpControl::DenonAvpComms::writemsg (780) Sent AVR command request: MV? 
Plugins::DenonAvpControl::DenonAvpComms::_read (977) read routine called
Plugins::DenonAvpControl::DenonAvpComms::_read (988) Read 6
Plugins::DenonAvpControl::DenonAvpComms::_read (993) Buffer read MV021
Plugins::DenonAvpControl::DenonAvpComms::_read (994) Client name: Livingroom
Plugins::DenonAvpControl::DenonAvpComms::_read (997) Command is:MV?
Plugins::DenonAvpControl::DenonAvpComms::_read (1154) Volume setting inquiry
Plugins::DenonAvpControl::Plugin::updateSqueezeVol (2716) *** DenonAvpControl: handling response to vol request  
Plugins::DenonAvpControl::Plugin::updateSqueezeVol (2720) *** DenonAvpControl: saving initial AVR volume value (21)
Plugins::DenonAvpControl::Plugin::updateSqueezeVol (2737) *** DenonAvpControl: getting AVP/AVR model string from device 
Plugins::DenonAvpControl::Plugin::updateSqueezeVol (2753) *** DenonAvpControl: New preamp level is: 21
Plugins::DenonAvpControl::Plugin::updateSqueezeVol (2782) *** DenonAvpControl: setting timer to store AVR input 
Plugins::DenonAvpControl::Plugin::handleInputSource (2690) *** DenonAvpControl: handling zone Power ON / Quick Select, checking input source 
Plugins::DenonAvpControl::DenonAvpComms::SendNetAvpInputSource (690) Calling writemsg for input source query command
Plugins::DenonAvpControl::DenonAvpComms::writemsg (780) Sent AVR command request: SI? 
Plugins::DenonAvpControl::DenonAvpComms::_read (977) read routine called
Plugins::DenonAvpControl::DenonAvpComms::_read (988) Read 5
Plugins::DenonAvpControl::DenonAvpComms::_read (993) Buffer read SITV
Plugins::DenonAvpControl::DenonAvpComms::_read (994) Client name: Livingroom
Plugins::DenonAvpControl::DenonAvpComms::_read (997) Command is:SI?
Plugins::DenonAvpControl::DenonAvpComms::_read (1188) AVR input inquiry
Plugins::DenonAvpControl::Plugin::handleInputQuery (2638) *** DenonAvpControl: handling input query response: TV

Interestingly some commands seem to work: the current volume (21) and the current input source (TV) is output correctly, so "something" is working.

However, Lyrion is not playing.

What am I missing?

I would be happy to debug this further and get it going.

SamInPgh commented 3 months ago

As the M1 is a power amplifier, it supports only a subset of the telnet commands defined in the Denon/Marantz tcp protocol for AVRs, as you have found. What functionality exactly are you looking for from the plugin? Are you using any kind of preamp between the SB Touch and the M1, or are you using the Touch as a preamp?

sbellon commented 3 months ago

It's about turning the M1 on and switching to Optical In when the connected Lyrion player starts to play, and returning to the previously selected input and turning it off when the player stops.

In the meantime I'm using the SBNetIO plugin with a small Python web server that just sits in between and sends PWON, SIOPT and for the reverse SITV and PWSTANDBY, which works just fine, so no urgency for me.

I was just wondering why I cannot directly use the M1 with this plugin.

SamInPgh commented 3 months ago

As I said, the plugin was not intended for use with power amps. However, we may be able to tweak it to do what you want. First of all, can you verify whether or not the M1 supports the 'SSFUN ?' and 'SYMO' commands, using a TCP client app connected to port 23 on the amp? Also, the debug log indicates that it wants to switch to the "inputs/optical_in_1" input. Is that the input you specified in the plugin settings? If so, why? If not, what did you specify there? It would also be helpful if you could manually change the input on the M1 to 'OPT' before turning the player on to verify that playback does occur when the correct input is selected. Thanks.

sbellon commented 3 months ago

Ok, I start to understand that a "regular AVR" and the M1 seem to be more different than I had anticipated.

The M1 does not have the commands SSFUN ? and SYMO.

Yes, I entered input/optical_in_1, but it may very well be that this is the syntax for the other HEOS CLI protocol and I should be using something else here?

But regardless, even if I select SIOPT per telnet before, music playback does not start as the player returns to "pause" after a few seconds.

SamInPgh commented 3 months ago

Okay. Now I understand. I will look into the possibility of adding a new 'AVP/AVR Type' called 'Marantz Amp' or something similar, that supports the entry of an internal input name such as, in your case, 'OPT', and bypasses using the 'SYMO' and 'SSFUN ?' commands. I am in the midst of making some major changes right but will look into this as soon as I get things stabilized.

SamInPgh commented 2 months ago

Hello again. I have just released version 5.2 of the plugin and would now like to add support for both the Marantz MODEL M1 and Denon Home Amp streaming amplifiers. Would you be willing to act as a beta tester? I plan to add a new "AVR Type" to the dropdown selector for these units, and limit the plugin's functionality based on their abilities. If you wouldn't mind, I'd like to move this discussion to the plugin's forum support thread here so that other users can participate in the discussion. Thanks!

sbellon commented 2 months ago

Yes, I'm willing to beta test and also to continue discussion over there in the forum thread.

SamInPgh commented 2 months ago

Support for Marantz MODEL M1 added in version 5.3.