From 90c4c889428a56e93d4c78293714ec52d81cb1ff Mon Sep 17 00:00:00 2001 From: matze19999 Date: Tue, 6 Oct 2026 18:05:33 +0200 Subject: [PATCH] Support configurable Hyperion and HyperHDR receivers with token login --- .gitignore | 3 + HyperDRM.manifest.json | 10 +-- ...RM_0.7.2_arm.ipk => HyperDRM_0.8.0_arm.ipk | Bin 1169234 -> 1173194 bytes README.md | 22 +++-- app/app.js | 23 +++++- app/appinfo.json | 2 +- app/index.html | 13 ++- app/remote.js | 2 + docs/publishing-review.md | 8 ++ native/handover.h | 2 +- native/service.c | 49 +++++++---- native/target.h | 76 ++++++++++++++++++ native/test_handover.c | 2 + native/test_target.c | 23 ++++++ package/packageinfo.json | 2 +- service/histogram-service | Bin 75856 -> 76648 bytes service/services.json | 2 +- tests/receiver-proxy.py | 55 +++++++++++++ tests/remote-navigation.test.js | 4 + 19 files changed, 264 insertions(+), 34 deletions(-) rename HyperDRM_0.7.2_arm.ipk => HyperDRM_0.8.0_arm.ipk (89%) create mode 100644 native/target.h create mode 100644 native/test_target.c create mode 100644 tests/receiver-proxy.py diff --git a/.gitignore b/.gitignore index 78c6538..32092cc 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ test-retry test-playback test-handover + +test-target +tests/receiver-proxy.log diff --git a/HyperDRM.manifest.json b/HyperDRM.manifest.json index b86b875..ecc9812 100644 --- a/HyperDRM.manifest.json +++ b/HyperDRM.manifest.json @@ -1,15 +1,15 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.7.2", + "version": "0.8.0", "type": "web", "title": "HyperDRM", - "appDescription": "Ambient lighting for webOS and Hyperion", + "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM", "rootRequired": true, - "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.7.2_arm.ipk", + "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.8.0_arm.ipk", "ipkHash": { - "sha256": "cc73ed6b93caf86b32df52a87b0160a8cdec34b79802fcc71fc1f0f04d5fcf74" + "sha256": "7cbb9c3a6e9dc5fe0c421cff6082807231c06a697420767761735f405855ae4a" }, - "ipkSize": 1169234 + "ipkSize": 1173194 } diff --git a/HyperDRM_0.7.2_arm.ipk b/HyperDRM_0.8.0_arm.ipk similarity index 89% rename from HyperDRM_0.7.2_arm.ipk rename to HyperDRM_0.8.0_arm.ipk index 2758c255cac1348e34e6b1ac1e3bc6c82a86cc7f..c92b0d9141ccc59e424d6357f6bc33d39a2ce8fc 100644 GIT binary patch delta 93446 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

HyperDRM

Ambient lighting for webOS and Hyperion.

Checking service …

+ +

HyperDRM

Ambient lighting for webOS, Hyperion and HyperHDR.

Checking service …

Use the arrow buttons to select a control and OK to activate it.

Autostart starts the service when the TV boots. Stop ends the current session. Auto PicCap uses installed PicCap for non-secure video and HyperDRM for protected or unknown playback. Keep PicCap's own autostart off.

-

127.0.0.1:19444 · Priority 149 · 10 updates per second

+
Receiver settings + + + + +

Use the receiver's JSON TCP port, usually 19444. IPv4 and IPv6 addresses are supported. Leave the token blank to keep a saved token. Save applies the new target to a running session. Use Up/Down to move between fields; Left/Right edit text.

+

Auto PicCap requires the default local receiver; custom targets use HyperDRM for all playback. PicCap settings are managed in PicCap.

+

Priority 149 · 10 updates per second

The Hyperion layout determines the number and positions of LEDs. Colors come from 16 LG histogram regions with interpolated edge colors. Restart the service after changing the LED layout.

