Older Denon AVR with RS232

Does anyone have this working over a serial to LAN adapter?

I don’t have any personal experience to offer, but I can point you in a good direction. Bajansen’s library on github uses pyserial to establish serial connections, which allows you to supply a URL as the serial port. The formats supported are documented here:

https://pyserial.readthedocs.io/en/latest/url_handlers.html#urls

If you want to guess whether a particular adapter works, look for people’s experiences with it and pyserial.

About to try this out. hopefully still working… @virtualbitzz - let me know how you got on

Thanks lmk how it goes. Still interested in doing this. I almost spent $700 on a new receiver the other day because of the lack of IP control on my current receiver from 2012. Basic power automation is the only major inconvenience with this thing, everything else works great.

I was able to get this working again with my Denon 2310ci receiver with a custom component after support was removed from Home Assistant. I’ve been meaning to create a public Github repository for awhile and your message gave me a butt kick. Hopefully it will work for you. I did have to use a particular type of usb to serial adapter (FTDI) to get it all to work. GitHub - doucga/denon232

just linked it up. works!!! Thanks to the authors for this integration. @PixelAlarm @bajansen

I only have two controls (per each zone) i)turn on/off; and ii’) volume control.

Not that i need it yet (if ever), but wonder if this integration also allows changing sources?

thanks - will also check this out. trying to, but when i try to add the (@doucga ) intergration, i get the below error:

Error

Config flow could not be loaded: {ā€œmessageā€:ā€œInvalid handler specifiedā€}

should i try to add the intergration via with webgui/ settings>> intergrations etc or no need.

Also to confirm the name of the folder within the Custom Components folder is denon232-main

is that correct?

You won’t be able to install it through the integrations page of Home Assistant. I’m not smart enough to make that happen. :grinning: This procedure should work: from the repository, download the zip file and unzip it somewhere on your system so you can grab the unzipped files later. The directory you get will be called denon232-main. Github added the"-main" part. You could rename the directory to denon232 if you want. That’s what mine is. Set up the ā€˜Samba Share’ addon in Home Assistant. Once that’s done, if your on a Windows machine elsewhere on the network type ā€œ\\(IP of your Home Assistant)ā€ in File Explorer (note the double backslashes in front of the ip). That should get you to your Home Assistant file system. From there find the config/custom_components directory of your Home Assistant install. Then copy the directory you got from the Github repo (denon232 if you renamed it) over to the config/custom_components folder in Home Assistant. Add the configuration yaml settings to your configuration.yaml file with a unique name for the media player and restart Home Assistant. Then if you go to Developer Tools and filter for your unique name it should show up. Mine’s called ā€˜Receiver’ (not that unique I know :grinning:)

Let us know how you do!

Garry

Hi Garry,

Thank you! Very clear instructions. Managed to get it up and running So far i see something similar to your screenshot above. how do I add control for Zone2? Thanks

I was afraid you might ask me that. :wink: I don’t believe the media_player component for Home Assistant has functionality for zones unfortunately. I actually gave up trying to get Zone 2 stuff working with the custom component so I think there’s left over code in there from my attempts. I ended up controlling Zone 2 stuff with an IR blaster instead. Having the media player for the main part was most important to me anyway because of the feedback. I have the receiver status’: power, mute, input selected and volume settings displayed in my dashboard.

agreed - that’s fine. i could combine and use the two integrations to get the best of both worlds!

Could zone2 be added as a seperate media_player entity?

That’s probably a good idea. I never tried that myself. My Python skills are very rudimentary so I didn’t go any further with it.

well done for getting this up!

i just got my denon second hand. got two (AVR 2307, and AVR-2808) I have an ir blaster, but neither came with remotes. i wonder if you might be able to share the ir codes, or where i can find the IR codes?

@virtualbitzz , @simondotau , @bajansen @Sp4rc , @PixelAlarm , @stonith , will open the question to you too, if you are able to help. Thanks

Thanks

oh no! i think i broke the integration by upgrading to 2025.05

I haven’t upgraded yet. Maybe I’ll have a chance on the weekend and see if mine breaks too.

@doucga turns out it wasn’t yhe update, dev path switch from /dev/ttyUSB0 to /dev/ttyUSB1.

How are you guys handling it when this happens? surely there must be a way for me not to have to delete and re-add the integration each time?

This happens to me occasionally as well. I’m running HAOS in a VM on Proxmox. I find I have to go and remap the USB passthrough once in a while for whatever reason. I’m using a 4 port USB serial device. My Denon is on the second port, port 1 of the device. This is my Proxmox USB hardware setting for the first 2 ports from my notes:
usb0: host=1-3 <-Insteon FT232R USB UART
usb1: host=1-4.1 <-Denon
But the first part of the number can change on occasion. For example, the above is from my notes on the topic but when I look at current settings in Proxmox they are set to:
usb1: host=2-3.1 <-Denon

After the change and restart of the VM things usually line up and start working again.

Don’t know if that helps at all. I know this can be frustrating.

Garry

What you’re experiencing is true for all USB-attached devices using the usb serial path. Basically, dev/tty is subject to change on restart, but /dev/serial/by-id/ isn’t.

It’s extremely common for people using serial adapters for zigbee, which is why the docs for ZHA state:
" Most devices need at the very least the serial device path, like /dev/ttyUSB0 , but it is recommended to use device path from /dev/serial/by-id folder, e.g., /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0 A list of available device paths can be found in Settings > System > Hardware > dot menu > All Hardware ."

Maybe try checking if switching to /dev/serial/by-id works with the integration you’re using (it should). If that doesn’t work, it might be time to file an issue on that github page.

thanks both - very helpful. it worked!