Trying to send commands over Telnet to McIntosh processor

I am trying to setup some automation in my home theater. Would like to add activity buttons to HA and have the automation change the input to the desired activity. HDMI 1, HDMI 2 etc. I have a McIntosh MX100 processor and it can accept telnet commands to change sources. I am able to send commands over the terminal just fine.
I looked at the telnet page in HA and tried to update my configuration.yaml but I keep getting errors.
Any ideas on what I am doing wrong? I know I could do the same with IR but would prefer to use RS232 if possible.

switch:
   - platform: telnet
     switches:
       mx100_HDMI1:
         resource: 10.0.0.249
         port: 57012
         command_on: "INP 1"
         command_off: "INP 1"
         name: "Apple TV"
       mx100_HDMI2:
         resource: 10.0.0.249
         port: 57012
         command_on: "INP 2"
         command_off: "INP 2"
         name: "Oppo"

Code looks fine to me. Maybe you could try with a shell command instead of the telnet switch.

Turn debug on - what’s in the log file when turn the switch on?

I figured out the problem. The commands have to be in brackets and not in quotes. Additionally the switches have to be in all lower case. mx100_hdmi1 and not mx100_HDMI1

switch:
   - platform: telnet
     switches:
       mx100_hdmi1:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 1)
         command_off: (INP 1)
         name: "Apple TV"
       mx100_hdmi2:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 2)
         command_off: (INP 2)
         name: "Oppo"
1 Like

Sorry to open an old thread, but I’m curious where you found the list of telnet commands. I’m looking to add some more control of my MX100, but I don’t see any docs. I’d rather not spend time reverse engineering the web control page.

I did get it to work and I must say that it is really fast and reliable.

For the sensors I added the following to config.yaml. It takes about 7 seconds to update the states but for my needs that was good enough. My MX100 is off to the side and now I can see the current mode from my sofa.
Obviously change the ip to your MX in address. I did give it a static address which made it rock solid.

sensor:
  - platform: tcp
    name: MX100 Volume
    host: 10.0.0.249
    port: 57012
    payload: (VOL)
    unit_of_measurement: "dB"
  - platform: tcp
    name: MX100 info
    host: 10.0.0.249
    port: 57012
    payload: (INF)
  - platform: tcp
    name: MX100 Sub Trim
    host: 10.0.0.249
    port: 57012
    payload: (TLB)
    unit_of_measurement: "dB"

With regards to the switches I have the following code in config.yaml. Obviously change your inputs accordingly.


switch:
   - platform: telnet
     switches:
       mx100_power:
         resource: 10.0.0.249
         port: 57012
         command_on: (PWR 1)
         command_off: (PWR 0)
         command_state: (PWR)
         value_template: '{{ value == "PWR=1" }}'
         name: "MX-100 Power"
       mx100_hdmi1:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 1)
         command_off: (INP 1)
         name: "MX-100 Apple TV"
       mx100_hdmi2:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 2)
         command_off: (INP 2)
         name: "MX-100 Oppo"
       mx100_hdmi3:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 3)
         command_off: (INP 3)
         name: "MX-100 nVidia"
       mx100_hdmi4:
         resource: 10.0.0.249
         port: 57012
         command_on: (INP 4)
         command_off: (INP 4)
         name: "MX-100 Multichannel"
       mx100_volume:
         resource: 10.0.0.249
         port: 57012
         command_on: (VOL U)
         command_off: (VOL D)
         command_state: (VOL)
         name: "MX-100 Volume"
       mx100_mute:
         resource: 10.0.0.249
         port: 57012
         command_on: (MUT 1)
         command_off: (MUT 0)
         name: "MX-100 Mute"
       mx100_music_mode:
         resource: 10.0.0.249
         port: 57012
         command_on: (TMS 1)
         command_off: (TMS 1)
         name: "MX-100 Music Mode"
       mx100_movie_mode:
         resource: 10.0.0.249
         port: 57012
         command_on: (TMS 2)
         command_off: (TMS 2)
         name: "MX-100 Movie Mode"
       mx100_through_mode:
         resource: 10.0.0.249
         port: 57012
         command_on: (TMS 4)
         command_off: (TMS 4)
         name: "MX-100 Pass Through Mode"
       mx100_auto_mode:
         resource: 10.0.0.249
         port : 57012
         command_on: (TMS 5)
         command_off: (TMS 5)
         name: "MX-100 Auto Mode"
       mx100_dyneq_movies:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADQ 1)
         command_off: (ADQ 0)
         name: "Dynamic EQ Movies (0db)"
       mx100_dyneq_tv_jazz:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADQ 2)
         command_off: (ADQ 0)
         name: "Dynamic EQ TV/Jazz (10db)"
       mx100_dyneq_pop_rock:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADQ 3)
         command_off: (ADQ 0)
         name: "Dynamic EQ Pop/Rock (15db)"
       mx100_dyneq_off:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADQ 0)
         command_off: (ADQ 0)
         name: "Dynamic EQ Off" 
       mx100_dynvol_light:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADV 1)
         command_off: (ADV 0)
         name: "Dynamic Vol Light"
       mx100_dynvol_medium:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADV 2)
         command_off: (ADV 0)
         name: "Dynamic Vol Medium"
       mx100_dynvol_heavy:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADV 3)
         command_off: (ADV 0)
         name: "Dynamic Vol Heavy"
       mx100_dynvol_off:
         resource: 10.0.0.249
         port: 57012
         command_on: (ADV 0)
         command_off: (ADV 0)
         name: "Dynamic Vol Off"
       mx100_sub:
         resource: 10.0.0.249
         port: 57012
         command_on: (TLB +10)
         command_off: (TLB -10)
         name: "Subwoofer Trim"
       mx100_sub0:
         resource: 10.0.0.249
         port: 57012
         command_on: (TLB 0)
         command_off: (TLB 0)
         name: "Sub Reset"

