Summary

Yamaha BD-S2900 Blu-ray/DVD/CD player with RS-232C serial control. Supports transport operations (play, pause, stop, search, skip), tray control, menu navigation, and status queries via a binary packet protocol with ASCII-encoded command parameters. Full duplex, start-stop synchronization.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable     # POWER ON / POWER OFF / STANDBY/ON commands present
- queryable     # Report Player Status, Report Media Status, Report Track Status, Report Time Code commands present

Actions

- id: standby_on
  label: Standby/On Toggle
  kind: action
  params: []
  command: STX 30 37 43 38 30 ETX

- id: power_on
  label: Power On
  kind: action
  params: []
  command: STX 30 37 43 46 36 ETX

- id: power_off
  label: Power Off
  kind: action
  params: []
  command: STX 30 37 43 46 37 ETX

- id: open_close
  label: Open/Close Tray
  kind: action
  params: []
  command: STX 30 37 43 38 31 ETX

- id: play
  label: Play
  kind: action
  params: []
  command: STX 30 37 43 38 32 ETX

- id: pause
  label: Pause
  kind: action
  params: []
  command: STX 30 37 43 38 33 ETX

- id: stop
  label: Stop
  kind: action
  params: []
  command: STX 30 37 43 38 35 ETX

- id: search_backward
  label: Search Backward
  kind: action
  params: []
  command: STX 30 37 43 38 36 ETX

- id: search_forward
  label: Search Forward
  kind: action
  params: []
  command: STX 30 37 43 38 37 ETX

- id: skip_backward
  label: Skip Backward
  kind: action
  params: []
  command: STX 30 37 43 42 39 ETX

- id: skip_forward
  label: Skip Forward
  kind: action
  params: []
  command: STX 30 37 43 42 41 ETX

- id: clear
  label: Clear
  kind: action
  params: []
  command: STX 30 37 43 39 46 ETX

- id: on_screen
  label: On Screen Display
  kind: action
  params: []
  command: STX 30 37 43 41 36 ETX

- id: status
  label: Status Display
  kind: action
  params: []
  command: STX 30 37 43 41 38 ETX

- id: setup
  label: Setup Menu
  kind: action
  params: []
  command: STX 30 37 43 41 43 ETX

- id: audio
  label: Audio Toggle
  kind: action
  params: []
  command: STX 30 37 43 41 44 ETX

- id: secondary_audio
  label: Secondary Audio Toggle
  kind: action
  params: []
  command: STX 30 37 43 45 45 ETX

- id: top_menu
  label: Top Menu / Direct Navigator
  kind: action
  params: []
  command: STX 30 37 43 42 31 ETX

- id: popup_menu
  label: Pop-up Menu
  kind: action
  params: []
  command: STX 30 37 43 43 46 ETX

- id: sub_menu
  label: Sub Menu / Option
  kind: action
  params: []
  command: STX 30 37 43 44 30 ETX

- id: functions
  label: Functions
  kind: action
  params: []
  command: STX 30 37 43 45 38 ETX

- id: pip
  label: Picture-in-Picture Toggle
  kind: action
  params: []
  command: STX 30 37 43 45 44 ETX

- id: cursor_down
  label: Cursor Down
  kind: action
  params: []
  command: STX 30 37 43 42 33 ETX

- id: cursor_up
  label: Cursor Up
  kind: action
  params: []
  command: STX 30 37 43 42 34 ETX

- id: cursor_left
  label: Cursor Left
  kind: action
  params: []
  command: STX 30 37 43 42 35 ETX

- id: cursor_right
  label: Cursor Right
  kind: action
  params: []
  command: STX 30 37 43 42 36 ETX

- id: return
  label: Return
  kind: action
  params: []
  command: STX 30 37 43 42 37 ETX

- id: enter
  label: OK / Enter
  kind: action
  params: []
  command: STX 30 37 43 42 38 ETX

- id: red
  label: Red Button
  kind: action
  params: []
  command: STX 30 37 43 45 39 ETX

- id: green
  label: Green Button
  kind: action
  params: []
  command: STX 30 37 43 45 41 ETX

- id: blue
  label: Blue Button
  kind: action
  params: []
  command: STX 30 37 43 45 42 ETX

- id: yellow
  label: Yellow Button
  kind: action
  params: []
  command: STX 30 37 43 45 43 ETX

- id: bd_sd
  label: BD/SD Toggle
  kind: action
  params: []
  command: STX 30 37 43 45 46 ETX

- id: numeric
  label: Numeric Key
  kind: action
  params:
    - name: digit
      type: integer
      description: "Digit 0-9"
  note: "CMDT2/CMDT3 encode digit (0=93,1=94,2=95,3=96,4=97,5=98,6=99,7=9A,8=9B,9=9C)"

- id: report_command_enable
  label: Set Report Command Enable/Disable
  kind: action
  params:
    - name: enable
      type: enum
      values: ["enable", "disable"]
      description: "Enable or disable command reports. Enable is power-on default."
  command: "STX 31 30 30 30 {CMDT3} ETX where CMDT3=30(enable)/31(disable)"

- id: set_report_interval
  label: Set Report Command Interval
  kind: action
  params:
    - name: interval
      type: enum
      values: [realtime, 50ms, 100ms, 150ms, 200ms, 250ms, 300ms, 350ms, 400ms]
      description: "BD-S2900 only supports 200ms; other values may be denied."
  command: "STX 31 31 30 30 {CMDT3} ETX where CMDT3=30..38"

