Control of Rotel equipments

I am interested in building a new binding to control Rotel equipments using a RS232 HEX protocol.
The idea is to get the ability to power ON or OFF, to select a source, to change volume, …
Here are a list of potential equipments implementing this kind of protocol:

  • RC1082
  • RC1090
  • RC1580
  • RCC1055
  • RCD1520
  • RSP976
  • RSP1066
  • RSP1068
  • RSP1069
  • RSP1098
  • RSP1570
  • RSP1572
  • RSX1055
  • RSX1056
  • RSX1057
  • RSX1058
  • RSX1065
  • RSX1067
  • RSX1550
  • RSX1560
  • RSX1562
  • RX1050
  • RX1052

I own an old RSP 1066. My main problem is to find (or build) the specific cable.
Are there users interested by such a binding ?
Interesred to help me testing a pre-version that I could create quickly as a POC ?

https://github.com/openhab/openhab2-addons/issues/5466

I have now my cable and I was able to test my binding. It works well even if I still have to improve the detection of the device going OFF or in standby.
I will add the ability to select DSP modes too.

The way the protocol is defined makes it dependent on what the device displayed on the front panel, for example “VOLUME 45” when the volume is changed. So I will not be able to guarantee that the binding will immediately work with any model even if it is probable that Rotel used something common for all models. So this could require some tweaks for certain models.

I will provide a first test version next week.

In case someone is interested by this binding, let me know what model do you own ?

Finally, I plan to support the ASCII protocol in addition to the HEX protocol. So more models will be supported.

I made good progress. The binding is now supporting in theory 41 Rotel devices.

I would be happy if someone test the binding with a device that uses an ASCII protocol (all recent devices).

A test version can be downloaded from here: https://github.com/openhab/openhab2-addons/issues/5466#issuecomment-490877184

Current documentation: https://github.com/lolodomo/openhab2-addons/blob/rotel_bnd/bundles/org.openhab.binding.rotel/README.md

The binding is now supporting 41 Rotel models (in theory - I have not tested the binding with each of them). I added some new features, in particular for the models using the HEX protocol, like DSP modes management, zone management and record source management.

A new version can be downloaded here: https://github.com/openhab/openhab2-addons/issues/5466#issuecomment-497685553

Up-to-date documentation with full examples: https://github.com/lolodomo/openhab2-addons/blob/rotel_bnd/bundles/org.openhab.binding.rotel/README.md

The binding has been tested by myself with a RSP-1066 and by someone else (big thank you to him) with a RSP-1570. Any additional feedback would be appreciated.

The binding is now available in the Eclipse IoT marketplace and you can install it in your openHAB (tested in version 2.5 but should work in version 2.4 too).

And a PR is in progress for an integration in the official openHAB distribution.

The binding is now included in the official distribution starting at version 2.5 snapshot 1678.

@Lolodomo I’m new to OpenHAB (still just exploring). How would I go about hooking up my Rotel RA-11? What would I need in terms of hardware?

You need a serial cable. If you have no serial connector on your OH server, you need an additional serial to USB converter.
Read the first part of the binding documentation to understand all the alternatives.

First of all, thank you for your great work - I’m using the Rotel binding to control an RA-1592 via ser2net, which is pretty awesome. I just wanted to ask about a minor glitch I noticed:

If openhab (re)starts when the amp is off, it only partly picks up the connection. That is, I can switch the amp on and off from openhab, but it neither reads nor changes the other channels I use (volume, input). They remain “NULL” and I cannot change them via the app, even after re-starting the amp, ser2net, etc. The only way to solve it (other than re-starting openhab while the amp is on) is to go to the webUI of the amp and hit “save” (with or without making any changes). Then all channels become functional again.

I just wondered whether there is a way to fix it in the binding or whether you see any way I can fix it myself. Either way, thank you for all your work - overall, this works very well and is much appreciated!

I see that we have two modes for this model, depending on the firmware.
Are you sure you chose the good one ?
What is your firmware version ?
Did you choose “ASCII V1” or “ASCII V2” in the thing configuration ?

