Summary
OPPO BDP-103/105 Blu-ray Disc Player RS-232 control protocol (Version 1.1, October 22, 2012). Extension of the original BDP-83 protocol; backwards compatible with BDP-83 and BDP-93/95 controllers. ASCII command set with #-prefixed 3-letter command codes terminated by CR, returning short or verbose @-prefixed responses, plus optional unsolicited status update messages. Uses a DCE-configured female 9-pin D-Sub connector with a straight-through DB9 cable (do NOT use a null-modem cable).
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
connector: DB9 female (DCE) # source: "female 9-pin D-Sub type connector"
pinout:
pin_2: TXD
pin_3: RXD
pin_5: GND
cable: straight-through DB9 # source: "Do NOT use a Null-Modem type cable"
auth:
type: none # inferred: no auth procedure in source
framing:
command_start: "#" # ASCII 0x23
command_end: "\r" # ASCII 0x0d (CR)
response_start: "@" # ASCII 0x40
response_end: "\r" # ASCII 0x0d (CR)
field_separator: " " # ASCII 0x20 (space)
max_command_bytes: 25
max_response_bytes: 25
response_timeout_seconds: 10 # host may consider command lost after 10s
result_codes: [OK, ER]
verbose_modes:
- 0 # short response (default)
- 1 # commands echoed in response
- 2 # unsolicited major status updates
- 3 # unsolicited detailed status updates incl. per-second time code
Traits
- powerable # inferred from PON/POF/POW power command examples
- queryable # inferred from QPW/QVR/QVL/... query command examples
- levelable # inferred from SVL volume set command
- routable # inferred from SIS input-source routing command
Actions
# --- Section A: Remote-button-mapped commands (no parameters) ---
- id: power_toggle
label: Power Toggle
kind: action
command: "#POW\r"
params: []
notes: Toggle power between STANDBY and ON. Response example "OK ON" or "OK OFF".
- id: select_input_source_button
label: Select Input Source (INPUT button)
kind: action
command: "#SRC\r"
params: []
- id: tray_open_close
label: Open/Close Disc Tray
kind: action
command: "#EJT\r"
params: []
notes: Response example "OK OPEN" or "OK CLOSE".
- id: power_on_discrete
label: Power On (Discrete)
kind: action
command: "#PON\r"
params: []
notes: Discrete on. Response "OK ON".
- id: power_off_discrete
label: Power Off (Discrete)
kind: action
command: "#POF\r"
params: []
notes: Discrete off. Response "OK OFF".
- id: tv_system_cycle
label: Switch Output TV System (P/N)
kind: action
command: "#SYS\r"
params: []
notes: Cycles NTSC / PAL / MULTI(AUTO). Response "OK NTSC" / "OK PAL" / "OK AUTO".
- id: dimmer
label: Front Panel Dimmer
kind: action
command: "#DIM\r"
params: []
notes: Response "OK ON" / "OK DIM" / "OK OFF".
- id: pure_audio
label: Pure Audio Mode
kind: action
command: "#PUR\r"
params: []
notes: Response "OK ON" / "OK OFF".
- id: volume_up
label: Volume Up
kind: action
command: "#VUP\r"
params: []
notes: Response "OK n" where n = 0-100.
- id: volume_down
label: Volume Down
kind: action
command: "#VDN\r"
params: []
notes: Response "OK n" where n = 0-100.
- id: mute_toggle
label: Mute Toggle
kind: action
command: "#MUT\r"
params: []
notes: Response "OK MUTE" / "OK UNMUTE".
- id: numeric_1
label: Numeric Key 1
kind: action
command: "#NU1\r"
params: []
- id: numeric_2
label: Numeric Key 2
kind: action
command: "#NU2\r"
params: []
- id: numeric_3
label: Numeric Key 3
kind: action
command: "#NU3\r"
params: []
- id: numeric_4
label: Numeric Key 4
kind: action
command: "#NU4\r"
params: []
- id: numeric_5
label: Numeric Key 5
kind: action
command: "#NU5\r"
params: []
- id: numeric_6
label: Numeric Key 6
kind: action
command: "#NU6\r"
params: []
- id: numeric_7
label: Numeric Key 7
kind: action
command: "#NU7\r"
params: []
- id: numeric_8
label: Numeric Key 8
kind: action
command: "#NU8\r"
params: []
- id: numeric_9
label: Numeric Key 9
kind: action
command: "#NU9\r"
params: []
- id: numeric_0
label: Numeric Key 0
kind: action
command: "#NU0\r"
params: []
- id: clear_numeric
label: Clear Numeric Input
kind: action
command: "#CLR\r"
params: []
- id: goto
label: GOTO (Play From Specified Location)
kind: action
command: "#GOT\r"
params: []
- id: home_menu
label: Home Menu
kind: action
command: "#HOM\r"
params: []
- id: page_up
label: Page Up
kind: action
command: "#PUP\r"
params: []
- id: page_down
label: Page Down
kind: action
command: "#PDN\r"
params: []
- id: osd_toggle
label: Show/Hide On-Screen Display
kind: action
command: "#OSD\r"
params: []
- id: top_menu
label: Top Menu / DVD Title Menu
kind: action
command: "#TTL\r"
params: []
- id: popup_menu
label: Pop-Up Menu / DVD Menu
kind: action
command: "#MNU\r"
params: []
- id: nav_up
label: Navigation Up
kind: action
command: "#NUP\r"
params: []
- id: nav_left
label: Navigation Left
kind: action
command: "#NLT\r"
params: []
- id: nav_right
label: Navigation Right
kind: action
command: "#NRT\r"
params: []
- id: nav_down
label: Navigation Down
kind: action
command: "#NDN\r"
params: []
- id: nav_enter
label: Navigation Enter
kind: action
command: "#SEL\r"
params: []
- id: setup_menu
label: Setup Menu
kind: action
command: "#SET\r"
params: []
- id: return_menu
label: Return To Previous Menu
kind: action
command: "#RET\r"
params: []
- id: color_red
label: Red Function Key
kind: action
command: "#RED\r"
params: []
- id: color_green
label: Green Function Key
kind: action
command: "#GRN\r"
params: []
- id: color_blue
label: Blue Function Key
kind: action
command: "#BLU\r"
params: []
- id: color_yellow
label: Yellow Function Key
kind: action
command: "#YLW\r"
params: []
- id: stop
label: Stop Playback
kind: action
command: "#STP\r"
params: []
- id: play
label: Start Playback
kind: action
command: "#PLA\r"
params: []
- id: pause
label: Pause Playback
kind: action
command: "#PAU\r"
params: []
- id: previous_chapter
label: Skip To Previous
kind: action
command: "#PRE\r"
params: []
- id: fast_reverse
label: Fast Reverse Play
kind: action
command: "#REV\r"
params: []
notes: Response "OK 1X" (and other speed levels).
- id: fast_forward
label: Fast Forward Play
kind: action
command: "#FWD\r"
params: []
notes: Response "OK 1X" (and other speed levels).
- id: next_chapter
label: Skip To Next
kind: action
command: "#NXT\r"
params: []
- id: audio_language
label: Change Audio Language/Channel
kind: action
command: "#AUD\r"
params: []
- id: subtitle_language
label: Change Subtitle Language
kind: action
command: "#SUB\r"
params: []
- id: angle
label: Change Camera Angle
kind: action
command: "#ANG\r"
params: []
notes: Response "OK a/b" where a = current angle, b = total available angles.
- id: zoom_button
label: Zoom In/Out (button)
kind: action
command: "#ZOM\r"
params: []
notes: Response "OK (zoom ratio text)".
- id: sap_toggle
label: Secondary Audio Program Toggle
kind: action
command: "#SAP\r"
params: []
notes: Response "OK (audio track info)" or "OK Off".
- id: ab_repeat
label: AB Repeat
kind: action
command: "#ATB\r"
params: []
notes: Response cycles "OK A-" / "OK A-B" / "OK OFF".
- id: repeat_button
label: Repeat Play (button)
kind: action
command: "#RPT\r"
params: []
notes: Response "OK Repeat Chapter" / "OK Repeat Title" / "OK OFF".
- id: pip_toggle
label: Show/Hide Picture-in-Picture
kind: action
command: "#PIP\r"
params: []
notes: Response "OK (PIP program info)" / "OK Off".
- id: resolution_button
label: Switch Output Resolution (button)
kind: action
command: "#HDM\r"
params: []
- id: subtitle_hold
label: Subtitle Shift Activate (SUBTITLE hold)
kind: action
command: "#SUH\r"
params: []
- id: launch_netflix_button
label: Launch Netflix (button)
kind: action
command: "#NFX\r"
params: []
- id: launch_vudu_button
label: Launch VUDU (button)
kind: action
command: "#VDU\r"
params: []
- id: option_menu
label: Show/Hide Option Menu
kind: action
command: "#OPT\r"
params: []
- id: menu_3d
label: 3D Conversion / Adjustment Menu
kind: action
command: "#M3D\r"
params: []
- id: picture_adjustment_menu
label: Display Picture Adjustment Menu
kind: action
command: "#SEH\r"
params: []
- id: no_operation
label: No Operation
kind: action
command: "#NOP\r"
params: []
# --- Section C: Advanced commands (parameterized) ---
- id: set_verbose_mode
label: Set Verbose Mode
kind: action
command: "#SVM {mode}\r"
params:
- name: mode
type: enum
values: [0, 1, 2, 3]
description: 0 = off (short response), 1 = echo command code in response, 2 = enable major status updates, 3 = enable detailed status updates incl. per-second time code.
- id: set_hdmi_resolution
label: Set HDMI Output Resolution
kind: action
command: "#SHD {resolution}\r"
params:
- name: resolution
type: enum
values: [SDI, SDP, 720P, 1080I, 1080P, SRC, AUTO]
description: SDI = SD interlaced (480i/576i), SDP = SD progressive (480p/576p), SRC = Source Direct, AUTO = auto.
- id: set_tv_system
label: Set Output TV System
kind: action
command: "#SPN {system}\r"
params:
- name: system
type: enum
values: [NTSC, PAL, AUTO]
- id: set_zoom_ratio
label: Set Zoom Ratio
kind: action
command: "#SZM {ratio}\r"
params:
- name: ratio
type: enum
values: [1, AR, FS, US, "1.2", "1.3", "1.5", 2, 3, 4, "1/2", "1/3", "1/4"]
description: HDMI Output supports 1/AR/FS/US/1.2/1.3/1.5/2/1/2; Component Output supports 1/2/3/4/1/2/1/3/1/4. AR = Aspect Ratio correction, FS = Full Screen, US = Underscan.
- id: set_volume
label: Set Volume
kind: action
command: "#SVL {level}\r"
params:
- name: level
type: string
description: Integer 0-100 or literal "MUTE".
- id: set_repeat_mode
label: Set Repeat Mode
kind: action
command: "#SRP {mode}\r"
params:
- name: mode
type: enum
values: [CH, TT, ALL, OFF, SHF, RND]
description: CH = Chapter, TT = Title/CD track, ALL = All, OFF = Off, SHF = Shuffle, RND = Random.
- id: search_to_position
label: Search To Position
kind: action
command: "#SRH {target}\r"
params:
- name: target
type: string
description: 'Examples - "T3" search to Title 3; "C10" search to Chapter 10; "C 0:00:34" search inside current chapter/track; "T 0:12:13" or "0:12:13" search inside current title/disc.'
- id: direct_play
label: Direct Play
kind: action
command: "#DPL\r"
params: []
- id: reset_rs232
label: Reset RS-232 Command Buffer
kind: action
command: "#RST\r"
params: []
notes: Clears all command buffers; does not wait for pending/executing commands. Start over again.
- id: set_subtitle_shift
label: Set Subtitle Shift
kind: action
command: "#SSH {shift}\r"
params:
- name: shift
type: integer
description: Range -5 to 5 inclusive.
- id: set_osd_position
label: Set OSD Position
kind: action
command: "#SOP {position}\r"
params:
- name: position
type: integer
description: Range 0 to 5 inclusive.
- id: set_time_display
label: Set Time Information Display
kind: action
command: "#STC {code}\r"
params:
- name: code
type: enum
values: [E, R, T, X, C, K]
description: E = Total Elapsed, R = Total Remaining, T = Title Elapsed, X = Title Remaining, C = Chapter/track Elapsed, K = Chapter/track Remaining.
- id: set_input_source
label: Set Input Source
kind: action
command: "#SIS {source}\r"
params:
- name: source
type: enum
values: [0, 1, 2, 3, 4, 5, 6, 7]
description: 0 = BD-PLAYER, 1 = HDMI/MHL IN-FRONT, 2 = HDMI IN-BACK, 3 = ARC on HDMI OUT1, 4 = ARC on HDMI OUT2, 5 = OPTICAL IN, 6 = COAXIAL IN, 7 = USB AUDIO IN. Note - values 5/6/7 are invalid on BDP-103.
- id: launch_application
label: Launch Application
kind: action
command: "#APP {app}\r"
params:
- name: app
type: enum
values: [NFX, YOU, VUD, PAN, FFR, PIC, RHA, CIN]
description: NFX = Netflix, YOU = YouTube, VUD = VUDU, PAN = Pandora, FFR = FilmFresh, PIC = Picasa, RHA = Rhapsody, CIN = CinemaNow.
# --- Section B: Query commands (kind: query) ---
- id: query_verbose_mode
label: Query Verbose Mode
kind: query
command: "#QVM\r"
params: []
notes: Response "OK 0|1|2|3".
- id: query_power
label: Query Power Status
kind: query
command: "#QPW\r"
params: []
notes: Response "OK ON" or "OK OFF".
- id: query_firmware_version
label: Query Firmware Version
kind: query
command: "#QVR\r"
params: []
notes: Response example "OK BDP103-xx-xxxx".
- id: query_volume
label: Query Volume
kind: query
command: "#QVL\r"
params: []
notes: Response "OK n" (0-100) or "OK MUTE".
- id: query_hdmi_resolution
label: Query HDMI Resolution
kind: query
command: "#QHD\r"
params: []
notes: Response examples "OK 480P", "OK 720P50", "OK 1080P60", "OK AUTO".
- id: query_playback_status
label: Query Playback Status
kind: query
command: "#QPL\r"
params: []
notes: 'Response one of: NO DISC, LOADING, OPEN, CLOSE, PLAY, PAUSE, STOP, STEP, FREV, FFWD, SFWD, SREV, SETUP, HOME MENU, MEDIA CENTER.'
- id: query_track_title
label: Query Track/Title
kind: query
command: "#QTK\r"
params: []
notes: Response example "OK 02/10" (current/total).
- id: query_chapter
label: Query Chapter
kind: query
command: "#QCH\r"
params: []
notes: Response example "OK 03/03" (current/total).
- id: query_track_elapsed
label: Query Track/Title Elapsed Time
kind: query
command: "#QTE\r"
params: []
notes: Response HH:MM:SS, example "OK 00:01:34".
- id: query_track_remaining
label: Query Track/Title Remaining Time
kind: query
command: "#QTR\r"
params: []
notes: Response HH:MM:SS, example "OK 01:20:23".
- id: query_chapter_elapsed
label: Query Chapter Elapsed Time
kind: query
command: "#QCE\r"
params: []
notes: Response HH:MM:SS.
- id: query_chapter_remaining
label: Query Chapter Remaining Time
kind: query
command: "#QCR\r"
params: []
notes: Response HH:MM:SS.
- id: query_total_elapsed
label: Query Total Elapsed Time
kind: query
command: "#QEL\r"
params: []
notes: Response HH:MM:SS.
- id: query_total_remaining
label: Query Total Remaining Time
kind: query
command: "#QRE\r"
params: []
notes: Response HH:MM:SS.
- id: query_disc_type
label: Query Disc Type
kind: query
command: "#QDT\r"
params: []
notes: 'Response one of: BD-MV, DVD-VIDEO, DVD-AUDIO, SACD, CDDA, HDCD, DATA-DISC.'
- id: query_audio_type
label: Query Audio Type
kind: query
command: "#QAT\r"
params: []
notes: Response examples "OK DD 1/1", "OK DD 1/5 English", "OK DTS 2/5 English", "OK LPCM", "OK DTS-HD 1/4 English".
- id: query_subtitle_type
label: Query Subtitle Type
kind: query
command: "#QST\r"
params: []
notes: Response examples "OK OFF" or "OK 1/1 English".
- id: query_subtitle_shift
label: Query Subtitle Shift
kind: query
command: "#QSH\r"
params: []
notes: Returns -5 .. 0 .. 5.
- id: query_osd_position
label: Query OSD Position
kind: query
command: "#QOP\r"
params: []
notes: Returns 0 .. 5.
- id: query_repeat_mode
label: Query Repeat Mode
kind: query
command: "#QRP\r"
params: []
notes: 'Response "OK <code> <text>" - 00 Off, 01 Repeat One, 02 Repeat Chapter, 03 Repeat All, 04 Repeat Title, 05 Shuffle, 06 Random.'
- id: query_zoom_mode
label: Query Zoom Mode
kind: query
command: "#QZM\r"
params: []
notes: 'Response "OK <code>" - 00 Off, 01 Stretch, 02 Full, 03 Underscan, 04 1.2x, 05 1.3x, 06 1.5x, 07 2x, 08 3x, 09 4x, 10 1/2, 11 1/3, 12 1/4.'
- id: query_input_source
label: Query Input Source
kind: query
command: "#QIS\r"
params: []
notes: 'Response "OK <n> <name>" - 0 BD-PLAYER, 1 HDMI-FRONT, 2 HDMI-BACK, 3 ARC-HDMI-OUT1, 4 ARC-HDMI-OUT2, 5 OPTICAL, 6 COAXIAL, 7 USB-AUDIO.'
Feedbacks
- id: power_state
type: enum
values: [ON, OFF]
source_command: "#QPW\r"
- id: verbose_mode_state
type: enum
values: [0, 1, 2, 3]
source_command: "#QVM\r"
- id: firmware_version
type: string
description: Firmware version string, e.g. "BDP103-xx-xxxx".
source_command: "#QVR\r"
- id: volume_level
type: string
description: Integer 0-100 or literal "MUTE".
source_command: "#QVL\r"
- id: hdmi_output_resolution
type: enum
values: [480P, 720P50, 1080P60, AUTO] # examples from source
source_command: "#QHD\r"
notes: Other resolutions may be returned; source lists these as examples.
- id: playback_status
type: enum
values:
- NO DISC
- LOADING
- OPEN
- CLOSE
- PLAY
- PAUSE
- STOP
- STEP
- FREV
- FFWD
- SFWD
- SREV
- SETUP
- HOME MENU
- MEDIA CENTER
source_command: "#QPL\r"
- id: track_title_position
type: string
description: "Current/total in NN/NN form, e.g. 02/10."
source_command: "#QTK\r"
- id: chapter_position
type: string
description: "Current/total in NN/NN form, e.g. 03/03."
source_command: "#QCH\r"
- id: track_elapsed_time
type: string
description: HH:MM:SS.
source_command: "#QTE\r"
- id: track_remaining_time
type: string
description: HH:MM:SS.
source_command: "#QTR\r"
- id: chapter_elapsed_time
type: string
description: HH:MM:SS.
source_command: "#QCE\r"
- id: chapter_remaining_time
type: string
description: HH:MM:SS.
source_command: "#QCR\r"
- id: total_elapsed_time
type: string
description: HH:MM:SS.
source_command: "#QEL\r"
- id: total_remaining_time
type: string
description: HH:MM:SS.
source_command: "#QRE\r"
- id: disc_type
type: enum
values: [BD-MV, DVD-VIDEO, DVD-AUDIO, SACD, CDDA, HDCD, DATA-DISC]
source_command: "#QDT\r"
- id: audio_type
type: string
description: 'Format: "<type> <n/total> [language] [channels]". Types include DD, DP, DT, TS, TH, TM, PC, MP, CD, UN.'
source_command: "#QAT\r"
- id: subtitle_type
type: string
description: '"OFF" or "<n/total> <language>".'
source_command: "#QST\r"
- id: subtitle_shift
type: integer
range: [-5, 5]
source_command: "#QSH\r"
- id: osd_position
type: integer
range: [0, 5]
source_command: "#QOP\r"
- id: repeat_mode
type: enum
values:
- "00 Off"
- "01 Repeat One"
- "02 Repeat Chapter"
- "03 Repeat All"
- "04 Repeat Title"
- "05 Shuffle"
- "06 Random"
source_command: "#QRP\r"
- id: zoom_mode
type: enum
values:
- "00 Off"
- "01 Stretch"
- "02 Full"
- "03 Underscan"
- "04 1.2x"
- "05 1.3x"
- "06 1.5x"
- "07 2x"
- "08 3x"
- "09 4x"
- "10 1/2"
- "11 1/3"
- "12 1/4"
source_command: "#QZM\r"
- id: input_source
type: enum
values:
- "0 BD-PLAYER"
- "1 HDMI-FRONT"
- "2 HDMI-BACK"
- "3 ARC-HDMI-OUT1"
- "4 ARC-HDMI-OUT2"
- "5 OPTICAL"
- "6 COAXIAL"
- "7 USB-AUDIO"
source_command: "#QIS\r"
Variables
- id: volume
type: integer
range: [0, 100]
set_command: "#SVL\r"
query_command: "#QVL\r"
notes: Also accepts literal MUTE via SVL.
- id: hdmi_output_resolution
type: enum
values: [SDI, SDP, 720P, 1080I, 1080P, SRC, AUTO]
set_command: "#SHD\r"
query_command: "#QHD\r"
- id: tv_system
type: enum
values: [NTSC, PAL, AUTO]
set_command: "#SPN\r"
- id: zoom_ratio
type: enum
values: [1, AR, FS, US, "1.2", "1.3", "1.5", 2, 3, 4, "1/2", "1/3", "1/4"]
set_command: "#SZM\r"
query_command: "#QZM\r"
- id: repeat_mode
type: enum
values: [CH, TT, ALL, OFF, SHF, RND]
set_command: "#SRP\r"
query_command: "#QRP\r"
- id: subtitle_shift
type: integer
range: [-5, 5]
set_command: "#SSH\r"
query_command: "#QSH\r"
- id: osd_position
type: integer
range: [0, 5]
set_command: "#SOP\r"
query_command: "#QOP\r"
- id: time_display_type
type: enum
values: [E, R, T, X, C, K]
set_command: "#STC\r"
notes: Controls which time format is displayed on the front panel and reported by UTC updates.
- id: input_source
type: enum
values: [0, 1, 2, 3, 4, 5, 6, 7]
set_command: "#SIS\r"
query_command: "#QIS\r"
notes: Values 5/6/7 are not supported on BDP-103 and return ER INVALID.
- id: verbose_mode
type: enum
values: [0, 1, 2, 3]
set_command: "#SVM\r"
query_command: "#QVM\r"
Events
# Unsolicited status updates sent automatically when verbose mode is 2 or 3.
# All event frames are "@<code> <params>\r".
- id: power_status_update
code: UPW
frame: "@UPW {state}\r"
verbose_mode: 2
params:
- name: state
type: enum
values: [0, 1]
description: 1 = player turned on; 0 = player going off.
- id: playback_status_update
code: UPL
frame: "@UPL {state}\r"
verbose_mode: 2
params:
- name: state
type: enum
values: [DISC, LOAD, OPEN, CLOS, PLAY, PAUS, STOP, STPF, STPR, FFW1, FFW2, FFW3, FFW4, FFW5, FRV1, FRV2, FRV3, FRV4, FRV5, SFW1, SFW2, SFW3, SFW4, SRV1, SRV2, SRV3, SRV4, HOME, MCTR]
description: 4-char state code. FFWn/FRVn n=1..5 = fast forward/reverse speed; SFWn/SRVn n=1..4 = slow speeds (1=½, 2=¼, 3=1/8, 4=1/16).
- id: volume_level_update
code: UVL
frame: "@UVL {value}\r"
verbose_mode: 2
params:
- name: value
type: string
description: 'Either "MUT" (mute engaged) or "000".."100" (volume level).'
- id: disc_type_update
code: UDT
frame: "@UDT {type}\r"
verbose_mode: 2
params:
- name: type
type: enum
values: [BDMV, DVDV, DVDA, SACD, CDDA, HDCD, DATA, VCD2, SVCD]
- id: audio_type_update
code: UAT
frame: "@UAT {type} {number} {language} {channels}\r"
verbose_mode: 2
params:
- name: type
type: enum
values: [DD, DP, DT, TS, TH, TM, PC, MP, CD, UN]
description: DD=Dolby Digital, DP=DD+, DT=TrueHD, TS=DTS, TH=DTS-HD HR, TM=DTS-HD MA, PC=LPCM, MP=MPEG, CD=CD Audio, UN=Unknown.
- name: number
type: string
description: '"NN/NN" current/total tracks.'
- name: language
type: string
description: ISO-3166 3-letter code (ENG, FRA, ...) or UNK.
- name: channels
type: string
description: e.g. "1.0", "2.0", "5.1", "7.1", "0.0" for unknown.
- id: subtitle_type_update
code: UST
frame: "@UST {number} {language}\r"
verbose_mode: 2
params:
- name: number
type: string
description: '"NN/NN" current/total subtitle tracks; "00/xx" if subtitle off.'
- name: language
type: string
description: ISO-3166 3-letter code or UNK.
- id: input_source_update
code: UIS
frame: "@UIS {number} {name}\r"
verbose_mode: 2
params:
- name: number
type: integer
range: [0, 7]
- name: name
type: enum
values: [BD-PLAYER, HDMI-FRONT, HDMI-BACK, ARC-HDMI-OUT1, ARC-HDMI-OUT2, OPTICAL, COAXIAL, USB-AUDIO]
- id: time_code_update
code: UTC
frame: "@UTC {title} {chapter} {type} {time}\r"
verbose_mode: 3
params:
- name: title
type: string
description: 3-digit title number; "001" for discs without title numbers (e.g. CD).
- name: chapter
type: string
description: 3-digit chapter or track number.
- name: type
type: enum
values: [E, R, T, X, C, K]
description: Same set as STC.
- name: time
type: string
description: HH:MM:SS.
notes: Sent once per second when playback time advances.
- id: video_resolution_update
code: UVO
frame: "@UVO {source_resolution} {output_resolution}\r"
verbose_mode: 3
params:
- name: source_resolution
type: enum
values: ["_480I60", "_480P60", "_576I50", "_576P50", "_720P60", "_720P50", 1080I60, 1080I50, 1080P60, 1080P50, 1080P24, 1080P23]
- name: output_resolution
type: enum
values: ["_480I60", "_480P60", "_576I50", "_576P50", "_720P60", "_720P50", 1080I60, 1080I50, 1080P60, 1080P50, 1080P24, 1080P23]
description: Source resolutions below 720p use a leading underscore per source spec.
Macros
# UNRESOLVED: source contains illustrative example sequences (power on -> eject -> play
# -> stop -> eject -> power off) but does not declare formal named macros. No macros populated.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlocks, or power-on sequencing
# requirements beyond the cabling note ("Do NOT use a Null-Modem type cable for PC connection"),
# which is a wiring instruction, not a runtime safety interlock.
Notes
- Protocol revision: Version 1.1, October 22, 2012. Backwards compatible with the BDP-83 and BDP-93/95 protocol; existing controllers do not require reprogramming.
- The host should wait for a response before issuing the next command. If a new command arrives before the previous one finishes, the player MAY discard the previous command.
- If no response arrives within 10 seconds, the host may consider the command lost and retransmit.
- The
#(0x23) character must never appear inside command parameters; the@(0x40) character must never appear inside response parameters. - Each command and each response is capped at 25 bytes including the start-of-frame and CR terminator.
- Verbose mode 1 echoes the command code in the response (e.g.
@PON OK ONinstead of@OK ON). Verbose modes 2 and 3 additionally emit unsolicited@U***status updates from front-panel buttons, IR remote, RS-232 commands, and playback progress. - The
SIScommand rejects values 5/6/7 on the BDP-103 withER INVALID; these audio inputs are BDP-105-only. - DCE pin assignment: pin 2 = TXD, pin 3 = RXD, pin 5 = GND. Use a straight-through cable, NOT a null-modem cable, when connecting to a PC.
Provenance
source_domains:
- download.oppodigital.com
source_urls:
- http://download.oppodigital.com/BDP103/BDP-103_RS232_Protocol_v1.1.pdf
retrieved_at: 2026-05-04T15:18:13.223Z
last_checked_at: 2026-06-02T17:23:37.432Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:23:37.432Z
matched_actions: 99
action_count: 99
confidence: medium
summary: "All 99 spec actions matched verbatim in source; all transport parameters verified; bidirectional coverage complete. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source contains illustrative example sequences (power on -> eject -> play"
- "source contains no safety warnings, interlocks, or power-on sequencing"
- "exact behaviour of FREV/FFWD/SFWD/SREV speed-level mapping in playback status query (QPL) is not stated beyond the verbose-mode FFWn/FRVn/SFWn/SRVn definitions."
- "full enumeration of QHD response values not stated — source lists only \"480P\", \"720P50\", \"1080P60\", \"AUTO\" as examples."
- "response format for #SRC (INPUT button) not stated beyond \"OK\"."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0