Summary
Hitachi P50H401 plasma TV, external control via RS-232C (DSUB-9P, 9600bps 7-bit no-parity 1 stop bit, no flow control) per Hitachi "RS232C COMMUNICATION SPECIFICATION" v.01 (Feb/29/'08). Spec covers Terminal Mode control bytes, hex-character read/write commands for power, input selection, audio (volume/balance/treble/bass/mute), picture settings, color temperature, aspect ratio, direct keys, info, auto movie mode, and exit. Source document covers the H401/T501/S601/V701/X901 plasma and S601/V651 LCD families; this spec targets the P50H401 ("H" model).
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 7
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred from POWER write commands (6E)
- routable # inferred from INPUT select commands (6F)
- queryable # inferred from R/W read mechanism (2nd byte 01)
- levelable # inferred from volume/bass/treble/contrast/brightness set commands
Actions
# Framing: every command = STX (0x02) + 12 ASCII characters + ETX (0x03).
# Each character is sent as its ASCII code ("0"-"9" -> 0x30-0x39, "A"-"F" -> 0x41-0x46).
# 12-char command layout: 1st=function, 2nd=R/W (00=write, 01=read), 3rd/4th=sub-function, 5th/6th=data (upper/lower byte).
# `command:` below shows the 12-character payload (or single control byte); add STX/ETX on the wire.
# --- Terminal mode control (single byte, no STX/ETX framing) ---
- id: terminal_mode_on
label: Terminal Mode ON (Enable Communication)
kind: action
command: "05"
params: []
notes: "ENQ (hex 05). TV returns ACK (06) or NAK (15). Required before any command is accepted; factory setting is OFF."
- id: terminal_mode_off
label: Terminal Mode OFF (Disable Communication)
kind: action
command: "04"
params: []
notes: "EOT (hex 04). TV returns ACK (06) or NAK (15)."
# --- Power ---
- id: power_on
label: Power On
kind: action
command: "6E0000000001"
params: []
notes: "Source example row (Table 4.5.1 No.1); wire bytes 02 36 45 30 30 30 30 30 30 30 30 30 31 03"
- id: power_off
label: Power Off
kind: action
command: "6E0000000000"
params: []
notes: "Table 4.5.1 No.2"
- id: power_query
label: Power Status Query
kind: query
command: "6E0100000000"
params: []
notes: "Read form of POWER (function 6E, R/W); 2nd byte 01 = read"
# --- Input select (literal rows from Table 4.5.1) ---
- id: select_input_1
label: Select Input 1
kind: action
command: "6F0000000000"
params: []
notes: "Table 4.5.1 No.3"
- id: select_input_2
label: Select Input 2
kind: action
command: "6F0000000001"
params: []
notes: "Table 4.5.1 No.4"
- id: select_input_3
label: Select Input 3
kind: action
command: "6F0000000002"
params: []
notes: "Table 4.5.1 No.5"
- id: select_input_front
label: Select Input Front
kind: action
command: "6F0000000003"
params: []
notes: "Table 4.5.1 No.6"
- id: select_input_cable_air
label: Select Cable or Air (Tuner)
kind: action
command: "6F0000000005"
params: []
notes: "Table 4.5.1 No.7"
- id: select_input
label: Select Input (parameterized)
kind: action
command: "6F00000000{input}"
params:
- name: input
type: enum
values: ["00", "01", "02", "03", "05", "09", "0B", "0C", "0D"]
description: "00=Input1 01=Input2 02=Input3 03=Input Front 05=Cable or Air 09=Photo Input 0B=HDMI1 0C=HDMI2 0D=HDMI Front (hex data byte from Table 3.3.5.1)"
- id: input_query
label: Input Status Query
kind: query
command: "6F0100000000"
params: []
notes: "Read form of INPUT (function 6F, R/W)"
# --- Audio: volume / balance / treble / bass ---
- id: volume_set_0
label: Volume Set to 0
kind: action
command: "270000000000"
params: []
notes: "Table 4.5.1 No.8 example; full range 0-60 via volume variable"
- id: set_volume
label: Set Volume
kind: action
command: "2700000000{value_hex}"
params:
- name: value_hex
type: string
description: "Volume 0-60 as 2-digit hex (00-3C) in data field"
- id: volume_query
label: Volume Query
kind: query
command: "270100000000"
params: []
- id: balance_set_31
label: Balance Set to 31
kind: action
command: "28000000001F"
params: []
notes: "Table 4.5.1 No.9 example; full range 0-60"
- id: set_balance
label: Set Balance
kind: action
command: "2800000000{value_hex}"
params:
- name: value_hex
type: string
description: "Balance 0-60 as 2-digit hex in data field"
- id: balance_query
label: Balance Query
kind: query
command: "280100000000"
params: []
- id: treble_set_16
label: Treble Set to 16
kind: action
command: "2B0000000010"
params: []
notes: "Table 4.5.1 No.10 example; full range 0-30"
- id: set_treble
label: Set Treble
kind: action
command: "2B00000000{value_hex}"
params:
- name: value_hex
type: string
description: "Treble 0-30 as 2-digit hex in data field"
- id: treble_query
label: Treble Query
kind: query
command: "2B0100000000"
params: []
- id: bass_set_16
label: Bass Set to 16
kind: action
command: "2A0000000010"
params: []
notes: "Table 4.5.1 No.11 example; full range 0-30"
- id: set_bass
label: Set Bass
kind: action
command: "2A00000000{value_hex}"
params:
- name: value_hex
type: string
description: "Bass 0-30 as 2-digit hex in data field"
- id: bass_query
label: Bass Query
kind: query
command: "2A0100000000"
params: []
# --- Audio mute ---
- id: audio_mute_off
label: Audio Mute Off
kind: action
command: "290000000000"
params: []
notes: "Table 4.5.1 No.12"
- id: audio_mute_on
label: Audio Mute On
kind: action
command: "290000000001"
params: []
notes: "Table 4.5.1 No.13"
- id: set_audio_mute
label: Set Audio Mute
kind: action
command: "2900000000{state}"
params:
- name: state
type: enum
values: ["00", "01", "02"]
description: "00=Off 01=On 02=Soft Mute (Table 3.3.5.1)"
- id: audio_mute_query
label: Audio Mute Query
kind: query
command: "290100000000"
params: []
# --- Picture mode ---
- id: picture_mode_day_dynamic
label: Picture Mode Day (Dynamic)
kind: action
command: "A40000030000"
params: []
notes: "Table 4.5.1; picture mode uses sub-function 0003"
- id: picture_mode_day_normal
label: Picture Mode Day (Normal)
kind: action
command: "A40000030001"
params: []
notes: "Table 4.5.1"
- id: picture_mode_night
label: Picture Mode Night
kind: action
command: "A40000030002"
params: []
notes: "Table 4.5.1"
- id: picture_mode_query
label: Picture Mode Query
kind: query
command: "A40100030000"
params: []
notes: "Read form of PICTURE MODE (A4, sub-function 0003)"
# --- Video adjust ---
- id: contrast_set_59
label: Contrast Set to 59
kind: action
command: "59000000003B"
params: []
notes: "Table 4.5.1 No.17 example; full range 0-62 step"
- id: set_contrast
label: Set Contrast
kind: action
command: "5900000000{value_hex}"
params:
- name: value_hex
type: string
description: "Contrast 0-62 as 2-digit hex in data field"
- id: contrast_query
label: Contrast Query
kind: query
command: "590100000000"
params: []
- id: brightness_set_29
label: Brightness Set to 29
kind: action
command: "1F000000001D"
params: []
notes: "Table 4.5.1 No.18 example; full range 0-62 step"
- id: set_brightness
label: Set Brightness
kind: action
command: "1F00000000{value_hex}"
params:
- name: value_hex
type: string
description: "Brightness 0-62 as 2-digit hex in data field"
- id: brightness_query
label: Brightness Query
kind: query
command: "1F0100000000"
params: []
- id: color_set_29
label: Color Set to 29
kind: action
command: "10000000001D"
params: []
notes: "Table 4.5.1 No.19 example; full range 0-62 step"
- id: set_color
label: Set Color
kind: action
command: "1000000000{value_hex}"
params:
- name: value_hex
type: string
description: "Color 0-62 as 2-digit hex in data field"
- id: color_query
label: Color Query
kind: query
command: "100100000000"
params: []
- id: tint_set_29
label: Tint Set to 29
kind: action
command: "13000000001D"
params: []
notes: "Table 4.5.1 No.20 example; full range 0-62 step"
- id: set_tint
label: Set Tint
kind: action
command: "1300000000{value_hex}"
params:
- name: value_hex
type: string
description: "Tint 0-62 as 2-digit hex in data field"
- id: tint_query
label: Tint Query
kind: query
command: "130100000000"
params: []
- id: sharpness_set_29
label: Sharpness Set to 29
kind: action
command: "14000000001D"
params: []
notes: "Table 4.5.1 No.21 example; full range 0-62 step"
- id: set_sharpness
label: Set Sharpness
kind: action
command: "1400000000{value_hex}"
params:
- name: value_hex
type: string
description: "Sharpness 0-62 as 2-digit hex in data field"
- id: sharpness_query
label: Sharpness Query
kind: query
command: "140100000000"
params: []
# --- Color temperature ---
- id: color_temp_high
label: Color Temperature High
kind: action
command: "600000000000"
params: []
notes: "Table 4.5.1"
- id: color_temp_medium
label: Color Temperature Medium
kind: action
command: "600000000001"
params: []
notes: "Table 4.5.1"
- id: color_temp_standard
label: Color Temperature Standard
kind: action
command: "600000000002"
params: []
notes: "Table 4.5.1"
- id: color_temp_black_white
label: Color Temperature Black & White
kind: action
command: "600000000003"
params: []
notes: "Table 4.5.1. NACK responds on model T and model H (P50H401 is model H)"
- id: color_temp_query
label: Color Temperature Query
kind: query
command: "600100000000"
params: []
# --- Aspect ratio ---
- id: aspect_16x9_standard1
label: Aspect 16:9 Standard1
kind: action
command: "400000000000"
params: []
notes: "Table 4.5.1"
- id: aspect_16x9_zoom
label: Aspect 16:9 Zoom
kind: action
command: "400000000001"
params: []
notes: "Table 4.5.1"
- id: aspect_4x3_standard
label: Aspect 4:3 Standard
kind: action
command: "400000000002"
params: []
notes: "Table 4.5.1"
- id: aspect_4x3_expanded
label: Aspect 4:3 Expanded
kind: action
command: "400000000003"
params: []
notes: "Table 4.5.1"
- id: aspect_4x3_zoom1
label: Aspect 4:3 Zoom1
kind: action
command: "400000000004"
params: []
notes: "Table 4.5.1"
- id: aspect_4x3_zoom2
label: Aspect 4:3 Zoom2
kind: action
command: "400000000005"
params: []
notes: "Table 4.5.1"
- id: set_aspect
label: Set Aspect Ratio
kind: action
command: "4000000000{mode}"
params:
- name: mode
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
description: "0=16:9 Standard1 1=16:9 Zoom 2=4:3 Standard 3=4:3 Expanded 4=4:3 Zoom1 5=4:3 Zoom2 6=16:9 Standard2 7=FULL 8=NORMAL 9=REAL (Table 3.3.5.1; literal write rows only given for 0-5)"
- id: aspect_query
label: Aspect Ratio Query
kind: query
command: "400100000000"
params: []
# --- Info / direct keys / exit / auto movie ---
- id: info_on
label: Info OSD On
kind: action
command: "B20000000001"
params: []
notes: "Table 4.5.1 No.33; write-only"
- id: info_off
label: Info OSD Off
kind: action
command: "B20000000000"
params: []
notes: "Table 4.5.1 No.34; write-only"
- id: direct_key_0
label: Direct 0-9 Key (code 0)
kind: action
command: "D00000000000"
params: []
notes: "Table 4.5.1 No.35 example (key code 0); when INPUT is Cable/Air inputs channel number, when Photo Input inputs picture number"
- id: direct_key
label: Direct 0-9 Key
kind: action
command: "D0000000000{key}"
params:
- name: key
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
description: "Key code 0-9 as hex digit"
- id: direct_ch_select
label: Direct CH Select
kind: action
command: "D00000010000"
params: []
notes: "Sub-function 0001 (Table 3.3.1 No.18); selects CH, or picture number/thumbnail on Photo Input"
- id: direct_select_key
label: Direct Select Key
kind: action
command: "D00000020000"
params: []
notes: "Sub-function 0002 (Table 3.3.1 No.19); select key"
- id: auto_movie_off
label: Auto Movie Mode Off
kind: action
command: "D40000000000"
params: []
notes: "Table 4.5.1; T/H/S models and V model (LCD) use 0=Off 1=On(AUTO)"
- id: auto_movie_on
label: Auto Movie Mode On (Auto)
kind: action
command: "D40000000001"
params: []
notes: "Table 4.5.1; NACK responds when Game Mode is ON; NACK when Smooth specified on model T/H/S/V(LCD)"
- id: auto_movie_query
label: Auto Movie Mode Query
kind: query
command: "D40100000000"
params: []
- id: exit
label: Exit (Erase OSD / TV Guide)
kind: action
command: "D90000000000"
params: []
notes: "Command assembled from Table 3.3.1 No.21 fields (function D9, W=00, sub 0000, data 0000); write-only. Similar to EXIT remote button; erases OSD/TV Guide temporarily"
Feedbacks
- id: ack_nak
type: enum
values: [ack, nak]
description: "Single-byte response (Fig.5) to Terminal Mode control bytes and to write commands: ACK=0x06 accepted, NAK=0x15 rejected"
- id: read_response
type: string
description: "Answer to a read (Table 3.2.2): STX (0x02) + data upper char + data lower char + ACK/NAK (0x06/0x15) + ETX (0x03); data characters carry the queried value in hex-character form"
- id: power_state
type: enum
values: [off, on]
description: "POWER (6E) read result; 0=Off 1=On"
- id: input_state
type: enum
values: [input1, input2, input3, input_front, cable_air, photo_input, hdmi1, hdmi2, hdmi_front]
description: "INPUT (6F) read result; data codes 00,01,02,03,05,09,0B,0C,0D"
- id: volume_level
type: integer
description: "VOLUME (27) read result, 0-60"
- id: audio_mute_state
type: enum
values: [off, on, soft_mute]
description: "AUDIO MUTE (29) read result; 0=Off 1=On 2=Soft Mute"
- id: picture_mode_state
type: enum
values: [day_dynamic, day_normal, night]
description: "PICTURE MODE (A4) read result; 0=Day(Dynamic) 1=Day(Normal) 2=Night"
- id: color_temperature_state
type: enum
values: [high, medium, standard, black_and_white]
description: "COLOR TEMPERATURE (60) read result"
- id: aspect_state
type: enum
values: ["16:9_standard1", "16:9_zoom", "4:3_standard", "4:3_expanded", "4:3_zoom1", "4:3_zoom2", "16:9_standard2", full, normal, real]
description: "ASPECT (40) read result, values 0-9"
Variables
- id: volume
type: integer
range: "0-60"
initial: 20
command: "2700000000{value_hex}"
- id: balance
type: integer
range: "0-60"
initial: 30
command: "2800000000{value_hex}"
- id: treble
type: integer
range: "0-30"
initial: 15
command: "2B00000000{value_hex}"
- id: bass
type: integer
range: "0-30"
initial: 15
command: "2A00000000{value_hex}"
- id: contrast
type: integer
range: "0-62"
initial: 62
command: "5900000000{value_hex}"
- id: brightness
type: integer
range: "0-62"
initial: 31
command: "1F00000000{value_hex}"
- id: color
type: integer
range: "0-62"
initial: 31
command: "1000000000{value_hex}"
- id: tint
type: integer
range: "0-62"
initial: 31
command: "1300000000{value_hex}"
- id: sharpness
type: integer
range: "0-62"
initial: 31
command: "1400000000{value_hex}"
Events
# No unsolicited notifications documented in source. All responses are replies to control bytes or commands.
Macros
- id: input_change_from_power_saving_input1
label: "Input change to Input1 from power-saving state"
steps:
- "Send select_input_1 (6F0000000000)"
- "Send the same command again (6F0000000000)"
notes: "INPUT command does not operate normally in power-saving state; source section 'Input select command in state of power saving' case1"
- id: input_change_from_power_saving_cable_air
label: "Input change to Cable or Air from power-saving state"
steps:
- "Send select_input_1 (6F0000000000)"
- "Send select_input_cable_air (6F0000000005)"
notes: "Source section 'Input select command in state of power saving' case2 (Table 4.5.1 No.3 then No.8)"
Safety
confirmation_required_for: []
interlocks: []
# No safety warnings or interlock procedures in source. Terminal Mode ON locks out front keys and
# remote control (operational lockout, not a safety interlock) - see Notes.
Notes
- Wire format: commands are 14 bytes total — STX (0x02), 12 ASCII characters, ETX (0x03). All command/data nibbles are converted to hex characters first, then each character is sent as ASCII ("0"-"9" -> 0x30-0x39, "A"-"F" -> 0x41-0x46). Worked source example: Power On characters "6E0000000001" -> bytes 36 45 30 30 30 30 30 30 30 30 30 31.
- Terminal Mode: commands accepted only when ON. Factory setting OFF (with AV Control Mode checkbox unchecked). Request ON with ENQ (0x05), OFF with EOT (0x04); TV answers ACK/NAK. Mode persists across TV power off/on. While ON, front keys and remote are ignored (front Power SW still works). Cannot be enabled during Adjust Mode, Event Timer, or Timer Recording.
- Write commands with E2PROM flag write to E2PROM same as Normal Mode.
- Read-after-write timing: if READ executes immediately after WRITE, correct value cannot be read (data not yet updated). Wait until OSD display disappears and data updates.
- Model-specific NACKs: P50H401 is an "H" model — COLOR TEMPERATURE Black&White value NACKs (also on T model); AUTO MOVIE MODE Smooth value NACKs (also T, S, V-LCD models) and whenever Game Mode is ON. Auto Movie values 0=Off/1=On(AUTO) apply to T/H/S and V(LCD) models; X and V(PDP) models use 0=Off/1=Original/2=Smooth.
- TV Guide models: TV Guide screen can disturb RS232C communication; disable "Auto Guide" so the guide does not appear after initial power on.
- Input change from power-saving state requires the two-step sequences in Macros.
- Connector: female DSUB-9P. Pin assignment (outside view): 1=NC, 2=RXD0 (TV receives), 3=TXD0 (TV sends), 4=DTR (TV sends), 5=GND, 6=NC, 7=RTS (TV sends), 8=CTS (TV receives), 9=NC, frame=GND. Electrical: RS232C standard. Cable section in source is OCR-garbled straight-through 1-1 mapping.
- Source document version: v.01, dated Feb/29/'08. Family coverage: P42H401, P42T501, P50H401, P50T501, P50S601, P50V701, P50X901, P55H401, P55T501, P60X901, L42S601, L42V651, L47S601, L47V651.
- Query commands ({fn}01{sub}0000) and the EXIT payload are assembled from the documented fixed format (Table 3.2.1.2, Table 3.3.1, Section 3.3.2); only write-table rows 1-39 have verbatim literal strings in the source.
Provenance
source_domains:
- web.archive.org
source_urls:
- http://web.archive.org/web/20091221205028/http://www.hitachi-america.us/supportingdocs/forhome/ubcg/remote_ir_codes/Hitachi_2007_RS232Codes.pdf
retrieved_at: 2026-09-16T05:09:09.897Z
last_checked_at: 2026-09-16T22:16:35.795Z
Verification Summary
verdict: verified
checked_at: 2026-09-16T22:16:35.795Z
matched_actions: 70
action_count: 70
confidence: medium
summary: "All 70 spec actions resolve to source Table 4.5.1 literals or assembled read/query forms; transport parameters match section 2 verbatim. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source"
- "source is a family-wide protocol document (14 models); P50H401-specific behavior only distinguishable where model letters (T/H/S/V/X) are called out"
- "protocol/firmware version compatibility not stated beyond document version v.01"
- "electrical specs beyond \"RS232C standard\" not stated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0