Summary

Sony BRAVIA Simple IP Control for FWX8501 series displays. TCP-based control protocol on port 20060 using a fixed 24-byte frame. Source also mentions a high-level HTTP/JSON-RPC layer that mirrors the low-level commands.

Transport

protocols:
  - tcp
addressing:
  port: 20060
  framing:
    description: Fixed 24-byte message: 0x2A 0x53 header, type byte, 4-byte FourCC function, 16-byte parameter block, 0x0A footer
  idle_timeout_seconds: 30
auth:
  type: none  # inferred: no auth procedure in source

Traits

# - powerable       # inferred from setPowerStatus
# - queryable       # inferred from get* enquiry commands
# - routable        # inferred from setInputSource / setInput
# - levelable       # inferred from setAudioVolume

Actions

# Low-level protocol: 24-byte frame.
# Header bytes 0-1: 0x2A 0x53 (fixed)
# Byte 2 (Type): 0x43 Control | 0x45 Enquiry | 0x41 Answer | 0x4E Notify
# Bytes 3-6 (Function): Four-CC ASCII
# Bytes 7-22 (Parameter): 16 bytes, ASCII hex/decimal digits or '#' pad
# Byte 23 (Footer): 0x0A (LF)
#
# "command" below shows the Four-CC function code. Param block uses literal
# source bytes (hex pairs for control rows, '#' for inquiry rows, "0...0" / "F...F"
# for answer success/error). Each action emits one 24-byte frame.

- id: set_ircc_code
  label: Set IRCC Code
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=<16-byte IR code from Table 5>"
  params:
    - name: ir_code
      type: string
      description: 16-byte ASCII hex param (e.g. "0...030" = Volume Up, see Table 5)
  notes: "Source command name: setIrccCode. IR code table is Table 5; IRCC header letters not stated in source (the function column shows 'IRCC' as Four-CC of setIrccCode)."

- id: set_power_status
  label: Set Power Status
  kind: action
  command: "Type=0x43 FourCC=POWR Param=0000000000000000"
  params:
    - name: state
      type: enum
      values: [standby, active]
      description: "0 = Standby (Off), 1 = Active (On)"

- id: get_power_status
  label: Get Power Status
  kind: query
  command: "Type=0x45 FourCC=POWR Param=################"
  notes: "Answer: 0 = Standby, 1 = Active."

- id: set_audio_volume
  label: Set Audio Volume
  kind: action
  command: "Type=0x43 FourCC=VOLU Param=<volume value, decimal digits, 16 chars>"
  params:
    - name: level
      type: string
      description: 16 ASCII decimal digits, left-padded with '0' (e.g. 41 -> "0000000000000029")
  notes: "Source example: 0000000000000029 = volume 41."

- id: get_audio_volume
  label: Get Audio Volume
  kind: query
  command: "Type=0x45 FourCC=VOLU Param=################"

- id: set_audio_mute
  label: Set Audio Mute
  kind: action
  command: "Type=0x43 FourCC=AMUT Param=<0|1>"
  params:
    - name: state
      type: enum
      values: [unmute, mute]

- id: get_audio_mute
  label: Get Audio Mute
  kind: query
  command: "Type=0x45 FourCC=AMUT Param=################"

- id: set_channel
  label: Set Channel (Preset)
  kind: action
  command: "Type=0x43 FourCC=CHNN Param=<NN.NNNN>"
  params:
    - name: preset
      type: string
      description: "Major.minor preset, ASCII decimal, 16 chars; e.g. 00000050.1000000 = ch 50.1"
  notes: "Answer 'NNNN...' = no such channel."

- id: get_channel
  label: Get Channel (Preset)
  kind: query
  command: "Type=0x45 FourCC=CHNN Param=################"

- id: set_triplet_channel
  label: Set Triplet Channel
  kind: action
  command: "Type=0x43 FourCC=TCHN Param=<12-hex + '.' + 4-hex>"
  params:
    - name: triplet
      type: string
      description: "Hex triplet, 12 hex + '.' + 4 hex; e.g. 7FE07FE00400"
  notes: "Answer 'NNNN...' = no such channel."

- id: get_triplet_channel
  label: Get Triplet Channel
  kind: query
  command: "Type=0x45 FourCC=TCHN Param=################"

