{"id":15015687,"url":"https://github.com/ematech/denonremote","last_synced_at":"2025-10-09T06:33:16.783Z","repository":{"id":63290418,"uuid":"342292975","full_name":"EMATech/DenonRemote","owner":"EMATech","description":"A desktop GUI remote for the Denon DN-500 AV receiver","archived":false,"fork":false,"pushed_at":"2024-04-01T18:39:38.000Z","size":2912,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-18T01:57:07.539Z","etag":null,"topics":["denon","dn-500av","kivy","nuitka","pyinstaller","python","python3","remote-control","touch-enabled","twisted","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EMATech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"rdoursenaud"}},"created_at":"2021-02-25T15:39:42.000Z","updated_at":"2024-10-01T00:56:07.000Z","dependencies_parsed_at":"2024-09-20T12:00:58.996Z","dependency_job_id":"caec183f-a6b8-4cec-9636-2de955668995","html_url":"https://github.com/EMATech/DenonRemote","commit_stats":{"total_commits":35,"total_committers":2,"mean_commits":17.5,"dds":0.08571428571428574,"last_synced_commit":"6a21e6b326de382f6e98201f8579c70b6b801f30"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/EMATech/DenonRemote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMATech%2FDenonRemote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMATech%2FDenonRemote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMATech%2FDenonRemote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMATech%2FDenonRemote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EMATech","download_url":"https://codeload.github.com/EMATech/DenonRemote/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMATech%2FDenonRemote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000832,"owners_count":26082950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["denon","dn-500av","kivy","nuitka","pyinstaller","python","python3","remote-control","touch-enabled","twisted","windows"],"created_at":"2024-09-24T19:47:47.447Z","updated_at":"2025-10-09T06:33:16.753Z","avatar_url":"https://github.com/EMATech.png","language":"Python","funding_links":["https://github.com/sponsors/rdoursenaud"],"categories":[],"sub_categories":[],"readme":"[![Denon Remote Logo](https://raw.githubusercontent.com/EMATech/denonremote/main/data/assets/icon_24.png) Denon Remote](https://github.com/ematech/denonremote)\n===================================================================================================\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/denonremote.svg)](https://pypi.org/project/denonremote)\n[![Downloads](https://pepy.tech/badge/denonremote)](https://pepy.tech/project/denonremote)\n[![PyPI - Version](https://img.shields.io/pypi/v/denonremote.svg)](https://pypi.org/project/denonremote)\n\nControl [Denon Professional DN-500AV surround preamplifier](https://www.denonpro.com/index.php/products/view/dn-500av)\nremotely.\n\n![Screenshot](https://raw.githubusercontent.com/EMATech/denonremote/main/data/screenshots/screenshot-v0.9.0-main.png)\n\n![Settings Screenshot](https://raw.githubusercontent.com/EMATech/denonremote/main/data/screenshots/screenshot-v0.9.0-settings.png)\n\n### Features\n\n#### Target hardware\n\n- [x] Denon Professional DN-500AV (Seems to be based on the same platform as the Denon AVR-1912 and AVR-2112CI)\n- [ ] More? Contributions welcome!\n\n#### Communication\n\n- [x] Ethernet\n    - [x] Using [Twisted](https://twistedmatrix.com)\n    - [x] connection status detection\n    - [x] automatically try to reconnect with exponential backoff\n- [ ] RS-232? also using Twisted\n- [ ] General MIDI input using [Mido](https://mido.readthedocs.io/en/latest/)\n    - [ ] Define control scheme.\n      See: [Summary of MIDI 1.0 Messages](https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message)\n      , [MIDI 1.0 Control Change Messages](https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2)\n        - [ ] CC7 = Master Volume\n        - [ ] CC120 = Mute\n        - [ ] CC? = On/Standby\n        - [ ] Program Changes -\u003e Inputs select\n            - [ ] Mapping?\n    - [ ] Virtual ports\n        - [ ] using [loopMidi](http://www.tobias-erichsen.de/software/loopmidi.html) for Windows\n        - [ ] rt-midi native for *NIX OSes\n        - [ ] rtpMIDI?\n\n#### Controls\n\n- [x] Setup\n    - [x] IP address\n    - [ ] Serial port?\n        - [ ] COM (Windows)\n        - [ ] tty (*NIX OSes)\n- [x] On/Standby\n- [x] Main volume\n    - [x] Get\n        - [x] Relative\n        - [ ] Absolute\n    - [x] Set\n        - [x] Relative\n        - [x] Absolute\n    - [x] Mute\n- [x] SPL calibrated display\n    - [x] EBU/SMPTE RP200: 85dB C SPL @ -18 dBFS (Equivalent to 83 dB C SPL @ -20 dBFS)\n    - [x] K meter\n        - [x] K-20: -20dBFS = 83dB C SPL (Same as SMPTE and EBU)\n        - [x] K-14: -14dBFS = 83dB C SPL\n            - [ ] Can be compensated from SMPTE/EBU levels by lowering the output volume by 6dB\n        - [x] K-12: -12dBFS = 83dB C SPL\n            - [ ] Can be compensated from SMPTE/EBU levels by lowering the output volume by 8dB\n    - [x] EBU R 128: -23LUFS (-23dBFS) = 73dB C SPL (Debatable/unclear removed for now)\n    - [x] Presets!\n        - [x] Relative (-18dB, -24dB…)\n        - [ ] Absolute\n        - [ ] SPL calibrated\n- [ ] Zone 2\n- [ ] Per Channel level (Up to 7.1)\n- [ ] Tone\n- [ ] EQ\n- [ ] Sound presets\n- [ ] Input select\n    - [x] Favorites\n- [ ] Security\n    - [ ] Panel Lock\n    - [ ] IR Remote Lock\n- [ ] Settings backup/restore\n    - [ ] All\n    - [ ] Subsystems?\n- [x] Retrieve status\n    - [x] Logger\n    - [x] Update the GUI\n- [ ] Import EQ settings\n    - [ ] From [REW](https://www.roomeqwizard.com/) value file\n        - [ ] Only use negative values! You can’t compensate a destructive room mode by adding energy to it.\n- [ ] Full Profiles/presets?\n\n##### GUI\n\n- [x] Using [Kivy](https://kivy.org)\n    - [ ] Keyboard shortcuts:\n        - [x] M for Mute\n        - [x] Up/Down Vol +/-\n        - [ ] Left/Right VolPreset +/-\n        - [ ] PgUp/PgDwn SrcPreset +/-\n- [x] Systray/Taskbar support using [pystray](https://pypi.org/project/pystray/)\n- [x] Only one instance is allowed (Microsoft Windows only)\n- [X] Option to make window stay always on top (Microsoft Windows only)\n- [x] Touch doesn't activate the window and doesn't steal focus (Microsoft Windows only)\n- [x] Trigger events without having to activate the window first (Microsoft Windows only)\n- [ ] Draw it on the first touch enabled display if available instead of the main one\n\n##### Windows executable\n\n- [ ] Handle shutdown to power off the device\n- [x] Generate icon with [IconMaker](https://github.com/Inedo/iconmaker)\n- [x] [PyInstaller](https://www.pyinstaller.org) (Fairly stable for Microsoft Windows)\n    - [x] [UPX](https://upx.github.io/) support\n    - How to build:\n        - Review [denonremote.spec](denonremote.spec)\n        - Use `hatch build; hatch run build:pyinstaller`\n- [x] [Nuitka](https://nuitka.net) (Alpha support for Microsoft Windows)\n    - Use `hatch build; hatch run build:nuitka`\n- [ ] [PyOxidiser](https://github.com/indygreg/PyOxidizer)\n- [ ] [cx-Freeze](https://pypi.org/project/cx-Freeze/) for multiplatform support?\n- [ ] VST plugin? (Not required if MIDI input is implemented but would be neat to have in the monitoring section of a\n  DAW)\n    - [ ] See [PyVST](https://pypi.org/project/pyvst/)\n\n#### Mobile\n\n- [ ] Autonomous mobile app? Kivy enables that!\n    - [ ] Android\n    - [ ] iOS/iPadOS\n\n#### Proxy/background service?\n\nThe receiver only allows 1 active connection. A dispatcher proxy could allow multiple simultaneous remotes (Desktop and\nmobile).\n\n### Other opportunities\n\nOpen ports:\n\n- 23/tcp (TELNET): BridgeCo AG Telnet server  \n  AVR serial protocol used here\n- 80/tcp (HTTP): GoAhead WebServer  \n  Web control (index.asp) Shows nothing.  \n  Most of the useful code is commented!  \n  CSS loading at \"css/mainMenu.css\" times out.  \n  Main control is available at \"MainZone/index.html\"!\n- 443/tcp (HTTPS):  \n  ERR_SSL_PROTOCOL_ERROR in Google Chrome  \n  SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE in Mozilla Firefox\n- 1026/tcp (RTSP): Apple AirTunes rtspd 103.2\n- 6666/tcp: ?\n- 8080/tcp (HTTP): AV receiver http config\n\n### Similar projects\n\nAndroid\n\n- [AVR-Remote](https://github.com/pskiwi/avr-remote)\n\nJavaScript:\n\n- https://github.com/phillipsnick/denon-avr\n- https://github.com/murderbeard/com.moz.denon\n- https://github.com/jtangelder/denon-remote\n\nPHP\n\n- https://github.com/Wolbolar/IPSymconDenon (IP Symcon automation)\n\nPython:\n\n- https://github.com/jeroenvds/denonremote (XBMC plugin)\n- https://github.com/Tom360V/DenonAvr (Similar objectives?)\n- https://github.com/toebsen/python-denonavr (HTTP RESTful server)\n- https://github.com/MrJavaWolf/DenonPhoneController (Landline phone controller)\n- https://github.com/troykelly/python-denon-avr-serial-over-ip (Library)\n- https://github.com/auchter/denonavr_serial (Library)\n- https://github.com/jphutchins/pyavreceiver (Nice library)\n- https://github.com/frawau/aiomadeavr (Library)\n- https://github.com/scarface-4711/denonavr (Uses the HTTP/XML interface. Library)\n\nLegal notice\n------------\n\n### License\n\n![GPLv3](https://raw.githubusercontent.com/EMATech/denonremote/main/data/assets/sources/gplv3-or-later.svg)\n\nAuthor: ©2021-2022 Raphaël Doursenaud.\n\nThis software is released under the terms of the GNU General Public License, version 3.0 or later (GPL-3.0-or-later).\n\nSee [LICENSE](LICENSE).\n\nLogo and icons released under the\n[Creative Commons Attribution-Share Alike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/).\n\n### Dependencies \u0026 License Acknowledgment\n\n- [Python](https://python.org) v3.10  \n  Copyright © 2001-2022 Python Software Foundation.  \n  Used under the terms of the PSF License Agreement.\n- [Kivy](https://kivy.org/)  \n  Copyright 2010-2022, The Kivy Authors.  \n  Used under the terms of the MIT license.  \n  Uses:\n    - [docutils](https://docutils.sourceforge.io/COPYING.html)\n    - [pygments](https://github.com/pygments/pygments/blob/master/LICENSE)\n    - [sdl2](https://www.libsdl.org/license.php)\n    - [glew](https://glew.sourceforge.net/glew.txt)\n    - [pywin32](https://pypi.org/project/pywin32/)\n    - [zlib](https://github.com/madler/zlib/blob/master/README)\n- [Twisted](https://twisted.org/)  \n  Copyright (c) 2001-2022 Twisted Matrix Laboratories.  \n  Used under the terms of the MIT license.\n- [PyInstaller](https://pyinstaller.org)  \n  Copyright (c) 2010-2022, PyInstaller Development Team.  \n  Copyright (c) 2005-2009, Giovanni Bajo.  \n  Based on previous work under copyright (c) 2002 McMillan Enterprises, Inc.  \n  Used under the terms of the GNU General Public License version 2.0.\n    - includes [cpython](https://hg.python.org/cpython/file/tip/Tools/msi/exe/crtlicense.txt)\n\n#### Fonts\n\n- [Free Serif](https://www.gnu.org/software/freefont/)  \n  Copyright © 2022 Free Software Foundation, Inc.  \n  Used under the terms of the GNU General Public License version 3.0.\n- [Roboto Mono](https://github.com/googlefonts/RobotoMono)  \n  Copyright (c) 2015 The Roboto Mono Project Authors.  \n  Used under the terms of the Apache License, Version 2.0.\n- [Unicode Power Symbol](https://unicodepowersymbol.com/)  \n  Copyright (c) 2013 Joe Loughry.  \n  Used under the terms of the MIT license.\n\n#### Logo and icons\n\nOwn work based upon:\n\n- [Denon Professional DN-500AV Front](https://www.denonpro.com/index.php/products/view/dn-500av#tab-images)  \n  Marketing material from Denon Professional.  \n  Copyright 2012-2022 inMusic Brands, Inc.\n\n### Trademarks\n\n- [Denon](https://www.denon.com) is a trademark of Sound United, LLC and Affiliates.\n- [Denon Professional](https://www.denonpro.com) is a trademark of inMusic Brands, Inc.\n\n#### Other\n\nOther trademarks are property of their respective owners and used fairly for descriptive and nominative purposes only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fematech%2Fdenonremote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fematech%2Fdenonremote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fematech%2Fdenonremote/lists"}