andrewttrb писал(а): это приложение как раз та самая страница логина ThinQ
И оно подписано, как раньше подписывали флешки (т. е. зашифровано)
У нас приложения находятся в следующих каталогах
Установленные приложения из стандартного магазина (шифрованные) /media/cryptofs/apps/usr/palm/applications
Установленные приложения из IDE, (нешифрованные) /media/developer/apps/usr/palm/applications
Установленные системные приложения (шифрованные) /media/system/apps/usr/palm/applications У меня только одно системное com.webos.app.iot-thirdparty-login
Получение root на ТВ LG 2017-2021 года выпусков (webOS 3.5-6.0)
Самый простой способ. Если используете его, то все, что ниже можно не делать, однако, чтобы знать, что можно сделать имея root, желательно прочитать шаг 3, от того момента, когда получили root и так ссылка на самый простой способ JackSparrow @ Как получить Root права на webOS 1.0-6.0
Далее идет описание полного метода, когда вы все выполняете по шага.
Примечание: шаг 1 и шаг 2 можно пропустить и использовать адрес http://193.124.66.86, где все установлено.
Под spoiler-ом шаг 1 и шаг 2, если вы желаете на своем компьютере все разместить и точно знать что и как устанавливается на ваш ТВ.
Кратко. В локальной сети создаем веб сервер. На сервер есть index.html, мы его запустим под системной программой входа в учетную запись. В результате будет перезаписан в телевизоре скрипт start-devmode.sh, который в ТВ выполняется при каждом включении. Для дальнейшей работы будем использовать telnet порт 23, удобно через программу putty.
Шаг 1 Установим web сервер Apache24
1. За дистрибутивом идем сюда http://www.apachelounge.com/download/. На момент публикации последний релиз 2.4.46. На картинке ниже отмечены ссылки для 64-битной платформы Windows, если у вас 32-битаня система – скачать по ссылке ниже и установить ее.
1.png (174.56 КБ) Просмотров: 13254
Загрузка Apache24
2. Распаковка архива Архив httpd-2.4.46-Win64-VC15 надо распаковать и папку Apache24 скопировать - я копировал в корень на C: - тогда в конфигурационном файле будет мало правок. 3. Редактирование файла конфигурации Файл конфигурации httpd.conf находится в папке C:\Apache24\conf. Редактируется файл блокнотом - для запуска локального веб-сервера надо изменить всего два параметра ServerName localhost:80 и ServerAdmin - вашмейл@xx.ru 4. Изменить переменную среды path Windows. В переменную среды path надо добавить путь к исполняемым файлам Apache C:\Apache24\bin На Windows Server 2008 R2 и на Windows 7, на которых я выполнял эти действия, через иконку на рабочем столе Компьютер- Свойства системы- Дополнительные параметры системы-Переменные среды
2.png (11.5 КБ) Просмотров: 13254
Добавим в переменную path ссылку на Apache24
5. Установка Apache как службы
Запустить командную панель с правами администратора Пуск-Выполнить-cmd и выполнить команду
, В списке служб -Пуск - Администрирование-Службы - находим службу Apache 2.4 - Запускаем, ставим тип запуска.
3.png (52.46 КБ) Просмотров: 13254
Запуск службы Apache24
Установка веб сервера на этом завершена. 6. • Проверка запуска веб-сервера - в браузере указать http://localhost или 127.0.0.1 и увидеть It works! • Настроить брандмауэр для доступа с других компьютеров (проще всего на время получения root его отключить), тогда он точно будет доступен у вас в локальной сети с любого устройства, либо настроить. • Адрес доступа будет адрес вашей машины, в моем случае 192.168.1.102 (можно посмотреть в свойствах сети либо по команду ipconfig из командной строки. 7. Раскроем архив
c файлам Apache24 в папку c:\apache24\htdocs. При вопросе замещать, соглашаемся. При проверке на компьютере, вместо It work! , у вас будет запускаться рабочая программа получения root, далее ее надо будет вызвать с ТВ в системном приложении с правами root, чтобы произошла подмена стартового скрипта в ТВ. А теперь подробнее это действие. Шаг 2 а) Копирует содержимое архива Apache24.zip (разжали и скопировали) в папку c:\Apache24 В результате получим в папке Apach24/htdoc
4.png (14.75 КБ) Просмотров: 13254
б) Открываем файл index.html и правим строку var HOST_PREFIX = /* адрес машины, где развернут апач и находится этот скрипт, меняйте на свой */ var HOST_PREFIX = "http://192.168.1.102:80"; В этой строке стоит адрес вашей машины, где развернуть апач и порт на который апач настроен. В нашем пример это 192.168.1.102 и порт 80 в) У вас тут будут стоят ваши цифры. Узнать адрес своей машины можно запусти в командной строке команду ipconfig (Пуск – выполнить – cmd – ipconfig)
5.png (6.04 КБ) Просмотров: 13254
Узнаем адрес компьютера в локальной сети
Необходим адрес в локальное сети компьютера, где установлен апач, далее на ТВ мы по этому IP адресу будет подключение делать. г) Запустим апач, если он еще не запущен Панель управления – Администрирование – Службы – APACHE2.4 д) Проверяем в браузере работу нашего настроенного апача по внешнему адресу компьютера
6.png (8.5 КБ) Просмотров: 13254
Внешний вид из браузера.
Примечание. С другого компьютера (телевизора) ваш веб сервер может быть недоступен, для простоты отключите Барндмауэр. (Пуска –Панель Управления – Брандмауэер – включение/отключение Брандмауэра).
7.png (17.05 КБ) Просмотров: 13254
Отключение брандмауэера
Это обязательный шаг, иначе ТВ не увидит. В принципе можно настроить только 80 порт, но так как после получения root апач мы отключим до лучших времен, вероятно не стоит усложнять. Апач в будущем можно будет использовать для установки на ТВ пакетов ipk, поэтому его можно не удалять, а лишь остановить службу, когда потребуется включать, когда не нужен отключать. Для справки. Инструкция может меняться. Всегда последняя версия инструкции доступна по почте у автоответчика по адресу smsbox3@bk.ru, там так же есть и другие инструкции, что могут быть полезны для Вас.
Необязательное действие, не у всех возможно, но если получится хорошо, если нет идем дальше! [spoiler]Прежде чем поручать root сохраним старый стартовый скрипт, при получении root он будет заменен. Шаг не обязательный, но желательный. Если вы раньше пользовались IDE и устанавливали ipk, ваш компьютер уже имеет все необходимые ключи и можно скопировать скрипт. Для начала войдет в систему webos с правами обычного пользователя, у меня это такая команда ssh -i "C:\Users\User\.ssh\webOS_TV_webos" prisoner@192.168.1.114 -p 9922 "/bin/bash -i" , где "C:\Users\User\.ssh\webOS_TV_webos" - ключ (User у меня учетка, под которой я в windows 10 работаю, а webOS_TV_webos создалась автоматическ IDE, когда я делал подключение, чтобы IPK устанавливать, пока не было root, 192.168.1.114- адрес моего ТВ, у вас будет другой, можете в приложении DEVMODE посмотреть. Самое главное скачать и сохранить файл /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh При получении root он будет заменен, поэтому старый лучше сохранить. Как в виндвом ssh скачать файл можете найти в И-нет либо просто мышью выделить все и на своей машине в том же блокноте вставить из буфера обмена. Вполне возможно, что без прав root вы просто не увидите start-devmode.sh, ничего страшного, идем дальше.
Шаг 3 Получим root Предупреждение! Процесс довольно безопасен и обратим в любой момент мы можем восстановить ТВ в исходное состояние, а вот сам root надо использовать осторожно. Там есть защита, даже имея root просто так не навредить, но все же можно защиту обойти и принести вред ТВ. Еще раз подчеркиваю - процесс обратим, вы можете при желании, получив root, отказаться от него и восстановить ТВ в исходном состоянии. Все, что ниже делаем можно обратить в любой необходимый Вам момент. Ни каких следов от root при этом не остается в памяти ТВ. После применения данного метода вы получите полные права над системой ТВ, но будет два временных неудобства 1) Не сможете ставить приложения через IDE (это устранимо, ниже описано как восстановить уже имея root и IDE и SSH), хотя IDE при наличии root и не нужен вообще, ставить программы (ipk) проще и удобнее прямо в сам ТВ, без внешнего костыля с IDE. Но имейте ввиду, сразу после полученных root прав поставить через IDE не сможете, поэтому чтобы было проще перед получением root установите все ipk, какие будут необходимы). Позже у вас будет возможность ставить напрямую ipk в ТВ из Интернета либо со своего web сервера, а чуть позже заработает и IDE. 2) Еще одна проблема - не сможете продлять таймер в DEVmode нажатием кнопки в приложении на ТВ (Есть лучший способ, ниже написано, как поставить 900 часов на этот таймер и больше не заморачиваться нажатием кнопке «продлить» раз в два дня, а потом и сделать это автоматически). Других негативных последствий я не нашел пока, все работает стабильно и правильно после того, как появился root.
Данный метод использует найденную в начале 2021 года уязвимость. Подробнее можете почитать smsbox @ Как получить Root права на webOS 1.0-6.0, но это ненужно для получения прав, просто для общего развития. Возможно LG ее закроет скоро, поэтому не обновляйте свою систему, маловероятно, что там будет что-то полезное. Проверяет ваш ТВ, что надо качать новое обновление с этого адреса http://snu.lge.com:80/CheckSWAutoUpdate.laf, постоянно к нему обращаясь. Чуть позже, когда будет root, этот адрес заблокируем в самом ТВ, отредактировав файл hosts
1. Если у вас прописан вход в учетную запись LG, выходим из учетной записи. Настройки – Все настройки – Общие – Управление учетной записью (фотографии не очень хорошие по качеству, но все видно)
Вход в управление учётной записью.jpg (116.91 КБ) Просмотров: 12825
вход в учетную запись
Далее, в зависимости от языка будет одна из двух картинок либо (если язык английский)
2. Выбираем вход через учетную запись Амазона (крайняя справа). Ниже будет описан случай, когда Амазона нет, а есть только Гугл.
Если у вас нет Амазона или он не работает, так как описано, можете воспользоваться входом через гугл. Он перекидывает в браузер, но не страшно, в конце авторизации будет возврат обратно и в этот момент сработает все как описано ниже, но уже без Амазона. Подробнее можете посмотреть https://webos-forums.ru/post133751.html#p133751 Кратко -пробовать через настройки-управление учетной записью lg- вход Google-создание нового аккаунта-далее создаем акк вплоть до страницы "Конциденциальность и условия использования" - на ней кликаем ссылку политика конфиденциальности. Подробнее с картинками можете получить по e-mail у автоответчика по адресу smsbox3@bk.ru
Если у вас не работает ни Амазон, ниГугл - попробуйте через фейсбук. Подробнее описано https://webos-forums.ru/post136289.html#p136289
9.jpg (449.24 КБ) Просмотров: 13253
3. Выбираем Privacy Notice и там страну Великобританию
10.jpg (371.54 КБ) Просмотров: 13253
4. В строке поиска (вверху) набираем google seach
11.jpg (329.2 КБ) Просмотров: 13253
5. И нажимаем на поиск. В результатах поиска выбрать первую картинку.
12.jpg (186.04 КБ) Просмотров: 13253
6. После открытия ищем Developer info и переходим туда
12. В multilinkr в разделе Paste вводим адрес вашего компьютера, где запущен Apach24 (из Шаг 1 и Шаг 2) у меня это 192.168.1.102 у вас будет другой. Если вы не выполняли Шаг 1 и Шаг 2 (т. е. не разворачивали апач у себя на компьютере), вводите адрес http://193.124.66.86, где все уже настроено.
19.jpg (158.92 КБ) Просмотров: 13253
13. Переходим на меню Links и запускаем эту ссылку
20.jpg (208.98 КБ) Просмотров: 13253
14. Скрипт отработал и вы получили root! Поздравляю. Чтобы не было 13 картинок, число плохое, вот вам еще одна картинка.
Для подключения к ТВ будем использовать программу Putty там указываем адрес ТВ (в моем случае) 192.168.1.114 порт 23 и у вас будет вот такая картинка
21.png (3.37 КБ) Просмотров: 13253
Чтобы убедиться, что вы с нужными правами набираем whoami
ДОПОЛНЕНИЕ
а) Первым делом давайте устраним неудобство с таймером. Установим счетчик в 900 часов (позже сделаем это автоматом, чтобы при каждой перезагруке таймер на 900 часов устанавливался), пока своими руками.
Из стартового каталога переходим в нужный командой
нажимаем букву a (что означает добавить в конец) и backspace-ом удаляем находящееся там значений 49:43:00 После чего набираем с самого начала файла 900:00:00 Нажимаем ESC, чтобы выйти из режима редактирования и нажимаем после :wq (означает сохранить наше изменение и выйти из редактора vi).
Заходим на ТВ в приложение DEVMODE - видим Remain Session: 899h51m. Все на год про это можно забыть. Первое неудобство устранили. б) Установка пакетов IPK без IDE, сразу в память ТВ из Интернета.
Например установим Dstore и Forkplayer набираем в терминале телевизора команды
Произойдет скачивание и установка этих приложений.
По адресу msx.lh1.in/ipk/ находятся пакеты dstore1.ipk, dstore2.ipk, dstorevip.ipk, fork.ipk, forkplayer.ipk, xsmart.ipk, vplay.ipk, vplay2.ipk, ott.ipk, ovp.ipk, smartbox.ipk, tytkino.ipk, jellyfin, slither.ipk, justdance.ipk, my.tuner.radio.ipk Посмотреть справку о составе пакетов можно в бразуре (ТВ или компьютер) по адресу http://msx.lh1.in/ipk/.
Если ставить все пакеты сразу (потом удалим на самом ТВ ненужное), то так
Планирую там собрать коллекцию ipk, если что-то есть присылайте на почту smsbox3@bk.ru - добавлю. После перезапуска ТВ у вас появятся иконки в главном меню. Для перезапуска можно просто включить и выключить ТВ, либо подать команду в терминале reboot
Установка через luna
для информации еще один метод установки
Этот способ не отличается от установки через IDE или CLI ares-install. Виджет появляется сразу без перезагрузки, но перед тем, как установить, надо вначале скачать в папку tmp, это можно сделать командой wget или curl.
#Скачать curl-ом с url пакет и сохранить в папку tmp с именем app.ipk curl -L https://webosapp.club/mgg.channelplus.ipk -o /tmp/app.ipk #установить по id (он прописан внутри ipk в json файле) luna-send -i -f luna://com.webos.appInstallService/dev/install '{"id":"mgg.channelplus", "ipkUrl":"/tmp/app.ipk", "subscribe":true}'
#Скачать wget с url пакет и сохранить в папку tmp с именем app.ipk wget https://webosapp.club/mgg.channelplus.ipk -o /tmp/app.ipk #установить по id (он прописан внутри ipk в json файле) luna-send -i -f luna://com.webos.appInstallService/dev/install '{"id":"mgg.channelplus", "ipkUrl":"/tmp/app.ipk", "subscribe":true}'
Как запретить обновления прошивки?
Смысл действий. Папка etc в системе readonly, чтобы это обойти будем работать с копией, где все можно все менять. В данном случае будем менять файл hosts, так как система опрашивает сервер на предмет обновления, мы подменим адрес, чтобы ответ никогда не пришел. Нет информации о наличии обновления – ТВ его не скачивает и не обновляет. Вообще это для страховки, чтобы root не потерять, в обновлении могут эту возможность закрыть и root отобрать.
Выполняем следующие шаги
1. Создаем папку, туда скопируем все из /etc/ (/etc/ -) mkdir -p /media/cryptofs/root/etc
2. Копируем все не глядя, без лишних вопросов cp -r /etc/* /media/cryptofs/root/etc
3. Делаем маппинг /etc на новую папку mount -o bind /media/cryptofs/root/etc /etc
4 Правим файл hosts по новому месту в редакторе vi vi /media/cryptofs/root/etc/hosts
5. Через редактор vi открываем файл start-devmode.sh vi /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
Перед строкой telnetd -l /bin/sh вводим mount -o bind /media/cryptofs/root/etc /etc (чтобы при старте всегда у нас монтировалось на новое место и новые настройки) для этого нажимаем a и вводим
#монтируем etc на новом месте, где мы все можем менять mount -o bind /media/cryptofs/root/etc /etc # Start root telnet server telnetd -l /bin/sh
Остальное не меняем!
Набираем rebootи ждем пока ТВ перезагрузиться. Все обновления больше не будут приходить.
Еще один метод блокировки обновлений можете посмотреть wins911 @ Как получить Root права на webOS 1.0-6.0 Он не блокирует доступ к серверам LG, но удаляет процесс killall /usr/sbin/update, который занимается поиском обновлений. Что делать лучше выбирать вам. Я прописал у себя оба метода, вроде бы все нормально и глюков нет smsbox @ Как получить Root права на webOS 1.0-6.0 Удаление лишнего процесс освобождает немного памяти и ресурсов процессора, что тоже хорошо.
Подмена приложений на самом ТВ.
(вместо замены ДНС или использования локального ДНС)
Этим методом можно переопределить кнопки пульта, например IVI будет вызывать нужное вам приложение или подменить установленные виджеты, чтобы стартовали другие приложения вместо тех, что установлены.
В файле hosts можно прописать подмены, если конечно в этом есть необходимость и запускать вместо одного виджета - другой. Например добавив строку
и вместо виджета Дождь, будет загружаться Dstore, ДНС в настройках стандартный или любой, он не окажет влияния, так как наша подмена сделана в hosts на самом ТВ. Точно так же можно подменить кнопку IVI на пульте.
Другой способ подмены кнопок пульта ivi, amazon, netfilix.
Метод заключается в редактировании установленного приложения. Переходим в папку установленных из ipk приложений cd /media/developer/apps/usr/palm/applications
Нам необходимо заменить id приложения, сейчас "id": "com.dstore3.app", Мы его заменим на один из следующих
"id": "amazon", "id": "ivi", "id": "netflix",
Если требуется замена кнопки ivi – выбирает ivi
(напоминаю, мы открыли для редактирования в редакторе vi файл appinfo.json) Нажимаем aпереходим к строке id и меняем "com.dstore3.app" на "ivi" Нажимаем:wq
Обратите внимание, что само приложение ivi при этом не надо устанавливать в память ТВ.
Помимо правки appinfo.json переименовать также и саму папку приложения на "netflix" или "amazon" (в случае с установкой vplay папку com.vplay.one => amazon). Дальше, зайти по адресу /media/developer/apps/usr/palm/packages, найти папку от своего приложения и ее также переименовать. И последнее - зайти в переименованную папку и поправить файлик packageinfo.json: в нем изменить параметры "id" и "app" с "com.vplay.one" на "netflix" или "amazon".
Установить приложение с флешки в память ТВ
До 2017 года телевизоры LG могли запускать приложения с флешки. Для ТВ 2018-2021 года такой возможности нет, LG убрала этот функционал. Однако мы можем с флешки установить приложение в ТВ. Флешка при это будет не нужна. Для примера скачаем пару флешек с приложением Xsmart (кино и тв) по адресу http://app.xsmart.tv/UPDATE/install_webos.zip и smartbox cross по адресу https://smart-box.net.ua/files/file/29- ... -cross-lg/ Скаченные архивы раскрыть, там будет такая структура в корне developer -> apps -> usr -> palm -> applications ->папка с приложением, которая нам нужна в случае с Smartbox это будет ua.net.smart-box.app.fs.to, для xsmart это папке с именем tv.xsmart.app Все, что нам требуется это скопировать эти папки на ТВ в каталог
Например скачаем wget в папку tmp и далее перенесем в нужную примерно так mv /tmp/ua.net.smart-box.app.fs.to /media/cryptofs/apps/usr/palm/applications Применительно к этим приложениям на сайтах есть ipk и можно поставить ipk, но если есть только флешка, то вы уже умеете ставить с нее приложения в память ТВ.
Восстановим работу через IDE и доступ через SSH к ТВ
1. Через редактор vi открываем файл start-devmode.sh vi /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh 2. добавим в конец файла следующий код
# set arch: ARCH="armv71" grep -qs "qemux86" /etc/hostname && ARCH="i686"
# set directories OPT_DEVMODE="/opt/devmode" OPT_SSH="/opt/openssh" DEVELOPER_HOME="/media/developer" DEVMODE_SERVICE_DIR="/media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service" CRYPTO_SSH="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt/openssh" CRYPTO_OPT="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt"
if [ -s ${DEVMODE_SERVICE_DIR}/jail_app.conf ] ; then mv ${DEVMODE_SERVICE_DIR}/jail_app.conf ${DEVELOPER_HOME} mv ${DEVMODE_SERVICE_DIR}/jail_app.conf.sig ${DEVELOPER_HOME} fi
if [ -r ${DEVMODE_SERVICE_DIR}/sessionToken ] ; then mv -f ${DEVMODE_SERVICE_DIR}/sessionToken /var/luna/preferences/devmode_enabled fi
# Make sure the ssh binaries are executable (in service directory) if [! -x "${CRYPTO_SSH}/sbin/sshd" ] ; then chmod ugo+x ${CRYPTO_SSH}/sbin/sshd ${CRYPTO_SSH}/bin/ssh* ${CRYPTO_SSH}/bin/scp* || true chmod ugo+x ${CRYPTO_SSH}/bin/sftp ${CRYPTO_SSH}/lib/openssh/* || true chmod ugo+x ${CRYPTO_OPT}/devmode/usr/bin/* || true fi
# TODO: (later) Look for "re-init" flag to re-generate ssh key if requested by app (via devkey service) # com.palm.service.devmode could have "resetKey" method to erase /var/lib/devmode/ssh/webos_rsa # Kind of dangerous though, since new key will need to be fetched on the desktop (after reboot)... # We could just require a hard-reset of the TV which should blow away /var/lib/devmode/ssh/...
# Initialize the developer (client) SSH key pair, if it doesn't already exist if [! -e /var/lib/devmode/ssh/webos_rsa ] ; then mkdir -p /var/lib/devmode/ssh chmod 0700 /var/lib/devmode/ssh # get FIRST six (UPPER-CASE, hex) characters of 40-char nduid from nyx-cmd # NOTE: This MUST match passphrase as displayed in devmode app (main.js)! # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | head -c 6 | tr 'a-z' 'A-Z'`" # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | tail -n1 | head -c 6 | tr 'a-z' 'A-Z'`" PASSPHRASE="`tail /var/lib/secretagent/nduid -c 40 | head -c 6 | tr 'a-z' 'A-Z'`" ${CRYPTO_SSH}/bin/ssh-keygen -t rsa -C "developer@device" -N "${PASSPHRASE}" -f /var/lib/devmode/ssh/webos_rsa # copy ssh key to /var/luna/preferences so the devmode service's KeyServer can read it and serve to ares-webos-cli tools cp -f /var/lib/devmode/ssh/webos_rsa /var/luna/preferences/webos_rsa chmod 0644 /var/luna/preferences/webos_rsa # if we generated a new ssh key, make sure we re-create the authorized_keys file rm -f ${DEVELOPER_HOME}/.ssh/authorized_keys fi
# Make sure the /media/developer (and log) directories exists (as sam.conf erases it when devmode is off): mkdir -p ${DEVELOPER_HOME}/log chmod 777 ${DEVELOPER_HOME} ${DEVELOPER_HOME}/log
# Install the SSH key into the authorized_keys file (if it doesn't already exist) if [! -e ${DEVELOPER_HOME}/.ssh/authorized_keys ] ; then mkdir -p ${DEVELOPER_HOME}/.ssh cp -f /var/lib/devmode/ssh/webos_rsa.pub ${DEVELOPER_HOME}/.ssh/authorized_keys || true # NOTE: authorized_keys MUST be world-readable else sshd can't read it inside the devmode jail # To keep sshd from complaining about that, we launch sshd with -o "StrictModes no" (below). chmod 755 ${DEVELOPER_HOME}/.ssh chmod 644 ${DEVELOPER_HOME}/.ssh/authorized_keys chown -R developer:developer ${DEVELOPER_HOME}/.ssh fi
# FIXME: Can we move this to /var/run/devmode/sshd? # Create PrivSep dir mkdir -p /var/run/sshd chmod 0755 /var/run/sshd
# Create directory for host keys (rather than /opt/openssh/etc/ssh/) HOST_KEY_DIR="/var/lib/devmode/sshd" if [! -d "${HOST_KEY_DIR}" ] ; then mkdir -p ${HOST_KEY_DIR} chmod 0700 ${HOST_KEY_DIR} fi
# Create initial keys if necessary if [! -f ${HOST_KEY_DIR}/ssh_host_rsa_key ]; then echo " generating ssh RSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_rsa_key -N '' -t rsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key ]; then echo " generating ssh ECDSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key -N '' -t ecdsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_dsa_key ]; then echo " generating ssh DSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_dsa_key -N '' -t dsa fi
# Check config # NOTE: This should only be enabled for testing #${CRYPTO_SSH}/sbin/sshd -f ${CRYPTO_SSH}/etc/ssh/sshd_config -h ${HOST_KEY_DIR}/ssh_host_rsa_key -t
# Add for debugging, but this will cause sshd to exit after the first ssh login: # -ddd -e \
# Make environment file for openssh DEVMODE_JAIL_CONF="/etc/jail_native_devmode.conf" DEVMODE_OPENSSH_ENV="${DEVELOPER_HOME}/.ssh/environment" if [ -f ${DEVMODE_JAIL_CONF} ]; then echo " generating environment file from jail_native_devmode.conf... " find ${DEVMODE_JAIL_CONF} | xargs awk '/setenv/{printf "%s=%s\n", $2, $3}' > ${DEVMODE_OPENSSH_ENV} ${DEVMODE_JAIL} /usr/bin/env >> ${DEVMODE_OPENSSH_ENV} fi # Set path for devmode if [ -f ${DEVMODE_OPENSSH_ENV} ]; then echo "PATH=${PATH}:${OPT_DEVMODE}/usr/bin" >> ${DEVMODE_OPENSSH_ENV} fi
sleep 5; for interface in $ (ls /sys/class/net/ | grep -v -e lo -e sit) ; do if [ -r /sys/class/net/$interface/carrier ] ; then if [[ $ (cat /sys/class/net/$interface/carrier) == 1 ]]; then OnLine=1; fi fi done
# TODO: Check upstart daemon/process tracking (do we need to change /etc/init/devmode.conf? start sshd as daemon? )
# Do our best to neuter telemetry mkdir -p /home/root/unwritable chattr +i /home/root/unwritable mount --bind /home/root/unwritable/ /var/spool/rdxd/ mount --bind /home/root/unwritable/ /var/spool/uploadd/pending/ mount --bind /home/root/unwritable/ /var/spool/uploadd/uploaded/
# set devmode ssh port here SSH_PORT="9922"
# set arch: ARCH="armv71" grep -qs "qemux86" /etc/hostname && ARCH="i686"
# set directories OPT_DEVMODE="/opt/devmode" OPT_SSH="/opt/openssh" DEVELOPER_HOME="/media/developer" DEVMODE_SERVICE_DIR="/media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service" CRYPTO_SSH="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt/openssh" CRYPTO_OPT="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt"
if [ -s ${DEVMODE_SERVICE_DIR}/jail_app.conf ] ; then mv ${DEVMODE_SERVICE_DIR}/jail_app.conf ${DEVELOPER_HOME} mv ${DEVMODE_SERVICE_DIR}/jail_app.conf.sig ${DEVELOPER_HOME} fi
if [ -r ${DEVMODE_SERVICE_DIR}/sessionToken ] ; then mv -f ${DEVMODE_SERVICE_DIR}/sessionToken /var/luna/preferences/devmode_enabled fi
# Make sure the ssh binaries are executable (in service directory) if [! -x "${CRYPTO_SSH}/sbin/sshd" ] ; then chmod ugo+x ${CRYPTO_SSH}/sbin/sshd ${CRYPTO_SSH}/bin/ssh* ${CRYPTO_SSH}/bin/scp* || true chmod ugo+x ${CRYPTO_SSH}/bin/sftp ${CRYPTO_SSH}/lib/openssh/* || true chmod ugo+x ${CRYPTO_OPT}/devmode/usr/bin/* || true fi
# TODO: (later) Look for "re-init" flag to re-generate ssh key if requested by app (via devkey service) # com.palm.service.devmode could have "resetKey" method to erase /var/lib/devmode/ssh/webos_rsa # Kind of dangerous though, since new key will need to be fetched on the desktop (after reboot)... # We could just require a hard-reset of the TV which should blow away /var/lib/devmode/ssh/...
# Initialize the developer (client) SSH key pair, if it doesn't already exist if [! -e /var/lib/devmode/ssh/webos_rsa ] ; then mkdir -p /var/lib/devmode/ssh chmod 0700 /var/lib/devmode/ssh # get FIRST six (UPPER-CASE, hex) characters of 40-char nduid from nyx-cmd # NOTE: This MUST match passphrase as displayed in devmode app (main.js)! # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | head -c 6 | tr 'a-z' 'A-Z'`" # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | tail -n1 | head -c 6 | tr 'a-z' 'A-Z'`" PASSPHRASE="`tail /var/lib/secretagent/nduid -c 40 | head -c 6 | tr 'a-z' 'A-Z'`" ${CRYPTO_SSH}/bin/ssh-keygen -t rsa -C "developer@device" -N "${PASSPHRASE}" -f /var/lib/devmode/ssh/webos_rsa # copy ssh key to /var/luna/preferences so the devmode service's KeyServer can read it and serve to ares-webos-cli tools cp -f /var/lib/devmode/ssh/webos_rsa /var/luna/preferences/webos_rsa chmod 0644 /var/luna/preferences/webos_rsa # if we generated a new ssh key, make sure we re-create the authorized_keys file rm -f ${DEVELOPER_HOME}/.ssh/authorized_keys fi
# Make sure the /media/developer (and log) directories exists (as sam.conf erases it when devmode is off): mkdir -p ${DEVELOPER_HOME}/log chmod 777 ${DEVELOPER_HOME} ${DEVELOPER_HOME}/log
# Install the SSH key into the authorized_keys file (if it doesn't already exist) if [! -e ${DEVELOPER_HOME}/.ssh/authorized_keys ] ; then mkdir -p ${DEVELOPER_HOME}/.ssh cp -f /var/lib/devmode/ssh/webos_rsa.pub ${DEVELOPER_HOME}/.ssh/authorized_keys || true # NOTE: authorized_keys MUST be world-readable else sshd can't read it inside the devmode jail # To keep sshd from complaining about that, we launch sshd with -o "StrictModes no" (below). chmod 755 ${DEVELOPER_HOME}/.ssh chmod 644 ${DEVELOPER_HOME}/.ssh/authorized_keys chown -R developer:developer ${DEVELOPER_HOME}/.ssh fi
# FIXME: Can we move this to /var/run/devmode/sshd? # Create PrivSep dir mkdir -p /var/run/sshd chmod 0755 /var/run/sshd
# Create directory for host keys (rather than /opt/openssh/etc/ssh/) HOST_KEY_DIR="/var/lib/devmode/sshd" if [! -d "${HOST_KEY_DIR}" ] ; then mkdir -p ${HOST_KEY_DIR} chmod 0700 ${HOST_KEY_DIR} fi
# Create initial keys if necessary if [! -f ${HOST_KEY_DIR}/ssh_host_rsa_key ]; then echo " generating ssh RSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_rsa_key -N '' -t rsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key ]; then echo " generating ssh ECDSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key -N '' -t ecdsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_dsa_key ]; then echo " generating ssh DSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_dsa_key -N '' -t dsa fi
# Check config # NOTE: This should only be enabled for testing #${CRYPTO_SSH}/sbin/sshd -f ${CRYPTO_SSH}/etc/ssh/sshd_config -h ${HOST_KEY_DIR}/ssh_host_rsa_key -t
# Add for debugging, but this will cause sshd to exit after the first ssh login: # -ddd -e \
# Make environment file for openssh DEVMODE_JAIL_CONF="/etc/jail_native_devmode.conf" DEVMODE_OPENSSH_ENV="${DEVELOPER_HOME}/.ssh/environment" if [ -f ${DEVMODE_JAIL_CONF} ]; then echo " generating environment file from jail_native_devmode.conf... " find ${DEVMODE_JAIL_CONF} | xargs awk '/setenv/{printf "%s=%s\n", $2, $3}' > ${DEVMODE_OPENSSH_ENV} ${DEVMODE_JAIL} /usr/bin/env >> ${DEVMODE_OPENSSH_ENV} fi # Set path for devmode if [ -f ${DEVMODE_OPENSSH_ENV} ]; then echo "PATH=${PATH}:${OPT_DEVMODE}/usr/bin" >> ${DEVMODE_OPENSSH_ENV} fi
sleep 5; for interface in $ (ls /sys/class/net/ | grep -v -e lo -e sit) ; do if [ -r /sys/class/net/$interface/carrier ] ; then if [[ $ (cat /sys/class/net/$interface/carrier) == 1 ]]; then OnLine=1; fi fi done
Если это не сработало у вас, используйте другой скрипт (полный скрипт), отличие от первого в расположении кеша, так как разные модели ТВ (по годам) имеют его в разных местах
# Do our best to neuter telemetry mkdir -p /home/root/unwritable chattr +i /home/root/unwritable mount --bind /home/root/unwritable/ /var/spool/rdxd/ mount --bind /home/root/unwritable/ /var/spool/uploadd/pending/ mount --bind /home/root/unwritable/ /var/spool/uploadd/uploaded/
# TODO: Check upstart daemon/process tracking (do we need to change /etc/init/devmode.conf? start sshd as daemon? )
# set devmode ssh port here SSH_PORT="9922"
# set arch: ARCH="armv71" grep -qs "qemux86" /etc/hostname && ARCH="i686"
# set name DEVMODE_SSHID="com.palm.devmode.openssh" # set directories OPT_DEVMODE="/opt/devmode" OPT_SSH="/opt/openssh" DEVELOPER_HOME="/media/developer" DEVMODE_APP_DIR="/media/cryptofs/apps/usr/palm/applications/com.palmdts.devmode" DEVMODE_SERVICE_DIR="/media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service" DEVMODE_SSHID_JAILED_DIR="/var/palm/jail/${DEVMODE_SSHID}" CRYPTO_SSH="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt/openssh" CRYPTO_OPT="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt" LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${CRYPTO_SSH}/lib/openssh"
# Remove the previous jailed env and session if the app is updated # * 'jailer -D' is not sufficient to clean the jailed path which does not exist in the related jail conf if [ -f ${DEVMODE_APP_DIR}/appinfo.json ]; then loginedVersion=$ (node -pe "var fs=require ('fs') ;try{JSON.parse (fs.readFileSync ('${DEVMODE_SERVICE_DIR}/login.json')) ['version']}catch (e) {}" ;) appVersion=$ (node -pe "var fs=require ('fs') ;try{JSON.parse (fs.readFileSync ('${DEVMODE_APP_DIR}/appinfo.json')) ['version']}catch (e) {}" ;) echo "logined app version: $loginedVersion, current installed app version: $appVersion" if [ "$loginedVersion"! = "$appVersion" ]; then echo "New App has been installed hence disabling developer mode" rm -rf /var/luna/preferences/devmode_enabled echo "Removing the previous jailed environment" rm -rf /var/luna/preferences/dc* rm -rf ${DEVMODE_SERVICE_DIR}/devSessionTime jailer -D -i ${DEVMODE_SSHID} rm -rf ${DEVMODE_SSHID_JAILED_DIR}/dev sleep 5; exit 0 fi fi
if [ -s ${DEVMODE_SERVICE_DIR}/download/jail_app.conf ] ; then mv ${DEVMODE_SERVICE_DIR}/download/jail_app.conf ${DEVELOPER_HOME} mv ${DEVMODE_SERVICE_DIR}/download/jail_app.conf.sig ${DEVELOPER_HOME} fi
if [ -r ${DEVMODE_SERVICE_DIR}/download/sessionToken ] ; then mv -f ${DEVMODE_SERVICE_DIR}/download/sessionToken /var/luna/preferences/devmode_enabled fi
# Make sure the ssh binaries are executable (in service directory) if [! -x "${CRYPTO_SSH}/sbin/sshd" ] ; then chmod ugo+x ${CRYPTO_SSH}/sbin/sshd ${CRYPTO_SSH}/bin/ssh* ${CRYPTO_SSH}/bin/scp* || true chmod ugo+x ${CRYPTO_SSH}/bin/sftp ${CRYPTO_SSH}/lib/openssh/* || true chmod ugo+x ${CRYPTO_OPT}/devmode/usr/bin/* || true fi
# TODO: (later) Look for "re-init" flag to re-generate ssh key if requested by app (via devkey service) # com.palm.service.devmode could have "resetKey" method to erase /var/lib/devmode/ssh/webos_rsa # Kind of dangerous though, since new key will need to be fetched on the desktop (after reboot)... # We could just require a hard-reset of the TV which should blow away /var/lib/devmode/ssh/...
# Initialize the developer (client) SSH key pair, if it doesn't already exist if [! -e /var/lib/devmode/ssh/webos_rsa ] ; then mkdir -p /var/lib/devmode/ssh chmod 0700 /var/lib/devmode/ssh # get FIRST six (UPPER-CASE, hex) characters of 40-char nduid from nyx-cmd # NOTE: This MUST match passphrase as displayed in devmode app (main.js)! # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | head -c 6 | tr 'a-z' 'A-Z'`" # PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | tail -n1 | head -c 6 | tr 'a-z' 'A-Z'`" PASSPHRASE="`tail /var/lib/secretagent/nduid -c 40 | head -c 6 | tr 'a-z' 'A-Z'`" ${CRYPTO_SSH}/bin/ssh-keygen -t rsa -C "developer@device" -N "${PASSPHRASE}" -f /var/lib/devmode/ssh/webos_rsa # copy ssh key to /var/luna/preferences so the devmode service's KeyServer can read it and serve to ares-webos-cli tools cp -f /var/lib/devmode/ssh/webos_rsa /var/luna/preferences/webos_rsa chmod 0644 /var/luna/preferences/webos_rsa # if we generated a new ssh key, make sure we re-create the authorized_keys file rm -f ${DEVELOPER_HOME}/.ssh/authorized_keys fi
# Make sure the /media/developer (and log) directories exists (as sam.conf erases it when devmode is off): mkdir -p ${DEVELOPER_HOME}/log chmod 777 ${DEVELOPER_HOME} ${DEVELOPER_HOME}/log
# Install the SSH key into the authorized_keys file (if it doesn't already exist) if [! -e ${DEVELOPER_HOME}/.ssh/authorized_keys ] ; then mkdir -p ${DEVELOPER_HOME}/.ssh cp -f /var/lib/devmode/ssh/webos_rsa.pub ${DEVELOPER_HOME}/.ssh/authorized_keys || true # NOTE: authorized_keys MUST be world-readable else sshd can't read it inside the devmode jail # To keep sshd from complaining about that, we launch sshd with -o "StrictModes no" (below). chmod 755 ${DEVELOPER_HOME}/.ssh chmod 644 ${DEVELOPER_HOME}/.ssh/authorized_keys chown -R developer:developer ${DEVELOPER_HOME}/.ssh fi
# FIXME: Can we move this to /var/run/devmode/sshd? # Create PrivSep dir mkdir -p /var/run/sshd chmod 0755 /var/run/sshd
# Create directory for host keys (rather than /opt/openssh/etc/ssh/) HOST_KEY_DIR="/var/lib/devmode/sshd" if [! -d "${HOST_KEY_DIR}" ] ; then mkdir -p ${HOST_KEY_DIR} chmod 0700 ${HOST_KEY_DIR} fi
# Create initial keys if necessary if [! -f ${HOST_KEY_DIR}/ssh_host_rsa_key ]; then echo " generating ssh RSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_rsa_key -N '' -t rsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key ]; then echo " generating ssh ECDSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key -N '' -t ecdsa fi if [! -f ${HOST_KEY_DIR}/ssh_host_dsa_key ]; then echo " generating ssh DSA key... " ${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_dsa_key -N '' -t dsa fi
# Check config # NOTE: This should only be enabled for testing #${CRYPTO_SSH}/sbin/sshd -f ${CRYPTO_SSH}/etc/ssh/sshd_config -h ${HOST_KEY_DIR}/ssh_host_rsa_key -t
# Add for debugging, but this will cause sshd to exit after the first ssh login: # -ddd -e \
# Make environment file for openssh DEVMODE_JAIL_CONF="/etc/jail_native_devmode.conf" DEVMODE_OPENSSH_ENV="${DEVELOPER_HOME}/.ssh/environment" if [ -f ${DEVMODE_JAIL_CONF} ]; then echo " generating environment file from jail_native_devmode.conf... " find ${DEVMODE_JAIL_CONF} | xargs awk '/setenv/{printf "%s=%s\n", $2, $3}' > ${DEVMODE_OPENSSH_ENV} ${DEVMODE_JAIL} /usr/bin/env >> ${DEVMODE_OPENSSH_ENV} fi # Set path for devmode if [ -f ${DEVMODE_OPENSSH_ENV} ]; then echo "PATH=${PATH}:${OPT_DEVMODE}/usr/bin" >> ${DEVMODE_OPENSSH_ENV} fi
# If LGERP app (com.lgerp.appinstaller) is installed, devmode should be kept. if [ -d ${LGERP_APPINSTALLER_DIR} ]; then echo "LGERP app exist" rm -rf /var/luna/preferences/dc*; rm ${DEVMODE_SERVICE_DIR}/devSessionTime; else sleep 5; for interface in $ (ls /sys/class/net/ | grep -v -e lo -e sit) ; do if [ -r /sys/class/net/$interface/carrier ] ; then if [[ $ (cat /sys/class/net/$interface/carrier) == 1 ]]; then OnLine=1; fi fi done if [ $OnLine ]; then sessionToken=$ (cat /var/luna/preferences/devmode_enabled) ; checkSession=$ (curl --max-time 3 -s https://developer.lge.com/secure/CheckDevModeSession.dev?sessionToken=$sessionToken);
if [ "$checkSession"! = "" ] ; then result=$ (node -pe 'JSON.parse (process.argv[1]).result' "$checkSession" ;) ; if [ "$result" == "success" ] ; then rm -rf /var/luna/preferences/dc*; # create devSessionTime file to remain session time in devmode app remainTime=$ (node -pe 'JSON.parse (process.argv[1]).errorMsg' "$checkSession" ;) ; resultValidTimeCheck=$ (echo "${remainTime}" | egrep "^ ([0-9]{1,4} (:[0-5][0-9]) {2}) $" ;) ; if [ "$resultValidTimeCheck"! = "" ] ; then echo $resultValidTimeCheck > ${DEVMODE_SERVICE_DIR}/devSessionTime; chgrp 5000 ${DEVMODE_SERVICE_DIR}/devSessionTime; chmod 664 ${DEVMODE_SERVICE_DIR}/devSessionTime; fi elif [ "$result" == "fail" ] ; then rm -rf /var/luna/preferences/devmode_enabled; rm -rf /var/luna/preferences/dc*; if [ -e ${DEVMODE_SERVICE_DIR}/devSessionTime ] ; then rm ${DEVMODE_SERVICE_DIR}/devSessionTime; fi fi fi fi fi
# Cache clear function added (except Local storage) if [ -e ${DEVMODE_SERVICE_DIR}/devCacheClear ] ; then # In case of webOS 2.x, cache directory is /var/lib/webappmanager2 # Less than webOS 3.5, cache directory is /var/lib/webappmanager3 # Over webOS 3.5, cache directory is /var/lib/wam find /var/lib/webappmanager*/* -prune -exec rm -rf {} \; find /var/lib/wam/* -prune -exec rm -rf {} \; rm ${DEVMODE_SERVICE_DIR}/devCacheClear; fi
# Run devmode-helper to copy downloaded jail conf to the app or svc dir node ${DEVMODE_SERVICE_DIR}/devmode-helper.js > /dev/null 2>&1 &
Появилась информация о простом апгрейде ТВ 2018,2019 годов. Оказалось, производитель просто отключил функцию из маркетинговых соображений, в то время, как ТВ ее поддерживает и достаточно одной команды, чтобы активировать этот функционал на более дешевом ТВ, от более нового и более дорогого. Конкретно - Функция LG OLED Motion Pro В настройках функции TruMotion на телевизорах LG c 2018-2019-2020-2021 года может появится еще один пункт под названием Motion Pro. С его помощью активируется функция вставка черного кадра (Black Frame Insertion, BFI).. Функция вставки черного кадра реализуется за счет кратковременного отключения подсветки, аналогично двукратному увеличению кадровой частоты, благодаря чему исключается размытость в динамических сценах. Проверено - на моделях C9 и E9 2019 года функция Motion Pro присутствует, но скрыта производителем. Включить можно с помощью одной команды:
Установка торрент сервера в память ТВ (Torrserver Matrix 92)
1. закачиваем torserver в телевизор (версия для linux armv7) telnet 192.168.x.x cd /media curl -L https://github.com/YouROK/TorrServer/re ... linux-arm7 > torrserver chmod +x torrserver export GODEBUG=madvdontneed=1 ./torrserver &
2. Заходим на web интерфейс торсервера 192.168.x.x в браузер на телефоне/ПК/чем удобно и настраиваем если нужно. Если нужно прибить процесс торсервера запущенный в фоне: killall torrserver
Что делать, если вы желаете отказаться от root и восстановить ТВ в исходном состоянии? Все просто, удаляем приложение DevMode и заново его устанавливаем. При установке произойдет замена start-devmode.sh на оригинальный, root пропадает и все следы, что root был тоже. Если вы не желаете потерять root не трогайте виджет DevMode. Пока все, далее буду описывать, что можно делать на ТВ имея права root.
Последний раз редактировалось smsbox 10 окт 2021, 20:23, всего редактировалось 61 раз(а).
5. Через редактор vi открываем файл start-devmode.sh vi /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
Перед строкой telnetd -l /bin/sh вводим mount -o bind /media/cryptofs/root/etc /etc (чтобы при старте всегда у нас монтировалось на новое место) для этого нажимаем
и ждем пока ТВ перезагрузиться. Все обновления больше не будут приходить. Еще в файле hosts можно прописать подмены, если конечно в этом есть необходимость и запускать вместо одного виджета - другой. Например добавив строку
epema писал(а):Меньше чем вебос 4.5 рут по новому способу не получить?
зависит от того есть ли в вашей 2.0 сервис downloadmanager могу подтвердить что в 1.4 при запросе выдает, что сервис не найден напишу в личку одну мысль
epema писал(а):Меньше чем вебос 4.5 рут по новому способу не получить?
зависит от того есть ли в вашей 2.0 сервис downloadmanager могу подтвердить что в 1.4 при запросе выдает, что сервис не найден напишу в личку одну мысль
У меня webos 3.8.ThinQ нет, добрался через Управление учетной записью.Index.html загружается, скрипт стартует, но загрузка файлов валится с PalmServiceBridge is not found. Как я понимаю, PalmServiceBridge это API для доступа к Luna сервисам из JavaScript. Пишут, что WebOSServiceBridge (думаю, то же самое что и PalmServiceBridge) доступен с webOS Open Source Edition (OSE) 2.0. Сейчас ищу где взять и как запустить этот bridge. Может кто поможет?