Network captures from Denon X1500H 25 Aug 2019 Commands sent with Denon 2016 AVR Remote Version 3.2.0 on an iPhone 6 The endpoint is /goform/AppCommand.xml unless the entry is tagged with 0300, then it is /goform/AppCommand0300.xml The 0300 endpoint seems to correspond to the markup whereas the regular endpoint seems to correspond to My Wireshark filter (set destination to your AVR's IP address) http and xml and ip.dst==192.168.0.119 and !(xml.cdata contains "GetAllZoneSource" or xml.cdata contains "GetAllZone" or xml.cdata contains "GetActive" or xml.cdata contains "GetInput" or xml.cdata contains "GetVideo") Eventually I got annoyed and simply set: !(xml.cdata contains "Get") though this will need to be revisited for updating state. A Linux VM was sufficient to handle MITM: sudo sysctl -w net.ipv4.ip_forward=1 sudo arpspoof -i eth0 -t 192.168.0.101 -r 192.168.0.119 where the first IP is your phone and second IP is your AVR Command structure: <-------------------------- begin command <----------------- id="1" for /AppCommand.xml endpoint and id="3" for /AppCommand0300.xml endpoint Set%s <-------- %s CamelCase string to name target ex SetSurroundParameter <----------- For simple binary commands or setting levels value is used. Example list: <------------------------ set the parameter "dynamicvol" to 0 0 Example value: 24 Upon success the AVR replies with: (needs more testing) OK GetAllZonePowerStatus 0300 GetSourceRename GetZoneName 0300 GetSoundMode GetAllZoneSource 0300 GetAudioInfo 0300 GetInputSignal 0300 GetActiveSpeaker 0300 GetVideoInfo GetAllZoneVolume GetAllZoneStereo GetAllZoneMuteStatus GetECO GetQuickSelectName Main 0300 GetAudysseyInfo The following command raised the Center channel "C" by 2dB. Lowering back to 0 was value 24. SetChLevel C 28 Confirmed that -12dB = 0, 0dB = 24, +12dB = 48 Confirmed uses conventional names: FL, FR, SL, SR, SW, C (probably RL and RR for 7.1) Someone would need to check Atmos naming conventions but manually setting Atmos channels isn't really desirable. SetChLevel SR 24 Enable Loudness Management for Dolby TrueHD 0300 SetSurroundParameter 1 Disable Loudness Management 0300 SetSurroundParameter 0 DCO setting can take 0: off, 1: low, 2:med, 3: high This setting will only work for Dolby tracks that contain the dynamic range metadata but the effect is much better than traditional dynamic range compression. 0300 SetSurroundParameter 3 Low Frequency Effect takes settings from 0 (normal) down to -10 (-10dB). This is a useful addition for night mode macros. 0300 SetSurroundParameter -10 From here on we are assuming that the 1 (on) and 0 (off) syntax will remain consistent. 0300 SetSurroundParameter 1 0300 SetAudyssey 1 Ref Level Offset (3 = 15dB 0 = Off) 0300 SetAudyssey 3 0300 SetAudyssey 1 Dynamic Range Compression when Dolby DCO is not supported 0=off, 1=light, 2=medium, 3=heavy 0300 SetAudyssey 0 Dialog Level (center channel adjust) from 0 (-12dB) to 48 (+12dB) Note that this was probably calibrated by Audyssey. SetDialogLevel 17 Would you like to rename a source with Python? ;> 0300 SetSourceRename Test 0300 SetFirmware 38 Quick Select takes values 1,2,3,4 SetQuickSelect Main 1 Change input SetInputFunction Main TV Enable Pure Direct 0300 SetSoundMode 4 Pure Direct "Direct" 0300 SetSoundModeList 1 Pure Direct "Pure Direct" 0300 SetSoundModeList 2 Pure Direct "Auto" SetSoundModeList 3 Set to Movie Mode: 0300 SetSoundMode 1 Set to Stereo Mode: 0300 SetSoundModeList 1 Dolby Digital 0300 SetSoundModeList 2 DTS 0300 SetSoundModeList 3 Fetching available surround modes This command will give you the surround mode list available for current selected genre (music, movie, game, pure) 0300 GetSoundModeList and you get a response like this GetSoundModeList 2 1 Stereo 0 2 Dolby Audio - Dolby Surround 0 3 DTS Neural:X 0 4 DTS Virtual:X 0 5 Multi Ch Stereo 1 6 Rock Arena 0 7 Jazz Club 0 8 Matrix 0 9 Virtual 0