요약. 켜진 TV를 SSDP로 찾고 장비 설명을 읽은 뒤, TV 화면에서 최초 SSAP 등록을 승인합니다. TV가 돌려준 client key와 유선·Wi-Fi MAC 주소를 저장합니다. SSAP는 상태를 제어하고 별도 pointer WebSocket은 이동·버튼 frame을 보냅니다. 깊은 대기 상태의 TV는 아무것도 응답하지 않으므로 전원 켜기는 TV가 깨어 있을 때 저장한 MAC으로 Wake-on-LAN을 사용해야 합니다.
도토리 LG TV 리모컨집 네트워크를 통해 트랙패드·숫자패드·방향키·볼륨·채널, TV 선택과 Wake-on-LAN 전원 켜기를 제공합니다.
TV가 응답할 때만 발견할 수 있다
TV가 켜져 있으면 SSDP 검색으로 장비 설명 URL을 받을 수 있습니다. 그 로컬 UPnP 설명을 읽으면 실측 TV에서는 모델과 유선·Wi-Fi MAC 주소를 얻을 수 있었습니다. DHCP 주소를 영구 identity로 보아서는 안 됩니다. IP는 바뀔 수 있지만 저장한 장비 record와 인증서 지문은 다시 연결할 TV를 구분합니다.
MAC은 선택적인 부가 정보가 아닙니다. 나중에 발견 응답을 전혀 받을 수 없을 때 TV를 깨우는 데 필요한 정보입니다.
첫 연결은 TV 화면에서 승인이 필요하다
SSAP는 secure WebSocket으로 연결됩니다. 폰이 등록 요청을 보내면 TV가 승인 팝업을 표시합니다. 승인하면 TV가 client key를 돌려줍니다. 이 키를 TV별로 저장하면 이후에는 승인 팝업 없이 다시 등록할 수 있습니다. 기억한 TLS 인증서 지문은 다른 endpoint가 페어링된 TV를 조용히 대체하지 못하게 합니다.
제어와 포인터 입력은 서로 다른 socket이다
기본 SSAP 연결은 volume·mute·현재 channel·전경 app·app 실행·전원 끄기 같은 request와
subscription을 처리합니다. 포인터 입력은 SSAP에서 getPointerInputSocket을 요청해
별도 secure WebSocket URL을 받은 뒤 시작합니다.
type:move
dx:12
dy:-4
down:0
type:button
name:HOME
포인터 socket은 move·click·scroll·리모컨 button을 줄바꿈으로 구분한 frame으로 받지만 각 frame의 결과를 돌려주지 않습니다. 기본 SSAP 연결이 살아 보이는 동안 포인터 socket만 무효가 될 수 있으므로 견고한 재연결은 상태 표시 하나만 믿지 않고 둘을 함께 다시 세웁니다.
전원 끄기와 켜기는 protocol이 다르다
끄기는 인증된 SSAP 명령 ssap://system/turnOff입니다. 명령 직후에는 TV가 잠깐 Active
Standby에 머물며 control port에 응답할 수 있습니다. 깊은 대기로 내려가면 실측 TV는 SSAP를 닫고
ping·SSDP·UPnP에도 답하지 않았습니다. 따라서 꺼진 TV를 새로 발견할 수 없습니다.
켜기는 저장한 MAC 주소를 향한 Wake-on-LAN magic packet을 사용합니다. TV의 ‘모바일 TV 켜기’ 설정이 미리 켜져 있어야 합니다. 유선과 Wi-Fi interface의 MAC은 다르므로 실제 연결에서 저장한 주소가 중요합니다. 실측 TV가 깨어나는 데 약 15~20초 걸렸으므로 폰은 즉시 실패로 판정하지 않고 진행 상태를 보여주어야 합니다.
텍스트 입력을 약속하지 않는 이유
SSAP 문자열 입력은 실측 webOS browser 주소창에서는 동작했지만 YouTube 검색창은 같은 입력 경로에 참여하지 않아 무반응이었습니다. 포인터 protocol도 text frame을 받지 않았습니다. TV app마다 어떤 곳에서는 되고 다른 곳에서는 조용히 실패하는 기능은 신뢰할 수 있는 v1 약속이 아니므로 이 리모컨에서는 텍스트 입력을 제외했습니다.
실측 범위
이 protocol 관찰은 LG OLED55C8GNA(2018년형, webOS 4.x) 한 대에서 이루어졌습니다. 다른 연식은 지원 command와 동작이 다를 수 있습니다. LG와 webOS는 LG전자의 상표이며 이 앱은 LG전자와 제휴하지 않은 독립 앱입니다.
리모컨·볼륨·TV 선택·설정 화면






도토리 LG TV 리모컨는 SSDP 발견, 사용자가 승인한 SSAP 페어링, 별도 포인터 channel과 저장 MAC을 이용한 Wake-on-LAN을 하나의 폰 리모컨에 묶습니다. 도토리 LG TV 리모컨 자세히 보기
관련 글
- 도토리 LG TV 리모컨 사용 설명서
- Android 폰으로 Wi-Fi 장비를 찾는 법
- LG TV 리모컨 분실·고장, 폰을 리모컨으로 쓰는 방법 — 네이버 블로그에 쓴 실사용 안내입니다.
- Lost Your LG TV Remote? Use Your Phone Instead — 같은 내용의 영문판입니다.