Files
obsidian-vault/family/how-to/htpc-webos-luna.md
T

7.2 KiB
Executable File
Raw Blame History

WebOS TV — luna-send via SSH

TV IP: 192.168.1.70 (Ethernet), user: root

Проблема

luna-send пишет вывод в tty, не в stdout. Через SSH без PTY — пусто.

Решение — через script

ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://...\" /tmp/o.txt; cat /tmp/o.txt"

Методы

Список запущенных приложений

ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://com.webos.service.applicationmanager/running '{}'\" /tmp/o.txt; cat /tmp/o.txt"

Закрыть приложение

ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://com.webos.service.applicationmanager/closeByAppId '{\"id\":\"APP_ID\"}'\" /tmp/o.txt; cat /tmp/o.txt"

Удалить приложение (dev)

ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://com.webos.appInstallService/dev/remove '{\"id\":\"APP_ID\"}'\" /tmp/o.txt; cat /tmp/o.txt"

Установить ipk

scp app.ipk root@192.168.1.70:/tmp/
ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://com.webos.appInstallService/dev/install '{\"id\":\"APP_ID\",\"ipkUrl\":\"/tmp/app.ipk\",\"subscribe\":true}'\" /tmp/o.txt; cat /tmp/o.txt"

Запустить приложение

ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://com.webos.applicationManager/launch '{\"id\":\"APP_ID\"}'\" /tmp/o.txt; cat /tmp/o.txt"

Не работает

  • ares-install/ares-launch — требует dev mode (порт 9922)
  • listRunningApps — нет метода, правильно: running
  • applicationManager/remove — нет, правильно: appInstallService/dev/remove
  • ⚠️ luna-send -a '{"appId":...}' — на прошивке ТВ 5.4.2 флаг -a не парсится, отдаёт хелп-экран. AppId только первым аргументом.

Установка IPK — рабочий рецепт (проверено 2026-09-22)

Установлено приложение Lampa (com.lampac.tv) на ТВ 192.168.1.70. Полный проход:

# 1. Скачать ipk прямо на ТВ (без scp с Mac)
ssh root@192.168.1.70 'curl -sS --max-time 60 -o /tmp/app.ipk "http://192.168.1.14:9118/lg.ipk"'
# → 6896874 байт; формат ar (!<arch>), НЕ tar/gzip

# 2. Установить — обёртка script ОБЯЗАТЕЛЬНА
ssh root@192.168.1.70 'rm -f /tmp/i.txt; script -q -c \
  "luna-send -n 1 -f luna://com.webos.appInstallService/dev/install \
   {\"id\":\"org.lampa.tv\",\"ipkUrl\":\"/tmp/app.ipk\",\"subscribe\":true}" /tmp/i.txt; cat /tmp/i.txt'
# → {"subscribed":true,"returnValue":true}

# 3. Проверить — appId из appinfo.json, НЕ из запроса
ssh root@192.168.1.70 'ls /media/developer/apps/usr/palm/applications/'
# → com.lampac.tv

# 4. Запустить
ssh root@192.168.1.70 'rm -f /tmp/l.txt; script -q -c \
  "luna-send -n 1 -f luna://com.webos.applicationManager/launch {\"id\":\"com.lampac.tv\"}" /tmp/l.txt'

🔴 Поле "id" в dev/install — произвольная метка. Реальный appId берётся из appinfo.json внутри ipk. В нашем случае запрос ушёл с org.lampa.tv, а установилось com.lampac.tv.

Проверка, что приложение реально открылось (а не просто «команда вернула true»):

ssh root@192.168.1.70 'rm -f /tmp/f.txt; script -q -c \
  "luna-send -n 1 -f luna://com.webos.applicationManager/getForegroundAppInfo {}" /tmp/f.txt; grep appId /tmp/f.txt'
# → "appId": "com.lampac.tv"

Альтернативный путь, который НЕ сработал

org.webosbrew.hbchannel.service/install — метод в образе есть (service.js, register("install",...)), но luna-send через SSH его не дёрнул. Используй com.webos.appInstallService/dev/install.

Текущий ТВ (2026-09-22)

Параметр Значение
IP 192.168.1.70 (проводной eth0); старый .75 больше не отвечает
SSH root@192.168.1.70, ключ ~/.ssh/id_rsa, StrictHostKeyChecking no
Порты 22 SSH, 3000/3001 Luna
webOS 5.4.2, ядро 4.4.84, image starfish-dvb-secured, build 2602
eth0 link 100 Mbit/s full duplex — ЖЕЛЕЗНЫЙ ПОТОЛОК ТВ (проверено 2026-09-22)
Кастомные приложения org.webosbrew.hbchannel 0.7.2, org.webosbrew.inputhook, me.wouterdek.magic4pc, com.lampac.tv

⚠️ SSH печатает post-quantum key exchange warning — это норма, не ошибка.

🔴 Ключ ~/.ssh/konka_webos ОТКЛОНЁН (проверено 2026-09-22). Permission denied (publickey,password) на всех вариантах (konka_webos, konka_webos.bak, 988d8c6ece, webos_emul). Рабочий ключ — ~/.ssh/id_rsa. В ~/.ssh/config при этом есть хвост Host 192.168.1.76 с IdentityFile ~/.ssh/konka_webos — этот хост не ТВ (ТВ = .70), не путать.

Рабочая команда:

ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i ~/.ssh/id_rsa \
  -o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa \
  root@192.168.1.70 'cat /sys/class/net/eth0/speed; cat /sys/class/net/eth0/duplex'
# → 100
#   full

⚠️ Только ключ id_rsa. Опция -o PasswordAuthentication=no + -o BatchMode=yes рвёт соединение раньше, чем успевает пройти pubkey-аутентификация на этой прошивке — не использовать как «проверку», что ключа нет.

Скорость eth-порта ТВ — потолок железа

eth0:  100 Mbit/s, full duplex

🔴 Это предел сетевой карты телевизора, а не кабеля. Проверено с заведомо гигабитным кабелем — ТВ всё равно показывает 100, больше не даёт. Не диагностировать это как «битый кабель», не менять патч-корд, не искать гигабит: модель физически не умеет.

Порт роутера со стороны ТВ при этом может показывать 1000FD — рассинхрон нормален и означает, что ограничение на стороне ТВ.

Проверка (только ключ id_rsa):

ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i ~/.ssh/id_rsa \
  -o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa \
  root@192.168.1.70 'cat /sys/class/net/eth0/speed; cat /sys/class/net/eth0/duplex'

Связанные заметки