diff --git a/app/remote.js b/app/remote.js index 5a4c93f..1af554f 100644 --- a/app/remote.js +++ b/app/remote.js @@ -11,6 +11,8 @@ function setupRemoteNavigation(buttons, doc, win) { event.key==='ArrowRight'||event.key==='ArrowDown'||code===39||code===40?1:0; var enter=event.key==='Enter'||code===13; if(!direction&&!enter)return; + var editing=doc.activeElement && doc.activeElement.tagName==='INPUT' && doc.activeElement.type!=='checkbox'; + if(editing && (enter||code===37||code===39||event.key==='ArrowLeft'||event.key==='ArrowRight'))return; event.preventDefault(); var enabled=buttons.filter(function(button){return !button.disabled;}); if(!enabled.length)return; diff --git a/docs/publishing-review.md b/docs/publishing-review.md index 793d507..dd166bc 100644 --- a/docs/publishing-review.md +++ b/docs/publishing-review.md @@ -63,3 +63,11 @@ A live 0.7.0 observation reproduced the reported blackout while Auto PicCap was Version 0.7.1 preserves the last update's existing 1.5-second expiry during a revocation recovery, instead of explicitly clearing it. Initialization retries begin after 200 ms with two additional 400 ms retry intervals before returning to normal five-second pacing. This does not extend stale colors indefinitely. Explicit capture stops and PicCap handovers retain their clear behavior. Status records recovery count and elapsed initialization time. ARM retry and handover regression tests passed on the G4, as did remote navigation tests. Version 0.7.1 was installed and elevated on the TV. A later actual LG revocation recovered in 762 ms, including one refused initialization attempt before success. A 55-second Hyperion observation contained 125 color samples with no all-black output. These measurements do not guarantee that prolonged LG capture unavailability or actual black video scenes cannot darken the LEDs. + +## Configurable Hyperion/HyperHDR receiver (0.8.0) + +The app can save receiver type, numeric IPv4/IPv6 address, JSON TCP port and an optional API token. Targets and tokens are validated before replacing the configuration or interrupting capture. The own container stores `target.json` atomically with mode 0600; status omits the token value. TCP connection attempts are bounded to one second. Authentication and remote layout validation happen before acquiring LG capture. The receiver's own authorization and LED-device settings are not changed. Auto PicCap remains limited to the default local target; custom targets use histogram capture rather than sending PicCap data to an independently configured receiver. + +Native target tests passed on the G4, including invalid values, token retention/removal, private persistence and TCP success/refusal. Handover and input-field remote-navigation regression tests passed. HyperDRM 0.8.0 was installed and tested against the user's HyperHDR 22.0.0 on localhost:19444: acknowledged spatial color updates for its 120-LED layout. A temporary test relay on another LAN host at port 19445 exercised synthetic token login and fragmented replies, forwarding actual layout/color/clear commands to HyperHDR. Omitting the token preserved it; an invalid target was rejected without changing the active target. A verified own-service process restart loaded the saved HyperHDR target. The test relay was stopped and the target restored to localhost:19444 with no saved token. Network tests used IPv4; IPv6 parsing is covered by unit tests, but an IPv6 receiver was not available for an end-to-end test. Cold boot remains untested. + +The API compatibility was checked against official HyperHDR `sources/api/HyperAPI.cpp` and `sources/base/HyperHdrInstance.cpp`: serverinfo includes the LED layout, color accepts RGB arrays, and token authorization precedes API commands. diff --git a/native/handover.h b/native/handover.h index 23030b4..9fb9304 100644 --- a/native/handover.h +++ b/native/handover.h @@ -80,7 +80,7 @@ static bool handover_tick(void){ media_deadline=now+3000; error_free(&e);next_media_probe=now+1000; } - bool clear=handover_enabled && piccap_installed() && !retries.paused && !retries.blocked && + bool clear=handover_enabled && target_piccap_local(&target) && piccap_installed() && !retries.paused && !retries.blocked && protection==PLAYBACK_CLEAR && clear_samples>=2 && now-protection_at<3000 && now>=handover_cooldown; if(capture_source==SOURCE_HISTOGRAM && clear){ stop_capture();retries.due=0;piccap_owned=true;capture_source=SOURCE_PICCAP_STARTING; diff --git a/native/service.c b/native/service.c index 343dd1e..b98f8c8 100644 --- a/native/service.c +++ b/native/service.c @@ -24,6 +24,7 @@ #include "layout.h" #include "autostart.h" #include "retry.h" +#include "target.h" #define SERVICE "org.webosbrew.histogramhyperion.service" #define PRIORITY 149 typedef struct {int code;char *message;const char *file;int line;const char *func;void *padding;unsigned long magic;} LSError; @@ -113,6 +114,18 @@ static bool read_layout(void){ } bool ok=complete && layout_from_json(data,&led_blends,&led_count);free(data);interpolation_enabled=ok;return ok; } +static bool target_login(void){ + if(!target.token[0])return true; + char request[384],answer[4096];size_t used=0; + snprintf(request,sizeof(request),"{\"command\":\"authorize\",\"subcommand\":\"login\",\"token\":\"%s\"}\n",target.token); + if(send_line(request)!=0)return false; + while(used+1=0){setsockopt(output,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));setsockopt(output,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));} - struct sockaddr_in a={.sin_family=AF_INET,.sin_port=htons(19444),.sin_addr={htonl(INADDR_LOOPBACK)}}; - if(output<0||connect(output,(void*)&a,sizeof(a))!=0){stop_capture();set_error("Hyperion JSON server is unavailable on localhost:19444");return start_failure(h,m,"Cannot connect to local Hyperion");} - if(!read_layout()){stop_capture();set_error("Cannot read a valid LED layout from Hyperion");return start_failure(h,m,"Cannot read Hyperion LED layout");} + output=target_connect(&target); + if(output<0){stop_capture();set_error("Cannot connect to configured receiver IP and JSON port");return start_failure(h,m,"Configured receiver is unavailable");} + if(!target_login()){stop_capture();set_error("Receiver token login failed; check the saved API token");return start_failure(h,m,"Receiver authentication failed");} + if(!read_layout()){stop_capture();set_error("Cannot read receiver LED layout; check JSON port and API authorization");return start_failure(h,m,"Receiver layout unavailable; check API authorization");} if(!enter_developer_mode()){stop_capture();set_error("Developer initialization needs root. Elevate this own service through Homebrew Channel.");return start_failure(h,m,"Root access is required for temporary LG developer initialization");} capture=vt_init(policy); if(!leave_developer_mode()){stop_capture();retries.blocked=true;set_error("Developer marker cleanup failed; manual intervention required");return start_failure(h,m,"Developer marker cleanup failed");} @@ -172,10 +183,20 @@ static bool handover(void *h,void *m,void *ctx){ handover_enabled=enabled;protection=PLAYBACK_UNKNOWN;clear_samples=0;next_media_probe=0; return respond(h,m,"{\"returnValue\":true}"); } +static bool settings(void *h,void *m,void *ctx){ + (void)ctx;TargetConfig next=target; + if(!playback_json.lib || !target_parse(&playback_json,payload(m),&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Enter a valid IPv4/IPv6 address, integer port (1-65535), receiver and optional API token\"}"); + if(!target_save(TARGET_PREF,&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Could not save receiver settings\"}"); + bool active=capture || piccap_owned || retries.due; + stop_capture();target=next;last_error[0]=0;protection=PLAYBACK_UNKNOWN;clear_samples=0; + if(active && !retries.paused && !retries.blocked)retries.due=milliseconds(); + return respond(h,m,"{\"returnValue\":true}"); +} static bool status(void *h,void *m,void *ctx){ - (void)ctx;char json[4096],safe[512];size_t n=0; + (void)ctx;char json[4096],safe[512],endpoint[80];size_t n=0; + snprintf(endpoint,sizeof(endpoint),strchr(target.host,':')?"[%s]:%u":"%s:%u",target.host,target.port); for(size_t i=0;last_error[i] && n+2=32)safe[n++]=c;}safe[n]=0; - int used=snprintf(json,sizeof(json),"{\"returnValue\":true,\"version\":\"0.7.2\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"127.0.0.1:19444\",\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); + int used=snprintf(json,sizeof(json),"{\"returnValue\":true,\"version\":\"0.8.0\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"%s\",\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"tokenSet\":%s,\"piccapTargetCompatible\":%s,\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,endpoint,target.host,target.port,target.receiver,target.token[0]?"true":"false",target_piccap_local(&target)?"true":"false",PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s[%u,%u,%u]",i?",":"",rgb[i][0],rgb[i][1],rgb[i][2]); used+=snprintf(json+used,sizeof(json)-used,"],\"ledCount\":%u,\"spatialOutput\":%s,\"blackPercent\":[",led_count,led_count?"true":"false"); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s%u",i?",":"",black_percent[i]); @@ -235,11 +256,11 @@ static int tick(void *unused){ } snprintf(line+written,capacity-written,"]}\n"); int failed=send_line(line);free(line); - if(failed){set_error("Hyperion connection lost");stop_capture();return 1;} + if(failed){set_error("Receiver connection lost");stop_capture();return 1;} char answer[4096];size_t used=0;bool complete=false; while(used+1 +#include +#include +#include +#include +#include +#include +#include +#include +#include "playback.h" +#define TARGET_PREF "/media/developer/apps/usr/palm/services/org.webosbrew.histogramhyperion.service/target.json" +typedef struct {char host[46],receiver[16],token[257];unsigned port;} TargetConfig; +static TargetConfig target={.host="127.0.0.1",.receiver="Hyperion",.port=19444}; +static inline bool target_piccap_local(const TargetConfig *t){return t->port==19444 && (!strcmp(t->host,"127.0.0.1") || !strcmp(t->host,"::1"));} +static bool target_valid(const TargetConfig *t){ + unsigned char address[16]; + if(inet_pton(AF_INET,t->host,address)!=1 && inet_pton(AF_INET6,t->host,address)!=1)return false; + if(!t->port || t->port>65535 || (strcmp(t->receiver,"Hyperion") && strcmp(t->receiver,"HyperHDR")))return false; + for(const unsigned char *p=(const unsigned char*)t->token;*p;p++) + if(!((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')||(*p>='0'&&*p<='9')||*p=='-'||*p=='_'||*p=='.'))return false; + return true; +} +static bool target_parse(PlaybackJson *j,const char *text,TargetConfig *out){ + void *root=j->parse(text);if(!root)return false; + TargetConfig next=*out;bool valid=j->type(root)==4; + const char *names[]={"host","receiver","token"};char *fields[]={next.host,next.receiver,next.token}; + size_t sizes[]={sizeof(next.host),sizeof(next.receiver),sizeof(next.token)}; + for(unsigned i=0;valid && i<3;i++){ + void *v=playback_field(j,root,names[i]); + if(!v){if(i<2)valid=false;continue;} + if(j->type(v)!=6){valid=false;break;} + const char *s=j->string(v);if(strlen(s)>=sizes[i]){valid=false;break;} + strcpy(fields[i],s); + } + void *port=playback_field(j,root,"port"); + if(!port || j->type(port)!=3)valid=false; + else {char *end=NULL;errno=0;long n=strtol(j->string(port),&end,10);if(errno || !end || *end || n<1 || n>65535)valid=false;else next.port=(unsigned)n;} + void *clear=playback_field(j,root,"clearToken"); + if(clear){if(j->type(clear)!=1)valid=false;else if(j->boolean(clear))next.token[0]=0;} + valid=valid && target_valid(&next);j->put(root);if(valid)*out=next;return valid; +} +static bool target_save(const char *path,const TargetConfig *t){ + if(!target_valid(t))return false; + char tmp[512],data[512];if(snprintf(tmp,sizeof(tmp),"%s.tmp",path)>=(int)sizeof(tmp))return false; + int n=snprintf(data,sizeof(data),"{\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"token\":\"%s\"}\n",t->host,t->port,t->receiver,t->token); + int fd=open(tmp,O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC,0600);if(fd<0)return false; + bool ok=write(fd,data,n)==n && fsync(fd)==0;if(close(fd)!=0)ok=false; + if(ok)ok=rename(tmp,path)==0; + if(!ok)unlink(tmp); + return ok; +} +static bool target_load(PlaybackJson *j,const char *path,TargetConfig *t){ + int fd=open(path,O_RDONLY|O_NOFOLLOW|O_CLOEXEC);if(fd<0)return false; + char data[1024];ssize_t n=read(fd,data,sizeof(data)-1);close(fd);if(n<=0 || n==(ssize_t)sizeof(data)-1)return false; + data[n]=0;return target_parse(j,data,t); +} +static int target_connect(const TargetConfig *t){ + if(!target_valid(t))return -1; + struct sockaddr_storage storage={0};socklen_t length;int family; + struct sockaddr_in *v4=(void*)&storage;struct sockaddr_in6 *v6=(void*)&storage; + if(inet_pton(AF_INET,t->host,&v4->sin_addr)==1){family=AF_INET;v4->sin_family=family;v4->sin_port=htons(t->port);length=sizeof(*v4);} + else {family=AF_INET6;v6->sin6_family=family;v6->sin6_port=htons(t->port);length=sizeof(*v6);} + int fd=socket(family,SOCK_STREAM,0);if(fd<0)return -1; + int flags=fcntl(fd,F_GETFL,0);if(flags<0 || fcntl(fd,F_SETFL,flags|O_NONBLOCK)<0){close(fd);return -1;} + if(connect(fd,(void*)&storage,length)!=0){ + if(errno!=EINPROGRESS){close(fd);return -1;} + struct pollfd p={.fd=fd,.events=POLLOUT};int error=0;socklen_t size=sizeof(error); + if(poll(&p,1,1000)<=0 || getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){close(fd);return -1;} + } + if(fcntl(fd,F_SETFL,flags)<0){close(fd);return -1;} + struct timeval timeout={1,0};setsockopt(fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout)); + return fd; +} +#endif diff --git a/native/test_handover.c b/native/test_handover.c index 0cb33ea..3fdf377 100644 --- a/native/test_handover.c +++ b/native/test_handover.c @@ -17,6 +17,8 @@ static const char *payload(void *m){return m;} static void error_init(LSError *e){(void)e;} static void error_free(LSError *e){(void)e;} #define PICCAP_BINARY "/bin/sh" +static int target; +static bool target_piccap_local(const int *t){(void)t;return true;} #include "handover.h" static bool mock_call(void *h,const char *uri,const char *data,Callback cb,void *ctx,unsigned long *token,LSError *e){ (void)h;(void)data;(void)cb;(void)ctx;(void)e;*token=++called;snprintf(last_uri,sizeof(last_uri),"%s",uri);return true; diff --git a/native/test_target.c b/native/test_target.c new file mode 100644 index 0000000..8c92e14 --- /dev/null +++ b/native/test_target.c @@ -0,0 +1,23 @@ +#define _DEFAULT_SOURCE +#include +#include +#include +#include "target.h" +int main(void){ + PlaybackJson j={0};assert(playback_json_init(&j));TargetConfig t=target; + assert(target_valid(&t));assert(target_piccap_local(&t)); + assert(target_parse(&j,"{\"host\":\"10.1.0.91\",\"port\":19445,\"receiver\":\"HyperHDR\",\"token\":\"test-token\"}",&t)); + assert(t.port==19445 && !strcmp(t.receiver,"HyperHDR") && !strcmp(t.token,"test-token"));assert(!target_piccap_local(&t)); + assert(target_parse(&j,"{\"host\":\"::1\",\"port\":65535,\"receiver\":\"Hyperion\"}",&t));assert(!strcmp(t.token,"test-token")); + const char *bad[]={"{}","[]","{\"host\":\"localhost\",\"port\":19444,\"receiver\":\"HyperHDR\"}","{\"host\":\"127.0.0.1\",\"port\":0,\"receiver\":\"HyperHDR\"}","{\"host\":\"127.0.0.1\",\"port\":65536,\"receiver\":\"HyperHDR\"}","{\"host\":\"127.0.0.1\",\"port\":19444.5,\"receiver\":\"HyperHDR\"}","{\"host\":\"127.0.0.1\",\"port\":\"19444\",\"receiver\":\"HyperHDR\"}","{\"host\":\"127.0.0.1\",\"port\":19444,\"receiver\":\"Other\"}","{\"host\":\"127.0.0.1\",\"port\":19444,\"receiver\":\"HyperHDR\",\"token\":\"bad\\\"token\"}"}; + for(unsigned i=0;i=0);struct sockaddr_in a={.sin_family=AF_INET,.sin_addr={htonl(INADDR_LOOPBACK)}}; + assert(bind(server,(void*)&a,sizeof(a))==0 && listen(server,1)==0);socklen_t length=sizeof(a);assert(getsockname(server,(void*)&a,&length)==0);t.port=ntohs(a.sin_port); + int client=target_connect(&t);assert(client>=0);int accepted=accept(server,NULL,NULL);assert(accepted>=0);close(accepted);close(client);close(server); + assert(target_connect(&t)<0); + puts("PASS: target validation, token retention/removal, private persistence, IPv6 parsing, bounded TCP connect and refusal");return 0; +} diff --git a/package/packageinfo.json b/package/packageinfo.json index fca1700..dca5ee4 100644 --- a/package/packageinfo.json +++ b/package/packageinfo.json @@ -1 +1 @@ -{"id": "org.webosbrew.histogramhyperion", "version": "0.7.2", "vendor": "Local development", "app": "org.webosbrew.histogramhyperion", "services": ["org.webosbrew.histogramhyperion.service"], "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} +{"id": "org.webosbrew.histogramhyperion", "version": "0.8.0", "vendor": "Local development", "app": "org.webosbrew.histogramhyperion", "services": ["org.webosbrew.histogramhyperion.service"], "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} diff --git a/service/histogram-service b/service/histogram-service index e147095fd260ebe4ea7abee48acb6b007f58a636..5886d5fc9c1edfe6e9445ce8c62fad9a64e52ba5 100644 GIT binary patch delta 24394 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.disabled=true);assert(key(39)); console.log('PASS: arrow navigation, wraparound, disabled controls, OK once per press, pointer handoff, focus recovery, Back preserved');

