Sony TV Control
Control a Sony Bravia TV over the local network using IP Control (IRCC-IP + REST API). No server required — all commands are direct HTTP calls to the TV.
Configuration
- - TV IP: INLINECODE0
- PSK (Pre-Shared Key): INLINECODE1
- TV Model: KD-55X9500G (BRAVIA 4K)
- Browser: Chrome 77.0.3865.116 (WebAppRuntime 2.1.2+10)
Quick Reference
All commands go directly to http://192.168.50.120. No intermediate server needed.
IRCC Commands (Remote Control Buttons)
IRCC commands use SOAP over POST to /sony/ircc. Common IRCC codes:
| Command | IRCC Code |
|---|
| Power On | INLINECODE4 |
| Power Off |
AAAAAQAAAAEAAAAvAw== |
| Toggle Power |
AAAAAQAAAAEAAAAVAw== |
| Volume Up |
AAAAAQAAAAEAAAASAw== |
| Volume Down |
AAAAAQAAAAEAAAATAw== |
| Mute |
AAAAAQAAAAEAAAAUAw== |
| Channel Up |
AAAAAQAAAAEAAAAQAw== |
| Channel Down |
AAAAAQAAAAEAAAARAw== |
| D-Pad Up |
AAAAAQAAAAEAAAB0Aw== |
| D-Pad Down |
AAAAAQAAAAEAAAB1Aw== |
| D-Pad Left |
AAAAAQAAAAEAAAA0Aw== |
| D-Pad Right |
AAAAAQAAAAEAAAAzAw== |
| Confirm/OK |
AAAAAQAAAAEAAABlAw== |
| Home |
AAAAAQAAAAEAAABgAw== |
| Exit |
AAAAAQAAAAEAAABjAw== |
| Options |
AAAAAgAAAJcAAAA2Aw== |
| Back |
AAAAAgAAAJcAAAAjAw== |
| Play |
AAAAAgAAAJcAAAAaAw== |
| Pause |
AAAAAgAAAJcAAAAZAw== |
| Stop |
AAAAAgAAAJcAAAAYAw== |
| Rewind |
AAAAAgAAAJcAAAAbAw== |
| Forward |
AAAAAgAAAJcAAAAcAw== |
| HDMI 1 |
AAAAAgAAABoAAABaAw== |
| HDMI 2 |
AAAAAgAAABoAAABbAw== |
| HDMI 3 |
AAAAAgAAABoAAABcAw== |
| HDMI 4 |
AAAAAgAAABoAAABdAw== |
Send any IRCC command:
CODEBLOCK0
Power Control
CODEBLOCK1
Open URL in TV Browser
Launches a URL in the TV's built-in Chrome browser via localapp://webappruntime:
CODEBLOCK2
Kill All Apps (Close Browser)
Terminates all running apps on the TV (closes browser, stops web apps):
CODEBLOCK3
Get Status
CODEBLOCK4
Helper Script
For convenience, create a shell wrapper:
CODEBLOCK5
Local Test Server (Optional)
The test/ directory contains an optional Node.js Express server for:
- - Hosting the diagnostic page (
diag.html) locally - Collecting diagnostic results from the TV browser
- Providing a web-based remote control UI
This is not required for controlling the TV. It is only useful for running diagnostics and the web UI.
CODEBLOCK6
Diagnostic Page
Access http://<SERVER_IP>:3000/diag.html on the TV's browser (via Open URL) to run a 57-test capability scan. Results are automatically POSTed back to /api/diag-results.
See docs/diag-report.md for the full analysis.
TV Browser Capabilities (KD-55X9500G)
- - Browser: Chrome 77.0.3865.116 (WebAppRuntime 2.1.2+10)
- Resolution: 1920x1080
- GPU: Mali-G71
- localStorage: ~1.6 MB
- Sony APIs: All available (systemevents, picturemode, DirectoryReader, decimated-video, multicast-video, 4k-photo)
- Not supported: Service Worker
Sony Proprietary APIs
Available in the TV browser via the sony namespace:
CODEBLOCK7
Remote Key Codes
Detectable via keydown events in the TV browser:
404 |
| VK_YELLOW | 405 |
| VK_BLUE | 406 |
| VK_PLAY | 415 |
| VK_PAUSE | 463 |
| VK_STOP | 413 |
Sony TV 控制
通过IP控制(IRCC-IP + REST API)在本地网络上控制索尼Bravia电视。无需服务器 — 所有命令均直接通过HTTP调用电视。
配置
- - 电视IP:192.168.50.120
- 预共享密钥(PSK):19890801
- 电视型号:KD-55X9500G(BRAVIA 4K)
- 浏览器:Chrome 77.0.3865.116(WebAppRuntime 2.1.2+10)
快速参考
所有命令直接发送至 http://192.168.50.120。无需中间服务器。
IRCC命令(遥控器按键)
IRCC命令通过POST方式使用SOAP协议发送至 /sony/ircc。常用IRCC代码:
| 命令 | IRCC代码 |
|---|
| 开机 | AAAAAQAAAAEAAAAuAw== |
| 关机 |
AAAAAQAAAAEAAAAvAw== |
| 切换电源 | AAAAAQAAAAEAAAAVAw== |
| 音量加 | AAAAAQAAAAEAAAASAw== |
| 音量减 | AAAAAQAAAAEAAAATAw== |
| 静音 | AAAAAQAAAAEAAAAUAw== |
| 频道加 | AAAAAQAAAAEAAAAQAw== |
| 频道减 | AAAAAQAAAAEAAAARAw== |
| 方向键上 | AAAAAQAAAAEAAAB0Aw== |
| 方向键下 | AAAAAQAAAAEAAAB1Aw== |
| 方向键左 | AAAAAQAAAAEAAAA0Aw== |
| 方向键右 | AAAAAQAAAAEAAAAzAw== |
| 确认/确定 | AAAAAQAAAAEAAABlAw== |
| 主页 | AAAAAQAAAAEAAABgAw== |
| 退出 | AAAAAQAAAAEAAABjAw== |
| 选项 | AAAAAgAAAJcAAAA2Aw== |
| 返回 | AAAAAgAAAJcAAAAjAw== |
| 播放 | AAAAAgAAAJcAAAAaAw== |
| 暂停 | AAAAAgAAAJcAAAAZAw== |
| 停止 | AAAAAgAAAJcAAAAYAw== |
| 快退 | AAAAAgAAAJcAAAAbAw== |
| 快进 | AAAAAgAAAJcAAAAcAw== |
| HDMI 1 | AAAAAgAAABoAAABaAw== |
| HDMI 2 | AAAAAgAAABoAAABbAw== |
| HDMI 3 | AAAAAgAAABoAAABcAw== |
| HDMI 4 | AAAAAgAAABoAAABdAw== |
发送任意IRCC命令:
bash
TV=192.168.50.120
PSK=19890801
CODE=AAAAAQAAAAEAAAASAw== # 音量加
curl -s -X POST http://$TV/sony/ircc \
-H Content-Type: text/xml; charset=utf-8 \
-H SOAPACTION: urn:schemas-sony-com:service:IRCC:1#X_SendIRCC \
-H X-Auth-PSK: $PSK \
-d SendIRCC xmlns:u=\urn:schemas-sony-com:service:IRCC:1\>$CODESendIRCC>
电源控制
bash
开机
curl -s -X POST http://192.168.50.120/sony/ircc \
-H Content-Type: text/xml; charset=utf-8 \
-H SOAPACTION: urn:schemas-sony-com:service:IRCC:1#X_SendIRCC \
-H X-Auth-PSK: 19890801 \
-d
SendIRCC xmlns:u=urn:schemas-sony-com:service:IRCC:1>AAAAAQAAAAEAAAAuAw==SendIRCC>
关机
curl -s -X POST http://192.168.50.120/sony/ircc \
-H Content-Type: text/xml; charset=utf-8 \
-H SOAPACTION: urn:schemas-sony-com:service:IRCC:1#X_SendIRCC \
-H X-Auth-PSK: 19890801 \
-d
SendIRCC xmlns:u=urn:schemas-sony-com:service:IRCC:1>AAAAAQAAAAEAAAAvAw==SendIRCC>
在电视浏览器中打开URL
通过 localapp://webappruntime 在电视内置Chrome浏览器中启动URL:
bash
curl -s -X POST http://192.168.50.120/sony/appControl \
-H Content-Type: application/json \
-H X-Auth-PSK: 19890801 \
-d {method:setActiveApp,params:[{uri:localapp://webappruntime?url=http://192.168.50.170:3000/diag.html,data:}],id:1,version:1.0}
关闭所有应用(关闭浏览器)
终止电视上所有正在运行的应用(关闭浏览器,停止网页应用):
bash
curl -s -X POST http://192.168.50.120/sony/appControl \
-H Content-Type: application/json \
-H X-Auth-PSK: 19890801 \
-d {method:terminateApps,params:[],id:1,version:1.0}
获取状态
bash
获取音量
curl -s -X POST http://192.168.50.120/sony/audio \
-H Content-Type: application/json \
-H X-Auth-PSK: 19890801 \
-d {method:getVolumeInformation,params:[{target:speaker}],id:1,version:1.0}
获取电源状态
curl -s -X POST http://192.168.50.120/sony/system \
-H Content-Type: application/json \
-H X-Auth-PSK: 19890801 \
-d {method:getPowerStatus,params:[],id:1,version:1.0}
辅助脚本
为方便使用,创建一个Shell封装脚本:
bash
#!/bin/bash
tv.sh - Sony电视控制辅助脚本
TV=192.168.50.120
PSK=19890801
ircc() {
curl -s -X POST http://$TV/sony/ircc \
-H Content-Type: text/xml; charset=utf-8 \
-H SOAPACTION: urn:schemas-sony-com:service:IRCC:1#X_SendIRCC \
-H X-Auth-PSK: $PSK \
-d SendIRCC xmlns:u=\urn:schemas-sony-com:service:IRCC:1\>$1SendIRCC>
}
case $1 in
power-on) ircc AAAAAQAAAAEAAAAuAw== ;;
power-off) ircc AAAAAQAAAAEAAAAvAw== ;;
vol