- id: set_input_source
  label: Set Input Source (broadcast)
  kind: action
  command: "Type=0x43 FourCC=ISRC Param=<source-padded-#>"
  params:
    - name: source
      type: enum
      values: [dvbt, dvbc, dvbs, isdbt, isdbbs, isdbcs, antenna, cable, isdbgt]
      description: "ASCII source name, right-padded with '#' to 16 chars"
  notes: "Answer 'NNNN...' = no such source (not tuned / no signal)."

- id: get_input_source
  label: Get Input Source
  kind: query
  command: "Type=0x45 FourCC=ISRC Param=################"

- id: set_input
  label: Set Input
  kind: action
  command: "Type=0x43 FourCC=INPT Param=<kind|index>"
  params:
    - name: kind
      type: enum
      values: [tv, hdmi, scart, composite, component, screen_mirroring, pc_rgb]
    - name: index
      type: integer
      description: "1-9999 for non-TV kinds"
  notes: "Param bytes 11-12 select kind (0=TV, 1=HDMI, 2=SCART, 3=Composite, 4=Component, 5=Screen Mirroring, 6=PC RGB). Answer 'NNNN...' = Not Found."

- id: get_input
  label: Get Input
  kind: query
  command: "Type=0x45 FourCC=INPT Param=################"

- id: set_picture_mute
  label: Set Picture Mute
  kind: action
  command: "Type=0x43 FourCC=PMUT Param=<0|1>"
  params:
    - name: state
      type: enum
      values: [off, on]
      description: "0 = disable, 1 = make screen black"

- id: get_picture_mute
  label: Get Picture Mute
  kind: query
  command: "Type=0x45 FourCC=PMUT Param=################"

- id: toggle_picture_mute
  label: Toggle Picture Mute
  kind: action
  command: "Type=0x43 FourCC=TPMU Param=################"
  notes: "Source row labeled 'togglePictureMute'; param row in source uses '#' (enquiry-style) for the control action. Treating as a no-param toggle action."

- id: set_pip
  label: Set PIP
  kind: action
  command: "Type=0x43 FourCC=PIPI Param=<0|1>"
  params:
    - name: state
      type: enum
      values: [disabled, enabled]

- id: get_pip
  label: Get PIP
  kind: query
  command: "Type=0x45 FourCC=PIPI Param=################"

- id: toggle_pip
  label: Toggle PIP
  kind: action
  command: "Type=0x43 FourCC=TPIP Param=################"

- id: toggle_pip_position
  label: Toggle PIP Position
  kind: action
  command: "Type=0x43 FourCC=TPPP Param=################"

- id: get_broadcast_address
  label: Get Broadcast Address
  kind: query
  command: "Type=0x45 FourCC=BADR Param=eth0###########"
  notes: "Source row uses 'eth0' as ASCII bytes 0-3 of param. Answer returns IPv4 right-padded with '#'."

- id: get_mac_address
  label: Get MAC Address
  kind: query
  command: "Type=0x45 FourCC=MADR Param=eth0###########"
  notes: "Source row uses 'eth0' as ASCII bytes 0-3 of param. Answer returns MAC right-padded with '#'."

# IR commands (setIrccCode dispatched with the param bytes below)
- id: ir_power_off
  label: IR Power Off
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000000"
  notes: "IR code 0x00 from Table 5."

- id: ir_input
  label: IR Input
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000001"
  notes: "IR code 0x01."

- id: ir_gguide
  label: IR GGuide
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000002"

- id: ir_epg
  label: IR EPG
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000003"

- id: ir_favorites
  label: IR Favorites
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000004"

- id: ir_display
  label: IR Display
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000005"

- id: ir_home
  label: IR Home
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000006"

- id: ir_options
  label: IR Options
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000007"

- id: ir_return
  label: IR Return
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000008"

- id: ir_up
  label: IR Up
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000009"

- id: ir_down
  label: IR Down
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000010"

- id: ir_right
  label: IR Right
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000011"

- id: ir_left
  label: IR Left
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000012"

- id: ir_confirm
  label: IR Confirm
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000013"

- id: ir_red
  label: IR Red
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000014"

- id: ir_green
  label: IR Green
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000015"

- id: ir_yellow
  label: IR Yellow
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000016"

- id: ir_blue
  label: IR Blue
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000017"

- id: ir_num1
  label: IR Num 1
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000018"

- id: ir_num2
  label: IR Num 2
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000019"

- id: ir_num3
  label: IR Num 3
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000020"

