IP Control (/cgi-bin/do) для разработчика плагина¶
Глава (2026-10-29, дополнена 2026-11-01). Что даёт IP Control плагину и его отладке: версии протокола, ответ
status, запуск плагина поlaunch_media_url, ожидание при долгой операции, управление VOD, нажатия и ввод текста. Нажатия и текст снаружи и то, как плагины эмулируют пульт, — также в input-dialogs.md. Источники: официальный документ IP Control, протоколы 1–5 (doc, без даты); stringslibduneshell.soиlibxxx_do.sotv188b260827_0003_r24(code); наблюдения на tv188b r24 и на одном устройстве tv188b261021_0117_r25(device); код плагинов Dune Backup 2.9.2, ProIPTV 9.1.1938, screenshoter 1.0.6, altIPTV 5.2.9, Torrent Center 2.0.4 и Remote Control 5.1.52 (code, платформа и прошивка не установлены) — §6. Это не полный справочник команд. Каждое фактическое предложение ссылается на claim id.
Коротко: вопрос → ответ¶
| Вопрос | Ответ | Где |
|---|---|---|
| Какой протокол отвечает прошивка? | tv188b r24, device: protocol_version=6, а документ кончается протоколом 5 (устройство r24, SDK)1 |
§1 |
| Как запустить точку входа плагина снаружи? | launch_media_url с plugin_launcher://{name=…}{ep_media_url=…}; на r25 работает, а open_path root://applications/… — нет (устройство r25)2 |
§2 |
| Как вызвать действие плагина без точки входа? | plugin_launcher://{name=…}{action_id=…}; на r25 так запускается open_magnet у downloads (устройство r25)3 |
§2 |
| Ответит ли IP Control во время долгой операции плагина? | r25, device: только после её конца (устройство r25)4 |
§3 |
| Как передать данные действию плагина? | r25, device: парами {ключ=значение} в plugin_launcher://…{action_id=…}, переданном в launch_media_url напрямую, — они приходят в user_input буквально, без URL-декодирования (устройство r25)5; в M3U доходит {from=…} (устройство r25)6 |
§2 |
Узнает ли плагин о паузе и перемотке через set_playback_state? |
r25, device: только событием playback_state_changed, без playback_user_action (устройство r25)7 |
§4 |
| Как нажать кнопку пульта или ввести текст снаружи? | cmd=ir_code с NEC-кодом (SDK)8; get_text и set_text — только при активном редакторе (SDK)9 |
§5 |
| Как плагин нажимает кнопки сам? | локальный IP Control ir_code или запись кода в /proc/ir/button (код)10 |
§6 |
1. Протокол и ответ¶
По документу:
- Ответ — XML
command_resultс элементами<param name="…" value="…"/>(SDK)11;command_status—ok,failedилиtimeout(SDK)12, приfailedестьerror_kindиerror_description(SDK)13. - Ответ приходит по завершении команды или по тайм-ауту (по умолчанию 20 с); при тайм-ауте плеер продолжает выполнять
команду (SDK)14. Параметр
timeout(секунды, минимум 1) задаёт свой срок (SDK)15. - С протокола 5 все команды отвечают JSON при
result_syntax=json(SDK)16. - HTTP-порт — 80, кроме сертифицированных Google ATV-моделей, где 11080 (SDK)17; на ATV-моделях IP Control ограничен (SDK)18.
- Документ описывает протоколы 1–5, о протоколе 6 в нём ничего нет (SDK)19.
Что есть в прошивке сверх документа:
- tv188b r24,
device:cmd=statusотвечаетprotocol_version=6(устройство r24)20 и параметрами, которых нет в документе:phv_md5,android_app_active,android_md5,md5,playback_volume_index,playback_volume_index_max,app_version(устройство r24)21. - tv188b r24,
code: в strings есть команды, которых нет в документе, —set_next_url,light_stop,bt_command,key_action,voice_action,overall_state,ui_action_scroll,photo_viewer_action,generic_action,get_config,set_config,reset_settings, вlibxxx_do.soещёreboot(код r24)22; все команды документа, кромеstatus, тоже есть (код r24)23. - tv188b r24,
code: CGIdoразбираетtimeoutсам («invalid timeout '%s' ignored») (код r24)24 и знает форматы XML, JSON и TEXT (text/plain) (код r24)25. - tv188b r25,
device:cmd=statusотвечает, не меняя mtime ни одного файла/tmp/run/ext_command.*(устройство r25)26. - tv188b r25,
device: во время VODcmd=statusотдаётplayback_speed,playback_duration,playback_position_version,playback_is_buffering,playback_volume,playback_mute,is_video,pause_is_available,teletext_available,scrambling_detected,audio_track.0.*,playback_caption,playback_extra_caption,playback_picture(устройство r25)27.
2. Запуск плагина: launch_media_url¶
По документу launch_media_url с plugin_launcher://{name=<плагин>} запускает плагин, с {ep_media_url=…} — заданную
точку входа, с {action_id=…} — действие, объявленное в манифесте (SDK)28.
На r25 (device):
| Команда | Результат | Claim |
|---|---|---|
open_path&url=root://applications/<подпись пункта> |
command_status=ok, но точка входа не вызвана |
(устройство r25)2 |
launch_media_url, plugin_launcher://{name=<плагин>}{ep_media_url=<media_url точки входа>} |
точка входа запущена | (устройство r25)2 |
то же, с тестовым плагином ({name=test_plugin9}{ep_media_url=kbp9_ping}) |
точка входа запущена: число вызовов ping выросло 0 → 1 |
(устройство r25)29 |
| то же | перед запуском — проверка обновления плагина, update_info грузится с тайм-аутом 1 |
(устройство r25)30 |
launch_media_url, plugin_launcher://{name=downloads}{action_id=open_magnet}{magnet_url=…} |
«launching plugin 'downloads' (ep (null), action open_magnet)», handle_user_input(entry.open_magnet) с тайм-аутом 300 с |
(устройство r25)3 |
launch_media_url с голой magnet:?xt=… |
failed, invalid_parameters, «qualified url is expected» |
(устройство r25)31 |
launch_media_url с HTTPS-URL файла .torrent |
ни воспроизведения, ни downloads |
(устройство r25)32 |
launch_media_url с M3U по HTTP (с компьютера или из www плагина) из одной строки plugin_launcher://…{action_id=…}{from=…} |
действие вызвано, from — в user_input |
(устройство r25)6 |
launch_media_url, plugin_launcher://{name=test_plugin9}{action_id=kv}{k1=v1}{k2=a b}{k3=x=y}{k4=%41} |
действие kv запущено, пары в user_input буквально: k2 = «a b», k3 = «x=y», k4 = «%41» (без URL-декодирования) |
(устройство r25)5 |
Для сравнения, не IP Control: GUI-действие launch_media_url с тем же M3U из www плагина тоже вызывает действие и
передаёт from=gui (устройство r25)33, а am start -n PlayerProxyActivity -t
audio/x-mpegurl без VIEW действие не вызывает (устройство r25)34.
Пары {ключ=значение} доходят до данных действия, когда plugin_launcher передан в launch_media_url прямо (устройство r25)5,
и когда он лежит в M3U: там проверена пара {from=…} (устройство r25)6. При прямом запуске
значение берётся как есть: пробел и второй = сохраняются, %41 не декодируется
(устройство r25)5: URL-кодированное значение плагин получит закодированным. Пара только из {name} и отказ на необъявленный action_id на устройстве не проверялись.
3. IP Control и долгая операция плагина¶
На r25 (device) команды IP Control ждут, пока идёт handle_user_input плагина: launch_media_url через 4 с после
начала 20-секундной операции получил ответ только после её конца — и для того же плагина, и для другого
(устройство r25)4. cmd=main_screen такую операцию не отменяет
(устройство r25)35. Подробнее об очереди операций, в том числе как
cmd=main_screen ждёт обработчик таймера, — plugin-operations.md §1.2.
4. set_playback_state во время VOD плагина¶
На r25 (device) IP Control управляет plugin VOD: speed=0 ставит паузу (устройство r25)36,
speed=256 возобновляет (устройство r25)37, position=30 перематывает к 30-й секунде
(устройство r25)38. Плагин узнаёт об этом только событием playback_state_changed, без
playback_user_action (устройство r25)7. Пауза и продолжение с пульта (IR PAUSE/PLAY)
приходят иначе — playback_user_action с Pause/Resume (устройство r25)39. Остальные
параметры команды по документу (black_screen, hide_osd, несколько в одном запросе) — в «Не проверено».
5. Нажать клавишу или ввести текст снаружи: IP Control¶
Объект: команды IP Control по документу протокола (doc, any-documented; версии протокола — у команд) и строки
tv188b r24 (code, android-dune-fw, 260827_0003_r24).
Для отладки и автоматизации те же кнопки можно нажимать по сети; протокол и общие команды — §1.
Команды идут в /cgi-bin/do параметром cmd
(SDK)40. Команда cmd=ir_code посылает ИК-код кнопки пульта в параметре ir_code
(SDK)41; код — 4-байтный NEC-код с байтами в обратном порядке: кнопка RIGHT
00 BF 18 E7 даёт ir_code=E718BF00, команда описана с протокола 1 (прошивка 110127_2105_beta)
(SDK)8. В libduneshell.so r24 рядом с этой командой лежат
строка /proc/ir/button и сообщения «'ir_code' parameter is invalid/missing», «failed to pass IR-code»
(код r24)42; гипотеза о реализации — в input-dialogs.md §6.
Коды, которые встречаются в источниках базы (как плагины их посылают — §6):
| Код | Чем назван в источнике | Где | Claim |
|---|---|---|---|
E718BF00 |
кнопка RIGHT | документ IP Control | (SDK)8 |
B24DBF00 |
ANGLE/ROTATE | документ IP Control | (SDK)41 |
A15EBF00 |
DISCRETE_POWER_OFF |
reboot.bash плагина Remote Control 5.1.52 |
(код)43 |
A05FBF00 |
DISCRETE_POWER_ON |
там же | (код)43 |
ef10bf00 |
без названия: режим IR-кода скриншота | screenshoter 1.0.6 | (код)44 |
AF50BF00, EB14BF00, EA15BF00 |
без названия: блокировка строки <no_choice> |
Dune Backup 2.9.2 | (код)45 |
EA15BF00, E916BF00 |
без названия: после zoom_apply |
altIPTV 5.2.9 | (код)46 |
Значения кодов без названия в базе не установлены; гипотезы о A15EBF00 и ef10bf00 — в
input-dialogs.md §6.
С протокола 5 (прошивка 181228_0252_r13) есть команды уровня интерфейса: ui_action_return[&count=-1|N] — как RETURN
(по умолчанию на один экран назад, -1 — на главный) (SDK)47,
ui_action_enter&item_id=… — выбор пункта и ENTER (SDK)48,
ui_action_popup_menu&item_id=… — выбор пункта и POP UP MENU
(SDK)49. В libduneshell.so r24 есть сообщение «wrong 'item_id'
parameter: not found in current folder» (код r24)50.
Пока активен текстовый редактор, get_text возвращает редактируемую строку в параметре text, а set_text&text=…
заменяет её (UTF-8); без активного редактора обе команды завершаются failed; обе описаны с протокола 3 (прошивка
120531_2200_beta) (SDK)9. В libduneshell.so r24 есть сообщения «set_text failed:
text editor not active», «set_text failed: 'text' parameter not specified» и «text not available»
(код r24)51. Команда key_action есть в строках r24, но в
документе IP Control не описана (код r24)22; гипотеза о её
параметре — в input-dialogs.md §6.
6. Нажать кнопку пульта из плагина: IP Control и /proc/ir/button¶
Объект: Dune Backup 2.9.2, ProIPTV 9.1.1938, screenshoter 1.0.6, altIPTV 5.2.9, Torrent Center 2.0.4, Remote
Control 5.1.52 (code; платформа и прошивка не установлены). Коды кнопок — таблица §5.
Плагины нажимают кнопки двумя путями. Первый — локальный IP Control: Dune Backup шлёт ir_code на
http://127.0.0.1 (с портом :11080 при flag_apk) (код)45; ProIPTV — командой wget с проверкой
ответа command_status value="ok", и комментарий в его коде утверждает, что в отличие от /proc/ir/button это работает
на ATV (limited APK) (код)52; screenshoter в режиме IR-кода делает скриншот запросом
cmd=ir_code&ir_code=ef10bf00 (код)44; reboot.bash Remote Control шлёт коды
DISCRETE_POWER_OFF/DISCRETE_POWER_ON раз в секунду (код)43. Второй — запись кода в
/proc/ir/button: screenshoter для выключения (код)53, altIPTV после zoom_apply
(код)46, Torrent Center в cron-строке таймера сна (код)54. Что
запись в /proc/ir/button эмулирует нажатие, — гипотеза (input-dialogs.md §6).
7. Расхождения¶
Все три пары связаны conflicts_with. В первых двух сторона r24 — вывод по strings (inference), поэтому здесь
только сторона документа.
- Окно видео. Документ, протокол 2:
set_playback_stateсvideo_fullscreen,video_x,video_y,video_width,video_height(SDK)55. В strings r24 этих имён нет, а естьwindow_fullscreenиwindow_rect_*(код r24)56; вывод о том, что окно задаётся ими, — в «Не проверено». playback_dvd_menu. Документ, протокол 1: параметр есть в ответе при воспроизведении (SDK)57; строкиplayback_dvd_menuв r24 нет (вывод — в «Не проверено»).open_path. Документ: протокол 4 добавилopen_pathдля открытия папки, раздела меню или запуска пункта поroot://…, с примеромroot://applications/RadioTime(SDK)58; на r25 (device) точка входа так не запустилась (устройство r25)2.
8. Не проверено¶
| Утверждение | Статус | Claim |
|---|---|---|
Документ: set_playback_state управляет параметрами speed (0 — пауза, 256 — продолжить), position (секунды), black_screen, hide_osd, их можно сочетать. speed 0/256 и position подтверждены на устройстве (§4), остальное не проверялось |
doc, disputed | (SDK)59 |
| r24 реализует не описанный протокол 6 | inference | (вывод r24)60 |
r24: блок имён playback_* в libduneshell.so — ключи ответа status (на r25 ключи видны в ответе, §1) |
inference, verified | (вывод r24)61 |
r24 не сообщает playback_dvd_menu |
inference | (вывод r24)62 |
Окно видео в r24 задают window_fullscreen, window_rect_*, а не video_x… |
inference | (вывод r24)63 |
Недопустимый timeout игнорируется, действует умолчание |
inference | (вывод r24)64 |
Есть недокументированный текстовый формат ответа; значение result_syntax для него неизвестно |
inference | (вывод r24)65 |
Пары {ключ=значение} в plugin_launcher://…{action_id=…}, переданном в launch_media_url прямо, доходят до данных действия; r25, device: доходят, буквально (устройство r25)5 (§2) |
inference, verified | (вывод r25)66 |
r24: команды, требующие исполнения оболочкой, передаются через /tmp/run/ext_command.request/.response (на r25 status файлы не трогает, §1) |
inference | (вывод r24)67 |
-
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c061 · device · tv188b, android-dune-fw; прошивка 260827_0003_r24 · На tv188b r24 cmd=status отвечает XML command_result с protocol_version=6 — на единицу больше последней версии, описанной в документе IP Control (5)
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c055 · doc · any-documented; прошивка — · Документ IP Control описывает версии протокола 1–5; последний раздел — протокол 5 (с прошивки 181228_0252_r13), о протоколе 6 и далее в нём ничего нет
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c093 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 cmd=open_path&url=root://applications/<подпись пункта> отвечает command_status=ok, но точку входа плагина не запускает (вызовов 0 → 0), а launch_media_url с plugin_launcher://{name=<плагин>} {ep_media_url=
} её запускает (0 → 1). ↩↩↩↩ -
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c094 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 launch_media_url с plugin_launcher://{name=downloads}{action_id=open_magnet}{magnet_url=
} запускает публичное действие плагина без точки входа: «[plugin_launcher] launching plugin 'downloads' (ep (null), action open_magnet)» и handle_user_input(entry.open_magnet) с тайм-аутом 300 с. ↩↩ -
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c098 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 команды IP Control ждут, пока идёт handle_user_input плагина: launch_media_url, отправленный через 4 с после начала 20-секундной операции, получил ответ только после её конца — и для точки входа того же плагина, и для другого плагина. ↩↩
-
fw-tv188b-261021-0117-r25.c342 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 plugin_launcher://{name=test_plugin9}{action_id=kv}{k1=v1}{k2=a b}{k3=x=y}{k4=%41} запустил действие kv, и пары дошли в user_input буквально: k2 = «a b», k3 = «x=y», k4 = «%41» (без URL-декодирования). ↩↩↩↩↩
-
fw-tv188b-261021-0117-r25--media-player.c068 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 IP Control launch_media_url с одноэлементным M3U по HTTP (компьютер либо www плагина), содержащим plugin_launcher, вызывает действие b3 и передаёт from в user_input. ↩↩↩
-
fw-tv188b-261021-0117-r25--media-player.c058 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 команды set_playback_state speed=0, speed=256 и position=30 вызывают у VOD-плагина playback_state_changed без playback_user_action для этих команд. ↩↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c021 · doc · any-documented; прошивка — · Параметр ir_code команды ir_code — 4-байтный NEC-код кнопки пульта с байтами в обратном порядке: кнопка RIGHT 00 BF 18 E7 → ir_code=E718BF00 ↩↩↩
-
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c035 · doc · any-documented; прошивка — · cmd=get_text возвращает редактируемую сейчас строку в параметре text; без активного редактора текста — command_status failed
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c036 · doc · any-documented; прошивка — · cmd=set_text&text=… заменяет редактируемую строку заданной (UTF-8); без активного редактора — failed
-
- plg-dc-dune-backup.c124 · code · unknown; прошивка — · Строку
в списке # плагин блокирует, отправляя локальные IR-коды через http://127.0.0.1<:11080 при flag_apk>/cgi-bin/do?cmd=ir_code&ir_code=…: AF50BF00 и EB14BF00 при выборе, EA15BF00 и EB14BF00 при подтверждении. - plg-gh-kocourkuba-proiptv.c080 · code · android-atv; прошивка — · send_ir_code_http для ключа из DuneIrControl::$key_codes отправляет ИК-код через локальный HTTP API /cgi-bin/do?cmd=ir_code&ir_code=<код> командой wget и проверяет ответ на command_status value="ok"; для неизвестного ключа возвращает false. Комментарий: в отличие от /proc/ir/button это работает на ATV (limited APK), где событие всё равно доходит до плагина.
- plg-dc-screenshoter.c027 · code · unknown; прошивка — · Пункт меню power_off пишет код A15EBF00 в /proc/ir/button через shell_exec
- plg-dc-dune-backup.c124 · code · unknown; прошивка — · Строку
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c024 · doc · any-documented; прошивка — · Ответ — XML с корнем command_result и элементами (protocol_version, command_status, player_state, playback_*) ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c025 · doc · any-documented; прошивка — · В ответе command_status принимает значения ok|failed|timeout, а protocol_version в протоколе 1 равен 1 ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c027 · doc · any-documented; прошивка — · При command_status=failed ответ содержит error_kind (unknown_command|invalid_parameters|illegal_state|internal_error|operation_failed) и error_description ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c022 · doc · any-documented; прошивка — · Ответ приходит по завершении команды или по таймауту (по умолчанию 20 с); при таймауте клиент получает статус timeout, а плеер продолжает выполнять команду — состояние можно опрашивать командой status ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c023 · doc · any-documented; прошивка — · Параметр timeout (секунды, минимум 1) задаёт свой таймаут ожидания ответа для любой команды ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c044 · doc · any-documented; прошивка — · Протокол 5 (с прошивки 181228_0252_r13): все команды могут отвечать JSON при параметре result_syntax=json; новая ui_state требует result_syntax=json, остальные поддерживают оба формата ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c002 · doc · any-documented; прошивка — · По документу HTTP-порт IP Control — 80 на всех моделях, кроме сертифицированных Google ATV-моделей, где порт 11080 ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c003 · doc · any-documented, android-atv; прошивка — · По документу на ATV-моделях (BOXY, Homatics Box R 4K Plus, Premier 4K Pro) поддержка IP Control ограничена — нужно установленное приложение Dune HD Media Center, и IP Control управляет только им ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c055 · doc · any-documented; прошивка — · Документ IP Control описывает версии протокола 1–5; последний раздел — протокол 5 (с прошивки 181228_0252_r13), о протоколе 6 и далее в нём ничего нет ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c061 · device · tv188b, android-dune-fw; прошивка 260827_0003_r24 · На tv188b r24 cmd=status отвечает XML command_result с protocol_version=6 — на единицу больше последней версии, описанной в документе IP Control (5) ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c063 · device · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Ответ cmd=status на tv188b r24 содержит параметры, которых нет в документе IP Control 1–5: phv_md5, android_app_active, android_md5, md5, playback_volume_index, playback_volume_index_max, app_version ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c060 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В r24 есть строки команд, которых нет в документе IP Control 1–5: set_next_url, light_stop, bt_command, key_action, voice_action, overall_state, ui_action_scroll, photo_viewer_action, generic_action, get_config, set_config, reset_settings, а в libxxx_do.so ещё reboot ↩↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c059 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Все команды документа IP Control (протоколы 1–5), кроме status, есть строками в libduneshell.so и libxxx_do.so r24: start_file_playback, start_dvd_playback, start_bluray_playback, start_playlist_playback, launch_media_url, set_playback_state, playback_action, dvd_navigation, main_screen, black_screen, standby, ir_code, get_text, set_text, open_path, ui_state, ui_action_return, ui_action_enter, ui_action_popup_menu, get_file ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c086 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · CGI libxxx_do.so r24 содержит сообщение «handle_http_request invalid timeout '%s' ignored» ↩
-
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c088 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · CGI libxxx_do.so r24 содержит строки выбора формата ответа: result_syntax, «handle_http_request: syntax '%s'», «Warning: skipping adding ui_state response (json syntax required)» и MIME-тип application/json
- fw-tv188b-260827-0003-r24--http-api--ext-command-params.c089 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · CGI libxxx_do.so r24 содержит проверку «extcmd_syntax == EXTCMD_SYNTAX_XML || extcmd_syntax == EXTCMD_SYNTAX_TEXT» и MIME-тип text/plain
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c092 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 cmd=status отвечает, не меняя mtime ни одного файла /tmp/run/ext_command.* (request, response, status, state, ui_state и др.). ↩
-
fw-tv188b-261021-0117-r25--media-player.c071 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 ответ cmd=status во время VOD содержит playback_speed, playback_duration, playback_position_version, playback_is_buffering, playback_volume, playback_mute, is_video, pause_is_available, teletext_available, scrambling_detected, audio_track.0.*, playback_caption, playback_extra_caption и playback_picture. ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c042 · doc · any-documented; прошивка — · launch_media_url с media_url plugin_launcher://{name=<плагин>} запускает плагин; с {ep_media_url=…} — заданную точку входа, с {action_id=…} — действие, которое должно быть определено в манифесте плагина ↩
-
fw-tv188b-261021-0117-r25.c341 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 cmd=launch_media_url с plugin_launcher://{name=test_plugin9}{ep_media_url=kbp9_ping} запустил точку входа плагина: число вызовов ping выросло 0 → 1. ↩
-
fw-tv188b-260827-0003-r24--plugin-loader--online-upgrade.c078 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 запуск точки входа плагина по IP Control (launch_media_url plugin_launcher://{name=…}{ep_media_url=…}) вызывает проверку обновления check_update schema 2: оболочка грузит update info из check_update/url с тайм-аутом 1 («loading update info with timeout 1»), тогда как фоновая автопроверка — с тайм-аутом 5. ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c096 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 launch_media_url с голой magnet-ссылкой (magnet:?xt=urn:btih:…) отклоняется: command_status=failed, error_kind=invalid_parameters, «'media_url' parameter value '…' is invalid: qualified url is expected»; в shell.log «[extcmd] launch_media_url failed: invalid media_url specified». ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c097 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 launch_media_url с HTTPS-URL файла .torrent не запустил ни воспроизведение, ни плагин downloads: в shell.log только «[bp_dialog] root item #0 type URL caption '
'» без строки элемента «#1: …», каталог /tmp/run/dl_input не изменился. ↩ -
fw-tv188b-261021-0117-r25--media-player.c069 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 GUI-действие launch_media_url с M3U из www плагина вызывает b3 по plugin_launcher и передаёт from=gui. ↩
-
fw-tv188b-261021-0117-r25--media-player.c070 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 am start -n PlayerProxyActivity -t audio/x-mpegurl без VIEW с URL M3U из www не вызывает b3: счётчик вызовов остаётся 1 → 1, активна MainActivity. ↩
-
fw-tv188b-260827-0003-r24--plugin-loader--php-runtime--opexec.c037 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 cmd=main_screen и запуск по IP Control точки входа другого плагина, отправленные через 4 с после начала 20-секундного handle_user_input, эту операцию не отменяют: она дорабатывает до конца («end long», «result action null»), строк «q-removing … deactivate» и «canceled» нет. ↩
-
fw-tv188b-261021-0117-r25--media-player.c055 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 IP Control set_playback_state speed=0 ставит plugin VOD на паузу. ↩
-
fw-tv188b-261021-0117-r25--media-player.c056 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 IP Control set_playback_state speed=256 возобновляет plugin VOD после паузы. ↩
-
fw-tv188b-261021-0117-r25--media-player.c057 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 IP Control set_playback_state position=30 перематывает plugin VOD к 30-й секунде. ↩
-
fw-tv188b-261021-0117-r25--media-player.c059 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 IR PAUSE/PLAY при actions=color дают VOD-плагину playback_user_action с playback_event_type Pause/Resume. ↩
-
fw-tv188b-260827-0003-r24--http-api.c053 · doc · any-documented; прошивка — · main_screen и ir_code — значения параметра cmd в /cgi-bin/do (IP Control); для ir_code код передаётся параметром ir_code ↩
-
fw-tv188b-260827-0003-r24--http-api.c055 · doc · any-documented; прошивка — · cmd=ir_code в IP Control посылает ИК-код кнопки пульта (пример: ANGLE/ROTATE — ir_code=B24DBF00, код 00 BF 4D B2) ↩↩
-
fw-tv188b-260827-0003-r24--http-api.c031 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · libduneshell.so содержит /proc/ir/button и сообщения «'ir_code' parameter is invalid/missing», «failed to pass IR-code» ↩
-
plg-dune-remote-control.c067 · code · unknown; прошивка — · reboot.bash отправляет в /firmware/ext_command/cgi-bin/do запросы cmd=ir_code&ir_code=… с кодами DISCRETE_POWER_OFF=A15EBF00 и DISCRETE_POWER_ON=A05FBF00 раз в секунду: сначала до player_state=standby, затем до выхода из standby. ↩↩↩
-
plg-dc-screenshoter.c069 · code · unknown; прошивка — · В режиме IR-кода скриншот делается запросом http://
/cgi-bin/do?cmd=ir_code&ir_code=ef10bf00; путь файла плагин не знает и возвращает screenPath = auto ↩↩ -
plg-dc-dune-backup.c124 · code · unknown; прошивка — · Строку
в списке # плагин блокирует, отправляя локальные IR-коды через http://127.0.0.1<:11080 при flag_apk>/cgi-bin/do?cmd=ir_code&ir_code=…: AF50BF00 и EB14BF00 при выборе, EA15BF00 и EB14BF00 при подтверждении. ↩↩ -
plg-gh-mdpuma-dune-plugin-altiptv.c085 · code · unknown; прошивка — · После zoom_apply плагин пишет EA15BF00 и E916BF00 в /proc/ir/button через shell_exec. ↩↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c051 · doc · any-documented; прошивка — · cmd=ui_action_return[&count=-1|N] — как нажатие RETURN в TV UI: -1 — на главный экран, N — назад на N экранов (по умолчанию 1) ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c052 · doc · any-documented; прошивка — · cmd=ui_action_enter&item_id=… — как выбор пункта с этим ID на текущем экране TV UI и нажатие ENTER ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c053 · doc · any-documented; прошивка — · cmd=ui_action_popup_menu&item_id=… — как выбор пункта с этим ID на текущем экране TV UI и нажатие POP UP MENU ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c083 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · libduneshell.so r24 содержит сообщения о параметре item_id: «%s failed: 'item_id' parameter not specified» и «%s failed: wrong 'item_id' parameter: not found in current folder»; строка item_id стоит рядом с ui_action_enter в блоке ext_command_server ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c079 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · libduneshell.so r24 содержит сообщения set_text: «set_text failed: text editor not active» и «set_text failed: 'text' parameter not specified», а также «text not available» ↩
-
plg-gh-kocourkuba-proiptv.c080 · code · android-atv; прошивка — · send_ir_code_http для ключа из DuneIrControl::$key_codes отправляет ИК-код через локальный HTTP API /cgi-bin/do?cmd=ir_code&ir_code=<код> командой wget и проверяет ответ на command_status value="ok"; для неизвестного ключа возвращает false. Комментарий: в отличие от /proc/ir/button это работает на ATV (limited APK), где событие всё равно доходит до плагина. ↩
-
plg-dc-screenshoter.c027 · code · unknown; прошивка — · Пункт меню power_off пишет код A15EBF00 в /proc/ir/button через shell_exec ↩
-
plg-dc-torrent-center.c128 · code · unknown; прошивка — · Для ненулевого числового sleep_time Movie создаёт cron-строку выключения через echo A15EBF00 > /proc/ir/button с пометкой #sleep. ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c030 · doc · any-documented; прошивка — · В протоколе 2 set_playback_state получил параметры video_enabled, video_zoom, video_fullscreen, video_x, video_y, video_width, video_height, volume и mute ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c069 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В том же блоке параметров r24 есть имена, которых нет в документе IP Control 1–5: open_playlist_item, set_repeat, set_shuffle, set_slideshow, loop_mode, shuffle_mode, black_screen_tmp, action_on_exit, volume_index, audio_track, subtitles_track, window_fullscreen, window_rect_x/y/width/height, clip_rect_, video_source_rect_, video_on_top, pip_zorder, video_zorder, osd_zorder, teletext_key, initial_audio_pid, pip_alpha_level, playlist_index; restart_playback в документе есть только как значение action_on_finish ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c028 · doc · any-documented; прошивка — · При player_state file_playback или dvd_playback ответ содержит playback_speed, playback_duration (-1 или 0 — неизвестна), playback_position (-1 — неизвестна), playback_dvd_menu (1 — показано DVD-меню) и playback_is_buffering ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c040 · doc · any-documented; прошивка — · В описании IP Control указано, что протокол 4 добавил cmd=open_path&url=URL для открытия папки, раздела меню или запуска пункта по root://…; приведён пример root://applications/RadioTime. ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c015 · doc, disputed · any-documented; прошивка — · set_playback_state управляет воспроизведением параметрами speed (0 — пауза, 256 — продолжить), position (перемотка в секундах), black_screen и hide_osd; их можно сочетать в одном запросе ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c064 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Документ IP Control (протоколы 1–5) для r24 неполон — прошивка, вероятно, реализует не описанный там протокол 6, к которому относятся недокументированные команды и параметры ответа ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c066 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Блок имён c065, вероятно, — ключи состояния воспроизведения, которые ext_command отдаёт в ответе cmd=status (и в /tmp/run/ext_command.state); имена из документа (playback_speed, playback_duration, playback_is_buffering, teletext_available, playback_volume, playback_mute, playback_caption, playback_extra_caption, playback_picture, is_video) в нём совпадают ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c067 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · r24, вероятно, не сообщает playback_dvd_menu из протокола 1: строки playback_dvd_menu нет в strings libduneshell.so (без обрезки) и libxxx_do.so tv188b, нет её и в tv175u, хотя соседние параметры документа (playback_speed, playback_duration, playback_is_buffering) есть ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c070 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Окно видео в r24, вероятно, задаётся параметрами window_fullscreen и window_rect_x/y/width/height, а не video_fullscreen, video_x, video_y, video_width, video_height из протокола 2: последних строк нет в strings libduneshell.so и libxxx_do.so (video_width/video_height — только внутри playback_video_width/height) ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c087 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Параметр timeout разбирает CGI do (не исполнитель в оболочке); недопустимое значение, вероятно, игнорируется, и действует таймаут по умолчанию ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c090 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Кроме XML и JSON CGI do r24, вероятно, умеет недокументированный текстовый формат ответа (EXTCMD_SYNTAX_TEXT, text/plain); значение result_syntax для него неизвестно ↩
-
fw-tv188b-260827-0003-r24--http-api--ext-command-params.c095 · inference · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 дополнительные пары {ключ=значение} в plugin_launcher://{name=…}{action_id=…}{ключ=значение}, по-видимому, доходят до данных запускаемого действия: open_magnet плагина downloads, который без magnet_url возвращает null, вернул следующее действие entry.ensure_ts. ↩
-
fw-tv188b-260827-0003-r24--http-api.c022 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Вероятно, на tv188b r24 команды HTTP API, требующие исполнения оболочкой, передаются между процессами через /tmp/run/ext_command.request (с rename) и .response, со статусом/блокировкой .status/.lock; CGI ждёт ответа до таймаута. ↩