- id: set_baud_rate
  label: Set Baud Rate
  kind: action
  params:
    - name: rate
      type: enum
      values: ["9600_8N", "19200_8N", "38400_8N", "9600_8E", "19200_8E", "38400_8E"]
      description: "BD-S2900 only supports 9600bps/No parity; other values may be denied."
  command: "STX 31 32 30 30 {CMDT3} ETX where CMDT3=30..37"

- id: report_player_status
  label: Report Player Status
  kind: action
  params: []
  command: STX 34 31 30 30 30 ETX

- id: report_media_status
  label: Report Media Status
  kind: action
  params: []
  command: STX 34 32 30 30 30 ETX

- id: report_track_status
  label: Report Track Status
  kind: action
  params: []
  command: STX 34 33 30 30 30 ETX
  note: "Only applicable for audio CD. Query after confirming PLAY status."

- id: report_timecode
  label: Report Time Code
  kind: action
  params: []
  command: STX 34 34 30 30 30 ETX
  note: "Query after confirming PLAY status."

- id: ready
  label: Ready / Start Transaction
  kind: action
  params:
    - name: timeout
      type: integer
      description: "Communication timeout (0=no timeout, range 0-0xFFF). BD-S2900 ignores this."
  command: "DC1 {TOUT0} {TOUT1} {TOUT2} ETX"
  note: "Used to get Configuration reply. BD-S2900 ignores timeout setting. Retry 5x at 1s intervals if no reply."

Feedbacks

- id: player_status
  type: enum
  values:
    - power_on
    - standby
    - tray_open
    - tray_close
    - toc_read
    - no_disc
    - menu
    - pause
    - stop
    - play
    - search_forward
    - search_backward
    - setup
  description: "Reported via Report Player Status command and Player Status Report events. RCMD1+RCMD2 hex pair from Table 3-4."

- id: media_status
  type: enum
  values:
    - busy
    - no_disc
    - cd
    - dvd
    - bd
  description: "Disc type detected in tray."

- id: track_number
  type: integer
  description: "Current track number (audio CD only). Returned as hex in RCMD2."

- id: timecode
  type: string
  description: "Current position as HH:MM:SS (hex-encoded). RCMD0=hour, RCMD1=min, RCMD2=sec."

- id: command_report
  type: object
  description: "Reply packet for every command (when reports enabled). Contains TYP(control source), GRD(guard status), RCMD0-2(command echo or status)."

Variables

- id: report_enabled
  type: boolean
  description: "Whether command reports are enabled. Power-on default: true (enabled)."

- id: report_interval
  type: enum
  values: [realtime, 50ms, 100ms, 150ms, 200ms, 250ms, 300ms, 350ms, 400ms]
  description: "Interval between command receipt and reply. BD-S2900 fixed at 200ms."

Events

- id: player_status_report
  description: "Unsolicited Player Status Report sent when player state changes (e.g. disc load, playback start, power state change). Packet: STX TYP GRD SW RCMD0 RCMD1 RCMD2 ETX. TYP indicates control source (0=RS-232C, 1=IR, 2=keys, 3=system, 4=encoder)."

- id: system_status_report
  description: "NOT SUPPORTED on BD-S2900."

- id: operation_report
  description: "NOT SUPPORTED on BD-S2900."

Macros

- id: start_transaction
  description: "Send Ready command, receive Configuration reply. Confirms player presence and retrieves model ID, software version, and capabilities. Retry up to 5 times at 1s intervals."

Safety

confirmation_required_for: []
interlocks:
  - description: "BD-S2900 only accepts power commands and system commands while in standby. All other commands are rejected when power is off."
  - description: "PLAY command rejected when no disc is present (guard status='1')."
# UNRESOLVED: no explicit safety warnings or interlock procedures in source beyond command guard table

Notes

  • 3-wire RS-232C connection: TxD, RxD, GND only. RTS/CTS must be left open (not connected). Hardware handshaking disabled.
  • Packet format: Header (DC1/DC2/STX) + ASCII-encoded data bytes + Footer (ETX). Checksum on Configuration reply is lower 1 byte of 2's complement of all data excluding Header/Footer.
  • BD-S2900 ignores timeout setting in Ready command; only use Ready to obtain Configuration.
  • BD-S2900 only supports 9600bps/no parity; set_baud_rate and set_report_interval commands will deny other values with guard status.
  • No cancel command — once sent, a command cannot be revoked. Last command has highest priority.
  • If no reply within 1 second, retry up to 5 times; after 5 failures, restart communication from start transaction.
  • Remote control codes use YAMAHA customer code '7C' (CMDT0=7, CMDT1=C).
  • Report Track Status only works for audio CD. Query after confirming PLAY state.

Provenance

source_domains:
  - avsforum.com
  - applicationmarket.crestron.com
source_urls:
  - https://www.avsforum.com/attachments/bds2900rs232-pdf.15166/
  - https://applicationmarket.crestron.com/content/Help/Yamaha/yamaha_bd-s1900_v1_0_help.pdf
retrieved_at: 2026-05-12T09:53:19.993Z
last_checked_at: 2026-06-02T22:16:27.351Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:16:27.351Z
matched_actions: 42
action_count: 42
confidence: medium
summary: "All 42 spec actions traced to source (dip-safe re-verify). (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source covers BD-S2900 only; applicability to other BD-S models not confirmed"
- "firmware version compatibility not stated"
- "no explicit safety warnings or interlock procedures in source beyond command guard table"
- "exact cable pinout (DB-9 vs DB-25) not specified"
- "maximum cable length not specified"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0