Summary
Denon CEOL N9 (network CD-receiver, internal model RCD-N9) controlled via Ethernet using TCP port 23 (telnet), ASCII command protocol. Commands are 2-character opcodes + parameter + CR (0x0D). Source document is the DRA-N5/RCD-N8 control protocol v1.0.0; per Denon platform continuity this protocol applies to the RCD-N9/CEOL N9 successor on the same network CD-receiver platform. Covers power, volume, mute, input selection, sleep timer, timer, tone/balance, source direct, favorites, menu navigation, tuner (FM/AM/DAB), network/iPod/USB playback control, and CD transport control.
Transport
protocols:
- tcp
addressing:
port: 23
# UNRESOLVED: source states TCP port 23 (telnet) and 135 bytes max command length; base URL / IP discovery not specified (DHCP/manual via on-device SETUP menu).
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred from PW power command examples
- queryable # inferred from ? query command examples (PW?, MV?, SI?, etc.)
- levelable # inferred from MV / PS BAS / PS TRE / PS BAL level commands
Actions
actions:
# ===== PW : system Power =====
- id: power_on
label: Power On
kind: action
command: "PWON"
params: []
- id: power_standby
label: Power Standby
kind: action
command: "PWSTANDBY"
params: []
- id: power_status_query
label: Power Status Query
kind: query
command: "PW?"
params: []
# ===== MV : Master Volume (00-60 ASCII, 1dB steps) =====
- id: master_volume_up
label: Master Volume Up
kind: action
command: "MVUP"
params: []
- id: master_volume_down
label: Master Volume Down
kind: action
command: "MVDOWN"
params: []
- id: master_volume_set
label: Master Volume Set
kind: action
command: "MV{level}"
params:
- name: level
type: integer
description: "Volume level 00 to 60 by ASCII (1dB step). 00 = minimum."
- id: master_volume_status_query
label: Master Volume Status Query
kind: query
command: "MV?"
params: []
# ===== MU : Output Mute =====
- id: mute_on
label: Mute On
kind: action
command: "MUON"
params: []
- id: mute_off
label: Mute Off
kind: action
command: "MUOFF"
params: []
- id: mute_status_query
label: Mute Status Query
kind: query
command: "MU?"
params: []
# ===== SI : Select Input source =====
- id: select_input
label: Select Input Source
kind: action
command: "SI{input}"
params:
- name: input
type: string
description: >-
Input source. Values from source: IRADIO, SERVER, LASTFM (E2 Only),
SPOTIFY, PANDORA (NA Only), SIRIUSXM (NA Only), IPOD, USB, AUXA
(Portable In, N8 Only), AUXB (N5 Analog In / N8 Analog In1), AUXC
(Analog In2, N8 Only), AUXD (Digital In), PORTABLE_IN, CD (N8 Only),
FM (N8 Only), AM (N8/JP Only), DAB (N8 Only).
- id: input_status_query
label: Input Source Status Query
kind: query
command: "SI?"
params: []
# ===== SLP : Main Zone Sleep Timer (001-120 min, 010=10min) =====
- id: sleep_off
label: Sleep Timer Off
kind: action
command: "SLPOFF"
params: []
- id: sleep_set
label: Sleep Timer Set
kind: action
command: "SLP{minutes}"
params:
- name: minutes
type: integer
description: "Sleep minutes 001 to 120 by ASCII (010 = 10 min)."
- id: sleep_status_query
label: Sleep Timer Status Query
kind: query
command: "SLP?"
params: []
# ===== PI : Portable In Connection check =====
- id: portable_in_connection_query
label: Portable In Connection Query
kind: query
command: "PICONECT?"
params: []
# ===== TS : Timer set =====
- id: timer_once_set
label: Once Timer Set
kind: action
command: "TSONCE {start}-{stop} {func}{preset} {vol} {onoff}"
params:
- name: start
type: string
description: >-
Start time. Format A**## (AM), P**## (PM), or 2**## (24h).
**=00-23 hours, ##=00-59 minutes by ASCII. Use FFFF for unused stop.
- name: stop
type: string
description: "Stop time, same format as start; FFFF when not used."
- name: func
type: string
description: >-
Function 2-byte ASCII: FA=Favorite, CD=CD(N8 Only), IP=iPod, US=USB,
TU=Tuner, DV=devices.
- name: preset
type: string
description: "Preset No. 2-byte ASCII (TU uses 00)."
- name: vol
type: string
description: "Volume VV (2-byte ASCII)."
- name: onoff
type: integer
description: "ONCE timer enable (0=OFF, 1=ON)."
- id: timer_every_set
label: Every Timer Set
kind: action
command: "TSEVERY {start}-{stop} {func}{preset} {vol} {onoff}"
params:
- name: start
type: string
description: "Start time A**## / P**## / 2**## (see timer_once_set)."
- name: stop
type: string
description: "Stop time, same format; FFFF when not used."
- name: func
type: string
description: "Function 2-byte ASCII (same as ONCE TIMER)."
- name: preset
type: string
description: "Preset No. 2-byte ASCII."
- name: vol
type: string
description: "Volume VV (2-byte ASCII)."
- name: onoff
type: integer
description: "EVERY timer enable (0=OFF, 1=ON)."
- id: timer_status_query
label: Timer Status Query
kind: query
command: "TS?"
params: []
# ===== TO : Timer ON/OFF (once/every combos) =====
- id: timer_onoff_set
label: Timer ON/OFF Set
kind: action
command: "TO{once} {every}"
params:
- name: once
type: string
description: "ON or OFF (once timer)."
- name: every
type: string
description: "ON or OFF (every timer). Combinations: OFF OFF, OFF ON, ON OFF, ON ON."
- id: timer_onoff_status_query
label: Timer ON/OFF Status Query
kind: query
command: "TO?"
params: []
# ===== CLK : Clock =====
- id: clock_command
label: Clock
kind: action
command: "CLK"
params: []
# ===== PS : Parameter (tone/balance/source direct/SDB) =====
- id: ps_bass_up
label: Bass Up
kind: action
command: "PSBAS UP"
params: []
- id: ps_bass_down
label: Bass Down
kind: action
command: "PSBAS DOWN"
params: []
- id: ps_bass_set
label: Bass Set
kind: action
command: "PSBAS {level}"
params:
- name: level
type: integer
description: "00-99 ASCII, 50=0dB. Operable 40-60 (-10 to +10dB), 2-step."
- id: ps_bass_query
label: Bass Status Query
kind: query
command: "PSBAS ?"
params: []
- id: ps_treble_up
label: Treble Up
kind: action
command: "PSTRE UP"
params: []
- id: ps_treble_down
label: Treble Down
kind: action
command: "PSTRE DOWN"
params: []
- id: ps_treble_set
label: Treble Set
kind: action
command: "PSTRE {level}"
params:
- name: level
type: integer
description: "00-99 ASCII, 50=0dB. Operable 40-60 (-10 to +10dB), 2-step."
- id: ps_treble_query
label: Treble Status Query
kind: query
command: "PSTRE ?"
params: []
- id: ps_balance_left
label: Balance Left
kind: action
command: "PSBAL LEFT"
params: []
- id: ps_balance_right
label: Balance Right
kind: action
command: "PSBAL RIGHT"
params: []
- id: ps_balance_set
label: Balance Set
kind: action
command: "PSBAL {level}"
params:
- name: level
type: integer
description: "00-99 ASCII, 50=center. Operable 44-56 (L6 to R6)."
- id: ps_balance_query
label: Balance Status Query
kind: query
command: "PSBAL ?"
params: []
- id: ps_sdb_on
label: SDB On
kind: action
command: "PSSDB ON"
params: []
- id: ps_sdb_off
label: SDB Off
kind: action
command: "PSSDB OFF"
params: []
- id: ps_sdb_query
label: SDB Status Query
kind: query
command: "PSSDB ?"
params: []
- id: ps_source_direct_on
label: Source Direct On
kind: action
command: "PSSDI ON"
params: []
- id: ps_source_direct_off
label: Source Direct Off
kind: action
command: "PSSDI OFF"
params: []
- id: ps_source_direct_query
label: Source Direct Status Query
kind: query
command: "PSSDI ?"
params: []
# ===== FV : Favorite direct/memory/delete =====
- id: favorite_set
label: Favorite Direct Change
kind: action
command: "FV {number}"
params:
- name: number
type: integer
description: "Favorite number (direct change)."
- id: favorite_query
label: Favorite List Query
kind: query
command: "FV ?"
params: []
- id: favorite_memory
label: Favorite Memory
kind: action
command: "FVMEM {number}"
params:
- name: number
type: integer
description: "Favorite memory slot number."
- id: favorite_delete
label: Favorite Delete
kind: action
command: "FVDEL {number}"
params:
- name: number
type: integer
description: "Favorite number to delete."
# ===== MN : Menu / Favorite navigation =====
- id: menu_cursor_up
label: Menu Cursor Up
kind: action
command: "MNCUP"
params: []
- id: menu_cursor_down
label: Menu Cursor Down
kind: action
command: "MNCDN"
params: []
- id: menu_cursor_left
label: Menu Cursor Left
kind: action
command: "MNCLT"
params: []
- id: menu_cursor_right
label: Menu Cursor Right
kind: action
command: "MNCRT"
params: []
- id: menu_enter
label: Menu Enter
kind: action
command: "MNENT"
params: []
- id: favorite_on
label: Favorite On
kind: action
command: "MNFAV ON"
params: []
- id: favorite_off
label: Favorite Off
kind: action
command: "MNFAV OFF"
params: []
# ===== TF : Tuner Frequency (Analog + DAB, N8 Only) =====
- id: tuner_freq_analog_up
label: Tuner Frequency Up (Analog)
kind: action
command: "TFANUP"
params: []
- id: tuner_freq_analog_down
label: Tuner Frequency Down (Analog)
kind: action
command: "TFANDOWN"
params: []
- id: tuner_freq_analog_set
label: Tuner Frequency Set (Analog)
kind: action
command: "TFAN{frequency}"
params:
- name: frequency
type: string
description: "6-digit ASCII. >050000 = AM (kHz), <050000 = FM (MHz). e.g. 105000 = 1050.00 kHz AM."
- id: tuner_freq_analog_query
label: Tuner Frequency Query (Analog)
kind: query
command: "TFAN?"
params: []
- id: tuner_freq_dab_up
label: DAB Station Up
kind: action
command: "TFDAUP"
params: []
- id: tuner_freq_dab_down
label: DAB Station Down
kind: action
command: "TFDADOWN"
params: []
- id: tuner_freq_dab_set
label: DAB Station Set
kind: action
command: "TFDA{station}"
params:
- name: station
type: string
description: "3-digit FrequencyBlock at DAB band. e.g. A13."
- id: tuner_freq_dab_query
label: DAB Station Query
kind: query
command: "TFDA?"
params: []
# ===== TP : Tuner Preset (Analog) =====
- id: tuner_preset_up
label: Tuner Preset Up
kind: action
command: "TPANUP"
params: []
- id: tuner_preset_down
label: Tuner Preset Down
kind: action
command: "TPANDOWN"
params: []
- id: tuner_preset_set
label: Tuner Preset Set
kind: action
command: "TPAN{preset}"
params:
- name: preset
type: string
description: "Preset number (e.g. 50)."
- id: tuner_preset_query
label: Tuner Preset Query
kind: query
command: "TPAN?"
params: []
- id: tuner_preset_memory
label: Tuner Preset Memory
kind: action
command: "TPANMEM{preset}"
params:
- name: preset
type: string
description: "Preset number to store (e.g. 05)."
# ===== TM : Tuner Band/Mode =====
- id: tuner_band_am
label: Tuner Band AM
kind: action
command: "TMANAM"
params: []
- id: tuner_band_fm
label: Tuner Band FM
kind: action
command: "TMANFM"
params: []
- id: tuner_band_dab
label: Tuner Band DAB
kind: action
command: "TMDA"
params: []
- id: tuner_mode_auto
label: Tuner Mode Auto
kind: action
command: "TMANAUTO"
params: []
- id: tuner_mode_manual
label: Tuner Mode Manual
kind: action
command: "TMANMANUAL"
params: []
- id: tuner_status_query
label: Tuner Status Query
kind: query
command: "TM?"
params: []
# ===== NS : Network/Rhapsody/Napster/USB/iPod Direct Extended Control =====
- id: ns_cursor_up
label: NS Cursor Up
kind: action
command: "NS90"
params: []
- id: ns_cursor_down
label: NS Cursor Down
kind: action
command: "NS91"
params: []
- id: ns_cursor_left
label: NS Cursor Left
kind: action
command: "NS92"
params: []
- id: ns_cursor_right
label: NS Cursor Right
kind: action
command: "NS93"
params: []
- id: ns_enter_play_pause
label: NS Enter (Play/Pause)
kind: action
command: "NS94"
params: []
- id: ns_fn_97
label: NS Function 97
kind: action
command: "NS97"
params: []
- id: ns_fn_98
label: NS Function 98
kind: action
command: "NS98"
params: []
- id: ns_play
label: NS Play
kind: action
command: "NS9A"
params: []
- id: ns_pause
label: NS Pause
kind: action
command: "NS9B"
params: []
- id: ns_stop
label: NS Stop
kind: action
command: "NS9C"
params: []
- id: ns_skip_plus
label: NS Skip Plus
kind: action
command: "NS9D"
params: []
- id: ns_skip_minus
label: NS Skip Minus
kind: action
command: "NS9E"
params: []
- id: ns_fast_forward_start_9f
label: NS Start Fast Forward (9F)
kind: action
command: "NS9F"
params: []
- id: ns_fast_forward_start_9g
label: NS Start Fast Forward (9G)
kind: action
command: "NS9G"
params: []
- id: ns_repeat_one
label: NS Repeat One
kind: action
command: "NS9H"
params: []
- id: ns_repeat_all
label: NS Repeat All
kind: action
command: "NS9I"
params: []
- id: ns_repeat_off
label: NS Repeat Off
kind: action
command: "NS9J"
params: []
- id: ns_random_on_shuffle
label: NS Random On / Shuffle Songs
kind: action
command: "NS9K"
params: []
- id: ns_random_off
label: NS Random Off / Shuffle Off
kind: action
command: "NS9M"
params: []
- id: ns_browse_remote_toggle
label: NS Browse/Remote Mode Toggle
kind: action
command: "NS9W"
params: []
- id: ns_page_up
label: NS Page Up
kind: action
command: "NS9X"
params: []
- id: ns_page_down
label: NS Page Down
kind: action
command: "NS9Y"
params: []
- id: ns_fast_end
label: NS End Fast Forward/Reverse
kind: action
command: "NS9Z"
params: []
- id: ns_onscreen_ascii_request
label: NS Onscreen Display Info Request (ASCII)
kind: query
command: "NSA"
params: []
- id: ns_onscreen_utf8_request
label: NS Onscreen Display Info Request (UTF-8)
kind: query
command: "NSE"
params: []
# ===== BD : CD Control (N8 Only) =====
- id: cd_cursor_up
label: CD Cursor Up
kind: action
command: "BDCURSOR UP"
params: []
- id: cd_cursor_down
label: CD Cursor Down
kind: action
command: "BDCURSOR DOWN"
params: []
- id: cd_cursor_left
label: CD Cursor Left
kind: action
command: "BDCURSOR LEFT"
params: []
- id: cd_cursor_right
label: CD Cursor Right
kind: action
command: "BDCURSOR RIGHT"
params: []
- id: cd_enter
label: CD Enter
kind: action
command: "BDENTER"
params: []
- id: cd_play
label: CD Play
kind: action
command: "BDPLAY"
params: []
- id: cd_pause
label: CD Pause
kind: action
command: "BDPAUSE"
params: []
- id: cd_play_pause
label: CD Play/Pause
kind: action
command: "BDPLAY PAUSE"
params: []
- id: cd_stop
label: CD Stop
kind: action
command: "BDSTOP"
params: []
- id: cd_skip_plus
label: CD Skip Plus
kind: action
command: "BDSKIP +"
params: []
- id: cd_skip_minus
label: CD Skip Minus
kind: action
command: "BDSKIP -"
params: []
- id: cd_manual_search_plus
label: CD Manual Search Plus
kind: action
command: "BDMANUAL SEARCH +"
params: []
- id: cd_manual_search_minus
label: CD Manual Search Minus
kind: action
command: "BDMANUAL SEARCH -"
params: []
- id: cd_direct_track_select
label: CD Direct Track Select
kind: action
command: "BDDS TRACK {track}"
params:
- name: track
type: integer
description: "Track number 0000 to 9999 by ASCII."
- id: cd_open_close
label: CD Open/Close
kind: action
command: "BDOPEN/CLOSE"
params: []
- id: cd_repeat
label: CD Repeat Toggle
kind: action
command: "BDREPEAT"
params: []
- id: cd_repeat_one
label: CD Repeat One
kind: action
command: "BDREPEAT ONE"
params: []
- id: cd_repeat_all
label: CD Repeat All
kind: action
command: "BDREPEAT ALL"
params: []
- id: cd_repeat_off
label: CD Repeat Off
kind: action
command: "BDREPEAT OFF"
params: []
- id: cd_random
label: CD Random Toggle
kind: action
command: "BDRANDOM"
params: []
- id: cd_random_on
label: CD Random On
kind: action
command: "BDRANDOM ON"
params: []
- id: cd_random_off
label: CD Random Off
kind: action
command: "BDRANDOM OFF"
params: []
- id: cd_folder_mode_on
label: CD Folder Mode On
kind: action
command: "BDFOLDER MODE ON"
params: []
- id: cd_folder_mode_off
label: CD Folder Mode Off
kind: action
command: "BDFOLDER MODE OFF"
params: []
- id: cd_folder_mode_toggle
label: CD Folder Mode Toggle
kind: action
command: "BDFOLDER MODE"
params: []
- id: cd_folder_name_query
label: CD Folder Name Query
kind: query
command: "BDFOLDER NAME?"
params: []
- id: cd_file_name_query
label: CD File Name Query
kind: query
command: "BDFILE NAME?"
params: []
- id: cd_artist_name_query
label: CD Artist Name Query
kind: query
command: "BDARTIST NAME?"
params: []
- id: cd_album_name_query
label: CD Album Name Query
kind: query
command: "BDALBUM NAME?"
params: []
- id: cd_song_name_query
label: CD Song Name Query
kind: query
command: "BDSONG NAME?"
params: []
- id: cd_status_query
label: CD System Status Query
kind: query
command: "BDSTATUS?"
params: []
- id: cd_folder_plus
label: CD Folder Plus
kind: action
command: "BDFOLDER +"
params: []
- id: cd_folder_minus
label: CD Folder Minus
kind: action
command: "BDFOLDER -"
params: []
Feedbacks
feedbacks:
- id: power_state
type: enum
values: [ON, STANDBY]
command: "PW?"
- id: master_volume
type: range
values: "00-60"
command: "MV?"
- id: mute_state
type: enum
values: [ON, OFF]
command: "MU?"
- id: input_source
type: enum
values: [IRADIO, SERVER, LASTFM, SPOTIFY, PANDORA, SIRIUSXM, IPOD, USB, AUXA, AUXB, AUXC, AUXD, PORTABLE_IN, CD, FM, AM, DAB]
command: "SI?"
- id: sleep_timer
type: string
command: "SLP?"
- id: portable_in_connection
type: enum
values: [OK, NG]
command: "PICONECT?"
- id: bass_level
type: range
values: "40-60"
command: "PSBAS ?"
- id: treble_level
type: range
values: "40-60"
command: "PSTRE ?"
- id: balance_level
type: range
values: "44-56"
command: "PSBAL ?"
- id: sdb_state
type: enum
values: [ON, OFF]
command: "PSSDB ?"
- id: source_direct_state
type: enum
values: [ON, OFF]
command: "PSSDI ?"
- id: favorite_list
type: string
command: "FV ?"
- id: tuner_frequency
type: string
command: "TFAN?"
- id: tuner_preset
type: string
command: "TPAN?"
- id: tuner_mode
type: enum
values: [AM, FM, DAB, AUTO, MANUAL]
command: "TM?"
- id: timer_status
type: string
command: "TS?"
- id: timer_onoff_status
type: string
command: "TO?"
- id: cd_system_status
type: string
command: "BDSTATUS?"
# UNRESOLVED: detailed BD STATUS field decoding (disc type/audio format/time mode/answer code) defined in source footnotes but not split into discrete feedback variables.
Variables
variables:
- id: master_volume_level
type: integer
range: "00-60"
unit: "dB (relative, 00 = min)"
- id: bass_level
type: integer
range: "40-60"
unit: "dB (50 = 0)"
- id: treble_level
type: integer
range: "40-60"
unit: "dB (50 = 0)"
- id: balance_level
type: integer
range: "44-56"
unit: "(50 = center, L6-R6)"
- id: sleep_timer_minutes
type: integer
range: "001-120"
# UNRESOLVED: favorite slot count / numbering range not explicitly bounded in source.
Events
events:
- id: power_event
description: "Unsolicited EVENT on power change. Same form as COMMAND (PWON / PWSTANDBY)."
command: "PWON / PWSTANDBY"
- id: master_volume_event
description: "Unsolicited EVENT on master volume change (MV**)."
command: "MV**"
- id: mute_event
description: "Unsolicited EVENT on mute change (MUON / MUOFF)."
command: "MUON / MUOFF"
- id: input_source_event
description: "Unsolicited EVENT on input source change (SI***)."
command: "SI***"
- id: sleep_timer_event
description: "Unsolicited EVENT on sleep timer change (SLP***)."
command: "SLP***"
- id: tone_balance_event
description: "Unsolicited EVENT on bass/treble/balance/SDB/SDI change."
command: "PSBAS ** / PSTRE ** / PSBAL ** / PSSDB ON|OFF / PSSDI ON|OFF"
- id: favorite_name_event
description: "Favorite name data (FV**_XX_aaaa_???????)."
command: "FV25 01 FM-87.50MHz"
- id: tuner_event
description: "Unsolicited EVENT on tuner freq/preset/band/mode change."
command: "TFAN****** / TPAN** / TMANAM|ANFM|ANAUTO|ANMANUAL / TMDA / TFDA***"
- id: timer_event
description: "Unsolicited EVENT on timer set / timer ON-OFF / clock."
command: "TSONCE... / TSEVERY... / TO... / CLK"
- id: onscreen_ascii_event
description: "Onscreen display info lines 0-8 (ASCII) returned by NSA command."
command: "NSA0...NSA8"
- id: onscreen_utf8_event
description: "Onscreen display info lines 0-8 (UTF-8) returned by NSE command."
command: "NSE0...NSE8"
- id: cd_status_event
description: "CD system status event (BDSTATUS ...) plus play/pause/stop/skip/search/track/cursor/repeat/random/folder answer codes."
command: "BDSTATUS / BDPLAY / BDPAUSE / ... etc."
Macros
macros: []
# UNRESOLVED: source documents no explicit multi-step macro sequences (command-by-command recipes). Timer-set commands embed multiple fields but are single commands, not sequences.
Safety
confirmation_required_for: []
interlocks:
- "Wait 1 second after sending PWON before transmitting next COMMAND (source: basic spec item E)."
- "TF/TP commands cannot operate when INPUT source is not TUNER (source notes)."
- "BD SKIP / MANUAL SEARCH valid only when mode status is Play (E) or Pause (F) (source footnote *C / *D)."
- "When power condition is STANDBY, BD accepts only REQUEST SYSTEM STATUS, POWER ON KEY, REQUEST CPU VERSION, REQUEST ERROR STATUS; other commands return COMMAND FORMAT ERROR ('1')."
# UNRESOLVED: no explicit safety interlock procedures, voltage/current protection, or power-on sequencing beyond the PWON 1-second spacing note.
Notes
- Protocol is ASCII over TCP telnet port 23. Command structure:
COMMAND(2 chars) + PARAMETER(up to 25 chars) + CR (0x0D). Max command length 135 bytes. Half-duplex, 10/100 Mbps. - ASCII range usable: 0x20-0x7E plus 0x0D (CR) as terminator only.
?parameter = request command; device returns RESPONSE within 200ms, same form as EVENT.- EVENTs are unsolicited state-change notifications sent to controller (same form as COMMAND). RESPONSEs are replies to
?request commands. - Master volume minimum parameter is "00"; 1dB step uses 2 ASCII chars (MV00..MV60).
- Source document is labelled "DENON SYSTEM control protocol Ver.1.0.0, Application model: DRA-N5/RCD-N8, Application terminal: Ethernet Rev 8.0.0, dated 12-Oct-2012". Applied to CEOL N9 (RCD-N9) on platform-continuity inference per prior discovery; a CEOL-N9-specific protocol doc could not be located.
- Model/region markers in source: "N8 Only" (CD/FM/AM/JP/DAB/AUXA/AUXC), "N5" (AUXB analog), "E2 Only" (LASTFM, IRADIO), "NA Only" (PANDORA, SIRIUSXM). Availability on CEOL N9 unconfirmed.
- BD STATUS response field decoding (disc type code, audio format code, time mode code, answer code, status code, play mode code) is defined in source footnotes (*1-*7) as packed ASCII fields; not split into discrete feedback variables here.
## Provenance
```yaml
source_domains:
- web.archive.org
source_urls:
- https://web.archive.org/web/20150501111601/http://assets.eu.denon.com:80/DocumentMaster/UK/DRAN5_RCDN8_PROTOCOL_V.1.0.0.pdf
retrieved_at: 2026-07-31T17:15:26.759Z
last_checked_at: 2026-08-05T08:17:19.586Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-08-05T08:17:19.586Z
matched_actions: 128
action_count: 128
confidence: medium
summary: "All 128 spec actions (Actions + Feedbacks) match wire-literal command examples in the source COMMAND/parameter table; transport TCP port 23 confirmed verbatim. (11 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "source protocol doc is labelled DRA-N5/RCD-N8 v1.0.0 (12-Oct-2012); CEOL N9 / RCD-N9-specific protocol doc could not be located. Application to CEOL N9 is inferred from shared platform. Some commands marked \"N8 Only\" / \"N5\" / \"E2 Only\" / \"NA Only\" in source — region/model availability on CEOL N9 not confirmed."
- "source states TCP port 23 (telnet) and 135 bytes max command length; base URL / IP discovery not specified (DHCP/manual via on-device SETUP menu)."
- "detailed BD STATUS field decoding (disc type/audio format/time mode/answer code) defined in source footnotes but not split into discrete feedback variables."
- "favorite slot count / numbering range not explicitly bounded in source."
- "source documents no explicit multi-step macro sequences (command-by-command recipes). Timer-set commands embed multiple fields but are single commands, not sequences."
- "no explicit safety interlock procedures, voltage/current protection, or power-on sequencing beyond the PWON 1-second spacing note."
- "firmware version compatibility not stated in source."
- "base URL / IP discovery method not specified (device SETUP menu only)."
- "CEOL-N9-specific protocol document not found; RCD-N8 doc applied by platform inference."
- "exact favorite slot count / numbering bounds not stated."
- "region/model-specific command availability on CEOL N9 unconfirmed."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0