If you switch the device on with your remote control, are the channels updated in OH ?

Please enable DEBUG logs for the binding and provide these logs when you switch the Rotel device on.

Thanks for the quick response - I’m using ASCII V1, since I have the old firmware. I am pretty sure I configured that right, since I got it wrong when I first set it up a long time ago.

I’m not sure I get your other two questions right, so please just tell me if I got things wrong, sorry. Whether the channels are updated when I switch the device on depends on whether the device was on when openhab started the last time. If the device was on when openhab started, channels are always updated and everything works fine. If the device was off when openhab started (and I didn’t manually save the amplifier thing), then the channels are never updated in OH. OH does seem to send the on/off signal, but not volume or input.

I can switch on debug logs and check what happens when I switch the amp on and off once I’m back home (and have figured out how to switch on debug logs). But I’m pretty sure nothing happens when I switch it on and off, since as far as I understand, it just sits at the end of a ser2net connection and either listens or doesn’t. Wouldn’t it make more sense to provide logs from starting openhab with and without the amp running? That seems to be where things go wrong. But I’m just guessing here, happy to send whatever logs you find useful.

Sorry for being a bit slow. Here are the logs, please let me know if you need anything else:

I first started openhab with the amp off, i.e. when it does not respond to some channels. Then I switched the amp on via the binding (which works), here is the log from that:

2025-01-27 12:36:31.325 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Power On” => power_on!
2025-01-27 12:36:31.327 [DEBUG] [nternal.communication.RotelConnector] - Send command “Power On” succeeded
2025-01-27 12:36:31.328 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command ON from channel power succeeded
2025-01-27 12:36:33.741 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 2130303A706F7765725F6F6E21706F7765723D6F6E
2025-01-27 12:36:33.741 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars !00:power_on!power=on
2025-01-27 12:36:33.742 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key !00:power_on!power = on
2025-01-27 12:36:33.742 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key !00:power_on!power
2025-01-27 12:36:33.787 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D20202020524F54454C2052412D313539322020202020202020202020202020202020202020202020
2025-01-27 12:36:33.788 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= ROTEL RA-1592 *
2025-01-27 12:36:33.788 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = ROTEL RA-1592
2025-01-27 12:36:33.788 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:36:38.699 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 736F757263653D70635F757362
2025-01-27 12:36:38.700 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars source=pc_usb
2025-01-27 12:36:38.700 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key source = pc_usb
2025-01-27 12:36:38.701 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F6666
2025-01-27 12:36:38.702 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=off
2025-01-27 12:36:38.702 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = off
2025-01-27 12:36:38.763 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C2033332020202020544F4E45204259504153532020202020
2025-01-27 12:36:38.764 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 33 TONE BYPASS *
2025-01-27 12:36:38.764 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 33 TONE BYPASS
2025-01-27 12:36:38.764 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:36:41.194 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F766572
2025-01-27 12:36:41.195 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=over
2025-01-27 12:36:41.195 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = over
2025-01-27 12:36:41.196 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value over for key freq
2025-01-27 12:36:41.207 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333320202020202D2D2D204D2020202044534420202020
2025-01-27 12:36:41.208 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 33 — M DSD *
2025-01-27 12:36:41.208 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 33 — M DSD
2025-01-27 12:36:41.209 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display

The amp switches on, but volume and input are not displayed in the openhab app and when I try to change them, this is what the log shows:

2025-01-27 12:52:35.593 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 0.0 from channel volume ignored: zone device in standby
2025-01-27 12:52:40.903 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command PCUSB from channel source ignored: device in standby
2025-01-27 12:52:41.053 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 30 from channel volume ignored: zone device in standby
2025-01-27 12:52:43.364 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command CD from channel source ignored: device in standby
2025-01-27 12:52:43.374 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 50 from channel volume ignored: zone device in standby

When I go to the openhab webUI and just save the amplifier thing, this is what I get in the log:

