# Awesome Smart TV

> A curated list of awesome resources for building Smart TV apps

Smart TV is a growing platform of TVs having access to the internet and allowing to browse web-sites and install applications. It has own ecosystem with main players like Samsung, LG, Android TV and Apple TV. In this list you will find official and third-party resources for developing Smart TV apps and communicating with TV from remote devices.

## Contents

- Platforms
  - Samsung Tizen
  - LG webOS
  - Android TV
  - Apple tvOS
  - Google Chromecast
- Cross-platform frameworks
- Remote control protocols
- Navigation libraries
- Testing
- Misc
- Community

## Platforms

Below are the most popular platforms for Smart TV. The full list is here.

### Samsung Tizen

#### Official resources

- Samsung TV Developers site - News, documentation and SDK downloads.
- Tizen TV Developers site - Full API documentation and guides for developing Tizen TV apps.
- Tizen Studio - IDE for TV apps development including Tizen TV Emulator.
- Smart View SDK - Official Android, IOS and JavaScript SDK for communication between remote device and Samsung Smart TV.
- Samsung TV Developers Forum - Ask questions and share tips when developing apps with Samsung SDKs.
- Samsung Smart TV Bug Bounty - If you find bug in Samsung TV, submit it here and get a reward $1000+.
- vscode-extension-tizentv - A Visual Studio Code extension that provides a lightweight IDE for Tizen application developers.
- Wits - A tool for reloading tv app’s JavaScript/CSS without reinstalling the app every time you make a change.

#### Third-party remote control libraries

- samsungctl - Library and command line tool for remote controlling Samsung televisions via a TCP/IP connection. It currently supports both pre-2016 TVs as well most of the modern Tizen-OS TVs with Ethernet or Wi-Fi connectivity (Python).
- samsung-tv-remote - Node.js module to remotely control Samsung Smart TV starting from 2016 (JavaScript).
- homebridge-samsungtv2016 - A plugin for Homebridge that allows you to control your 2016 Samsung TV with HomeKit and Siri (JavaScript).
- homebridge-samsung-tizen - A plugin for Homebridge that allows you to control your Samsung Tizen TV with HomeKit and Siri (JavaScript).
- samsung-remote-models-2014-and-newer - Encrypted communication with the internal web service of Samsung TV models 2014+.
- SmartCrypto - SmartView2 encrypted handshake API implementation in C/Python.
- samsung-messagebox - Python script to show notifications on Samsung TVs.
- samsung-tv-control - Library for remote control Samsung TV in your Node.js

#### Other