- id: ir_num4
  label: IR Num 4
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000021"

- id: ir_num5
  label: IR Num 5
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000022"

- id: ir_num6
  label: IR Num 6
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000023"

- id: ir_num7
  label: IR Num 7
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000024"

- id: ir_num8
  label: IR Num 8
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000025"

- id: ir_num9
  label: IR Num 9
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000026"

- id: ir_num0
  label: IR Num 0
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000027"

- id: ir_num11
  label: IR Num 11
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000028"

- id: ir_num12
  label: IR Num 12
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000029"

- id: ir_volume_up
  label: IR Volume Up
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000030"

- id: ir_volume_down
  label: IR Volume Down
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000031"

- id: ir_mute
  label: IR Mute
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000032"

- id: ir_channel_up
  label: IR Channel Up
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000033"

- id: ir_channel_down
  label: IR Channel Down
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000034"

- id: ir_subtitle
  label: IR Subtitle
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000035"

- id: ir_closed_caption
  label: IR Closed Caption
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000036"

- id: ir_enter
  label: IR Enter
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000037"

- id: ir_dot
  label: IR DOT
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000038"

- id: ir_analog
  label: IR Analog
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000039"

- id: ir_teletext
  label: IR Teletext
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000040"

- id: ir_exit
  label: IR Exit
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000041"

- id: ir_analog2
  label: IR Analog 2
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000042"

- id: ir_ad
  label: IR *AD
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000043"

- id: ir_digital
  label: IR Digital
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000044"

- id: ir_analog_q
  label: IR Analog?
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000045"

- id: ir_bs
  label: IR BS
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000046"

- id: ir_cs
  label: IR CS
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000047"

- id: ir_bs_cs
  label: IR BS/CS
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000048"

- id: ir_ddata
  label: IR Ddata
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000049"

- id: ir_pic_off
  label: IR Pic Off
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000050"

- id: ir_tv_radio
  label: IR TV/Radio
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000051"

- id: ir_theater
  label: IR Theater
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000052"

- id: ir_sen
  label: IR SEN
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000053"

- id: ir_internet_widgets
  label: IR Internet Widgets
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000054"

- id: ir_internet_video
  label: IR Internet Video
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000055"

- id: ir_netflix
  label: IR Netflix
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000056"

- id: ir_scene_select
  label: IR Scene Select
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000057"

- id: ir_mode_3d
  label: IR Mode 3D
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000058"

- id: ir_imanual
  label: IR iManual
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000059"

- id: ir_audio
  label: IR Audio
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000060"

- id: ir_wide
  label: IR Wide
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000061"

- id: ir_jump
  label: IR Jump
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000062"

- id: ir_pap
  label: IR PAP
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000063"

- id: ir_my_epg
  label: IR MyEPG
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000064"

- id: ir_program_description
  label: IR Program Description
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000065"

- id: ir_write_chapter
  label: IR Write Chapter
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000066"

- id: ir_track_id
  label: IR TrackID
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000067"

- id: ir_ten_key
  label: IR Ten Key
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000068"

- id: ir_applicast
  label: IR AppliCast
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000069"

- id: ir_actvila
  label: IR acTVila
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000070"

- id: ir_delete_video
  label: IR Delete Video
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000071"

- id: ir_photo_frame
  label: IR Photo Frame
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000072"

- id: ir_tv_pause
  label: IR TV Pause
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000073"

- id: ir_keypad
  label: IR KeyPad
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000074"

- id: ir_media
  label: IR Media
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000075"

- id: ir_sync_menu
  label: IR Sync Menu
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000076"

- id: ir_forward
  label: IR Forward
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000077"

- id: ir_play
  label: IR Play
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000078"

- id: ir_rewind
  label: IR Rewind
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000079"

- id: ir_prev
  label: IR Prev
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000080"

- id: ir_stop
  label: IR Stop
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000081"

- id: ir_next
  label: IR Next
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000082"

- id: ir_rec
  label: IR Rec
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000083"

- id: ir_pause
  label: IR Pause
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000084"

- id: ir_eject
  label: IR Eject
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000085"

- id: ir_flash_plus
  label: IR Flash Plus
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000086"

- id: ir_flash_minus
  label: IR Flash Minus
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000087"

- id: ir_top_menu
  label: IR TopMenu
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000088"

- id: ir_popup_menu
  label: IR PopupMenu
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000089"