2025-01-27 12:53:06.322 [DEBUG] [.rotel.internal.handler.RotelHandler] - Disposing handler for thing rotel:ra1592:24853bb2
2025-01-27 12:53:06.323 [DEBUG] [ernal.communication.RotelIpConnector] - Closing IP connection
2025-01-27 12:53:06.348 [DEBUG] [rnal.communication.RotelReaderThread] - Data listener stopped
2025-01-27 12:53:06.350 [DEBUG] [ernal.communication.RotelIpConnector] - IP connection closed
2025-01-27 12:53:06.350 [DEBUG] [.rotel.internal.handler.RotelHandler] - closeConnection(): disconnected
2025-01-27 12:53:06.351 [DEBUG] [.rotel.internal.handler.RotelHandler] - Start initializing handler for thing rotel:ra1592:24853bb2
2025-01-27 12:53:06.352 [DEBUG] [.rotel.internal.handler.RotelHandler] - rotelProtocol ASCII_V1
2025-01-27 12:53:06.352 [INFO ] [.rotel.internal.handler.RotelHandler] - Set minValue to -10 and maxValue to 10 for your sitemap widget attached to your bass or treble item.
2025-01-27 12:53:06.353 [INFO ] [.rotel.internal.handler.RotelHandler] - Set minValue to -15 and maxValue to 15 for your sitemap widget attached to your balance item.
2025-01-27 12:53:06.358 [DEBUG] [.rotel.internal.handler.RotelHandler] - Schedule reconnect job
2025-01-27 12:53:06.359 [DEBUG] [.rotel.internal.handler.RotelHandler] - Finished initializing!
2025-01-27 12:53:07.359 [DEBUG] [.rotel.internal.handler.RotelHandler] - Trying to reconnect…
2025-01-27 12:53:07.359 [DEBUG] [ernal.communication.RotelIpConnector] - Closing IP connection
2025-01-27 12:53:07.360 [DEBUG] [ernal.communication.RotelIpConnector] - IP connection closed
2025-01-27 12:53:07.360 [DEBUG] [.rotel.internal.handler.RotelHandler] - closeConnection(): disconnected
2025-01-27 12:53:07.360 [DEBUG] [ernal.communication.RotelIpConnector] - Opening IP connection on IP 192.168.0.111 port 9590
2025-01-27 12:53:07.373 [DEBUG] [ernal.communication.RotelIpConnector] - IP connection opened
2025-01-27 12:53:07.373 [DEBUG] [rnal.communication.RotelReaderThread] - Data listener started
2025-01-27 12:53:07.374 [DEBUG] [.rotel.internal.handler.RotelHandler] - openConnection(): connected
2025-01-27 12:53:07.374 [DEBUG] [.rotel.internal.handler.RotelHandler] - Schedule power OFF job
2025-01-27 12:53:07.375 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current power status” => get_current_power!
2025-01-27 12:53:07.376 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current power status” succeeded
2025-01-27 12:53:07.401 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 706F7765723D6F6E
2025-01-27 12:53:07.402 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars power=on
2025-01-27 12:53:07.403 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key power = on
2025-01-27 12:53:07.404 [DEBUG] [.rotel.internal.handler.RotelHandler] - Schedule power ON job
2025-01-27 12:53:09.906 [DEBUG] [.rotel.internal.handler.RotelHandler] - Power ON job
2025-01-27 12:53:09.907 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Update to Auto” => display_update_auto!
2025-01-27 12:53:09.908 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Update to Auto” succeeded
2025-01-27 12:53:09.939 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current source” => get_current_source!
2025-01-27 12:53:09.939 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current source” succeeded
2025-01-27 12:53:09.948 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61795F7570646174653D6175746F
2025-01-27 12:53:09.948 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars display_update=auto
2025-01-27 12:53:09.949 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display_update = auto
2025-01-27 12:53:09.969 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request Min volume level” => get_volume_min!
2025-01-27 12:53:09.970 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request Min volume level” succeeded
2025-01-27 12:53:09.977 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 736F757263653D70635F757362
2025-01-27 12:53:09.977 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars source=pc_usb
2025-01-27 12:53:09.978 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key source = pc_usb
2025-01-27 12:53:09.993 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D655F6D696E3D30
2025-01-27 12:53:09.993 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume_min=0
2025-01-27 12:53:09.994 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume_min = 0
2025-01-27 12:53:10.001 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request Max volume level” => get_volume_max!
2025-01-27 12:53:10.001 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request Max volume level” succeeded
2025-01-27 12:53:10.032 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D655F6D61783D3936
2025-01-27 12:53:10.032 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request Max tone level” => get_tone_max!
2025-01-27 12:53:10.032 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume_max=96
2025-01-27 12:53:10.032 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request Max tone level” succeeded
2025-01-27 12:53:10.033 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume_max = 96
2025-01-27 12:53:10.057 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 746F6E655F6D61783D3130
2025-01-27 12:53:10.057 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars tone_max=10
2025-01-27 12:53:10.058 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key tone_max = 10
2025-01-27 12:53:10.058 [INFO ] [.rotel.internal.handler.RotelHandler] - Set minValue to -10 and maxValue to 10 for your sitemap widget attached to your bass or treble item.
2025-01-27 12:53:10.313 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current volume level” => get_volume!
2025-01-27 12:53:10.314 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current volume level” succeeded
2025-01-27 12:53:10.344 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current mute status” => get_mute_status!
2025-01-27 12:53:10.345 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current mute status” succeeded
2025-01-27 12:53:10.358 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3333
2025-01-27 12:53:10.359 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=33
2025-01-27 12:53:10.359 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 33
2025-01-27 12:53:10.375 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current bass level” => get_bass!
2025-01-27 12:53:10.376 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current bass level” succeeded
2025-01-27 12:53:10.406 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 6D7574653D6F6666
2025-01-27 12:53:10.406 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current treble level” => get_treble!
2025-01-27 12:53:10.407 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars mute=off
2025-01-27 12:53:10.407 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current treble level” succeeded
2025-01-27 12:53:10.407 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key mute = off
2025-01-27 12:53:10.425 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 626173733D303030
2025-01-27 12:53:10.425 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars bass=000
2025-01-27 12:53:10.425 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key bass = 000
2025-01-27 12:53:10.429 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 747265626C653D303030
2025-01-27 12:53:10.430 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars treble=000
2025-01-27 12:53:10.431 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key treble = 000
2025-01-27 12:53:10.438 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current tone control state” => get_tone!
2025-01-27 12:53:10.438 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current tone control state” succeeded
2025-01-27 12:53:10.457 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 746F6E653D6F6666
2025-01-27 12:53:10.457 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars tone=off
2025-01-27 12:53:10.458 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key tone = off
2025-01-27 12:53:10.469 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current balance setting” => get_balance!
2025-01-27 12:53:10.469 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current balance setting” succeeded
2025-01-27 12:53:10.490 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 62616C616E63653D303030
2025-01-27 12:53:10.491 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars balance=000
2025-01-27 12:53:10.491 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key balance = 000
2025-01-27 12:53:10.500 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current frequency for digital source input” => get_current_freq!
2025-01-27 12:53:10.501 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current frequency for digital source input” succeeded
2025-01-27 12:53:10.521 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F766572
2025-01-27 12:53:10.521 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=over
2025-01-27 12:53:10.522 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = over
2025-01-27 12:53:10.522 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value over for key freq
2025-01-27 12:53:10.531 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current front display dimmer level” => get_current_dimmer!
2025-01-27 12:53:10.532 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current front display dimmer level” succeeded
2025-01-27 12:53:10.553 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 64696D6D65723D30
2025-01-27 12:53:10.553 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars dimmer=0
2025-01-27 12:53:10.553 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key dimmer = 0
2025-01-27 12:53:10.562 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current active speaker outputs” => get_current_speaker!
2025-01-27 12:53:10.563 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current active speaker outputs” succeeded
2025-01-27 12:53:10.584 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 737065616B65723D615F62
2025-01-27 12:53:10.585 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars speaker=a_b
2025-01-27 12:53:10.585 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key speaker = a_b
2025-01-27 12:53:10.594 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request the model number” => get_product_type!
2025-01-27 12:53:10.594 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request the model number” succeeded
2025-01-27 12:53:10.617 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 70726F647563745F747970653D52412D31353932
2025-01-27 12:53:10.617 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars product_type=RA-1592
2025-01-27 12:53:10.618 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key product_type = RA-1592
2025-01-27 12:53:10.625 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request the main CPU software version” => get_product_version!
2025-01-27 12:53:10.625 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request the main CPU software version” succeeded
2025-01-27 12:53:10.695 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 70726F647563745F76657273696F6E3D56312E3433
2025-01-27 12:53:10.696 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars product_version=V1.43
2025-01-27 12:53:10.696 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key product_version = V1.43
2025-01-27 12:53:50.647 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_34!
2025-01-27 12:53:50.648 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:53:50.649 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 35 from channel volume succeeded
2025-01-27 12:53:50.667 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3334
2025-01-27 12:53:50.667 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=34
2025-01-27 12:53:50.668 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 34
2025-01-27 12:53:50.686 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333420202020202D2D2D204D2020202044534420202020
2025-01-27 12:53:50.687 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 34 — M DSD *
2025-01-27 12:53:50.687 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 34 — M DSD
2025-01-27 12:53:50.688 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:53:52.827 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_33!
2025-01-27 12:53:52.828 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:53:52.829 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 34 from channel volume succeeded
2025-01-27 12:53:52.858 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3333
2025-01-27 12:53:52.859 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=33
2025-01-27 12:53:52.859 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 33
2025-01-27 12:53:52.922 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333320202020202D2D2D204D2020202044534420202020
2025-01-27 12:53:52.923 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 33 — M DSD *
2025-01-27 12:53:52.923 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 33 — M DSD
2025-01-27 12:53:52.924 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display