- Identification of Samsung TV models 2008-2017 - How to get screen size, matrix type, year of development, series and other parameters from Samsung TV model name.
- Tizen Studio development references - Documents focused on web apps for Smart TVs e Professional Monitors, based in personal researches.
- [TizenBrew] (https://github.com/reisxd/TizenBrew) - A way to experience modded websites and you can install newer apps without fighting with Tizen Studio
- [TizenTube] (https://github.com/reisxd/TizenTube) - A TizenBrew module that enhances your favourite streaming websites viewing experience by removing ads and adding support for Sponsorblock.

### LG webOS

#### Official resources

- webOS TV Developers Site - WebOS TV apps development principles, tutorials, API documentation and packaging tools.
- webOS TV IDE + SDK - IDE for apps development including a Command Line Interface and emulator.
- Connect SDK - Open source framework developed by LG that connects your mobile apps with multiple media device platforms. Currently supports 8 platforms. But seems abandoned.
- webOS TV Developers Forum - Ask questions, share information and learn about Smart TV app development with other developers.

#### Third-party remote control libraries

- lgtv2 - Node.js module for remote control of LG webOS TV via WebSocket messages (JavaScript).
- node-red-contrib-lgtv - Module for Node-RED allowing remote control of LG webOS Smart TVs (JavaScript).
- node-webos - Node.js module to discover and control webOS TVs (JavaScript).
- lgtv2mqtt - Interface between LG WebOS Smart TVs and MQTT (JavaScript).
- ares-webos-sdk - webOS CLI as separate NPM module (JavaScript).
- pylgtv - Library to control webOS based LG Tv devices (Python).
- LGWebOSRemote - Command line tool for webOS remote control of LG TVs (Python).
- homebridge-webos-tv - A plugin for Homebridge which allows you to control your webOS TV.
- PyWebOSTV - A generic & entensible WebOS 3.0 Client Library (Python2, Python3).
- go-webos - A small Go library for interaction with webOS TVs (golang).

#### Videos

- LG Magic Motion Remote - Point, Click, and Control - Operate TV like a computer mouse.

#### Other

- openlgtv.org.ru - A non-commercial project for legal reverse engineering and research on LG Television firmware. Seems a bit outdated but contains a lot of information.
- Identification of LG TV models 2011-2017 - How to get screen size, matrix type, year of development, series and ohter parameters from LG TV model name.

### Android TV

#### Official resources

- Android TV Developers site - Documentation, tutorials and best practises for building Android TV apps.

#### Articles

- How to develop Android TV App? - An article about developing apps for Android TV.

### Apple tvOS

#### Official resources

- tvOS Developers Site - SDK, documentation and tutorials for developing tvOS apps.
- TVML - Apple TV Markup Language for creating tvOS apps.

### Google Chromecast

#### Official resources

- Google Cast SDK - Official Google Cast SDK documentation and tutorials.
- TVs with Chromecast built-in - List of vendors supporting built-in Chromecast and advantages over traditional TV remote controller.

## Cross-platform frameworks

- react-tv - React development for TV: renderer for low memory applications and Packager for WebOS, Tizen, Orsay.
- TOAST - Samsung open-source framework for multi-platform TV apps developemnt.
- Enyo - LG framework for development apps for all major platforms, from phones and tablets to PCs and TVs.
- Smartbox - Smart TV universal library for Samsung, LG, Philips, SmartTV Aliance, STB Mag app development.
- Mautilus Smart TV SDK - A platform-agnostic framework for developing TV Apps. Supports Samsung, LG, Philips, Sony, Panasonic and VESTEL Smart TVs.
- BBC TAL - An open source library for building applications for Smart TV developed by BBC engineers.
- PureQML TV - A declarative front-end framework for web-based SmartTV/STB platforms. Has experimental support of Android TV.
- ZombieBox - An open source Smart TV framework. Strongly typed JavaScript, component based, built-in D-PAD navigation management, abstract video API with DRM for all platforms. Supports many platforms like Tizen, webOS, Android TV, etc.

## Remote control protocols

- DLNA - Industry-wide standard for sharing data over a home network. Depending on the DLNA-compatible devices you own, you might be able to stream films from your laptop to your TV, play an MP3 stored on your phone over your hi-fi system, or print a photo from your tablet on your home printer.
- DIAL - Developed by Netflix and Google, this protocol alows client devices (like smartphone, tablet, or computer) to discover apps on server devices (like a smart TV or streaming box) and launch content on them.
- Wi-Fi Direct - Standard enabling devices to easily connect with each other without requiring a wireless access point.
- Miracast - Standard for wireless connections from devices (such as laptops, tablets, or smartphones) to displays (such as TVs, monitors or projectors). Works over Wi-Fi Direct.

## Navigation libraries

- lrud - Left, Right, Up, Down. A spatial navigation library for devices with input via directional controls.
- js-spatial-navigation - A javascript-based implementation of Spatial Navigation.
- react-js-spatial-navigation - A wrapper of js-spatial-navigation to react components.
- react-key-navigation - Spatial Navigation components for React. Similar to the “Focus Management” of the BBC TAL.
- react-spatial-navigation - HOC-based Spatial Navigation (key navigation) solution for React.

## Testing

- Suitest - Test automation solution for Smart TVs, gaming consoles, streaming sticks etc.
- stb-tester - Automated User Interface Testing for Set-Top Boxes & Smart TVs (python).

## Misc

- LIRC - A package that allows you to decode and send infra-red signals of many (but not all) commonly used remote controls.
- awesome-smarttv - Another list of Smart TV resources. Discovered after this one was already done :roll_eyes:.
- docker-tizen-webos-sdk - Docker image with Samsung Tizen CLI and LG webOS CLI. Allows to develop, build, launch and debug Smart TV apps without installing Tizen Studio and webOS SDK.

## Community

- Stack Overflow
- Reddit

## Contribute

Feel free to share your experience and contribute useful extension resources by creating new issue or pull request. Please read the contribution guidelines first. Thanks!

## License

smarttv.md Github