Обсуждение библиотеки bscpylgtv, предназначенной для управления телевизорами LG
bscpylgtv - это библиотека для управления по сети телевизорами LG на ОС webOS. Представляет собой улучшенную и более быструю версию библиотеки aiopylgtv. Может быть установлена без функции калибровки, оптимизирована для использования в командной строке (ищет тот же файл конфигурации ключа.aiopylgtv.sqlite).
Системные требования
Установленный Python >= 3.8
Установка из пакета
- Код: Выделить всё
# Install lite package without calibration functionality
pip install bscpylgtv
# Instal full package with calibration functionality (requires numpy package)
pip install bscpylgtv[with_calibration]
Установка из исходного кода
Выполните следующую команду в этой папке:
- Код: Выделить всё
# Install lite package without calibration functionality
pip install --upgrade.
# Instal full package with calibration functionality (requires numpy package)
pip install --upgrade. [with_calibration]
Исполняемые файлы для Windows
Исполняемые файлы для Windows можно найти в разделе релизов на github, там же и руководство по первоначальному использованию. Доступно также Руководство по установке и использованию bscpylgtv.
Примеры
Доступные настройки можно найти в каталоге docs, также доступны кнопки пульта.
- Код: Выделить всё
# Get list of apps (including hidden ones as well)
bscpylgtvcommand 192.168.1.18 get_apps_all true
# Push info button
bscpylgtvcommand 192.168.1.18 button INFO
# Switch to HDMI2 input
bscpylgtvcommand 192.168.1.18 set_input HDMI_2
# Get values of backlight and contrast of the current picture preset (using list)
bscpylgtvcommand 192.168.1.18 get_picture_settings "[\"backlight\", \"contrast\"]" true
# Swtich to SDR ISF Expert Dark picture preset
bscpylgtvcommand 192.168.1.18 set_current_picture_mode expert2
# Set values of backlight and contrast of the current picture preset (using JSON)
bscpylgtvcommand 192.168.1.18 set_current_picture_settings "{\"backlight\": 0, \"contrast\": 85}"
# Turn hdrDynamicToneMapping on in the current HDR10 picture preset (using JSON)
bscpylgtvcommand 192.168.1.18 set_current_picture_settings "{\"hdrDynamicToneMapping\": \"on\"}"
# Set colorGamut to "auto" in the current picture preset (using JSON)
bscpylgtvcommand 192.168.1.18 set_current_picture_settings "{\"colorGamut\": \"auto\"}"
# Set mpegNoiseReduction off in the current picture preset (using JSON)
bscpylgtvcommand 192.168.1.18 set_current_picture_settings "{\"mpegNoiseReduction\": \"off\"}"
# Turn AI Picture Pro on in the current picture preset (using JSON)
bscpylgtvcommand 192.168.1.18 set_current_picture_settings "{\"ai_Picture\": \"on\"}" aiPicture
# Setting EOTF in HDMI Signal Override menu, values: auto, sdrGamma, hdrGamma, st2084, hlg (using JSON)
bscpylgtvcommand 192.168.1.18 set_other_settings "{\"eotf\": \"hlg\"}"
# Turn PC Mode on/off for HDMI2
bscpylgtvcommand 192.168.1.18 set_device_info HDMI_2 pc PC
bscpylgtvcommand 192.168.1.18 set_device_info HDMI_2 hometheater "Home Theatre"
# Launch and close screensaver
bscpylgtvcommand 192.168.1.18 launch_app com.webos.app.screensaver
bscpylgtvcommand 192.168.1.18 close_app com.webos.app.screensaver
# Turn screen off/on: turn_screen_off [webos_version] (e.g.for older WebOS: turn_screen_off 4)
bscpylgtvcommand 192.168.1.18 turn_screen_off
bscpylgtvcommand 192.168.1.18 turn_screen_on
# Display current picture mode settings
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.palm.app.settings "{\"target\": \"PictureMode\"}"
# Launch installation app hidden menu (Hotel Mode, Password change, USB Cloning, Set ID setup, IP Control)
bscpylgtvcommand 192.168.1.18 launch_app com.webos.app.installation
# Display 3x MUTE button hidden menu (AVReset, Customer Support, etc)
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.webos.app.tvhotkey "{\"activateType\": \"mute-hidden-action\"}"
# Display 7x GREEN button hidden Freesync info
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.webos.app.tvhotkey "{\"activateType\": \"freesync-info\"}"
# NOTE: this does not work anymore on some models since end of 2021.Launch hidden software updater on older firmwares
bscpylgtvcommand 192.168.1.18 launch_app com.webos.app.softwareupdate
# NOTE: this does not work anymore on some models since end of 2021.Launch hidden software updater on newer firmwares, useful to downgrade (using JSON)
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.webos.app.softwareupdate "{\"mode\": \"user\", \"flagUpdate\": true}"
# Toggle TPC or GSR in In-Start Service Menu (on 2020 and newer models), values of algo: tpc, gsr
bscpylgtvcommand 192.168.1.18 enable_tpc_or_gsr tpc false
# Set White Balance in Ez-Adjust Service Menu (on 2020 and newer models), values of color_temp: cool, medium, warm
bscpylgtvcommand 192.168.1.18 set_sm_white_balance warm 192 169 111
# Launch In-Start Service Menu (code: 0413) (using JSON)
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.webos.app.factorywin "{\"id\":\"executeFactory\", \"irKey\":\"inStart\"}"
# Launch Ez-Adjust Service Menu (code: 0413) (using JSON)
bscpylgtvcommand 192.168.1.18 launch_app_with_params com.webos.app.factorywin "{\"id\":\"executeFactory\", \"irKey\":\"ezAdjust\"}"
# Enable full Service Menu on newer models
bscpylgtvcommand 192.168.1.18 set_other_settings "{\"svcMenuFlag\": false}"
# Get config values of "tv.model" category (using list)
bscpylgtvcommand 192.168.1.18 get_configs "[\"tv.model. *\"]" true
# Activate "OLED Motion Pro" on C9 (using JSON)
bscpylgtvcommand 192.168.1.18 set_configs "{\"tv.model.motionProMode\": \"OLED Motion Pro\"}"
# Display Total Power On Time under TV Information on EU models where it's hidden (using JSON)
bscpylgtvcommand 192.168.1.18 set_configs "{\"tv.conti.supportUsedTime\": true}"
# Take screenshot
bscpylgtvcommand 192.168.1.18 take_screenshot
# Soft reboot the TV in case it is malfunctioning: reboot_soft [webos_version] (e.g.for older WebOS: reboot_soft 4)
bscpylgtvcommand 192.168.1.18 reboot_soft
# Turn the TV off (standby)
bscpylgtvcommand 192.168.1.18 power_off
Дополнительные ключи командной строки
- Код: Выделить всё
# -s "[\"<state1>\", "\<state2>\"]": set states ("software_info" static state is required by some of the calibration commands)
# values: ["system_info", "software_info", "power", "current_app", "muted", "volume", "apps", "inputs", "sound_output", "picture_settings"]
bscpylgtvcommand 192.168.1.18 upload_3d_lut_bt2020_from_file expert1 "test3d-2.cube" -s
bscpylgtvcommand -s "[\"software_info\"]" 192.168.1.18 upload_3d_lut_bt2020_from_file expert1 "test3d-2.cube"
# -c "{\"lut3d\": \"33pt\", \"dovi\": \"2019\"}": set calibration_info for unsupported chip types (be careful! )
# values for "lut3d": "17pt", "33pt"
# values for "dovi": "2018", "2019"
bscpylgtvcommand -c "{\"lut3d\": \"33pt\", \"dovi\": \"2019\"}" 192.168.1.18 upload_3d_lut_bt2020_from_file expert1 "test3d-2.cube"
# -o: getting hello info (e.g.to get unique deviceUUID)
bscpylgtvcommand -o 192.168.1.18 get_hello_info true
# -w: connecting without SSL
bscpylgtvcommand -w 192.168.1.18 button INFO
# -k <client_key>: specifying a client key
bscpylgtvcommand -k ef6858b2133d68854612831e3df8e495 192.168.1.18 button INFO
# -p <path_to_key_file>: specifying path to key file
bscpylgtvcommand -p "D:\config\.aiopylgtv.sqlite" 192.168.1.18 button INFO
# -l: get list of all saved client keys per ip (otionally from a specified key file)
bscpylgtvcommand -l
bscpylgtvcommand -l -p "D:\config\.aiopylgtv.sqlite"
# -v: display version number
bscpylgtvcommand -v
Пример базового сценария
- Код: Выделить всё
import asyncio
from bscpylgtv import WebOsClient
async def runloop ():
client = await WebOsClient.create ('192.168.1.18', ping_interval=None, states=[])
await client.connect ()
apps = await client.get_apps_all ()
for app in apps:
print (app)
await client.disconnect ()
asyncio.run (runloop ())
Пример обновления состояния по подписке
- Код: Выделить всё
import asyncio
from bscpylgtv import WebOsClient
async def on_state_change (client):
print ("State changed:" ;)
print (client.apps)
print (client.inputs)
print (client.power_state)
print (client.current_appId)
print (client.channels)
print (client.current_channel)
print (client.channel_info)
print (client.muted)
print (client.volume)
print (client.sound_output)
print (client.picture_settings)
print (client.system_info)
print (client.software_info)
print (client.hello_info)
async def runloop ():
client = await WebOsClient.create ('192.168.1.18', get_hello_info=True)
await client.register_state_update_callback (on_state_change)
await client.connect ()
ret = await client.volume_up ()
print (ret)
await asyncio.sleep (30)
await client.disconnect ()
asyncio.run (runloop ())
Использование внешнего класса хранилища с помощью сценариев
Замена встроенного хранилища ключей StorageSqliteDict на пользовательский класс StorageMy, реализующий методы класса StorageProto:
- Код: Выделить всё
import asyncio
from bscpylgtv import WebOsClient
from storage_my import StorageMy
async def runloop ():
storage = await StorageMy.create ("file_path" ;)
client = await WebOsClient.create ('192.168.1.18', ping_interval=None, states=[], storage=storage)
await client.connect ()
info = await client.get_software_info ()
print (info)
await client.disconnect ()
asyncio.run (runloop ())
Больше полезных примеров можно найти в каталоге docs/scripts.
Функциональность калибровки (в полной версии)
ВНИМАНИЕ: В некоторых случаях вмешательство в данные калибровки может привести к поломке телевизора, что потребует замены материнской платы. Все реализованные на данный момент функции ДОЛЖНЫ быть безопасными (хотя они были тщательно протестированы только для моделей 2018 Alpha 7/9, 2019/2021/2022 Alpha 9), но гарантий нет.
На телевизорах LG с webOS на чипсетах Alpha 7 и Alpha 9 поддерживается загрузка во внутренние 1D/3D LUT, сброс данных заводской калибровки, загруженных через API калибровки, загрузка пользовательских параметров отображения тона (модели >=2019), использование внутреннего генератора тестовых шаблонов (iTPG, модели >=2019), запись файла конфигурации Dolby Vision и другие команды калибровки.
Команды калибровки
Здесь представлена упрощенная версия конвейера обработки изображений (могут быть и другие, не до конца известные/понятные изменения).
Команды калибровки можно выполнять только в режиме калибровки (управляется start_calibration и end_calibration). Некоторые команды калибровки не используются (знак вопроса за названием метода) в зависимости от модели/прошивки. Большинство команд можно выполнять в любом режиме, за исключением set_tonemap_params, которая предназначена только для HDR10+HLG, и set_dolby_vision_config_data, которая предназначена только для Dolby Vision. Только для команд, связанных с 3D LUT и Dolby Vision config, требуется переключатель командной строки -s (states) (или использование вместо него -c (calibration_info) для не заявленных типов чипов, если другие команды калибровки работают нормально, но будьте очень осторожны! ) В целом, команды set_1d_en_* (де-гамма, ре-гамма) и set_3by3_gamut_data_* (цветовые матрицы 3x3) должны использоваться только с unity/custom 3D LUT.
Следующие команды поддерживаются через API калибровки:
- Код: Выделить всё
start_calibration, end_calibration,
set_oled_light, set_contrast, set_brightness, set_color
upload_1d_lut, upload_1d_lut_from_file, set_1d_lut_en (? ),
upload_3d_lut_bt709, upload_3d_lut_bt709_from_file, upload_3d_lut_bt2020, upload_3d_lut_bt2020_from_file,
set_1d_en_2_2, set_1d_en_0_45,
set_3by3_gamut_data_bt709, set_3by3_gamut_data_bt2020, set_3by3_gamut_data_hdr (only used in 2019 models), set_3by3_gamut_data_from_file, set_3by3_gamut_en (? ),
set_tonemap_params (for HDR10 picture modes),
set_dolby_vision_config_data (not recommended on >=2020 models! )
Комбинированные команды для настройки режимов обхода и сброса заводских данных:
- Код: Выделить всё
set_bypass_modes_sdr, set_bypass_modes_hdr10, set_bypass_modes_dovi,
reset_factory_data_sdr, reset_factory_data_hdr10, reset_factory_data_dovi
Калибровочные данные специфичны для каждого режима изображения, а режимы изображения независимы для SDR, HDR10+HLG и Dolby Vision. Режимы изображения каждой из трех групп доступны только тогда, когда телевизор находится в соответствующем режиме. То есть для загрузки калибровочных данных для режимов изображения HDR10 необходимо подать на телевизор сигнал HDR10 или воспроизвести файл HDR10, и аналогично для Dolby Vision.
Известными поддерживаемыми строками picture_mode являются:
- Код: Выделить всё
SDR: cinema, expert1, expert2, game, technicolorExpert, filmMaker
HDR10 (+HLG): hdr_cinema, hdr_game, hdr_technicolorExpert, hdr_filmMaker
DV: dolby_cinema_bright, dolby_cinema_dark, dolby_game
Для режимов SDR и HDR10 есть два 3D LUT, которые будут автоматически выбраны в зависимости от флагов цветового пространства сигнала или контента. В принципе, почти весь SDR-контент должен быть BT709, а HDR10 - BT2020, но могут быть нестандартные случаи, когда это не так. Для Dolby Vision 3D LUT BT709 кажется активным и единственным используемым.
Поддерживаемые форматы входных LUT - IRIDAS.cube для 1D и 3D LUT, и ArgyllCMS.cal для 1D LUT. Модели с альфой 9 используют 33-точечные 3D LUT, а модели с альфой 7 - 17-точечные.
При загрузке любых данных 1D LUT настройки баланса белого в сервисном меню игнорируются, а настройки гаммы, цветового пространства и баланса белого в пользовательском меню становятся серыми и недоступными. В моделях 2019 года можно устанавливать значения баланса белого 2pt. В режиме калибровки для HDR10 тоновое отображение обходится стороной.
Примеры калибровки
Изменение предустановки expert1 SDR (ISF Expert Bright Room):
- Код: Выделить всё
# Switch to HDMI2 input
bscpylgtvcommand 192.168.1.18 set_input HDMI_2
# Start calibration mode
bscpylgtvcommand 192.168.1.18 start_calibration expert1
# Set oled light to 39, contrast to 85, brightness and color to 50
bscpylgtvcommand 192.168.1.18 set_oled_light 39
bscpylgtvcommand 192.168.1.18 set_contrast
bscpylgtvcommand 192.168.1.18 set_brightness
bscpylgtvcommand 192.168.1.18 set_color
# Set SDR bypass mode (also known as DDC reset) including uploading unity 1DLUT
bscpylgtvcommand 192.168.1.18 set_bypass_modes_sdr true -s
# Upload custom 1DLUT from file
bscpylgtvcommand 192.168.1.18 upload_1d_lut_from_file "test.cal"
# Upload custom 3DLUT from file into BT709 slot
bscpylgtvcommand 192.168.1.18 upload_3d_lut_bt709_from_file "test3d-1.cube" -s
# Upload custom 3DLUT from file into bt2020 slot
bscpylgtvcommand 192.168.1.18 upload_3d_lut_bt2020_from_file "test3d-2.cube" -s
# End calibration mode
bscpylgtvcommand 192.168.1.18 end_calibration
Тот же сеанс калибровки с помощью сценария:
- Код: Выделить всё
import asyncio
from bscpylgtv import WebOsClient
async def runloop ():
client = await WebOsClient.create ('192.168.1.18', states=["software_info"])
await client.connect ()
await client.set_input ("HDMI_2" ;)
await client.start_calibration (picture_mode="expert1" ;)
await client.set_oled_light (value=39)
await client.set_contrast ()
await client.set_brightness ()
await client.set_color ()
await client.set_bypass_modes_sdr (unity_1d_lut=True)
await client.upload_1d_lut_from_file (filename="test.cal" ;)
await client.upload_3d_lut_bt709_from_file (filename="test3d-1.cube" ;)
await client.upload_3d_lut_bt2020_from_file (filename="test3d-2.cube" ;)
await client.end_calibration ()
await client.disconnect ()
asyncio.run (runloop ())
Загрузка значений байпаса (также известная как сброс DDC)
Следующие команды поддерживаются через API калибровки вместо комбинированной команды set_bypass_modes_*:
- Код: Выделить всё
upload_1d_lut,
upload_3d_lut_bt709, upload_3d_lut_bt2020,
set_1d_en_2_2, set_1d_en_0_45, set_1d_lut_en (? ),
set_3by3_gamut_data_bt709, set_3by3_gamut_data_bt2020, set_3by3_gamut_data_hdr (only used in 2019 models), set_3by3_gamut_en (? ),
Пример использования (все поддерживаемые команды имеют одинаковый синтаксис):
- Код: Выделить всё
# Start calibration mode
bscpylgtvcommand 192.168.1.18 start_calibration hdr_game
# Upload unity 1DLUT (no extra parameter is required)
bscpylgtvcommand 192.168.1.18 upload_1d_lut
# End calibration mode
bscpylgtvcommand 192.168.1.18 end_calibration
Сброс данных заводской калибровки, загруженных через API калибровки
Можно сбросить отдельные данные заводской калибровки (ранее для этого требовался сброс предустановок изображения или заводской сброс) или сбросить все/большинство из них с помощью комбинированной команды reset_factory_data_*. Через API калибровки поддерживаются следующие команды:
- Код: Выделить всё
upload_1d_lut,
upload_3d_lut_bt709, upload_3d_lut_bt2020,
set_1d_en_2_2, set_1d_en_0_45, set_1d_lut_en (? ),
set_3by3_gamut_data_bt709, set_3by3_gamut_data_bt2020, set_3by3_gamut_data_hdr (only used in 2019 models), set_3by3_gamut_en (? ),
set_tonemap_params (for HDR10 picture modes),
set_dolby_vision_config_data (not recommended on >=2020 models! )
Пример использования (все поддерживаемые команды имеют одинаковый синтаксис, за исключением тех, которые требуют указания picture_mode):
- Код: Выделить всё
# Start calibration mode
bscpylgtvcommand 192.168.1.18 start_calibration hdr_game
# Restore factory 1DLUT after custom 1DLUT was uploaded (by specifying empty list)
bscpylgtvcommand 192.168.1.18 upload_1d_lut []
# Restore factory tonemapping parameters after custom ones were uploaded (by specifying empty list)
bscpylgtvcommand 192.168.1.18 set_tonemap_params hdr_game []
# End calibration mode
bscpylgtvcommand 192.168.1.18 end_calibration
Получение команд калибровки
- ПРИМЕЧАНИЕ: они могут быть частично или полностью сломаны (в зависимости от версии прошивки, предустановки изображения и т.д.)
- они могут использоваться как в режиме калибровки, так и вне его
- они возвращают данные активного в данный момент режима изображения
- в случае заводских LUT (иногда и пользовательских LUT) они возвращают постобработанный LUT с учетом всех настроек (включая настройки через меню пользовательских настроек или сервисное меню).
- Код: Выделить всё
get_1d_en_2_2, get_1d_en_0_45,
get_3by3_gamut_data, get_3by3_gamut_data_hdr,
get_1d_lut, get_3d_lut
Пример использования (все поддерживаемые команды имеют одинаковый синтаксис):
- Код: Выделить всё
# Get 3x3 color matrix (no extra parameter is required)
bscpylgtvcommand 192.168.1.18 get_3by3_gamut_data
Резервное копирование и восстановление 1D/3D LUTs и цветовых матриц 3x3
Можно создавать резервные копии и восстанавливать 1D/3D LUTs и цветовые матрицы 3x3 (если интерфейс getter API калибровки работает нормально).
Пример использования для резервного копирования:
- Код: Выделить всё
# Backup 3x3 color matrix
bscpylgtvcommand 192.168.1.18 get_3by3_gamut_data "hdr_cinema_3x3.matrix"
# Backup 1D LUT
bscpylgtvcommand 192.168.1.18 get_1d_lut "hdr_cinema.1dlut"
# Backup 3D LUT
bscpylgtvcommand 192.168.1.18 get_3d_lut "hdr_cinema.3dlut" -s
Пример использования для восстановления:
- Код: Выделить всё
# Start calibration mode
bscpylgtvcommand 192.168.1.18 start_calibration hdr_cinema
# Restore 3x3 color matrix
bscpylgtvcommand 192.168.1.18 set_3by3_gamut_data_from_file "bt2020" "hdr_cinema_3x3.matrix"
# Restore 1D LUT
bscpylgtvcommand 192.168.1.18 upload_1d_lut_from_file "hdr_cinema.1dlut"
# Restore 3D LUT
bscpylgtvcommand 192.168.1.18 upload_3d_lut_bt2020_from_file "hdr_cinema.3dlut" -s
# End calibration mode
bscpylgtvcommand 192.168.1.18 end_calibration
Преобразование файлов 1D LUT в файлы ArgyllCMS cal и vica versa
Также можно конвертировать файлы 1D LUT в файлы ArgyllCMS cal и наоборот. Обратите внимание, что преобразование происходит с потерями из-за ошибок округления и несоответствия точек в 1D LUT и значений I в cal-файле.
Пример использования для конвертации:
- Код: Выделить всё
# Convert 1DLUT file to ArgyllCMS cal file
bscpylgtvcommand 192.168.1.18 convert_1dlut_to_cal "dovi_cinema.1dlut" "dovi_cinema.cal"
# Convert ArgyllCMS cal file to 1DLUT file
bscpylgtvcommand 192.168.1.18 convert_cal_to_1dlut "dovi_cinema.cal" "dovi_cinema.1dlut"
Загрузка пользовательских параметров тонового отображения для предустановок HDR10
- доступно только для поддерживаемых моделей (>=2019)
- параметры (в этом порядке): picture_mode, peak luminance, mastering_peak_1, rolloff_point_1, mastering_peak_2, rolloff_point_2, mastering_peak_3, rolloff_point_3
- Код: Выделить всё
# Start calibration mode
bscpylgtvcommand 192.168.1.18 start_calibration hdr_cinema
# Upload custom tonemapping parameters for HDR10 Cinema preset
bscpylgtvcommand 192.168.1.18 set_tonemap_params hdr_cinema 760 1000 75 4000 60 10000 50
# Or upload custom tonemapping parameters to disable internal tonemapping entirely
bscpylgtvcommand 192.168.1.18 set_tonemap_params hdr_cinema 760 1000 100 4000 100 10000 100
# End calibration mode
bscpylgtvcommand 192.168.1.18 end_calibration
Запись файла конфигурации Dolby Vision для загрузки на USB
Скопируйте созданный файл конфигурации DolbyVision_UserDisplayConfiguration.txt в корень флешки, подключите ее к телевизору, затем воспроизведите контент DoVi (например, с помощью встроенного приложения), появится всплывающее окно обновления конфигурации DoVi.
Примечание: всплывающее окно обновления конфигурации DoVi через USB отключается, если в данный пресет DoVi через API калибровки загружены какие-либо данные (например, пользовательский 1D LUT). Необходимо либо обновить конфигурацию заранее, либо сбросить пресет в пользовательском интерфейсе (или через API калибровки), обновить конфигурацию DoVi через USB, а затем снова загрузить данные (например, пользовательский 1D LUT), если это необходимо.
- режимы изображения: dolby_cinema_bright - 1 (DoVi Cinema Home), dolby_cinema_dark - 2 (DoVi Cinema), dolby_game - 4 (DoVi Game)
- праймериз (в этом порядке): xr, yr, xg, yg, xb, yb
- значение black_level по умолчанию: 0.0001
- конфигурация моделей 2018 года отличается от конфигурации более новых моделей (>=2019)
- Код: Выделить всё
# Writing DoVi config for one preset (DoVi Cinema)
bscpylgtvcommand 192.168.1.18 write_dolby_vision_config_file "[{\"picture_mode\": \"dolby_cinema_dark\", \"white_level\": 750, \"primaries\": [0.6796, 0.3187, 0.2595, 0.6849, 0.1448, 0.0494]}]" -s
# Writing DoVi config for all the presets (DoVi Cinema Home, Cinema, Game) based on one set of data
bscpylgtvcommand 192.168.1.18 write_dolby_vision_config_file "[{\"white_level\": 750, \"primaries\": [0.6796, 0.3187, 0.2595, 0.6849, 0.1448, 0.0494]}]" true D:\temp -s
# Writing DoVi config for all the presets (DoVi Cinema Home, Cinema, Game) by specifying them separately
bscpylgtvcommand 192.168.1.18 write_dolby_vision_config_file "[{\"picture_mode\": \"dolby_cinema_bright\", \"white_level\": 710, \"primaries\": [0.6796, 0.3187, 0.2595, 0.6849, 0.1448, 0.0494]}, {\"picture_mode\": \"dolby_cinema_dark\", \"white_level\": 750, \"primaries\": [0.6796, 0.3187, 0.2595, 0.6849, 0.1448, 0.0494]}, {\"picture_mode\": \"dolby_game\", \"white_level\": 680, \"primaries\": [0.6796, 0.3187, 0.2595, 0.6849, 0.1448, 0.0494]}]" -s
Использование внутреннего генератора тестовых шаблонов (iTPG)
- его можно использовать как в режиме калибровки, так и вне его
- он может быть нарушен множеством различных способов в данной версии прошивки / режиме изображения / и т.д.
- доступно только на поддерживаемых (>=2019) моделях
- модели 2019 года требуют Full Range 10-битных значений (0-1023) при использовании HDR10, в то время как модели >=2020 - Limited Range 10-битных значений (64-940)
- все поддерживаемые модели требуют полного диапазона 10-битных значений (0-1023) с использованием DoVi
более полезный пример можно найти в каталоге docs/scripts.
- Код: Выделить всё
# Set full screen black window in the background
bscpylgtvcommand 192.168.1.18 set_itpg_patch_window 0 0 0 0 3840 2160 0 0
# Set 5% window green patch on top of the background
bscpylgtvcommand 192.168.1.18 set_itpg_patch_window 0 1023 0 1
# Display the 2 set patches
bscpylgtvcommand 192.168.1.18 toggle_itpg true 2
# Disable the 2 set patches
bscpylgtvcommand 192.168.1.18 toggle_itpg false 0
# Or using "overlay" 5% window green patch on top of the content
bscpylgtvcommand 192.168.1.18 set_itpg_patch_window 0 1023 0 0
# Display the set patch
bscpylgtvcommand 192.168.1.18 toggle_itpg true 1
# Disable the set patch
bscpylgtvcommand 192.168.1.18 toggle_itpg false 0
Отображение окна градации:
- Код: Выделить всё
# Set black to white gradation window for vertical type
bscpylgtvcommand 192.168.1.18 set_itpg_gradation_window 0 3 0 0 0 1 1 1
# Display vertical gradation bars
bscpylgtvcommand 192.168.1.18 toggle_itpg true 1 1
# Set black to white gradation window for horizontal type
bscpylgtvcommand 192.168.1.18 set_itpg_gradation_window 0 1 0 0 0 1 1 1
# Display horizontal gradation bars
bscpylgtvcommand 192.168.1.18 toggle_itpg true 1 2
# Display 2 colored vertical gradation bars at the same time
bscpylgtvcommand 192.168.1.18 set_itpg_gradation_window 0 3 610 520 230 1 1 1
bscpylgtvcommand 192.168.1.18 set_itpg_gradation_window 1 3 610 50 23 1 1 1
bscpylgtvcommand 192.168.1.18 toggle_itpg true 2 1
# Disable gradation window
bscpylgtvcommand 192.168.1.18 toggle_itpg false 0
Руководства по калибровке
Коллекцию руководств по калибровке можно найти в каталоге docs.
Развитие bscpylgtv
Добавление доступных настроек для новых моделей
Коллекция полезных команд и скриптов доступна в каталоге docs/utils, чтобы добавить поддержку новых прошивок в будущем и облегчить PR.
Добавление нового типа чипа
Только команды калибровки, связанные с 3D LUT и Dolby Vision config, требуют наличия типа чипа для корректной работы, используя метод calibration_support_info. Поле model_name в ответе метода get_software_info содержит тип микросхемы:
- Код: Выделить всё
bscpylgtvcommand 192.168.1.18 get_software_info true
Единичное тестирование
Необходимые дополнительные пакеты:
- Код: Выделить всё
pip install numpy pytest pytest-asyncio pytest-mock
Запуск модульных тестов для установленного пакета:
- Код: Выделить всё
# Run all the tests in all files in tests/ directory
pytest tests
# Run all the tests in one file
pytest tests/test_webos_client_lite.py
# Run a specific test in one file
pytest tests/test_webos_client_calibration.py -k test_set_ui_data_methods
Форум
Тема на форуме.
Благодарность
Спасибо следующим людям:
- TheRealLink за оригинальную реализацию
- bendavid за множество модификаций, особенно за функциональность калибровки
- Maassoft за полезные идеи
- Hifi4Vision за его бесценные знания о калибровке