Now things are displayed again and I can change input and volume. Here is the log from some random changes:

2025-01-27 12:53:58.736 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Source CD” => cd!
2025-01-27 12:53:58.737 [DEBUG] [nternal.communication.RotelConnector] - Send command “Source CD” succeeded
2025-01-27 12:53:59.039 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D20202043442020202020202020564F4C2033332020202020544F4E45204259504153532020202020
2025-01-27 12:53:59.039 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= CD VOL 33 TONE BYPASS *
2025-01-27 12:53:59.040 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = CD VOL 33 TONE BYPASS
2025-01-27 12:53:59.040 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:53:59.534 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 736F757263653D616E616C6F675F6364
2025-01-27 12:53:59.534 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars source=analog_cd
2025-01-27 12:53:59.534 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key source = analog_cd
2025-01-27 12:53:59.536 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value analog_cd for key source
2025-01-27 12:53:59.536 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F6666
2025-01-27 12:53:59.536 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=off
2025-01-27 12:53:59.537 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = off
2025-01-27 12:53:59.738 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current frequency for digital source input” => get_current_freq!
2025-01-27 12:53:59.738 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current frequency for digital source input” succeeded
2025-01-27 12:53:59.776 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F6666
2025-01-27 12:53:59.776 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=off
2025-01-27 12:53:59.777 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = off
2025-01-27 12:53:59.839 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command CD from channel source succeeded
2025-01-27 12:53:59.846 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_48!
2025-01-27 12:53:59.847 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:53:59.848 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 50 from channel volume succeeded
2025-01-27 12:53:59.867 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3438
2025-01-27 12:53:59.868 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=48
2025-01-27 12:53:59.868 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 48
2025-01-27 12:53:59.901 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D20202043442020202020202020564F4C2034382020202020544F4E45204259504153532020202020
2025-01-27 12:53:59.902 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= CD VOL 48 TONE BYPASS *
2025-01-27 12:53:59.902 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = CD VOL 48 TONE BYPASS
2025-01-27 12:53:59.903 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:01.574 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Source PC USB” => pc_usb!
2025-01-27 12:54:01.575 [DEBUG] [nternal.communication.RotelConnector] - Send command “Source PC USB” succeeded
2025-01-27 12:54:01.870 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C2034382020202020544F4E45204259504153532020202020
2025-01-27 12:54:01.871 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 48 TONE BYPASS *
2025-01-27 12:54:01.871 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 48 TONE BYPASS
2025-01-27 12:54:01.872 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:02.366 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 736F757263653D70635F757362
2025-01-27 12:54:02.366 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars source=pc_usb
2025-01-27 12:54:02.367 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key source = pc_usb
2025-01-27 12:54:02.368 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F766572
2025-01-27 12:54:02.368 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=over
2025-01-27 12:54:02.369 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = over
2025-01-27 12:54:02.369 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value over for key freq
2025-01-27 12:54:02.575 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Request current frequency for digital source input” => get_current_freq!
2025-01-27 12:54:02.576 [DEBUG] [nternal.communication.RotelConnector] - Send command “Request current frequency for digital source input” succeeded
2025-01-27 12:54:02.603 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F766572
2025-01-27 12:54:02.603 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=over
2025-01-27 12:54:02.604 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = over
2025-01-27 12:54:02.604 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value over for key freq
2025-01-27 12:54:02.677 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command PCUSB from channel source succeeded
2025-01-27 12:54:02.682 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_29!
2025-01-27 12:54:02.683 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:54:02.683 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 30 from channel volume succeeded
2025-01-27 12:54:02.699 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3239
2025-01-27 12:54:02.699 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=29
2025-01-27 12:54:02.700 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 29
2025-01-27 12:54:02.731 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C2032392020202020544F4E45204259504153532020202020
2025-01-27 12:54:02.731 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 29 TONE BYPASS *
2025-01-27 12:54:02.732 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 29 TONE BYPASS
2025-01-27 12:54:02.732 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:03.413 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_30!
2025-01-27 12:54:03.413 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:54:03.414 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 31 from channel volume succeeded
2025-01-27 12:54:03.435 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3330
2025-01-27 12:54:03.436 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=30
2025-01-27 12:54:03.436 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 30
2025-01-27 12:54:03.467 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C2033302020202020544F4E45204259504153532020202020
2025-01-27 12:54:03.468 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 30 TONE BYPASS *
2025-01-27 12:54:03.468 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 30 TONE BYPASS
2025-01-27 12:54:03.468 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:03.518 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 667265713D6F766572
2025-01-27 12:54:03.519 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars freq=over
2025-01-27 12:54:03.519 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key freq = over
2025-01-27 12:54:03.519 [DEBUG] [.rotel.internal.handler.RotelHandler] - Invalid value over for key freq
2025-01-27 12:54:03.566 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333020202020202D2D2D204D2020202044534420202020
2025-01-27 12:54:03.567 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 30 — M DSD *
2025-01-27 12:54:03.567 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 30 — M DSD
2025-01-27 12:54:03.567 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:03.905 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_31!
2025-01-27 12:54:03.906 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:54:03.906 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 32 from channel volume succeeded
2025-01-27 12:54:03.931 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3331
2025-01-27 12:54:03.932 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=31
2025-01-27 12:54:03.932 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 31
2025-01-27 12:54:03.982 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333120202020202D2D2D204D2020202044534420202020
2025-01-27 12:54:03.983 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 31 — M DSD *
2025-01-27 12:54:03.983 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 31 — M DSD
2025-01-27 12:54:03.983 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:04.091 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_32!
2025-01-27 12:54:04.091 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:54:04.092 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 33 from channel volume succeeded
2025-01-27 12:54:04.123 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3332
2025-01-27 12:54:04.124 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=32
2025-01-27 12:54:04.124 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 32
2025-01-27 12:54:04.191 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333220202020202D2D2D204D2020202044534420202020
2025-01-27 12:54:04.191 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 32 — M DSD *
2025-01-27 12:54:04.191 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 32 — M DSD
2025-01-27 12:54:04.191 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display
2025-01-27 12:54:04.238 [DEBUG] [ol.ascii.RotelAsciiV1ProtocolHandler] - Command “Set Volume to level” => volume_33!
2025-01-27 12:54:04.239 [DEBUG] [nternal.communication.RotelConnector] - Send command “Set Volume to level” succeeded
2025-01-27 12:54:04.240 [DEBUG] [.rotel.internal.handler.RotelHandler] - Command 34 from channel volume succeeded
2025-01-27 12:54:04.267 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 766F6C756D653D3333
2025-01-27 12:54:04.268 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars volume=33
2025-01-27 12:54:04.268 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key volume = 33
2025-01-27 12:54:04.305 [DEBUG] [rotocol.RotelAbstractProtocolHandler] - handleIncomingMessage: bytes 646973706C61793D202050432D5553422020202020564F4C20333320202020202D2D2D204D2020202044534420202020
2025-01-27 12:54:04.305 [DEBUG] [ii.RotelAbstractAsciiProtocolHandler] - handleValidAsciiMessage: chars *display= PC-USB VOL 33 — M DSD *
2025-01-27 12:54:04.305 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: key display = PC-USB VOL 33 — M DSD
2025-01-27 12:54:04.306 [DEBUG] [.rotel.internal.handler.RotelHandler] - onNewMessageEvent: unhandled key display

