As I noted yesterday, the launch of the developer beta of iOS 12.2 has brought the necessary underlying APIs for manufacturers of smart TVs seeking to integrate their television sets with HomeKit. Originally announced at CES 2019, the initiative encompasses both the HomeKit and AirPlay 2 technologies, which the likes of Samsung, LG, Vizio, and Sony will roll out (albeit to varying degrees) in their upcoming smart TVs over the course of 2019. Thanks to the HomeKit Accessory Protocol and the work of enterprising third-party developers, however, it is already possible to get an idea of what the HomeKit part of these integrations will be like by installing unofficial plugins that add HomeKit compatibility to existing TV sets via software.
Thanks to developer (and homebridge contributor) Khaos Tian, I've been able to test native HomeKit integration with my 2017 LG TV running webOS, which does not currently support HomeKit out of the box and which, according to LG, will not receive an official software update for HomeKit support in iOS and tvOS 12.2. In this post, I'm going to share my first impressions of HomeKit's new TV features in the iOS 12.2 beta, describe how it all works in practice, and share some suggestions for changes I'd like Apple to implement by the final release of iOS 12.2.
Once again, allow me to reiterate: the plugin I'm using to test HomeKit integration is not commercial software and is not available publicly yet. Developer Khaos Tian was kind enough to let me beta test his proof of concept, which hopefully will be integrated in other unofficial homebridge plugins down the road.
Essentially, Tian built a Node.js web server that runs on my Mac mini on the same local WiFi network as the LG TV, bridging the existing webOS API to the new HomeKit APIs in iOS 12.2. Obviously, real HomeKit support in modern smart TVs will not require any of this manual user hacking and will be available as part of the TV's own OS. However, just like with homebridge plugins, the end result is real HomeKit integration: after installing the iOS 12.2 beta, the TV appears as a new accessory type in the Home app and can be controlled with new, native controls available in Home and Control Center for iOS 12.2.
The setup I'm going to cover in this article requires an unofficial, third-party plugin, but the user experience is the same you'd get if you were testing an upcoming smart TV with embedded HomeKit support. From an interaction standpoint, all the changes detailed in this post are built-in features of iOS 12.2 – the only caveat is that, in order to be enabled, they require "faking" HomeKit support for a television that doesn't officially support HomeKit yet. That's precisely the beauty of homebridge and one of the benefits of software-based HomeKit authentication, which is made available by Apple for developers to tinker with. That being said, let's take a look.
TVs in the Home App
Once a television has been added as a HomeKit accessory, it shows up in two distinct places in iOS 12.2: the Home app and the virtual remote in Control Center. In the Home app, televisions are a new accessory type (denoted by a new TV icon) that, at a basic level, behave like any other HomeKit switch that can be turned on and off. You can tap the accessory to toggle its power state, or you can long-press/3D Touch to expand the UI and reveal a bigger virtual switch. When the TV is on, the current input (live TV, HDMI, built-in TV apps, etc.) is shown as a label in the accessory's tile.
Expanding the tile to open the larger switch UI reveals the usual 'Settings' button to configure additional accessory details as well as a new 'Input' button. As per HomeKit tradition, the settings screen is where you can rename the accessory, assign it to a room, mark it as a favorite, and toggle notification support. However, new in iOS 12.2 for HomeKit-compatible TVs, the accessory's settings screen also lists all the inputs and built-in TV apps (in my case, webOS apps) that have been made available by the TV's software to HomeKit. For my LG TV (an OLED 55" B7 model), inputs include all my HDMI inputs (which carry the names I had previously changed on the TV itself, such as "PS4 Pro" instead of "HDMI 1"), built-in webOS apps like YouTube and Netflix, and features such as Screen Share and Recordings. If you don't like their labels, you can rename inputs from the Home app on iOS.
The list of inputs comes into play when tapping the 'Input' button from the accessory detail view. The button brings up a list that shows the currently selected input; if the TV is on, you can choose another input from the list to instantly switch to it. In my tests, toggling the power state of the TV via HomeKit was fast and I'd say even faster than the homebridge plugin I'm currently using for webOS. Switching inputs to select a specific HDMI source or built-in webOS app was also immediate and never resulted in an error. Unfortunately, it doesn't seem like it is currently possible to turn on a TV and switch to a specific input at the same time, but this could easily be an issue of this first beta of iOS 12.2, a limitation of the unofficial integration I'm testing, or a mix of both.
As Tian pointed out on Twitter yesterday, TVs can participate in HomeKit scenes and automations too. This means it'll be possible to set up scenes that turn your TV on or off alongside other accessories as well as set up automated rules to toggle the TV's power state (and, in theory, inputs) when specific conditions are matched by HomeKit.
TVs in Control Center
The other aspect of HomeKit's support for TVs involves Control Center and the virtual remote that has so far been exclusive to Apple TV. If a TV has been added to HomeKit, the remote will feature a menu at the top to switch between the classic Apple TV remote UI and the new one dedicated to controlling a smart TV's interface.
Now, because I've only been able to test HomeKit integration with one TV model and an unofficial plugin, I'm not sure if this remote UI is specific to LG TVs or if it'll be globally shared across all TV models, but I think the latter option is more likely. In any case, the remote I see on my iOS devices (a full-screen remote on iPhone, and a floating modal panel on iPad) features directional arrows and a large click button in the middle that more or less matches the configuration of my physical TV remote. (My TV remote actually sports a click wheel for scrolling UI elements, but the iOS one doesn't support swiping – just tapping the arrows.) At the bottom, the virtual remote features a row of circular buttons to play/pause the currently selected item, go back, exit the current screen/mode, and display additional information.
From what I've been able to gather and test so far on my LG B7, what's impressive about this virtual TV remote is that it's mapped 1:1 to standard features and navigation of webOS. Tapping the 'i' button, for instance, brings up the app switcher overlay to change inputs and view settings, which I can entirely navigate and interact with using the directional arrows and click button; the 'back' or 'exit' buttons close the overlay or, in the case of apps or full-screen pages like Settings, either navigate back or exit the current mode. Each tap is accompanied by a subtle tap of the iPhone's Taptic Engine, and I haven't been able to find a single TV feature that couldn't be selected and/or controlled by the remote in Control Center. For a first version, this extensive support is quite remarkable.
The TV's webOS YouTube app (which I find superior to the tvOS one because it supports 4K playback and feels more responsive) can be fully controlled from the remote and the back/exit buttons behave exactly as expected (navigate back or go back to the previously selected input). The only limitation I've noticed (besides the aforementioned click wheel) is that selecting a text field on webOS does not bring up a virtual keyboard on iOS (instead, you can select keys of webOS' onscreen keyboard). I don't know, however, if this is a known limitation of iOS 12.2 or the plugin I'm testing.
There are two nice details about the TV remote. First, when the remote is shown, clicking the iOS device's volume buttons changes the volume of the TV, which is a great time saver. Second – and I hope this is not a bug – if you lock the iPhone while the remote is shown, tapping the screen again will show you the remote instead of the lock screen. I believe this is the right approach: if you're watching TV and using your iPhone as a remote, you want to be able to control whatever is on TV as quickly as possible, and having the remote's UI "pinned" to the lock screen is a nice way to do that.
Improvements I'd Like to See
As I mentioned above, it's very likely that the limitations and issues I've noticed so far are related to the early nature of the iOS 12.2 beta and/or the unofficial HomeKit integration I'm testing. But in case they're not, allow me to share some other notes on aspects I'd like to see improved by the final release. After all, this is what bloggers do instead of filing radars.
Switching inputs from the Home app is too slow. In its current state, changing active inputs from the Home app and the TV's accessory tile is too slow and requires too many taps. It'd be nice to be able to mark certain inputs as favorites and have them available as shortcuts in the accessory detail view (the screen you get by long-pressing the accessory in the Home app).
Siri cannot switch inputs (yet?). Currently, asking Siri to "switch to PlayStation on my TV" or "turn on HDMI 2" does nothing. Siri on iPhone, Apple Watch, or HomePod would be the perfect tool to quickly switch inputs, and I hope Apple adds this option in a future beta.
The remote should be customizable. It's impossibile to please everyone's needs when designing a TV remote. The beautiful thing about software-based input mechanisms, though, is that they can be altered without buying a different physical object, which is why I believe Apple should offer some basic personalization of the buttons displayed in the remote's interface. Favorite inputs should be available in the remote as shortcuts; I'd also like to have the ability to add volume controls and a mute button.
Overall, despite the fact that this is a first beta of iOS 12.2 and that I'm testing a third-party plugin, I'm already impressed with the performance and convenience of HomeKit's integration with my smart TV. It feels like Apple is making the most out of what they can offer in the (problematic) Home app, and the remote in Control Center is a nice solution to ensure that the only remote I have with me while watching TV is my iPhone. In future betas of iOS 12.2, I'd like to see proper Siri integration with TV input control, a quicker way to switch inputs from iOS, and a slightly customizable remote.
After testing this integration and seeing how well it already works with software-based HomeKit authentication on my 2017 LG TV, I'm very curious to hear what LG's explanation for limiting HomeKit to 2019 TV models will be. Worst case scenario, if LG doesn't change its stance on HomeKit support for older TV sets, we'll always have homebridge.