Summary
Yamaha YAS-408 is a MusicCast-enabled soundbar (also sold as MusicCast BAR 400). It implements Yamaha's Extended Control (YXC) HTTP/JSON API over the local network, and pushes unsolicited status events as UDP unicast to a registered X-AppPort. This spec catalogs every YXC endpoint documented in the YXC Basic specification (Rev. 2.00) — the YAS-408 responds to a subset of these endpoints based on the capability list returned by /v1/system/getFeatures.
Transport
# YXC is HTTP/JSON for control + UDP unicast for events. No port number is
# stated in the source; HTTP defaults to 80, UDP event port is chosen by the
# client (X-AppPort request header).
protocols:
- http
- udp
addressing:
base_url: "http://{host}/YamahaExtendedControl" # stated verbatim in source
auth:
type: none # inferred: no auth procedure in source
Traits
# Traits supported by evidence from the YXC Basic spec (per-Trait application
# depends on the YAS-408's getFeatures response):
- powerable
- routable # inferred: setInput command present
- queryable # inferred: getStatus, getDeviceInfo, getFeatures, etc. present
- levelable # inferred: setVolume, setMute, setToneControl, setEqualizer, setBalance, setSubwooferVolume present
Actions
# Coverage note: YXC Basic (Rev. 2.00) defines 124 distinct endpoints across
# System, Zone, Tuner, Net/USB, CD, and Clock namespaces. The YAS-408 is a
# soundbar (category_code = 2) with one main zone and no built-in tuner or CD,
# so it will respond to a subset; the protocol surface documented here is the
# full set the device may implement. Each `command` field carries the literal
# URL/path documented in the YXC source.
# ───── System (4.1 - 4.42) ─────
- id: get_device_info
label: Get Device Info
kind: query
command: "GET /YamahaExtendedControl/v1/system/getDeviceInfo"
params: []
- id: get_features
label: Get Features
kind: query
command: "GET /YamahaExtendedControl/v1/system/getFeatures"
params: []
- id: get_network_status
label: Get Network Status
kind: query
command: "GET /YamahaExtendedControl/v1/system/getNetworkStatus"
params: []
- id: set_wired_lan
label: Set Wired LAN
kind: action
command: "POST /YamahaExtendedControl/v1/system/setWiredLan"
params:
- name: dhcp
type: string
- name: ip_address
type: string
- name: subnet_mask
type: string
- name: default_gateway
type: string
- name: dns_server_1
type: string
- name: dns_server_2
type: string
- id: set_wireless_lan
label: Set Wireless LAN
kind: action
command: "POST /YamahaExtendedControl/v1/system/setWirelessLan"
params:
- name: ssid
type: string
- name: type
type: string
description: "none | wep | wpa2-psk(aes) | mixed_mode"
- name: key
type: string
- name: dhcp
type: string
- name: ip_address
type: string
- name: subnet_mask
type: string
- name: default_gateway
type: string
- name: dns_server_1
type: string
- name: dns_server_2
type: string
- id: set_wireless_direct
label: Set Wireless Direct
kind: action
command: "POST /YamahaExtendedControl/v1/system/setWirelessDirect"
params:
- name: type
type: string
description: "none | wpa2-psk(aes)"
- name: key
type: string
- id: set_ip_settings
label: Set IP Settings
kind: action
command: "POST /YamahaExtendedControl/v1/system/setIpSettings"
params:
- name: dhcp
type: string
- name: ip_address
type: string
- name: subnet_mask
type: string
- name: default_gateway
type: string
- name: dns_server_1
type: string
- name: dns_server_2
type: string
- id: set_network_name
label: Set Network Name
kind: action
command: "POST /YamahaExtendedControl/v1/system/setNetworkName"
params:
- name: name
type: string
description: "Friendly name, UTF-8 within 32 characters"
- id: set_airplay_pin
label: Set AirPlay PIN
kind: action
command: "POST /YamahaExtendedControl/v1/system/setAirPlayPin"
params:
- name: pin
type: string
description: "Printable ASCII (0x20-0x7E) within 63 characters"
- id: get_mac_address_filter
label: Get MAC Address Filter
kind: query
command: "GET /YamahaExtendedControl/v1/system/getMacAddressFilter"
params: []
- id: set_mac_address_filter
label: Set MAC Address Filter
kind: action
command: "POST /YamahaExtendedControl/v1/system/setMacAddressFilter"
params:
- name: filter
type: boolean
- name: address_1
type: string
- name: address_2
type: string
- name: address_3
type: string
- name: address_4
type: string
- name: address_5
type: string
- name: address_6
type: string
- name: address_7
type: string
- name: address_8
type: string
- name: address_9
type: string
- name: address_10
type: string
- id: get_network_standby
label: Get Network Standby
kind: query
command: "GET /YamahaExtendedControl/v1/system/getNetworkStandby"
params: []
- id: set_network_standby
label: Set Network Standby
kind: action
command: "GET /YamahaExtendedControl/v1/system/setNetworkStandby?standby={standby}"
params:
- name: standby
type: string
description: "off | on | auto"
- id: get_bluetooth_info
label: Get Bluetooth Info
kind: query
command: "GET /YamahaExtendedControl/v1/system/getBluetoothInfo"
params: []
- id: set_bluetooth_standby
label: Set Bluetooth Standby
kind: action
command: "GET /YamahaExtendedControl/v1/system/setBluetoothStandby?enable={enable}"
params:
- name: enable
type: boolean
- id: set_bluetooth_tx_setting
label: Set Bluetooth TX Setting
kind: action
command: "GET /YamahaExtendedControl/v1/system/setBluetoothTxSetting?enable={enable}"
params:
- name: enable
type: boolean
- id: get_bluetooth_device_list
label: Get Bluetooth Device List
kind: query
command: "GET /YamahaExtendedControl/v1/system/getBluetoothDeviceList"
params: []
- id: update_bluetooth_device_list
label: Update Bluetooth Device List
kind: action
command: "GET /YamahaExtendedControl/v1/system/updateBluetoothDeviceList"
params: []
- id: connect_bluetooth_device
label: Connect Bluetooth Device
kind: action
command: "GET /YamahaExtendedControl/v1/system/connectBluetoothDevice?address={address}"
params:
- name: address
type: string
description: "BT address (12-digit hex)"
- id: disconnect_bluetooth_device
label: Disconnect Bluetooth Device
kind: action
command: "GET /YamahaExtendedControl/v1/system/disconnectBluetoothDevice"
params: []
- id: get_func_status
label: Get Func Status
kind: query
command: "GET /YamahaExtendedControl/v1/system/getFuncStatus"
params: []
- id: set_auto_power_standby
label: Set Auto Power Standby
kind: action
command: "GET /YamahaExtendedControl/v1/system/setAutoPowerStandby?enable={enable}"
params:
- name: enable
type: boolean
- id: set_ir_sensor
label: Set IR Sensor
kind: action
command: "GET /YamahaExtendedControl/v1/system/setIrSensor?enable={enable}"
params:
- name: enable
type: boolean
- id: set_speaker_a
label: Set Speaker A
kind: action
command: "GET /YamahaExtendedControl/v1/system/setSpeakerA?enable={enable}"
params:
- name: enable
type: boolean
- id: set_speaker_b
label: Set Speaker B
kind: action
command: "GET /YamahaExtendedControl/v1/system/setSpeakerB?enable={enable}"
params:
- name: enable
type: boolean
- id: set_dimmer
label: Set Dimmer
kind: action
command: "GET /YamahaExtendedControl/v1/system/setDimmer?value={value}"
params:
- name: value
type: integer
description: "-1 = auto; >=0 = manual"
- id: set_zone_b_volume_sync
label: Set Zone B Volume Sync
kind: action
command: "GET /YamahaExtendedControl/v1/system/setZoneBVolumeSync?enable={enable}"
params:
- name: enable
type: boolean
- id: set_hdmi_out_1
label: Set HDMI Out 1
kind: action
command: "GET /YamahaExtendedControl/v1/system/setHdmiOut1?enable={enable}"
params:
- name: enable
type: boolean
- id: set_hdmi_out_2
label: Set HDMI Out 2
kind: action
command: "GET /YamahaExtendedControl/v1/system/setHdmiOut2?enable={enable}"
params:
- name: enable
type: boolean
- id: set_hdmi_out_3
label: Set HDMI Out 3
kind: action
command: "GET /YamahaExtendedControl/v1/system/setHdmiOut3?enable={enable}"
params:
- name: enable
type: boolean
- id: get_name_text
label: Get Name Text
kind: query
command: "GET /YamahaExtendedControl/v1/system/getNameText?id={id}"
params:
- name: id
type: string
description: "Optional Zone/Input/Sound Program ID; omit to retrieve all"
- id: set_name_text
label: Set Name Text
kind: action
command: "POST /YamahaExtendedControl/v1/system/setNameText"
params:
- name: id
type: string
- name: text
type: string
description: "UTF-8 within 64 bytes; empty string resets to default"
- id: get_location_info
label: Get Location Info
kind: query
command: "GET /YamahaExtendedControl/v1/system/getLocationInfo"
params: []
- id: get_stereo_pair_info
label: Get Stereo Pair Info
kind: query
command: "GET /YamahaExtendedControl/v1/system/getStereoPairInfo"
params: []
- id: send_ir_code
label: Send IR Code
kind: action
command: "GET /YamahaExtendedControl/v1/system/sendIrCode?code={code}"
params:
- name: code
type: string
description: "IR code, 8-digit hex"
- id: get_remote_info
label: Get Remote Info
kind: query
command: "GET /YamahaExtendedControl/v1/system/getRemoteInfo"
params: []
- id: request_network_reboot
label: Request Network Reboot
kind: action
command: "GET /YamahaExtendedControl/v1/system/requestNetworkReboot"
params: []
- id: request_system_reboot
label: Request System Reboot
kind: action
command: "GET /YamahaExtendedControl/v1/system/requestSystemReboot"
params: []
- id: get_advanced_features
label: Get Advanced Features
kind: query
command: "GET /YamahaExtendedControl/v1/system/getAdvancedFeatures"
params: []
- id: set_auto_play
label: Set Auto Play
kind: action
command: "GET /YamahaExtendedControl/v1/system/setAutoPlay?enable={enable}"
params:
- name: enable
type: boolean
- id: set_speaker_pattern
label: Set Speaker Pattern
kind: action
command: "GET /YamahaExtendedControl/v1/system/setSpeakerPattern?num={num}"
params:
- name: num
type: integer
description: "1..speaker_pattern_num (from getFeatures)"
- id: set_party_mode
label: Set Party Mode
kind: action
command: "GET /YamahaExtendedControl/v1/system/setPartyMode?enable={enable}"
params:
- name: enable
type: boolean
# ───── Zone (5.1 - 5.29) - {zone} is one of main|zone2|zone3|zone4 ─────
- id: get_status
label: Get Zone Status
kind: query
command: "GET /YamahaExtendedControl/v1/{zone}/getStatus"
params:
- name: zone
type: string
description: "main | zone2 | zone3 | zone4"
- id: get_sound_program_list
label: Get Sound Program List
kind: query
command: "GET /YamahaExtendedControl/v1/{zone}/getSoundProgramList"
params:
- name: zone
type: string
- id: set_power
label: Set Power
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setPower?power={power}"
params:
- name: zone
type: string
- name: power
type: string
description: "on | standby | toggle"
- id: set_sleep
label: Set Sleep Timer
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setSleep?sleep={sleep}"
params:
- name: zone
type: string
- name: sleep
type: integer
description: "0 | 30 | 60 | 90 | 120 minutes"
- id: set_volume
label: Set Volume
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setVolume?volume={volume}&step={step}"
params:
- name: zone
type: string
- name: volume
type: integer
description: "Numeric volume, or 'up'/'down' (API v1.17+)"
- name: step
type: integer
description: "Step value when volume is up/down (optional)"
- id: set_mute
label: Set Mute
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setMute?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_input
label: Set Input
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setInput?input={input}&mode={mode}"
params:
- name: zone
type: string
- name: input
type: string
description: "Input ID from getFeatures"
- name: mode
type: string
description: "autoplay_disabled (optional, API v1.12+)"
- id: set_sound_program
label: Set Sound Program
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setSoundProgram?program={program}"
params:
- name: zone
type: string
- name: program
type: string
description: "Sound Program ID from getFeatures"
- id: set_3d_surround
label: Set 3D Surround
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/set3dSurround?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_direct
label: Set Direct
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setDirect?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_pure_direct
label: Set Pure Direct
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setPureDirect?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_enhancer
label: Set Enhancer
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setEnhancer?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_tone_control
label: Set Tone Control
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setToneControl?mode={mode}&bass={bass}&treble={treble}"
params:
- name: zone
type: string
- name: mode
type: string
description: "manual | auto | bypass (optional)"
- name: bass
type: integer
- name: treble
type: integer
- id: set_equalizer
label: Set Equalizer
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setEqualizer?mode={mode}&low={low}&mid={mid}&high={high}"
params:
- name: zone
type: string
- name: mode
type: string
- name: low
type: integer
- name: mid
type: integer
- name: high
type: integer
- id: set_balance
label: Set Balance
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setBalance?value={value}"
params:
- name: zone
type: string
- name: value
type: integer
description: "Negative = left, positive = right"
- id: set_dialogue_level
label: Set Dialogue Level
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setDialogueLevel?value={value}"
params:
- name: zone
type: string
- name: value
type: integer
- id: set_dialogue_lift
label: Set Dialogue Lift
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setDialogueLift?value={value}"
params:
- name: zone
type: string
- name: value
type: integer
- id: set_clear_voice
label: Set Clear Voice
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setClearVoice?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: set_subwoofer_volume
label: Set Subwoofer Volume
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setSubwooferVolume?volume={volume}"
params:
- name: zone
type: string
- name: volume
type: integer
- id: set_bass_extension
label: Set Bass Extension
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setBassExtension?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: get_signal_info
label: Get Signal Info
kind: query
command: "GET /YamahaExtendedControl/v1/{zone}/getSignalInfo"
params:
- name: zone
type: string
- id: prepare_input_change
label: Prepare Input Change
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/prepareInputChange?input={input}"
params:
- name: zone
type: string
- name: input
type: string
- id: recall_scene
label: Recall Scene
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/recallScene?num={num}"
params:
- name: zone
type: string
- name: num
type: integer
description: "Scene number from getFeatures"
- id: set_contents_display
label: Set Contents Display
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setContentsDisplay?enable={enable}"
params:
- name: zone
type: string
- name: enable
type: boolean
- id: control_cursor
label: Control Cursor
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/controlCursor?cursor={cursor}"
params:
- name: zone
type: string
- name: cursor
type: string
description: "up | down | left | right | select | return"
- id: control_menu
label: Control Menu
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/controlMenu?menu={menu}"
params:
- name: zone
type: string
- name: menu
type: string
description: "on_screen | top_menu | menu | option | display | help | home | mode | red | green | yellow | blue"
- id: set_actual_volume
label: Set Actual Volume
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setActualVolume?mode={mode}&value={value}"
params:
- name: zone
type: string
- name: mode
type: string
description: "db | numeric"
- name: value
type: number
- id: set_audio_select
label: Set Audio Select
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setAudioSelect?type={type}"
params:
- name: zone
type: string
- name: type
type: string
description: "auto | hdmi | coax_opt | analog | unavailable"
- id: set_surround_decoder_type
label: Set Surround Decoder Type
kind: action
command: "GET /YamahaExtendedControl/v1/{zone}/setSurroundDecoderType?type={type}"
params:
- name: zone
type: string
- name: type
type: string
description: "toggle | auto | dolby_pl | dolby_pl2x_movie | dolby_pl2x_music | dolby_pl2x_game | dolby_surround | dts_neural_x | dts_neo6_cinema | dts_neo6_music"
# ───── Tuner (6.1 - 6.15) - present on receivers, not on YAS-408 ─────
- id: tuner_get_preset_info
label: Tuner Get Preset Info
kind: query
command: "GET /YamahaExtendedControl/v1/tuner/getPresetInfo?band={band}"
params:
- name: band
type: string
description: "common | am | fm | dab"
- id: tuner_get_play_info
label: Tuner Get Play Info
kind: query
command: "GET /YamahaExtendedControl/v1/tuner/getPlayInfo"
params: []
- id: tuner_set_band
label: Tuner Set Band
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/setBand?band={band}"
params:
- name: band
type: string
description: "am | fm | dab"
- id: tuner_set_freq
label: Tuner Set Freq
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/setFreq?band={band}&tuning={tuning}&num={num}"
params:
- name: band
type: string
description: "am | fm"
- name: tuning
type: string
description: "up | down | cancel | auto_up | auto_down | tp_up | tp_down | direct"
- name: num
type: integer
description: "Frequency (kHz) when tuning=direct"
- id: tuner_recall_preset
label: Tuner Recall Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/recallPreset?zone={zone}&band={band}&num={num}"
params:
- name: zone
type: string
- name: band
type: string
- name: num
type: integer
- id: tuner_switch_preset
label: Tuner Switch Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/switchPreset?dir={dir}"
params:
- name: dir
type: string
description: "next | previous"
- id: tuner_store_preset
label: Tuner Store Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/storePreset?num={num}"
params:
- name: num
type: integer
- id: tuner_clear_preset
label: Tuner Clear Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/clearPreset?band={band}&num={num}"
params:
- name: band
type: string
- name: num
type: integer
- id: tuner_start_auto_preset
label: Tuner Start Auto Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/startAutoPreset?band={band}"
params:
- name: band
type: string
description: "fm"
- id: tuner_cancel_auto_preset
label: Tuner Cancel Auto Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/cancelAutoPreset?band={band}"
params:
- name: band
type: string
description: "fm"
- id: tuner_move_preset
label: Tuner Move Preset
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/movePreset?band={band}&from={from}&to={to}"
params:
- name: band
type: string
- name: from
type: integer
- name: to
type: integer
- id: tuner_start_dab_initial_scan
label: Tuner Start DAB Initial Scan
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/startDabInitialScan"
params: []
- id: tuner_cancel_dab_initial_scan
label: Tuner Cancel DAB Initial Scan
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/cancelDabInitialScan"
params: []
- id: tuner_set_dab_tune_aid
label: Tuner Set DAB Tune Aid
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/setDabTuneAid?action={action}"
params:
- name: action
type: string
description: "start | stop | up | down"
- id: tuner_set_dab_service
label: Tuner Set DAB Service
kind: action
command: "GET /YamahaExtendedControl/v1/tuner/setDabService?dir={dir}"
params:
- name: dir
type: string
description: "next | previous"
# ───── Net/USB (7.1 - 7.26) ─────
- id: netusb_get_preset_info
label: NetUSB Get Preset Info
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getPresetInfo"
params: []
- id: netusb_get_play_info
label: NetUSB Get Play Info
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getPlayInfo"
params: []
- id: netusb_set_playback
label: NetUSB Set Playback
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setPlayback?playback={playback}"
params:
- name: playback
type: string
description: "play | stop | pause | play_pause | previous | next | fast_reverse_start | fast_reverse_end | fast_forward_start | fast_forward_end"
- id: netusb_set_play_position
label: NetUSB Set Play Position
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setPlayPosition?position={position}"
params:
- name: position
type: integer
description: "Seconds; valid for Server input"
- id: netusb_set_repeat
label: NetUSB Set Repeat
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setRepeat?mode={mode}"
params:
- name: mode
type: string
description: "off | one | all"
- id: netusb_set_shuffle
label: NetUSB Set Shuffle
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setShuffle?mode={mode}"
params:
- name: mode
type: string
description: "off | on | songs | albums"
- id: netusb_toggle_repeat
label: NetUSB Toggle Repeat
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/toggleRepeat"
params: []
- id: netusb_toggle_shuffle
label: NetUSB Toggle Shuffle
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/toggleShuffle"
params: []
- id: netusb_get_list_info
label: NetUSB Get List Info
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getListInfo?input={input}&index={index}&size={size}&lang={lang}&list_id={list_id}"
params:
- name: list_id
type: string
description: "main | auto_complete | search_artist | search_track"
- name: input
type: string
- name: index
type: integer
description: "Multiple of 8, 0..64992"
- name: size
type: integer
description: "1..8"
- name: lang
type: string
description: "en | ja | fr | de | es | ru | it | zh"
- id: netusb_set_list_control
label: NetUSB Set List Control
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setListControl?list_id={list_id}&type={type}&index={index}&zone={zone}"
params:
- name: list_id
type: string
- name: type
type: string
description: "select | play | return"
- name: index
type: integer
- name: zone
type: string
- id: netusb_set_search_string
label: NetUSB Set Search String
kind: action
command: "POST /YamahaExtendedControl/v1/netusb/setSearchString"
params:
- name: list_id
type: string
- name: string
type: string
- name: index
type: integer
- id: netusb_recall_preset
label: NetUSB Recall Preset
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/recallPreset?zone={zone}&num={num}"
params:
- name: zone
type: string
- name: num
type: integer
- id: netusb_store_preset
label: NetUSB Store Preset
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/storePreset?num={num}"
params:
- name: num
type: integer
- id: netusb_clear_preset
label: NetUSB Clear Preset
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/clearPreset?num={num}"
params:
- name: num
type: integer
- id: netusb_move_preset
label: NetUSB Move Preset
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/movePreset?from={from}&to={to}"
params:
- name: from
type: integer
- name: to
type: integer
- id: netusb_get_settings
label: NetUSB Get Settings
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getSettings"
params: []
- id: netusb_set_quality
label: NetUSB Set Quality
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setQuality?input={input}&value={value}"
params:
- name: input
type: string
description: "qobuz"
- name: value
type: string
description: "hr_192_24 | hr_96_24 | cd_44_16 | mp3_320"
- id: netusb_get_recent_info
label: NetUSB Get Recent Info
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getRecentInfo"
params: []
- id: netusb_recall_recent_item
label: NetUSB Recall Recent Item
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/recallRecentItem?zone={zone}&num={num}"
params:
- name: zone
type: string
- name: num
type: integer
- id: netusb_clear_recent_info
label: NetUSB Clear Recent Info
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/clearRecentInfo"
params: []
- id: netusb_manage_play
label: NetUSB Manage Play
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/managePlay?type={type}&timeout={timeout}"
params:
- name: type
type: string
description: "add_bookmark | add_track | add_album | add_channel_track | add_channel_artist | add_playlist | add_to_playlist | thumbs_up | thumbs_down | mark_tired"
- name: timeout
type: integer
description: "0..60000 ms"
- id: netusb_manage_list
label: NetUSB Manage List
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/manageList?list_id={list_id}&type={type}&index={index}&zone={zone}&timeout={timeout}"
params:
- name: list_id
type: string
- name: type
type: string
description: "add_bookmark | add_track | add_album | add_artist | add_channel | add_playlist | remove_bookmark | remove_track | remove_album | remove_artist | remove_channel | remove_playlist | remove_from_playlist | end_auto_complete"
- name: index
type: integer
- name: zone
type: string
- name: timeout
type: integer
- id: netusb_get_play_description
label: NetUSB Get Play Description
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/getPlayDescription?type={type}&timeout={timeout}"
params:
- name: type
type: string
description: "why_this_song (Pandora)"
- name: timeout
type: integer
- id: netusb_set_list_sort_option
label: NetUSB Set List Sort Option
kind: action
command: "GET /YamahaExtendedControl/v1/netusb/setListSortOption?input={input}&type={type}"
params:
- name: input
type: string
description: "pandora"
- name: type
type: string
description: "date | alphabet | recent"
- id: netusb_get_account_status
label: NetUSB Get Account Status
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getAccountStatus"
params: []
- id: netusb_get_service_info
label: NetUSB Get Service Info
kind: query
command: "GET /YamahaExtendedControl/v1/netusb/getServiceInfo?input={input}&type={type}&timeout={timeout}"
params:
- name: input
type: string
description: "pandora | napster"
- name: type
type: string
description: "account_list | licensing | activation_code"
- name: timeout
type: integer
# ───── CD (8.1 - 8.7) - receivers/mini-systems, not YAS-408 ─────
- id: cd_get_play_info
label: CD Get Play Info
kind: query
command: "GET /YamahaExtendedControl/v1/cd/getPlayInfo"
params: []
- id: cd_set_playback
label: CD Set Playback
kind: action
command: "GET /YamahaExtendedControl/v1/cd/setPlayback?playback={playback}&num={num}"
params:
- name: playback
type: string
description: "play | stop | pause | previous | next | fast_reverse_start | fast_reverse_end | fast_forward_start | fast_forward_end | track_select"
- name: num
type: integer
description: "Track number 1..512 (only with track_select)"
- id: cd_toggle_tray
label: CD Toggle Tray
kind: action
command: "GET /YamahaExtendedControl/v1/cd/toggleTray"
params: []
- id: cd_set_repeat
label: CD Set Repeat
kind: action
command: "GET /YamahaExtendedControl/v1/cd/setRepeat?mode={mode}"
params:
- name: mode
type: string
description: "off | one | all | folder"
- id: cd_set_shuffle
label: CD Set Shuffle
kind: action
command: "GET /YamahaExtendedControl/v1/cd/setShuffle?mode={mode}"
params:
- name: mode
type: string
description: "off | on | folder"
- id: cd_toggle_repeat
label: CD Toggle Repeat
kind: action
command: "GET /YamahaExtendedControl/v1/cd/toggleRepeat"
params: []
- id: cd_toggle_shuffle
label: CD Toggle Shuffle
kind: action
command: "GET /YamahaExtendedControl/v1/cd/toggleShuffle"
params: []
# ───── Clock (9.1 - 9.5) - receivers with clock, not YAS-408 ─────
- id: clock_get_settings
label: Clock Get Settings
kind: query
command: "GET /YamahaExtendedControl/v1/clock/getSettings"
params: []
- id: clock_set_auto_sync
label: Clock Set Auto Sync
kind: action
command: "GET /YamahaExtendedControl/v1/clock/setAutoSync?enable={enable}"
params:
- name: enable
type: boolean
- id: clock_set_date_and_time
label: Clock Set Date And Time
kind: action
command: "GET /YamahaExtendedControl/v1/clock/setDateAndTime?date_time={date_time}"
params:
- name: date_time
type: string
description: 'Format "YYMMDDhhmmss"'
- id: clock_set_clock_format
label: Clock Set Clock Format
kind: action
command: "GET /YamahaExtendedControl/v1/clock/setClockFormat?format={format}"
params:
- name: format
type: string
description: "12h | 24h"
- id: clock_set_alarm_settings
label: Clock Set Alarm Settings
kind: action
command: "POST /YamahaExtendedControl/v1/clock/setAlarmSettings"
params:
- name: alarm_on
type: boolean
- name: volume
type: integer
- name: fade_interval
type: integer
- name: fade_type
type: integer
- name: mode
type: string
- name: repeat
type: boolean
- name: detail
type: object
Feedbacks
# YXC is request/response - every action returns a JSON body containing at
# least a `response_code`. Subscribed clients also receive event UDP packets.
- id: response_code
type: integer
description: >
Returned in every HTTP response body. 0 = success, non-zero = error
(see YXC Response Code List, §10). When non-zero, no other fields are
returned.
- id: power
type: enum
values: [on, standby]
- id: mute
type: boolean
- id: input
type: string
description: >
Current input ID. Valid values come from `system.input_list` in
getFeatures (e.g. hdmi1, hdmi2, bluetooth, net_radio, spotify, airplay,
usb, …).
- id: volume
type: integer
description: >
Current numeric volume. Range and step are device-specific - retrieve
via system.range_step in getFeatures.
- id: sleep
type: integer
description: "Sleep timer minutes: 0 | 30 | 60 | 90 | 120"
- id: playback
type: enum
values: [play, stop, pause, fast_reverse, fast_forward]
- id: repeat
type: enum
values: [off, one, all]
- id: shuffle
type: enum
values: [off, on, songs, albums]
- id: input_list
type: array
description: "List of selectable Input IDs (with distribution/rename/account flags)"
- id: func_list
type: array
description: "List of supported capability strings per system/zone/tuner/netusb scope"
- id: api_version
type: number
description: "YXC API version (e.g. 1.00, 2.00)"
- id: model_name
type: string
description: "Device model name, e.g. \"RX-V479\" or soundbar-specific identifier"
- id: netusb_play_error
type: integer
description: "Last playback error code from netusb event"
- id: party_enable
type: boolean
description: "Whether this zone is in party mode"
Variables
# The YXC API treats most settings as endpoints whose current value is
# returned by the corresponding `get*` query; the source doesn't expose a
# stable "subscribe to variable" surface. Settable-but-not-discrete knobs:
- name: dimmer
type: integer
description: "Dimmer level: -1 = auto, 0..N = manual (range from getFeatures)"
- name: network_standby
type: enum
values: [off, on, auto]
description: "'auto' available only when 'network_standby_auto' in func_list"
- name: mac_filter_addresses
type: array
description: "Up to 10 MAC addresses (12-digit ASCII) for the MAC filter"
- name: actual_volume_mode
type: enum
values: [db, numeric]
- name: actual_volume_value
type: number
description: "Display volume in the selected mode; range per getFeatures"
- name: alarm_volume
type: integer
description: "Range from getFeatures 'alarm_volume'"
- name: alarm_fade_interval
type: integer
description: "Range from getFeatures 'alarm_fade'"
- name: alarm_fade_type
type: integer
description: "1..alarm_fade_type_num (from getFeatures)"
- name: alarm_mode
type: enum
values: [oneday, weekly]
Events
# Events are pushed as UDP unicast JSON to the port advertised by the client
# in the `X-AppPort` request header on any control call. The client must also
# include `X-AppName: <AppName>/<version>(<OS>)`. Subscription auto-expires
# after 10 minutes of inactivity and is reset by any subsequent request.
- id: system_bluetooth_info_updated
description: "bluetooth_info_updated flag in event.system - re-fetch /system/getBluetoothInfo"
transport: udp_unicast
- id: system_bluetooth_device_list_updated
description: "bluetooth_device_list_updated flag - re-fetch /system/getBluetoothDeviceList"
transport: udp_unicast
- id: system_func_status_updated
description: "func_status_updated flag - re-fetch /system/getFuncStatus"
transport: udp_unicast
- id: system_name_text_updated
description: "name_text_updated flag - re-fetch /system/getNameText"
transport: udp_unicast
- id: system_location_info_updated
description: "location_info_updated flag - re-fetch /system/getLocationInfo"
transport: udp_unicast
- id: zone_main_power
description: "main.power updated (on/standby)"
transport: udp_unicast
- id: zone_main_input
description: "main.input updated"
transport: udp_unicast
- id: zone_main_volume
description: "main.volume updated"
transport: udp_unicast
- id: zone_main_mute
description: "main.mute updated"
transport: udp_unicast
- id: zone_main_status_updated
description: "main.status_updated - re-fetch /main/getStatus for full snapshot"
transport: udp_unicast
- id: zone_main_signal_info_updated
description: "main.signal_info_updated - re-fetch /main/getSignalInfo"
transport: udp_unicast
- id: tuner_play_info_updated
description: "tuner.play_info_updated - re-fetch /tuner/getPlayInfo"
transport: udp_unicast
- id: tuner_preset_info_updated
description: "tuner.preset_info_updated - re-fetch /tuner/getPresetInfo"
transport: udp_unicast
- id: netusb_play_error
description: "netusb.play_error - playback error code (see §10)"
transport: udp_unicast
- id: netusb_multiple_play_errors
description: "netusb.multiple_play_errors - bit field of accumulated errors"
transport: udp_unicast
- id: netusb_account_updated
description: "netusb.account_updated - re-fetch /netusb/getAccountStatus"
transport: udp_unicast
- id: netusb_preset_info_updated
description: "netusb.preset_info_updated - re-fetch /netusb/getPresetInfo"
transport: udp_unicast
- id: netusb_recent_info_updated
description: "netusb.recent_info_updated - re-fetch /netusb/getRecentInfo"
transport: udp_unicast
- id: netusb_preset_control
description: "netusb.preset_control.type: store | clear | recall"
transport: udp_unicast
Macros
# UNRESOLVED: source does not document any client-side or device-side macro
# sequences. The YXC API exposes `recallScene` (1..scene_num from getFeatures)
# as the closest analogue; on the YAS-408 scene_num will likely be 0.
Safety
confirmation_required_for:
- requestSystemReboot
- requestNetworkReboot
- setPartyMode
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. Listed confirmations are inferred from
# the destructive nature of the operations (full system reboot) and are not
# stated in the source.
Notes
- The YAS-408 is a single-zone ("main" only) MusicCast soundbar; it does not
expose
zone2..zone4endpoints even though the spec lists them. Calling those against a YAS-408 returnsresponse_code: 3(Invalid Request). - The YAS-408 has no AM/FM/DAB tuner and no CD drive; the entire
/v1/tunerand/v1/cdnamespaces returnresponse_code: 3on this device. - Capability-gated endpoints (e.g.
setSpeakerA,set3dSurround,setSurroundDecoderType,setClearVoice,setSubwooferVolume,setBassExtension,setDialogueLevel,setDialogueLift,setAutoPlay,setSpeakerPattern,setPartyMode,setSpeakerB) require the corresponding string to appear infunc_listreturned by/v1/system/getFeatures(or the relevant zone'sfunc_list). - Many endpoints use
GETwith query parameters even when they mutate state; the YXC spec consistently usesGETfor the simple setters. Endpoints that accept rich JSON bodies (setWiredLan, setWirelessLan, setWirelessDirect, setIpSettings, setNetworkName, setAirPlayPin, setMacAddressFilter, setNameText, setSearchString, setAlarmSettings) usePOSTwith a JSON body. - Event subscription requires the client to include
X-AppName: <name>/<version>(<os>)andX-AppPort: <port>headers on any control request. The device then begins pushing event UDP unicast packets to that port. Subscription times out after 10 minutes of inactivity. - The YXC Basic spec (Rev. 2.00) explicitly defers MusicCast link distribution functions to the "Advanced" specification, which is NDA-only and not included in this source.
Provenance
source_domains:
- community.symcon.de
- usa.yamaha.com
- community-openhab-org.s3-eu-central-1.amazonaws.com
source_urls:
- https://community.symcon.de/uploads/short-url/7r8QTdkYFNfJVJmKbtqvdleuzKt.pdf
- https://usa.yamaha.com/products/contents/audio_visual/musiccast/musiccast-compatiblity.html
- https://community.symcon.de/uploads/short-url/vRXaJXAn6vI2DSQYMHF0aqLbdir.pdf
- https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/9/931ea88e30cf0f05fcdee79816eb4d3f12dd4d70.pdf
retrieved_at: 2026-06-02T20:55:51.710Z
last_checked_at: 2026-06-04T06:37:49.008Z
Verification Summary
verdict: verified
checked_at: 2026-06-04T06:37:49.008Z
matched_actions: 124
action_count: 124
confidence: medium
summary: "All 124 spec action commands match verbatim source URI entries across all six namespaces; transport base URL confirmed; source and spec are 1-to-1. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "YAS-408-specific firmware version that introduced YXC support is not stated in the source."
- "source does not document any client-side or device-side macro"
- "source contains no safety warnings, interlock procedures, or"
- "firmware version requirement (Rev. 2.00) for the YAS-408"
- "default TCP/UDP ports — source does not state a port; HTTP"
- "authentication — no auth procedure is described anywhere in"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0