Please let me know if anything is missing or if anything else would be useful. I don’t really understand any of this, but it looks to me like the binding does not initiate some things upon startup when the amp is off. That makes some sense, since the amp doesn’t respond. But it would be useful to have it “catch up” with these things somehow later, so that things work even if the device is not there upon startup.

But that’s a minor thing, of course, overall this works really well - thanks a lot for all your work and your help here!

Logs of course helped a lot.

The main issue when the device is switched on is that the received message is
!00:power_on!power=on.
The last part “power=on” is the expected result, the first part “!00:power_on!” is not really expected. It looks like it contains more or less the echo of the command itself “power_on!”.
My decoding algorithm consists in considering as key everything as left of “=”, that is in this case “!00:power_on!power” instead of just “power”. Maybe I should fix that by ignoring everything before a “!” in the key.
But this received message is I believe not compliant with the protocol specification, so very strange.

Then there is a second minor issue, your device is sometimes returning “over” as value for frequency. It is not something documented in protocol specification. Any idea what “over” could mean ?

And finally something ultra minor: logs “onNewMessageEvent: unhandled key display” should be removed because “display” is a valid and supported key, that is just that the handler is doing nothing with that. It should be ignored without any log.

I believe it might be a bug in my code that cut input data in individual information. The character “!” defines the end of an information. But I do not detect the two first, that is my error. So I should have detected first an empty information (data until the first “!”), then the information “00:power_on” that I should ignore because it is not at format “key=value”, and finally the valid information “power=on”.

