I’ve published a custom integration for Viark satellite receivers: jorgediez/ha-viark.
It talks to the receiver over its own LAN protocol on TCP 20000. No cloud, and no scraping a web UI — the receiver pushes state changes and the integration reacts to them.
Why a new integration: these boxes don’t run Enigma2, so the built-in enigma2 / OpenWebif integration can’t see them at all. As far as I could find, nothing else covered them.
What you get
media_player— power on/off (soft standby), mute, volume step, channel up/down, andselect_sourceacross the full channel list.remote—remote.send_commandwith named keys (epg,menu,red,digit_0…digit_9, and about 50 more) or raw codes.- Diagnostic sensors — serial, software version, platform ID, channel count, receiver clock, and a longer list disabled by default for debugging.
- Auto-discovery — the receiver broadcasts on UDP 25860, so the config flow usually pre-fills the address and you just confirm. Enter the IP manually if HA runs in a container without host networking.
One detail worth calling out: the source dropdown shows channels numbered as the receiver shows them on screen (163 laSexta). Satellite line-ups are full of duplicate channel names, and without the numbers only the first of each was reachable. select_source still accepts a bare name or a bare number, so existing automations don’t need changing.
Known limits
Better you hear these from me than find them at 11pm:
- Deep standby can’t be woken. The receiver leaves the network entirely.
turn_ononly works from soft standby — use an IR blaster for a cold start. - Volume is step-only. Mute state is reported, volume level isn’t.
- One client at a time. If the G-MScreen phone app is connected, HA gets refused.
- Channel changes fail while a menu is open on the TV. Surfaced as a readable error rather than a silent no-op.
Installing
Requires Home Assistant 2025.3 or newer. No external Python dependencies.
HACS → Integrations → ⋮ → Custom repositories → add https://github.com/jorgediez/ha-viark as an Integration, install, restart. Or copy custom_components/viark/ in by hand.
Then Settings → Devices & Services → Add Integration → Viark.
Other receivers
Developed and verified against a Viark SAT 4K (platform id 140), but the G-MScreen protocol is used by a lot of ALi, GX, HiSilicon and MStar boxes — GTMedia, Freesat, Starsat and similar. Those are untested.
If you have one, I’d be glad of a report either way. The login block reports a platform id and behaviour is known to vary by platform, so even “it works” is useful data. There’s also a list of remote key codes in the repo that appear in only one reverse-engineering source and haven’t been confirmed on hardware; a script to map them is included if you fancy it.
The protocol itself is documented in PROTOCOL.md in the repo — framing, the obfuscated login block, request numbers, status codes and the key table — in case it’s useful to anyone outside Home Assistant.
MIT licensed.
If you’d rather press buttons than write send_key calls, there’s a companion card: Viark Remote Card, a dashboard replica of the receiver’s own remote. It needs this integration installed to have anything to talk to.