- id: ir_rakuraku_start
  label: IR Rakuraku Start
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000090"

- id: ir_one_touch_time_rec
  label: IR One Touch Time Rec
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000091"

- id: ir_one_touch_view
  label: IR One Touch View
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000092"

- id: ir_one_touch_rec
  label: IR One Touch Rec
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000093"

- id: ir_one_touch_stop
  label: IR One Touch Stop
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000094"

- id: ir_dux
  label: IR DUX
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000095"

- id: ir_football_mode
  label: IR Football Mode
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000096"

- id: ir_social
  label: IR Social
  kind: action
  command: "Type=0x43 FourCC=IRCC Param=0000000000000097"

Feedbacks

- id: power_state
  type: enum
  values: [standby, active]
  source: getPowerStatus answer byte 23

- id: audio_volume
  type: integer
  source: getAudioVolume answer (decimal digits in last param byte)

- id: audio_mute_state
  type: enum
  values: [unmuted, muted]
  source: getAudioMute answer byte 23 (0=Not Muted, 1=Muted)

- id: channel_preset
  type: string
  source: getChannel answer (NN.NNNN)

- id: channel_triplet
  type: string
  source: getTripletChannel answer (hex)

- id: input_source
  type: string
  source: getInputSource answer (e.g. dvbt, hdmi, scart...)

- id: current_input
  type: enum
  values: [tv, hdmi, scart, composite, component, screen_mirroring, pc_rgb]
  source: getInput answer bytes 11-12

- id: picture_mute_state
  type: enum
  values: [disabled, enabled]

- id: pip_state
  type: enum
  values: [disabled, enabled]

- id: broadcast_address
  type: string
  source: getBroadcastAddress answer (IPv4, right-padded '#')

- id: mac_address
  type: string
  source: getMacAddress answer (MAC, right-padded '#')

Variables

# UNRESOLVED: settable parameters beyond the discrete actions above are not
# enumerated separately in the source; volume level is set directly via
# setAudioVolume rather than as a continuous variable.

Events

- id: fire_power_change
  type: enum
  values: [standby, active]
  source: Notify POWR, byte 23 (0=powering off, 1=powering on)

- id: fire_channel_change
  type: string
  source: Notify CHNN, preset format NN.NNNN

- id: fire_input_change
  type: enum
  values: [tv, hdmi, scart, composite, component, screen_mirroring, pc_rgb]
  source: Notify INPT, param bytes 11-12

- id: fire_volume_change
  type: string
  source: Notify VOLU, decimal value

- id: fire_mute_change
  type: enum
  values: [unmuted, muted]

- id: fire_pip_change
  type: enum
  values: [disabled, enabled]

- id: fire_picture_mute_change
  type: enum
  values: [disabled, enabled]

Macros

# UNRESOLVED: source describes no multi-step sequences

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements

Notes

Low-level TCP frames are 24 bytes (header 0x2A 0x53, type, FourCC function, 16-byte param, footer 0x0A). Source describes a parallel high-level HTTP/JSON-RPC WebAPI where the same commands are exposed; that HTTP layer is not detailed in the source (no path, no method names, no JSON schema). TCP connections are kept across requests but server disconnects after 30 s of client silence — clients must send a keep-alive or reconnect. For TV/HDMI/SCART/Composite/Component/Screen Mirroring/PC RGB inputs, the param bytes 11-12 select kind and the trailing 4 bytes carry the 1-9999 index.

Provenance

source_domains:
  - aca.im
  - pro.sony
source_urls:
  - "https://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
  - https://pro.sony
retrieved_at: 2026-06-13T18:47:33.923Z
last_checked_at: 2026-06-14T16:14:28.382Z

Verification Summary

verdict: verified
checked_at: 2026-06-14T16:14:28.382Z
matched_actions: 122
action_count: 122
confidence: medium
summary: "All 122 spec actions confirmed in source; bidirectional FourCC/IR coverage complete; transport port verified. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "exact FWX8501 firmware range supporting Simple IP Control not stated; no serial/RS-232 support described"
- "settable parameters beyond the discrete actions above are not"
- "source describes no multi-step sequences"
- "source contains no safety warnings, interlock procedures, or"
- "high-level HTTP/JSON-RPC WebAPI not detailed in source; firmware version range supporting Simple IP Control not stated; HTTP base URL/path not stated"

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