Or I can keep my current code that searches first the “=” character but then I should clean up the left part (the key) to ignore everything before !

I will prepare a fix in the next days.

Perfect, thank you for looking into it and the detailed answer! If there is anything I can do to help, just let me know.

I tried to figure out what is going on with the frequency - it should be the frequency of the digital input. Does that have a meaningful value when the amp is just switched on and nothing is playing? I can try what happens to it when I play things with different frequencies. Do you know what the permissible values are? It could also be limited to values up to 192kHz, since that is the maximum the optical inputs can handle, but the limit for USB is higher. Just two thoughts, let me know if there is anything I should try.

Thank you!

I just upgraded to the second milestone release and the issue is still there. So I just wanted to check whether you managed to take a look at it. Of course, I understand that you’re doing this in your free time. So never mind if you didn’t, the binding is much appreciated as it is. But if it would be useful for me to look at the code and try or if there is anything else I can do to help, please just let me know. Either way, thank you for all your work on this!

Btw. I kept an eye on the frequency and it is indeed the sampling frequency. It reports reasonable values when the amp is playing, so maybe the line in the log is just because it doesn’t query the setting before something starts playing.

I just forgot, I am on other big changes.
I will try to add that for OH 5.0.

Thanks! I can imagine that there is lots of other work for 5.0 and there is no rush with this. I might remind you in case you forget for 5.0 if you don’t mind.