{"id":20163961,"url":"https://github.com/webosbrew/hyperion-webos","last_synced_at":"2025-04-05T01:03:10.383Z","repository":{"id":37598734,"uuid":"368489836","full_name":"webosbrew/hyperion-webos","owner":"webosbrew","description":"hyperion.ng video grabber for webOS","archived":false,"fork":false,"pushed_at":"2025-02-23T11:26:10.000Z","size":564,"stargazers_count":160,"open_issues_count":17,"forks_count":32,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-29T00:04:04.678Z","etag":null,"topics":["hyperion","hyperion-project","webos","webos-homebrew"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webosbrew.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-18T10:31:50.000Z","updated_at":"2025-03-18T12:48:33.000Z","dependencies_parsed_at":"2024-10-29T00:18:47.581Z","dependency_job_id":"3d3c5de4-6c71-4087-b99f-49d5e616c8b1","html_url":"https://github.com/webosbrew/hyperion-webos","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webosbrew%2Fhyperion-webos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webosbrew%2Fhyperion-webos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webosbrew%2Fhyperion-webos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webosbrew%2Fhyperion-webos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webosbrew","download_url":"https://codeload.github.com/webosbrew/hyperion-webos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271514,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hyperion","hyperion-project","webos","webos-homebrew"],"created_at":"2024-11-14T00:32:44.320Z","updated_at":"2025-04-05T01:03:10.363Z","avatar_url":"https://github.com/webosbrew.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hyperion-webos\n\n[hyperion.ng](https://github.com/hyperion-project/hyperion.ng) grabber for\nwebOS.\n\nThis piece of software does high-framerate/low-latency capture of contents\ndisplayed directly on webOS TVs and transmits these frames to hyperion.ng over\nthe network.\n\n[Requires root](https://rootmy.tv/).\n\nBased on reverse-engineered internal system APIs. Still highly experimental.\n\nIf you are looking for a user-friendly UI that ships this piece of software check [PicCap](https://github.com/TBSniller/piccap). This application mainly is the underlaying service for this software.\n\n## Known issues\n* Everything is based on highly platform-specific reverse-engineered internal\n  system APIs. Standard no-warranty clauses apply.\n\n## Backends\nThis software uses multiple capture backends, that may work differently on some\nwebOS versions/hardware platforms.\n\nNow, with unicapture, video and ui backends are seperated and only blended together if desired.\n\nThis means, UI or video capture can be turned on/off individually.\n\n### Video capturing\n\n| Backend        | Description                                | webOS |\n|----------------|--------------------------------------------|-------|\n| `libdile_vt`   | Low-level library used internally by libvt | 3.x+  |\n| `libvtcapture` | High-level video capture library           | 5.x+  |\n\n### UI capturing\n\n| Backend        | Description                                | webOS |\n|----------------|--------------------------------------------|-------|\n| `libgm`        | UI capture library for older TVs           | 3.x+  |\n| `libhalgal`    | UI capture library for newer TVs           | 5.x+  |\n\n### Quirks\n\nSome TV models generally are comptabile with a specific backend, but require a slightly different routine\nto work reliably.\n\nIn this case, to not need totally different binaries, we implemented *quirks*, which can be toggled on if needed.\n\nCurrently the following ones exist:\n\n| Backend           | Quirk                           | Description                                                             | Flag  |\n|-------------------|---------------------------------|-------------------------------------------------------------------------|-------|\n| DILE_VT           | QUIRK_DILE_VT_CREATE_EX         | Use `DILE_VT_CreateEx` instead of `DILE_VT_Create`                      | 0x1   |\n| DILE_VT           | QUIRK_DILE_VT_NO_FREEZE_CAPTURE | Do not freeze frame before capturing (higher fps)                       | 0x2   |\n| DILE_VT VTCAPTURE | QUIRK_ALTERNATIVE_DUMP_LOCATION | (webOS 3.4, VTCAPTURE) Use alternative dump location                    | 0x4   |\n| VTCAPTURE         | QUIRK_VTCAPTURE_FORCE_CAPTURE   | Use of a custom kernel module for reenable capture in special situation | 0x100 |\n\n\nThey can be provided in `config.json` via the `{\"quirks\": 0}` field or on commandline via `--quirks`.\n\nEasiest way though -\u003e Use PicCap GUI!\n\nYou can assemble the final quirks value by using a *bitwise-OR*,\ne.g. `quirks_value = (quirk_val | quirk_val2 | quirk_val3)`.\nThe calculator is your friend ;)\n\nYou can find them defined here: [Source code file](https://github.com/webosbrew/hyperion-webos/blob/master/src/quirks.h)\n\n## Building\n\nYou will need [buildroot-nc4](https://github.com/openlgtv/buildroot-nc4)\n(or, theoretically, some other webOS toolchain).\n\nSet `TOOLCHAIN_FILE` to the path of buildroot-nc4's `toolchainfile.cmake`.\nFor example:\n\n```sh\nexport TOOLCHAIN_FILE='/opt/arm-webos-linux-gnueabi_sdk-buildroot/share/buildroot/toolchainfile.cmake'\n```\n\nThen run the following commands:\n\n```sh\ngit clone --recursive https://github.com/webosbrew/hyperion-webos.git\nmkdir hyperion-webos/build\ncd hyperion-webos/build\ncmake .. -DCMAKE_TOOLCHAIN_FILE=\"${TOOLCHAIN_FILE}\"\nmake hyperion-webos gm_backend halgal_backend dile_vt_backend vtcapture_backend\n```\n\n## Running\n\n`hyperion-webos` together with `*_backend.so` libraries need to be copied onto\nthe TV, eg. into `/tmp` directory.\n\n```sh\ncd /tmp\n./hyperion-webos --help\n./hyperion-webos -b libdile_vt -a 10.0.0.1\n```\n\n## Issues reporting\n\nWhen reporting issues please include result of the following command:\n```sh\ngrep -h -E '\"(hardware_id|core_os_release|product_id|webos_manufacturing_version|board_type)\"' /var/run/nyx/*\n```\n\nThis contains model/hardware/region/software version, without any uniquely\nidentifiable information.\n\nIf a segfault/crash occurs, a crashlog file will be generated in `/var/log/reports/librdx`\nor `/tmp/faultmanager/crash/`. This contains process memory dump and backtrace,\nbut *should* not contain any uniquely identifiable information. (though, this is not guaranteed)\n\n## Code style / linting\n\nTo ensure a common codestyle on contributions, please ensure your submission is linted.\nThe linting script depends on python3 / clang-format to be installed.\n\nRun the linting / formatter script like this:\n\n`python lint/run-clang-format.py --extensions \"c,h,cpp\" --color auto --recursive --inplace true ./src`\n\nTo make a dry-run (and not auto-fix), omit the `--inplace true` parameter.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebosbrew%2Fhyperion-webos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebosbrew%2Fhyperion-webos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebosbrew%2Fhyperion-webos/lists"}