Help with custom device for Storm Audio ISP mk2

I’m creating a custom device for Storm Audio receivers. They have a well documented API that is telnet + LF based. I’ve got the basics working (so it is definitely connecting), however I can’t get volume set to work. The code is here on github.

The receiver users pure decibals, negatively signed. So I’ve set the .VOLUME FORMAT to 1. It then expects the command “ssp.vol.[-XX.X]” to set the volume, for example “ssp.vol.[-30.5]”. So I’ve set .VOLUME SET to ssp.vol.[##] and have also set .VOLUME STATUS to ssp.vol. It doesn’t work.

Anyone know where I’ve gone wrong?

I reviewed your code, compared to both sets of documentation, and things look right.

I have two possible suggestions:

  1. ssp.vol.[xx] format as documented in Storm API, are the brackets literal or documentation only? In other words, have you tried ssp.vol.xx? I doubt this is it, but throwing it out there.
  2. As you indicated, the documentation says it is +LF. Roomie says it can send CR (lineio) or CRLF (lineio-crlf), but not LF. Could this be it? I am not sure how to get Roomie to send just LF other than possibly switching to binary or binary-ack mode where you would then encode each command and then end with a \x10.

Other troubleshooting steps:

  • Have you tried connecting directly with telnet command just to validate how the syntax is working?
  • Could you put nginx in front of the receiver to proxy on behalf of Roomie? This could A) let you see the traffic flows and / or B) strip the CR if that is indeed the problem. Another option for A is to configure your switch for port mirroring and then attach to that port with WireShark to see the traffic.

HTH. Good lucks. If you solve it please post back so we can all learn.

Pretty much in line with what bjs says, I would connect via telnet and then start by doing ssp.vol to see what you get back. Then you know that it is accepting commands and hopefully also if the brackets should be there or not.
Then you could also try a ssp.vol.up and see what that does. If all that is good try ssp.vol.[-30] or ssp.vol.-30 depending on what you get from above.
(all this followed by a linefeed of course)

If all that works try the same in Roomie, then at least you know where to look for the problem.

I figured it out. Roomie was unable to parse the return value for .VOLUME STATUS, and that caused the volume setting to fail. Once I deleted this command it worked fine.

1 Like

Thanks for checking my work. I don’t believe it is an issue with the LF format, because simple commands like on and off work fine. It is the parameterized commands which are not working.

I have connected directly via telnet. The brackets are literal syntax and setting and reading the volume works fine. here is real telnet session, with input lines shows with a preceeding ‘$’

ssp.vol ssp.vol.[-31.0] ssp.vol.up
ssp.vol.[-30.0]
$ ssp.vol.[-43.5]
ssp.vol.[-43.5]