Skip to main content


Samsung Smart TV WS API wrapper Version Lint & Tests

This project is a Python library for remotely controlling Samsung televisions via a TCP/IP connection.

It supports modern (post-2016) Samsung Smart TVs running Tizen OS, connected via Ethernet or Wi-Fi.


Documentation

Most of the general usage and features are documented in this README. Some advanced topics are covered in dedicated documents:

  • Commands
    Detailed remote key reference, including the full key list and all supported ways to send keys via the CLI.

  • Applications (App IDs)
    Extended documentation about application IDs, how to find them, and how to install or launch applications from the TV.

Features

  • WebSocket and REST APIs
  • Sync and async support
  • Encrypted v1 API support for older TVs
  • Full Art Mode support (Frame TVs)
  • Command-line interface (CLI)

Installation

Requires Python >= 3.10.

Install from PyPI (recommended)

Core library:

pip install samsungtvws

Common install (async + encrypted + CLI):

pip install "samsungtvws[async,encrypted,cli]"

Optional extras

  • async: async I/O support (aiohttp, websockets)
  • encrypted: v1 encrypted API support for older Orsay TVs (cryptography, py3rijndael)
  • cli: installs the samsungtv command (typer, wakeonlan)

Examples:

pip install "samsungtvws[cli]"
pip install "samsungtvws[async]"
pip install "samsungtvws[encrypted]"

Install from GitHub (latest main branch)

pip install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted,cli]"

Local development install

git clone https://github.com/xchwarze/samsung-tv-ws-api.git
cd samsung-tv-ws-api
pip install --editable ".[async,encrypted,cli]"

--editable installs the package in development mode and can be omitted for a regular local install.


CLI check

If installed with the cli extra:

samsungtv --help

Usage

This library can be used either programmatically or via the CLI, depending on the integration needs.

Programmatic usage

For custom integrations or advanced control flows, the library can be consumed directly from Python code.

The examples/ directory contains ready-to-run programmatic examples, including:

  • WebSocket and REST usage
  • Async integrations
  • Encrypted API usage
  • Art Mode control

Reviewing these examples is the recommended starting point for manual integrations.


CLI usage

For quick testing, automation, or scripting, the library provides a fully featured command-line interface. Requires installation with the cli extra.

Once installed:

samsungtv --help

CLI examples

Power on TV using Wake-on-LAN:

samsungtv --host 192.168.1.50 wol

Toggle power:

samsungtv --host 192.168.1.50 power

List installed applications:

samsungtv --host 192.168.1.50 apps

Run an application by ID:

samsungtv --host 192.168.1.50 app-run 3201606009684

Open a URL in the TV browser:

samsungtv --host 192.168.1.50 open-browser https://duckduckgo.com

Get device information:

samsungtv --host 192.168.1.50 device-info

Enable Art Mode:

samsungtv --host 192.168.1.50 art-mode on

Upload an image to Art Mode:

samsungtv --host 192.168.1.50 art-upload image.jpg

The CLI exposes most of the library functionality, including:

  • App management
  • Remote control keys
  • Device information
  • Wake-on-LAN
  • Full Art Mode management

Supported TVs

This library is designed to support all Samsung Smart TVs running Tizen OS (2016+).

It also provides support for older Orsay-based TVs, specifically:

  • H series (2014)
  • Part of J series (2015)

Support for Orsay devices is mainly provided through the encrypted v1 API.

Official Samsung compatibility references:

Known issues and restrictions

Subnet / VLAN

Samsung Smart TVs do not allow WebSocket connections across different subnets or VLANs. If your TV is not on the same subnet as Home Assistant, the connection may fail.

Depending on the network setup, this limitation might be mitigated using:

  • IP masquerading (NAT)
  • A proxy

Samsung TV keeps asking for permission

The default setting on newer televisions is to ask for permission on every connection attempt.

To avoid this behavior, adjust:

Device Connection Manager → Access Notification Settings → First Time Only

It is also recommended to clean up previous attempts in:

Device Connection Manager → Device List

Patreon and Tips!

(I have this block in all my GPL projects) Those who want to help buy testing hardware or just give me a tip, you can do it by sending donations to my Binance account. I also made a Patreon

patreon binance-qr

License

LGPL-3.0

Release files for samsungtvws 3.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for samsungtvws 3.0.6
File Size Uploaded
samsungtvws-3.0.6.tar.gz 48.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for samsungtvws 3.0.6
File Interpreter ABI Platform
samsungtvws-3.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 97.5 kB

Release files / samsungtvws-3.0.6.tar.gz

Download URL samsungtvws-3.0.6.tar.gz
Size 48.8 kB
Tags Source
SHA-256 checksum
How to use checksums
166111d8370443cd2021b74cdfac9495896dfc41e3a87ea023289f24f922bb91
BLAKE2b-256 checksum
How to use checksums
351083c2d17e8643c262acc8b9e24581a44699862bb6c0ef0683b4bf682ee53a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / samsungtvws-3.0.6-py3-none-any.whl

Download URL samsungtvws-3.0.6-py3-none-any.whl
Size 48.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e3a1b23f928b3035570cc976b64b8c2a218b06022a333855fd7cd02dc74891d
BLAKE2b-256 checksum
How to use checksums
764960b2993a26e78f5d2716b4df1c3fb8fae54d19acf79197280df9088ddc15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.6 This release

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.0

1 release file

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.7.0

1 release file

1.6.0

1 release file

1.5.3

1 release file

1.5.2

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page