G2r1tdY33mx2G%XGpy(`%#4lyF>WFr4nI{W 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ΞN)K@09%ZrT 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 diff --git a/README.md b/README.md index cc4c8a0..567de77 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # HyperDRM -Ambient Light for webOS and Hyperion. An own webOS app and native ARM service that reads LG color histograms and sends spatial LED colors to a local Hyperion instance. +Ambient Light for webOS, Hyperion and HyperHDR. An own webOS app and native ARM service that reads LG color histograms and sends spatial LED colors to a configurable Hyperion or HyperHDR receiver. ![HyperDRM logo](app/icon.png) @@ -11,11 +11,11 @@ Ambient Light for webOS and Hyperion. An own webOS app and native ARM service th - Automatic detection of top/bottom black bars on the calibrated LG G4. - Original saturation and brightness (both gains 1.0). - Start, stop, status and persistent boot autostart switch in the TV app. -- Local Hyperion JSON connection on `127.0.0.1:19444`, priority 149, up to 10 updates per second. +- Configurable IPv4/IPv6 receiver and JSON TCP port, optional token authentication, priority 149, up to 10 updates per second. ## Requirements and limits -Tested on a rooted LG G4 with webOS 24, Homebrew Channel and Hyperion 2.0.16 installed on the TV. The native service requires root elevation and the TV's existing `libvtcapture`, Luna, GLib and JSON-C libraries. Other TV models or firmware versions have not been validated. +Tested on a rooted LG G4 with webOS 24, Homebrew Channel and Hyperion 2.0.16 and HyperHDR 22.0.0 tested on the TV. The native service requires root elevation and the TV's existing `libvtcapture`, Luna, GLib and JSON-C libraries. Other TV models or firmware versions have not been validated. DRM playback color output was confirmed on the test TV. Support depends on LG's capture implementation; this does not guarantee support on other devices or apps. HyperDRM transmits colors, not captured video frames. The video preview in Hyperion therefore does not show the TV picture. @@ -25,7 +25,7 @@ Only the own service is modified. Optional Auto PicCap can start and stop the in ## Installation -The current package is [HyperDRM_0.7.2_arm.ipk](HyperDRM_0.7.2_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. +The current package is [HyperDRM_0.8.0_arm.ipk](HyperDRM_0.8.0_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. Elevate the installed own service through Homebrew Channel: @@ -35,7 +35,7 @@ luna-send -n 1 luna://org.webosbrew.hbchannel.service/elevateService '{"id":"org Perform elevation before first opening the app or calling its service. If the service was already started without root, elevation updates its launch permissions but does not restart the existing process: terminate only the own `histogram-service` process (verify its executable path first), then reopen the app or call start again. Closing the UI alone does not terminate the native service. -Open **HyperDRM** on the TV and select **Start**. Use the remote arrow buttons to move between controls and OK to activate the selected control. Magic Remote pointer input is also supported. Hyperion's JSON server must be enabled on port 19444. The existing Hyperion LED device/output configuration remains responsible for controlling the hardware. +Open **HyperDRM** on the TV and select **Start**. Use the remote arrow buttons to move between controls and OK to activate the selected control. Magic Remote pointer input is also supported. The receiver's JSON TCP server must be enabled at the IP/port saved in Receiver settings (default 127.0.0.1:19444). The existing Hyperion LED device/output configuration remains responsible for controlling the hardware. The internal app/service IDs remain `org.webosbrew.histogramhyperion` and `org.webosbrew.histogramhyperion.service` so existing installations and the autostart hook remain compatible. Hyperion displays the source as **HyperDRM**. After changing the LED layout, restart the service. @@ -99,3 +99,15 @@ The app displays the selected source and PicCap's Hyperion connection status. Hi ## Capture interruption recovery LG may revoke histogram capture during playback transitions. From 0.7.1, HyperDRM releases capture while leaving its last color update to expire normally after 1.5 seconds, then retries initialization after 200 ms and up to two additional 400 ms intervals. Successful recovery clears this rapid retry budget. Persistent failure returns to the existing five-second retry interval; manual Stop, PicCap handover and shutdown still explicitly clear the own color source. Status exposes `captureRecoveries` and `lastRecoveryMs` for diagnosis. + +## Hyperion and HyperHDR receiver settings + +Choose **Receiver: Hyperion/HyperHDR**, enter an IPv4 or IPv6 address and the JSON TCP port, then select **Save receiver**. These receivers use the same color, clear and serverinfo commands. Use the JSON port (usually 19444), not the FlatBuffer port (usually 19400) or web interface port. Numeric IP addresses are supported; hostnames and scoped IPv6 addresses are not currently accepted. Layout and LED count come from the selected receiver, including remote receivers. + +Settings are saved in `target.json` inside the own service container and loaded after service restart/boot. Saving valid settings switches a running session to the new receiver and clears the own priority at the old receiver. Invalid settings leave the current target intact. Saving while manually stopped does not start a session. Uninstalling removes the saved settings with the container. + +For a receiver requiring authentication, enter its API token. The token file is mode 0600; status only reports whether a token is saved. Leaving the input blank retains it; **Remove saved token** deletes it when saving. A token login happens before requesting the layout or initializing LG capture. JSON TCP traffic is unencrypted, so use a trusted network. Receiver authorization rules are unchanged. + +Auto PicCap remains available for the default local receiver at 127.0.0.1/::1:19444. For custom targets, automatic PicCap capture is paused and HyperDRM supplies colors for all playback; the PicCap preference remains saved. PicCap has a separate FlatBuffer endpoint managed by its own app, which HyperDRM does not rewrite. + +`native/test_target.c` verifies validation, token retention/removal, private persistence and TCP connection/refusal. `tests/receiver-proxy.py` is a test-only relay with synthetic token login and fragmented replies. Local HyperHDR 22.0.0 and a remote relay using a different IP/port were tested on the G4; the relay forwarded real color updates to HyperHDR without changing its configuration. diff --git a/app/app.js b/app/app.js index f1d7852..649e235 100644 --- a/app/app.js +++ b/app/app.js @@ -1,5 +1,6 @@ 'use strict'; var pending=[]; +var targetDirty=false,receiver='Hyperion'; function call(method,done,data){ if(typeof PalmServiceBridge==='undefined'){done({returnValue:false,errorText:'This app requires an LG TV with the native service installed.'});return;} var bridge=new PalmServiceBridge(),timer,finished=false; @@ -9,6 +10,12 @@ function call(method,done,data){ bridge.call('luna://org.webosbrew.histogramhyperion.service/'+method,JSON.stringify(data||{})); } function display(result){ + if(result.host && !targetDirty){ + document.getElementById('host').value=result.host;document.getElementById('port').value=result.port;receiver=result.receiver; + document.getElementById('receiver').textContent='Receiver: '+receiver; + } + document.getElementById('token').placeholder=result.tokenSet?'Saved token (leave blank to keep)':'No token saved'; + if(result.endpoint)document.getElementById('endpoint').textContent=result.receiver+' · '+result.endpoint+' · Priority 149 · 10 updates per second'; var handover=document.getElementById('handover');handover.disabled=!result.piccapInstalled; handover.setAttribute('aria-checked',String(!!result.piccapHandover)); handover.textContent=result.piccapInstalled?'Auto PicCap: '+(result.piccapHandover?'On':'Off'):'Auto PicCap: Not installed'; @@ -16,15 +23,16 @@ function display(result){ document.getElementById('error').textContent=result.errorText||result.error||''; document.getElementById('status').textContent=result.returnValue===false?'Service unavailable':(result.running?'Running':'Stopped')+' · '+(result.frames||0)+' acknowledged color updates'; if(result.activeSource==='PicCap'){ - document.getElementById('status').textContent='PicCap · '+(result.running?'Running':'Switching capture source')+' · '+(result.piccapConnected?'Hyperion connected':'Waiting for Hyperion'); + document.getElementById('status').textContent='PicCap · '+(result.running?'Running':'Switching capture source')+' · '+(result.piccapConnected?'Receiver connected':'Waiting for receiver'); document.getElementById('regions').textContent='';return; } if(result.piccapHandover)document.getElementById('status').textContent+=' · HyperDRM · '+result.playbackProtection; + if(result.piccapHandover && !result.piccapTargetCompatible)document.getElementById('status').textContent+=' · Auto PicCap paused for custom target'; if(result.colorValid)document.getElementById('status').textContent+=result.spatialOutput?' · '+result.ledCount+' LEDs from 16 color regions':' · Output RGB: '+result.outputColor.join(', '); else if(result.returnValue!==false)document.getElementById('status').textContent+=' · No current color output'; if(result.blackBarDetection && result.running)document.getElementById('status').textContent+=result.letterboxDetected?' · Top/bottom black bars detected':' · Full-screen capture'; if(result.spatialInterpolation)document.getElementById('status').textContent+=' · Smooth color transitions'; - if(result.retryScheduled)document.getElementById('status').textContent+=' · Retrying startup every 5 seconds'; + if(result.retryScheduled)document.getElementById('status').textContent+=' · Retrying receiver or capture startup'; if(result.retryPaused)document.getElementById('status').textContent+=' · Automatic retry paused until Start'; var box=document.getElementById('regions');box.textContent=''; (result.regions||[]).forEach(function(rgb,index){var e=document.createElement('div');e.className='swatch';e.style.backgroundColor='rgb('+rgb.join(',')+')';e.title='Histogram '+index;box.appendChild(e);}); @@ -38,4 +46,13 @@ document.getElementById('start').focus(); document.getElementById('autostart').onclick=function(){var button=this;var enabled=button.getAttribute('aria-checked')!=='true';button.disabled=true;call('autostart',function(r){button.disabled=false;if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;else call('status',display);},{enabled:enabled});}; document.getElementById('handover').onclick=function(){var button=this;button.disabled=true;call('handover',function(r){button.disabled=false;if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;else call('status',display);},{enabled:button.getAttribute('aria-checked')!=='true'});}; -setupRemoteNavigation(['start','stop','refresh','autostart','handover'].map(function(id){return document.getElementById(id);}),document,window); +['host','port','token','clearToken'].forEach(function(id){document.getElementById(id).addEventListener('input',function(){targetDirty=true;});}); +document.getElementById('receiver').onclick=function(){receiver=receiver==='Hyperion'?'HyperHDR':'Hyperion';this.textContent='Receiver: '+receiver;targetDirty=true;}; +document.getElementById('saveTarget').onclick=function(){ + var port=Number(document.getElementById('port').value),button=this; + if(!Number.isInteger(port)||port<1||port>65535){document.getElementById('error').textContent='JSON port must be an integer from 1 to 65535.';return;} + var settings={host:document.getElementById('host').value.trim(),port:port,receiver:receiver,clearToken:document.getElementById('clearToken').checked}; + var token=document.getElementById('token').value.trim();if(token)settings.token=token; + button.disabled=true;call('settings',function(r){button.disabled=false;if(r.returnValue===false){document.getElementById('error').textContent=r.errorText;return;}targetDirty=false;document.getElementById('token').value='';document.getElementById('clearToken').checked=false;call('status',display);},settings); +}; +setupRemoteNavigation(['start','stop','refresh','autostart','handover','receiver','host','port','token','clearToken','saveTarget'].map(function(id){return document.getElementById(id);}),document,window); diff --git a/app/appinfo.json b/app/appinfo.json index cbf8a19..14dc44b 100644 --- a/app/appinfo.json +++ b/app/appinfo.json @@ -1 +1 @@ -{"id": "org.webosbrew.histogramhyperion", "version": "0.7.2", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS and Hyperion", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} +{"id": "org.webosbrew.histogramhyperion", "version": "0.8.0", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} diff --git a/app/index.html b/app/index.html index 36d2543..a43b398 100644 --- a/app/index.html +++ b/app/index.html @@ -1,9 +1,16 @@ HyperDRM - -