Meridian Roon Extension

Assuming this is the trace?

Your environment has been set up for using Node.js 6.10.2 (x64) and npm.

[Meridian] writing: LP
-> REQUEST 0 com.roonlabs.registry:1/info
<- COMPLETE 0 Success {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable"}
-> REQUEST 1 com.roonlabs.registry:1/register {"extension_id":"com.roonlabs.meridian","display_name":"Meridian Volume/Source Control","display_version":"1.0.0","publisher":"Roon Labs, LLC","email":"contact@roonlabs.com","required_services":[],"optional_services":[],"provided_services":["com.roonlabs.volumecontrol:1","com.roonlabs.sourcecontrol:1","com.roonlabs.settings:1","com.roonlabs.status:1","com.roonlabs.ping:1"],"website":"https://github.com/RoonLabs/roon-extension-meridian","token":"0b947c25-16f3-4375-8716-a8548eaff1ae"}
<- CONTINUE 1 Registered {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable","token":"0b947c25-16f3-4375-8716-a8548eaff1ae","provided_services":[],"http_port":9100}
<- REQUEST 1 com.roonlabs.volumecontrol:1/subscribe_controls {"subscription_key":"14"}
-> CONTINUE 1 Subscribed {"controls":[]}
<- REQUEST 2 com.roonlabs.sourcecontrol:1/subscribe_controls {"subscription_key":"15"}
-> CONTINUE 2 Subscribed {"controls":[]}
<- REQUEST 3 com.roonlabs.status:1/subscribe_status {"subscription_key":"16"}
-> CONTINUE 3 Subscribed {"message":null,"is_error":null}
[Meridian] writing: VN45
[Meridian Extension] Connected
-> CONTINUE 3 Changed {"message":"Connected to Meridian RS232","is_error":false}
[Meridian] writing: LP
-> CONTINUE 1 Changed {"controls_added":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_added":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: LPVN45
[Meridian] received: LP    45
[Meridian] received:
[Meridian] received: #SF22D030000000151
<- REQUEST 14 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":35}
-> COMPLETE 14 Success
<- REQUEST 15 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":35}
-> COMPLETE 15 Success
[Meridian] writing: VN35
<- REQUEST 16 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":35}
-> COMPLETE 16 Success
[Meridian] writing: VN35
[Meridian] received: VN35
[Meridian] received: #S3223
[Meridian] received:
[Meridian] received: LP    35
[Meridian] received: VN35
[Meridian] received: #S3223
[Meridian] received:
[Meridian] received: LP    35
<- REQUEST 18 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":35}
-> COMPLETE 18 Success
[Meridian] writing: VN35
<- REQUEST 19 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":35}
-> COMPLETE 19 Success
[Meridian] writing: VN35
[Meridian] received: VN35
[Meridian] received: #S3223
[Meridian] received:
[Meridian] received: LP    35
[Meridian] received: VN35
[Meridian] received: #S3223
[Meridian] received:
[Meridian] received: LP    35

Great!

At the moment only MS600 but would add a RPi into the second digital input and use MSR to switch. Source switching is less important to me but guess I could use RS232 to do this from roon via an extension in the future.

My pair is 1st gen. 2x S/PDIF, old style comms, no speakerlink, with RS232. :slight_smile:

so how does source switching work? spdif1 and spdif2 can have independent source? how do you switch between them?

can you take a screenshot of your extension configuration? or dump the config.json in your extension directory?

For the odd times I use S/PDIF2, I use the Harmony remote (the DSP5000 are in the database), which offers full control (same as MSR+). Before the MiniDSP, I used both inputs – they can be assigned to various Harmony activities (Listen to Music > S/PDIF1, Watch TV > S/PDIF2, etc.). These days, everything is hooked up to the MiniDSP, which in turn connects to S/PDIF1.

I’ll order the cable – if only just for fun. The convenience of pressing play and watching your system turn on and start to play is the only thing I miss from the MS600 (though the Harmony extension basically achieves the same).

@Hectorson Type “LP” in the “Source displayed on device” field, since that’s what your speaker’s screen shows.

the slider should work then.

No luck. Tried a couple of sources. Slider functions but always displays 45.

Also no screen on the DSP33 so will test with 5Ks in the morning

Thanks for your time

You can set the various source labels in the DSPs to use either digital 1 or 2:

It will use one or the other depending on the source selected. I know of no way to select digital 1 / 2 directly, unrelated to source.

@Hectorson that option says ‘parse the volume out of the right zone’ – since its possible to rename inputs, I can’t pick LP for you
 if you use some other mechanism to change the volume, you will see some trace in the log like “LP       35”

that LP part is what you want in that field

Have tried matching this to the trace but am getting the same result. Have also tried with both protocols, just out of interest what is the difference here?

There has been a change to the trace, but behaviour still the same wondered if this indicates anything new.

Your environment has been set up for using Node.js 6.10.2 (x64) and npm.

C:\Users\Matt>cd desktop/m

C:\Users\Matt\Desktop\M>node .
[Meridian] writing: CD
-> REQUEST 0 com.roonlabs.registry:1/info
<- COMPLETE 0 Success {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable"}
-> REQUEST 1 com.roonlabs.registry:1/register {"extension_id":"com.roonlabs.meridian","display_name":"Meridian Volume/Source Control","display_version":"1.0.0","publisher":"Roon Labs, LLC","email":"contact@roonlabs.com","required_services":[],"optional_services":[],"provided_services":["com.roonlabs.volumecontrol:1","com.roonlabs.sourcecontrol:1","com.roonlabs.settings:1","com.roonlabs.status:1","com.roonlabs.ping:1"],"website":"https://github.com/RoonLabs/roon-extension-meridian","token":"0b947c25-16f3-4375-8716-a8548eaff1ae"}
<- CONTINUE 1 Registered {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable","token":"0b947c25-16f3-4375-8716-a8548eaff1ae","provided_services":[],"http_port":9100}
<- REQUEST 1 com.roonlabs.volumecontrol:1/subscribe_controls {"subscription_key":"15"}
-> CONTINUE 1 Subscribed {"controls":[]}
<- REQUEST 2 com.roonlabs.sourcecontrol:1/subscribe_controls {"subscription_key":"16"}
-> CONTINUE 2 Subscribed {"controls":[]}
<- REQUEST 3 com.roonlabs.status:1/subscribe_status {"subscription_key":"17"}
-> CONTINUE 3 Subscribed {"message":null,"is_error":null}
[Meridian] writing: VN45
[Meridian Extension] Connected
-> CONTINUE 3 Changed {"message":"Connected to Meridian RS232","is_error":false}
[Meridian] writing: CD
-> CONTINUE 1 Changed {"controls_added":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_added":[{"display_name":"Meridian","supports_standby":true,"status":"selected","control_key":"1"}]}
[Meridian] received: CDVN45
[Meridian Extension] received source change from device: CDVN45
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    31
[Meridian Extension] received source change from device: CD    31
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #SF01F010000000151
[Meridian Extension] received source change from device: #SF01F010000000151
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #S3020
[Meridian Extension] received source change from device: #S3020
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    32
[Meridian Extension] received source change from device: CD    32
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
<- REQUEST 18 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":40}
-> COMPLETE 18 Success
<- REQUEST 19 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":40}
-> COMPLETE 19 Success
[Meridian] writing: VN40
<- REQUEST 20 com.roonlabs.volumecontrol:1/set_volume {"control_key":"1","mode":"absolute","value":40}
-> COMPLETE 20 Success
[Meridian] writing: VN40
[Meridian] received: VN40
[Meridian Extension] received source change from device: VN40
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #S3028
[Meridian Extension] received source change from device: #S3028
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    40
[Meridian Extension] received source change from device: CD    40
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: VN40
[Meridian Extension] received source change from device: VN40
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #S3028
[Meridian Extension] received source change from device: #S3028
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    40
[Meridian Extension] received source change from device: CD    40
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #S3028
[Meridian Extension] received source change from device: #S3028
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    40
[Meridian Extension] received source change from device: CD    40
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":"45","volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}

Ok the problem is that each meridian device seems to speak a slightly different rs232 protocol. They are similar but not identical.

You have TN49 chosen. You can try another choice as it might be closer to the DSP33.

I don’t have DSP33 so I didn’t support it. @joel, do you?

Joel did have, as it happens these 33s were Joel’s!

1 Like

whoa
 ok
 @joel – do you know what TechNote these conform to?

There doesn’t appear to be a tech note for the 33s. I think that it will be the same as the DSP5000 note or the DSP420 note.

I’ve added support for the DSP420 protocol (the 5000 information is way too minimal), but let’s assume it fits the DSP420.

git pull and npm update to make sure the node-meridian module is updated as well.

pick the DS 6ii03 olption instead of TN49

let me know how it goes.

Just getting an error after 10-15 seconds. This started before update though so possibly not related.

Your environment has been set up for using Node.js 6.10.2 (x64) and npm.

C:\Users\Matt>cd desktop/m2

C:\Users\Matt\Desktop\m2>node .
{ volume: 45, source: 'CD', port: 'COM3' }
[Meridian] writing: CD
-> REQUEST 0 com.roonlabs.registry:1/info
<- COMPLETE 0 Success {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable"}
-> REQUEST 1 com.roonlabs.registry:1/register {"extension_id":"com.roonlabs.meridian","display_name":"Meridian Volume/Source Control","display_version":"1.0.0","publisher":"Roon Labs, LLC","email":"contact@roonlabs.com","required_services":[],"optional_services":[],"provided_services":["com.roonlabs.volumecontrol:1","com.roonlabs.sourcecontrol:1","com.roonlabs.settings:1","com.roonlabs.status:1","com.roonlabs.ping:1"],"website":"https://github.com/RoonLabs/roon-extension-meridian","token":"cba5269e-3e93-4cac-9ea2-ff99f942ba64"}
<- CONTINUE 1 Registered {"core_id":"c5e662b6-4927-49a9-b3e2-09d573e498b2","display_name":"ROON Core","display_version":"1.3 (build 259) stable","token":"cba5269e-3e93-4cac-9ea2-ff99f942ba64","provided_services":[],"http_port":9100}
<- REQUEST 1 com.roonlabs.volumecontrol:1/subscribe_controls {"subscription_key":"28"}
-> CONTINUE 1 Subscribed {"controls":[]}
<- REQUEST 2 com.roonlabs.sourcecontrol:1/subscribe_controls {"subscription_key":"29"}
-> CONTINUE 2 Subscribed {"controls":[]}
<- REQUEST 3 com.roonlabs.status:1/subscribe_status {"subscription_key":"30"}
-> CONTINUE 3 Subscribed {"message":null,"is_error":null}
[Meridian] writing: VN45
[Meridian Extension] Connected
-> CONTINUE 3 Changed {"message":"Connected to Meridian","is_error":false}
[Meridian] writing: CD
-> CONTINUE 1 Changed {"controls_added":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":45,"volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_added":[{"display_name":"Meridian","supports_standby":true,"status":"selected","control_key":"1"}]}
[Meridian] received: CDVN45
[Meridian Extension] received source change from device: CDVN45
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":45,"volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: CD    60
[Meridian Extension] received source change from device: CD    60
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":45,"volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received:
[Meridian Extension] received source change from device:
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":45,"volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
[Meridian] received: #SF03C010000000161
[Meridian Extension] received source change from device: #SF03C010000000161
-> CONTINUE 1 Changed {"controls_changed":[{"display_name":"Meridian","volume_type":"number","volume_min":1,"volume_max":99,"volume_value":45,"volume_step":1,"is_muted":false,"control_key":1}]}
-> CONTINUE 2 Changed {"controls_changed":[{"display_name":"Meridian","supports_standby":true,"status":"deselected","control_key":"1"}]}
<- REQUEST 11 com.roonlabs.settings:1/subscribe_settings {"subscription_key":"31"}
-> CONTINUE 11 Subscribed {"settings":{"values":{"serialport":"COM3","ip":"","setsource":"CD","displaysource":"CD","initialvolume":45,"mode":"TN51"},"layout":[{"type":"dropdown","title":"Protocol Mode","values":[{"value":"TN49","title":"TN49"},{"value":"TN51","title":"TN51"},{"value":"DS 6ii03","title":"DS 6ii03"}],"setting":"mode"},{"type":"string","title":"Serial Port","maxlength":256,"setting":"serialport"},{"type":"string","title":"Source displayed on device (select source and see what speakers display)","maxlength":5,"setting":"displaysource"},{"type":"dropdown","title":"Source for Convenience Switch","values":[{"value":"CD","title":"CD"},{"value":"RD","title":"Radio"},{"value":"LP","title":"LP/Aux/SLS"},{"value":"TV","title":"TV"},{"value":"T1","title":"Tape/Tape1/iPod"},{"value":"T2","title":"Tape2/Sat"},{"value":"CR","title":"CDR/Disc"},{"value":"CB","title":"Cable"},{"value":"TX","title":"Text/DVD"},{"value":"V1","title":"VCR1/Mixer/PVR"},{"value":"V2","title":"VCR2/USB"},{"value":"LD","title":"LDisc/Game"}],"setting":"setsource"},{"type":"integer","title":"Initial Volume","min":1,"max":99,"setting":"initialvolume"}],"has_error":false}}
<- REQUEST 13 com.roonlabs.settings:1/save_settings {"settings":{"values":{"serialport":"COM3","ip":"","setsource":"CD","displaysource":"CD","initialvolume":45,"mode":"TN51"}},"is_dry_run":false}
-> COMPLETE 13 Success {"settings":{"values":{"serialport":"COM3","ip":"","setsource":"CD","displaysource":"CD","initialvolume":45,"mode":"TN51"},"layout":[{"type":"dropdown","title":"Protocol Mode","values":[{"value":"TN49","title":"TN49"},{"value":"TN51","title":"TN51"},{"value":"DS 6ii03","title":"DS 6ii03"}],"setting":"mode"},{"type":"string","title":"Serial Port","maxlength":256,"setting":"serialport"},{"type":"string","title":"Source displayed on device (select source and see what speakers display)","maxlength":5,"setting":"displaysource"},{"type":"dropdown","title":"Source for Convenience Switch","values":[{"value":"CD","title":"CD"},{"value":"RD","title":"Radio"},{"value":"LP","title":"LP/Aux/SLS"},{"value":"TV","title":"TV"},{"value":"T1","title":"Tape/Tape1/iPod"},{"value":"T2","title":"Tape2/Sat"},{"value":"CR","title":"CDR/Disc"},{"value":"CB","title":"Cable"},{"value":"TX","title":"Text/DVD"},{"value":"V1","title":"VCR1/Mixer/PVR"},{"value":"V2","title":"VCR2/USB"},{"value":"LD","title":"LDisc/Game"}],"setting":"setsource"},{"type":"integer","title":"Initial Volume","min":1,"max":99,"setting":"initialvolume"}],"has_error":false}}
-> CONTINUE 11 Changed {"settings":{"values":{"serialport":"COM3","ip":"","setsource":"CD","displaysource":"CD","initialvolume":45,"mode":"TN51"},"layout":[{"type":"dropdown","title":"Protocol Mode","values":[{"value":"TN49","title":"TN49"},{"value":"TN51","title":"TN51"},{"value":"DS 6ii03","title":"DS 6ii03"}],"setting":"mode"},{"type":"string","title":"Serial Port","maxlength":256,"setting":"serialport"},{"type":"string","title":"Source displayed on device (select source and see what speakers display)","maxlength":5,"setting":"displaysource"},{"type":"dropdown","title":"Source for Convenience Switch","values":[{"value":"CD","title":"CD"},{"value":"RD","title":"Radio"},{"value":"LP","title":"LP/Aux/SLS"},{"value":"TV","title":"TV"},{"value":"T1","title":"Tape/Tape1/iPod"},{"value":"T2","title":"Tape2/Sat"},{"value":"CR","title":"CDR/Disc"},{"value":"CB","title":"Cable"},{"value":"TX","title":"Text/DVD"},{"value":"V1","title":"VCR1/Mixer/PVR"},{"value":"V2","title":"VCR2/USB"},{"value":"LD","title":"LDisc/Game"}],"setting":"setsource"},{"type":"integer","title":"Initial Volume","min":1,"max":99,"setting":"initialvolume"}],"has_error":false}}
<- REQUEST 14 com.roonlabs.settings:1/unsubscribe_settings {"subscription_key":"31"}
-> COMPLETE 14 Unsubscribed
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT 192.168.1.68:9101
    at Object.exports._errnoException (util.js:1018:11)
    at exports._exceptionWithHostPort (util.js:1041:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)

C:\Users\Matt\Desktop\m2>

After a few changes the error stopped but now faced with the following:

C:\Users\Matt\Desktop\m2\node_modules\node-meridian\lib.js:15
        throw new Error("unsupported device type " + devicetype + " -- Unfortunately, there are many protocols for Meridian control.");
        ^

Error: unsupported device type DS 6ii03 -- Unfortunately, there are many protocols for Meridian control.
    at new Meridian (C:\Users\Matt\Desktop\m2\node_modules\node-meridian\lib.js:15:15)
    at setup (C:\Users\Matt\Desktop\m2\app.js:139:24)
    at Object.save_settings (C:\Users\Matt\Desktop\m2\app.js:121:24)
    at save_settings (C:\Users\Matt\Desktop\m2\node_modules\node-roon-api-settings\lib.js:23:22)
    at _service_request_handlers.(anonymous function) (C:\Users\Matt\Desktop\m2\node_modules\node-roon-api\lib.js:315:17)
    at Transport.transport.onmessage.msg [as onmessage] (C:\Users\Matt\Desktop\m2\node_modules\node-roon-api\lib.js:406:17)
    at WebSocket.Transport.ws.onmessage (C:\Users\Matt\Desktop\m2\node_modules\node-roon-api\transport-websocket.js:30:14)
    at WebSocket.onMessage (C:\Users\Matt\Desktop\m2\node_modules\ws\lib\WebSocket.js:442:14)
    at emitTwo (events.js:106:13)
    at WebSocket.emit (events.js:191:7)

C:\Users\Matt\Desktop\m2>