143 lines
7.2 KiB
Markdown
Executable File
143 lines
7.2 KiB
Markdown
Executable File
# WebOS TV — luna-send via SSH
|
||
|
||
TV IP: `192.168.1.70` (Ethernet), user: `root`
|
||
|
||
## Проблема
|
||
`luna-send` пишет вывод в tty, не в stdout. Через SSH без PTY — пусто.
|
||
|
||
## Решение — через `script`
|
||
```bash
|
||
ssh root@192.168.1.70 "script -q -c \"luna-send -n 1 -f luna://...\" /tmp/o.txt; cat /tmp/o.txt"
|
||
```
|
||
|
||
## Методы
|
||
|
||
### Список запущенных приложений
|
||
```bash
|
||
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"
|
||
```
|
||
|
||
### Закрыть приложение
|
||
```bash
|
||
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)
|
||
```bash
|
||
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
|
||
```bash
|
||
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"
|
||
```
|
||
|
||
### Запустить приложение
|
||
```bash
|
||
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`. Полный проход:
|
||
|
||
```bash
|
||
# 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»):
|
||
```bash
|
||
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`), не путать.
|
||
|
||
Рабочая команда:
|
||
```bash
|
||
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`):
|
||
|
||
```bash
|
||
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'
|
||
```
|
||
|
||
## Связанные заметки
|
||
|
||
- [[family/how-to/tv-luna-send]] — враппер `~/Automation/tv-luna-send.sh`
|
||
- [[personal/tech/lampac-deployment]] — что именно ставили на ТВ и зачем
|
||
- [[family/how-to/kraken-network]] — сеть Кра́кена и ТВ
|