This covered most of the commands for the MX that I would need to control.
I have buttons set up in my Lovelace with script calls to activate the MX command and make other changes.

Also to display the current sensors information from the MX front panel I am using the following in the markdown Lovelace card

##{{states ('sensor.mx100_info')|replace ("(INF","")|replace (")","")}} 

Just stripping out the parenthesis and commas that the sensor comes back with. Probably could be better but it works.

Hope all that helps.
Cheers

I played around a little with telnet to discover some commands.

(INP) returns what current input is
(INP n) set the input
(VOL) returns current volume setting
(VOL n) set explicit volume
(VOL up) volume up
(VOL do) volume down
(PWR) returns current power status
(PWR 0/1) turn power on (1) or off (0)

This is very helpful! Thank you. Were you able to get a doc for all the commands? I found some for other McIntosh gear, but I could find a list for the MX-100.

I started to comb through the JavaScript in the web pages, but I haven’t found a list yet. I suspect there also is a web API. Too bad they don’t document that since it would be so much better.

Thanks for this thread! The info here was very useful.

Sooo, I sent all 17,576 three letter combinations to the MX-100 and think I found all of the usable commands, plus a few mysteries.

Also I made my own smart (2 way communication) on screen menu to utilize them. It makes learning what the settings do, experimenting, changing settings and just plain checking how you have things currently set a pleasure.

I tried to match the Mcintosh aesthetic (black background, bright green font, big blue rectangle to select items) and made my own font just to have the Mac logo. I love how it turned out! I kept adding more features I wanted and still have a few things I want to do, but it’s 98% there and I don’t see myself jumping back into it to address anything else unless I learn more python or find a bug.

I added lots of features like presets, favorites, turn on volume, amp 2 off in stereo mode, meter light control, a ‘quick view’ pop-up to check all your current settings, etc.

I also solved the “Dynamic EQ/Volume boosts surround channels” problem that exists in many Audyssey products. Very proud of that part and it forced me to learn some Python too. You can enable or disable my fix.

It requires eventghost fyi. If anyone wants to try it out or wants more detailed info, lmk. It was a big undertaking but fun and I’m very happy with it. Initial setup will be non trivial. I could use a hand if anyone has experience with Python (like adding variables!) or EG plugins. I only know what I’ve taught myself in the course of this project but I want to make a few tweaks first if I were to share it.

Even if no one wants to use it, I really just signed up to say thanks to everyone for sharing the info in this thread :slight_smile:

It only let me put one picture but hopefully you can see it and get an idea

maybe it will let me upload one more? lets try…