Custom TCP Device - Monoprice/No Hassle AV Multizone Amp

Ok hive brain…

I have been working on a custom code set for my No Hassle AV Multizone “Whole House” Audio Amplifier. This is the same as the MonoPrice Home Audio Distribution System. It just has IP control in addition to RS-232 serial control.

I can send commands to power it on, power it off. select sources and rooms. all that works well.

Volume control is 00-38 and so I am using data format 403 (00-60 Sharp TV, Leading zero) which leaves some room at the top, but it seems ok.

I have 2 questions:

  1. is there a better volume format to use? does anyone have a definition list for all of the volume formats in the DDK?

I can send an inquiry asking for volume status for Zone 1, to the device in the following way:

I send: ?11VO

the device responds:


where XX is a number between 00-38 representing the volume level.

  1. is there an existing parsing for that status reponse? if not, can I create a custom parsing? I have poured through the DDK and the sample .plist files and found nothing on this.

This device responds to all status requests in the same way as above (brackets for clarity only)

[2 digit zone code][2 letter item code][2 digit status value]

Thanks for everyone’s thoughts on this



Here is a list of the volume formats from the DDK documentation.

1Pure DB (Exactly as shown on receiver. “12.0”, “-35.5”)
2Pure DB No Decimal (Per receiver without decimal. “120”, “-355”)
3Pure DB Top Only (Per above without decimal. “12”, “-35”)
4Yamaha Pre-2008 Binary Format
5Onkyo THX Volume Format (-81-19 no decimal)
6Anthem (-90-10 no decimal)
7B&W Panorama (ASCII 0 through ASCII R, 3
5 values)
8Sony Binary Volume Format
9Marantz Old Volume Format (Pre-Denon merge)
50Denon (Modern Denon/Marantz volume format)
100Pioneer101Pioneer Old (Custom Pioneer volume formats <= 2009)
200Direct Value Hex (0-100 in hexadecimal. “05”, “64”)
201NAD (-99 to 19 no decimal)
300Percentage (0-100 in decimal. “5”, “100”)
301iTunes Custom Volume Format
302VLC Custom Volume Format
400 0-10 (Epson)
401 0-20 (Epson)
402 0-30 (Epson)
403 00-60 (Sharp TV, leading zero 0-60)
404 00-63 (Panasonic TV, leading zero 0-63)
405 0-99 (McIntosh)

You can send query commands for things like Volume value but there is no way to parse the response or display it unless Will makes changes to the code.

Thanks Ksalno. Appreciate the info. Biggest thing for me to know is that there is no way to parse custom data.

Thanks again!


What would be a nice feature would be some abstraction of the parsing so that users can write their own custom device and have the ability to extract/reformat the data, like a way to tell roomie how to parse instead of it being hard-coded.

I’ve thought about writing a program to run on a pi that would present itself to roomie as a denon but would then translate to the actual pre/pro. So in roomie you would add a denon and point the ip address at the pi and it would walk talk and act like a denon as far as roomie goes, but then it would translate to the actual device. I have too many projects currently but eventually I’ll get around to trying it.

Not a good use of time to create a proxy. I’ve addressed this many times before and will do so here again.

  1. The reason Roomie does not have parsing in its code sets is 98% because Apple does not allow scripting inside apps. For instance, including a Python/Lua/etc library is explicitly against App Store rules. So the obvious solution to this is out.
  2. This is a minuscule problem. When this comes up, there is usually no codeset whatsoever for a given device, but users are asking for feedback anyway. (This is exactly what happened with this device if you combine the multiple threads). Basically, a user wants the device supported. Since it started with very few or 1 user, initially there is no code set. Then, users develop a codeset for basic control as that is very simple and requires no code. Then user(s) asks for feedback again. That is exactly what happened 2 months ago with Trinnov/JBL receivers. User developed a codeset, it took hold and developed a small contingent of users, and then we brought one of those users into beta, quickly added feedback support for Trinnov, and updated the codeset to official. Takes very little time and assures users it works properly and is tested. This same procedure has been used dozens of times in the past including for Anthem, and others. It allows support to be added without us having to purchase every single piece of AV hardware known to the world.

The requirement is simply a capable beta tester who is willing and able to install perhaps tens of beta builds while the feedback is refined, able to adjust the codeset if needed, and basically act as the tester submitting diagnostics to us. It’s a straightforward process, but someone needs to step up, act as that tester, and contact support (replying here does nothing) to initiate that process.

1 Like

Vmbray, I have actually been doing exactly as you described (creating a python script that runs on a pi between Roomie and my equipment). It’s 80% done.

But given Will’s response, I think I am going to abandon that and move forward with his suggestions. Would be interested to see if there are other monoprice/No Hassle AV users out there. I have created the custom code set for control. I will submit a support ticket for feedback. I would be happy to be the beta tester…

I will submit a support ticket.