Home Assistant integration for the Unfolded Circle Remote Two / Remote 3 and associated docks. A rich integration providing activity control, remote settings and diagnostics, firmware management, IR transmission & learning, wake features, dock management, wireless charging control and advanced automation hooks.
- Key Features
- Supported Devices & Concepts
- Installation
- Configuration
- Entities Overview
- Dock Support
- External Entity Management
- Mapped Button Remote Commands
- IR Remote Commands
- Activity Update Actions
- IR Learning
- Options
- Zeroconf
- Wake on LAN
- Planned / Future Ideas
- Notes & Behavior
- Services & Actions Summary
- Troubleshooting & Support
- Localization
- About This Project
- License
- Support the Project
- Automatic device & dock discovery (zeroconf)
- Guided configuration flow and options flow
- Flexible entity exposure: activities, groups, media players (global / per group / per activity)
- Firmware update control with progress reporting
- External Entity Management (select which HA entities are exposed back to the remote)
- IR send (codeset/custom) with dock & port targeting
- IR learning workflow that builds ready-to-use codesets
- Mapped button command dispatch (long press, repeats, delays, activity scoping)
- Activity maintenance services (e.g., prevent sleep toggling, standby inhibitors)
- Wake on LAN for Remote Two (Remote 3 when firmware supports it)
- Resource usage sensors (opt-in polling)
- Docks as sub-entries: IR, brightness, identity, reboot, firmware
- Button backlight Light entity (brightness + color control)
- Multi-language support (EN, Partial (FR, PT))
| Component | Description |
|---|---|
| Remote Two / Remote 3 | Primary handheld device defining activities, buttons, media surface. |
| Dock | IR emission, LED brightness, reboot, identity flash, firmware update. |
| Activity / Activity Group | Logical usage contexts exposed as switches/selects with optional media players. |
| Firmware | Update entity supports version awareness & install execution. |
| IR Dataset | Learned or manufacturer-based sets of IR commands. |
| Button Backlight | Light entity allowing dynamic brightness and color adjustment of remote button illumination. |
| Wireless Charging | Toggle wireless charging on and off to control battery setpoint. |
- Install HACS if not already.
- Home Assistant β HACS β Integrations.
- Search βUnfolded Circleβ β Install.
- Restart Home Assistant.
- Continue with Configuration.
- Clone or download this repository.
- Copy
custom_components/unfoldedcircleinto your HAcustom_components/directory. - Restart HA.
- Proceed to Configuration.
Manual installs wonβt auto-notify updatesβwatch the repo if you go this route.
After restart (HACS or manual):
- A discovery notification should appear.
- Go to Settings β Devices & Services β Configure and click Configure on the newly discovered Unfolded Circle Device.
- Enter PIN (from remote web configurator).
- On the remote: profile icon (upper-right) β enable web configurator β PIN appears (refresh if needed).
- PIN only needed initially; you can change it after pairing.
- Assign an Area.
If not discovered:
- Settings β Devices & Services β Integrations β + Add Integration.
- Search βUnfolded Circleβ.
- Supply PIN and Host (IP/hostname).
| Category | Examples / Notes |
|---|---|
| Sensors | Battery, Illuminance, Resource Usage (CPU/Mem/Storage)*, Config flags |
| Binary Sensor | Charging status |
| Update | Firmware reporting + install |
| Switch | Activities (configurable), configuration toggles |
| Select | Activity groups (optional) |
| Button | Restart remote |
| Remote | Mapped button & IR dispatch |
| Media Player | Global and/or per group / per activity |
| Number | Numeric configuration, dock LEDs |
| Light | Button backlight (brightness + color control) |
| Dock Sub-Entities | Remote (IR), Buttons (Reboot, Identity), Update, Brightness controls |
*Resource usage sensors disabled by default; enabling one enables selective polling.
A light entity exposes remote button backlight control:
- Adjustable brightness
- Adjustable color (depending on device capabilities)
- Suitable for themes/ambience automations (e.g., dim during night mode)
Example automation:
automation:
- alias: Dim remote backlight at night
trigger:
- platform: time
at: "23:00:00"
action:
- service: light.turn_on
target:
entity_id: light.remote_two_button_backlight
data:
brightness_pct: 10
rgb_color: [255, 80, 10]A switch entity enables and disables the wireless charger on your Remote 3.
Example Automation:
alias: Preserve Battery
description: "Toggle wireless charging functionality based on battery percentage"
triggers:
- trigger: numeric_state
entity_id:
- sensor.remote_3_battery
above: 80
id: "OFF"
- trigger: numeric_state
entity_id:
- sensor.remote_3_battery
below: 60
id: "ON"
conditions: []
actions:
- if:
- condition: trigger
id:
- "OFF"
then:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.remote_3_wireless_charging
- if:
- condition: trigger
id:
- "OFF"
then:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.remote_3_wireless_charging
mode: single- Docks are Sub-entries
- One-time migration cleans legacy definitions & repairs.
- Removed reliance on dock passwords π
Each dock exposes:
- Remote (IR)
- Buttons: Reboot, Identity flash
- Numbers: LED Brightness
- Update: Firmware visibility
Select which HA entities are shared to the remote (Options flow).
Requirements:
- Remote firmware β₯ 2.0.0 (β₯ 2.6.9 recommended; Remote 3 currently beta but stable)
Demo video: Watch the demo
Preferred service: unfoldedcircle.send_button_command
Options: num_repeats, delay_secs, hold, activity
Supported buttons:
- BACK
- HOME
- VOICE
- VOLUME_UP
- VOLUME_DOWN
- GREEN
- DPAD_UP
- YELLOW
- DPAD_LEFT
- DPAD_MIDDLE
- DPAD_RIGHT
- RED
- DPAD_DOWN
- BLUE
- CHANNEL_UP
- CHANNEL_DOWN
- MUTE
- PREV
- PLAY
- PAUSE
- NEXT
- POWER
The remote entity supports sending predefined or (HEX/PRONTO) IR commands using the unfoldedcircle.send_ir_command action.
device: will match the case-sensitive name of your remote defined in the web configurator on the remote page. This will be your custom name or the manufacturer name selected.
codeset (Optional) If you supplied a manufacturer name, you also need to supply the codeset name you are using.
command will match the case-senstitive name of the pre-defined (custom or codeset) or (Hex or Pronto) command defined for the remote.
num_repeats (Optional) The number of times to repeat sending the command.
dock_name (Optional) The name of the dock you would like to send the command from. If not supplied, all docks will emit the IR signal.
port (Optional) The location on the dock you want the IR signal to be emitted from. If not supplied, all ports are used.
Yaml of the above image:
action: unfoldedcircle.send_ir_command
data:
device: Samsung
codeset: Generic TV 1
command: POWER_TOGGLE
dock: Remote Dock
port: Ext 1
target:
entity_id: remote.remote_two_remoteTIP: Core
remote.send_commandonly supports custom codes (platform limitation).
Service: unfoldedcircle.update_activity
service: unfoldedcircle.update_activity
target:
entity_id: switch.remote_two_control_projector
data:
prevent_sleep: trueCurrently supports prevent_sleep (more may follow).
Service: unfoldedcircle.learn_ir_command
service: unfoldedcircle.learn_ir_command
target:
entity_id: remote.remote_dock_remote
data:
remote:
name: Sony TV
icon: uc:tv
description: My Sony TV Remote
dock: R3 Dock
ir_dataset:
name: Sony A95L
command:
- direction_up
- direction_right
- direction_down
- direction_left
- menu
- back
- home
Follow HA notifications for capture steps. Resulting dataset appears in remote web configurator.
Screenshots:
Access via Integration β Configure:
Control local settings
-
Activity:
- Create all activities as switches
- Suppress activity groups as selects
-
Media Player:
- Global media player
- Per activity group
- Per activity
-
Remote start
- Define which activity starts when toggling the remote entity (Good fit with HomeKit Bridge)
** Configure connection settings**
- Update remote hostname
- Update Home Assistant websocket URL
Automatic network discovery; no manual intervention required.
Available for Remote Two (firmware β₯ 2.0.0). Remote 3 support will follow once the firmware adds the feature.
Behavior:
- HA attempts wake before user-triggered commands when needed.
- Raw IR command sending via core
remote.send_command
- Remote entity does not need to be βonβ to send commands.
- The Remote Two will go to sleep when unpowered. If you have wake on lan enabled on your remote, Home Assistant will attempt to wake your remote prior to issuing a command. Only commands initiated by you will attempt to wake the remote.
- Diagnostics available via Device Info overflow menu.
- Authentication loss triggers a repair to re-enter PIN.
- Resource usage polling is opt-in per sensor.
| Service | Purpose | Key Fields |
|---|---|---|
unfoldedcircle.send_button_command |
Send mapped remote button | button, activity?, num_repeats?, delay_secs?, hold? |
unfoldedcircle.send_ir_command |
Emit predefined IR command | device, codeset?, command, dock_name?, port?, num_repeats? |
unfoldedcircle.learn_ir_command |
Start IR learning workflow | remote{}, ir_dataset{} |
unfoldedcircle.update_activity |
Modify activity attributes | prevent_sleep? |
unfoldedcircle.inhibit_standby |
Create a new standby inhibitor | reason?, duration |
Confirm exact service IDs in Developer Tools β Services.
| Issue | Resolution |
|---|---|
| Not discovered | Ensure zeroconf and network visibility; try manual add. |
| PIN failing | Regenerate PIN in remote web configurator. |
| IR not firing | Verify device/codeset names & dock availability. |
Join the community on Discord (link at top).
Supported: English, French, Portuguese. Contribute additional translations via PR (follow HA localization format).
Independent community-driven integration built in collaboration (not affiliation) with Unfolded Circle. Hardware team is awesome. Consider supporting both the platform and this integration.
See LICENSE for details.
- Star the repository
- Open constructive issues / PRs
- Share ideas for roadmap
- Buy Me A Coffee



