LINUX.ORG.RU

Определить включен или выключен монитор (TV)

 , ,


0

2

Добрый день!

Телевизор подключен к компьютеру так: PC — переходник DVI-VGA — TV.

Как программно определить состояние телевизора (включен/выключен) и можно ли вообще это определить?

Спасибо!

P.S. о блин, в похожих темах много подобных вопросов.... сейчас посмотрю их

P.P.S. хмм... не очень-то похожите темы помогли

★★

Последнее исправление: swarnk (всего исправлений: 2)

Ответ на: комментарий от legolegs

Вот в похожих темах и предлагали грепать логи иксов. Я что-то не нашел в этих логах ничего по поводу статуса подключенного TV.

Тут мне пришла в голову идея. Может быть можно определить включен или выключен TV через звуковуху? PC и TV соединены через джеки. Или тоже не вариант?

swarnk ★★
() автор топика
Последнее исправление: swarnk (всего исправлений: 1)
Ответ на: комментарий от imb

TV точно поддерживает CEC. Насчет видеокарты — не уверен. Да и подключен он не по HDMI...

P.S. Видеокарта CEC не поддерживает

swarnk ★★
() автор топика
Последнее исправление: swarnk (всего исправлений: 1)

там же по VGA должен какой-то EDID передаваться?
может он теряется в переходнике?

Deleted
()
Ответ на: комментарий от Deleted

может и теряется, я не знаю.

В логах иксов есть вот такое:

[21.831] (--) NVIDIA(0):     SAMSUNG (CRT-1) (boot, connected)

т.е. видно что телевизор подключен, а вот On/Off статуса нигде не видно

вот что нагрепалось в логах по edid

[21.832] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[21.832] (**) NVIDIA(0):     device SAMSUNG (CRT-1) (Using EDID frequencies has been
[21.832] (**) NVIDIA(0):     enabled on all display devices.)
swarnk ★★
() автор топика
Последнее исправление: swarnk (всего исправлений: 1)
Ответ на: комментарий от Deleted

Через EDID только модель и флаг-разрешение передается. EDID - это тупо микра памяти, которая общается по I2C, причем как ведомая, тупо висит все время, там никаких управляющих сигналов нет.

Oberstserj ★★
()
Ответ на: комментарий от swarnk

Как правило монитор идет как ведомое устройство по наличию сигнала. Через VGA состоянием монитора (питанием) не управляют. Монитор сам должен вкл/выкл по наличию потока. Так что не ищи.

Oberstserj ★★
()
Ответ на: комментарий от swarnk

P.S. Видеокарта CEC не поддерживает

Его и VGA не поддерживает

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Хорошо, определились, по vga кабелю хрен определишь on/off state.

Что скажешь насчет второй идеи? Определять через звуковую карту. Тут что нибудь придумать можно?

swarnk ★★
() автор топика
Ответ на: комментарий от swarnk

Определять через звуковую карту.

Честно говоря, трудно это себе представляю. TV ничего специфического в аудио тракт выдавать не умеет. Во всяком случае через джеки.

Oberstserj ★★
()
Ответ на: комментарий от swarnk

А какая цель вообще? Не в смысле определить состояние телека, а по какому алгоритму ты им управлять хочешь? ТИпа не переключаться на внешний монитор в виде этого телека если он не подключен или что/как?

Oberstserj ★★
()
Ответ на: комментарий от swarnk

Если есть USB порты, то при включении питания можно отлавливать 5В питания. В том числе и через звуковуху. Если сможешь следить за микрофонным входом все время, то через резистивный делитель подключи питание порта на микрофонный вход и следи.

Oberstserj ★★
()

Можно попробовать поковырять https://en.wikipedia.org/wiki/Display_Data_Channel с помощью ddcutil/ddctool. Я не помню что именно умеет этот интерфейс и как он себя ведёт, если монитор выключен. Ну и работоспособность зависит от видеокарты, драйвера видеокарты, конкретного монитора и способа подключения.

Deleted
()
Ответ на: комментарий от Deleted

DDC - это все навсего EDID. Ничего, кроме как передать видеокарте флаг разрешения и марку/модель монитора оно не умеет. Вышеуказанные утилиты умеют только читать/переписывать одержимое EDID, которая представляет из себя всего навсего eeprom. Речь про VGA, разумеется.

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Хватит нести бред. DDC - это протокол, при помощи которого видеокарта и монитор могут обмениваться данными по I2C (для которого в VGA есть отдельные контакты). Там кроме EDID ещё много чего может быть. Точно помню, что когда-то очень давно менял яркость монитора при помощи одной из утилит для управления через DDC. Правда никакого практического применения я тогда этому не нашёл.

Вот кстати ещё одна тулза: https://github.com/ddccontrol. Там даже БД есть с мониторами и их возможностями по управлению.

Deleted
()
Ответ на: комментарий от swarnk

Определять через звуковую карту. Тут что нибудь придумать можно?

В принципе можно, если заморочиться.
Сделать петлю:

Выход звуковухи > вход монитора > выход монитора > вход звуковухи.

Мой benq абсолютно точно разрывает цепь в выключенном состоянии.

Пищать на выход и смотреть, пришло ли что на вход.

devl547 ★★★★★
()
Ответ на: комментарий от Deleted

Хватит нести бред.

Я тебе еще раз повторяю. По задумке все ок. По факту в 99% случаев тупо впаяна I2C eeprom, которая кроме как флаг разрешения и модель монитора отдать в карту ничего больше не умеет.

Там кроме EDID ещё много чего может быть.

Может. Но почему то все производители скопом кладут таежный прибор на это самое «может».

Точно помню, что когда-то очень давно менял яркость монитора при помощи одной из утилит для управления через DDC.

Тот редкий случай из оставшихся 1%. На этом функционал кстати и заканчивается. Тот же самый CEC через DDC никто реализовывать уже не стал.

Там даже БД есть с мониторами и их возможностями по управлению.
возможностями по управлению.

Дай-ка угадаю! Регулировка яркости?) И что характерно, преимущественно Dell и шлак основанный на железках от Dell.

Oberstserj ★★
()
Ответ на: комментарий от devl547

Мой benq абсолютно точно разрывает цепь в выключенном состоянии.
Пищать на выход и смотреть, пришло ли что на вход.

Там не совсем разрыв цепи идет, там паразитное сопротивление возникает. Шумов много будет. Но попробовать стоит.

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Дай-ка угадаю! Регулировка яркости?) И что характерно, преимущественно Dell и шлак основанный на железках от Dell.

Некоторые, судя по файлам, можно включать/выключать, менять пресеты и так далее.

В общем надо чтобы топикстартер позапускал ddcutil и ddccontrol и посмотрел что они ему выдадут на тему возможностей конкретно его монитора.

Deleted
()

Как определить - не знаю, а вот выключить можно. Помню, ещё под DOS писал утилиту на асме из пяти строк, которая вырубает монитор. Главное, чтобы он поддерживал стандарт Energy Star.

tiinn ★★★★★
()
Ответ на: комментарий от Oberstserj

Вот что мне на stackoverflow посоветовали (теоретически).

Speakers are not «turned on or off», they receive an analog signal that can be positive or negative, and is neutral at rest. With Pulseaudio, you can monitor what data is sent to one particular output (e.g. line-out for speakers), and see if it's non-zero by using sox or similar for a short bit of data.

Что скажете по этому поводу?

swarnk ★★
() автор топика
Ответ на: комментарий от swarnk

Что скажете по этому поводу?

Ты не правильно понял эту фразу.

Deleted
()
Ответ на: комментарий от swarnk

подключи через «умную розетку» с USB выходом. Есть нагрузка - какой-то сигнал идет через USB, нет - не идет

Jopich1
()
Ответ на: комментарий от swarnk

берешь любой сигнал с ТВ ( их много если там есть SCART ) с ненулевым напряжением. Дальше простейшая схема с USB преобразователем (arduino, простейший компаратор и т п ).

Jopich1
()
Ответ на: комментарий от swarnk

Что скажете по этому поводу?

Это в каком направлении? Вам надо слушать звуковой картой компа телевизор, а не наоборот. Телек у Вас в режиме монитора и на линейных выходах и выходе наушников тишина. Вернее не тишина, а шумы, уровень которых сравним с шумами звуковой карты. Как все это отследить пульсой и главное стабильно использовать я слабо представляю. Попробовать можно конечно, но гемор обещаю приличный.

Oberstserj ★★
()
Ответ на: комментарий от swarnk

Не обнаружены мониторы, поддерживающие DDC/CI.

Если бы монитор не поддерживал DDC, то видеокарта не смогла бы получить с него EDID. А она смогла:

[21.832] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[21.832] (**) NVIDIA(0):     device SAMSUNG (CRT-1) (Using EDID frequencies has been
[21.832] (**) NVIDIA(0):     enabled on all display devices.)
И даже сказала, что он - SAMSUNG.

Так что проблема с доступом к DDC не в самом мониторе. Вот это читал: http://www.ddcutil.com/nvidia/?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от swarnk

Не обнаружены мониторы, поддерживающие DDC/CI.

Потому что кроме edid там ничего и не сделано. Кстати говоря в последнее время производители даже в документации в распиновке разъема VGA прямым текстом указывать стали именно EDID, а не DDC. Да и опять же, повторюсь, Вы не найдете монитор, в котором полностью реализован DDC во всех его возможностях. А телевизор и подавно будет иметь только EDID. Бросьте эту затею.
Предлагаю откопать в недрах телека какой-нибудь источник напряжения или строб-сигнала и через делитель подать его на микрофонный вход. Просто и надежно.

Oberstserj ★★
()
Ответ на: комментарий от Deleted

Если бы монитор не поддерживал DDC, то видеокарта не смогла бы получить с него EDID. А она смогла:

Теперь вы несете бред. DDC - это всего лишь описание набора стандартов. Никто производителя не обязывал кстати использовать полный функционал DDC.

И даже сказала, что он - SAMSUNG.

Ага, именно эту инфу в частности и передает EDID. Что, кстати вам и было дано в выхлопе:

Using HorizSync/VertRefresh ranges from the EDID for display

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Ага, именно эту инфу в частности и передает EDID. Что, кстати вам и было дано в выхлопе:

Мне не очевидно как именно читается EDID при неработающем DDC.

Deleted
()
Ответ на: комментарий от Deleted

я кстати забыл загрузить модуль i2c_dev

Когда загрузил его ddccontrol -p выдает вот что:

Найдены мониторы :
 - Устройство: dev:/dev/i2c-1
   Поддерживается DDC/CI: Нет
   Имя монитора: VESA standard monitor
   Тип входа: Аналоговый
Не обнаружены мониторы, поддерживающие DDC/CI.

но проверить меняется ли вывод ddcontrol при включении/выключении TV не могу. TV дома, а я не дома....

короче я окончательно запутался в этих едидах и прочая )

swarnk ★★
() автор топика
Последнее исправление: swarnk (всего исправлений: 1)
Ответ на: комментарий от Deleted

Мне не очевидно как именно читается EDID при неработающем DDC.

Тяжко с вами. Еще раз: DDC - это НАБОР стандартов. В частности повсеместно реализуется EDID тупо с помощью eeprom микросхемке, которая висит на I2C. Как только подключаете к видюхе микра шлет в одностороннем порядке данные: модель и Hsync/Vsync. На этом производитель закончил реализацию. И так повсеместно за крайне редкими исключениями.

Oberstserj ★★
()
Ответ на: комментарий от swarnk

Что и требовалось доказать.

но проверить меняется ли вывод ddcontrol при включении/выключении TV не могу.

Вангую что нет. Но на всякий случай киньте полную модель телека(лучше конкретно платы), посмотрю по схемкам что там вообще. Подозреваю, что тупо eeprom висит на I2C, какая-нибудь 24С02 или что-то в этом роде...

Oberstserj ★★
()
Ответ на: комментарий от swarnk

Отлично! Теперь осталось сдампить всю доступную инфу когда монитор включен, standby и выключен. Затем сравнить результат. Если между состояниями будет разница хотя бы в 1 бит - значит можно программно определить состояние без удаления гланд через звуковую карту.

Deleted
()
Ответ на: комментарий от Deleted

Да, конечно.

Ближе к концу дня появится человек, который подергает on/off TV. Сейчас TV находится в состоянии standby.

Но мне почему-то кажется, что результата не будет, но кто знает - может и повезет.

swarnk ★★
() автор топика
Последнее исправление: swarnk (всего исправлений: 1)
Ответ на: комментарий от Deleted

Отлично! Теперь осталось сдампить всю доступную инфу когда монитор включен, standby и выключен.

Тоже не факт. На многих мониторах/телеках эта самая микра питается не с борта монитора/телека, а с видюхи по пину 9 (там +5 вольт). И в этом случае данные будут слаться всегда, даже независимо от того включени ли вообще телек в розетку :). В общем пробовать надо.

Oberstserj ★★
()

Нашёл! Библиотека системного программиста, том 21.

Последняя функция, рассматриваемая нами, служит для определена текущего режима видеосистемы
На входе:
    AH    4Fh
    AL    10h
    BL    02h
На выходе:
    AL    4Fh - функция поддерживается;в противном случае функция не поддерживается
    AH    0, в случае успешного завершения, 1 в случае ошибки
    BH    Текущий режим
Программа POWER, исходный текст которой представлен в листинге 7.3, демонстрирует использование функций VBE Power Management. После запуска программы POWER, она определяет возможности сохранения электроэнергии, доступные вашей видеоподсистеме. Затем, если компьютер поддерживает VBE Power Management, программа гасит экран монитора. Чтобы продолжить работу нажмите любую клавишу клавиатуры компьютера.

tiinn ★★★★★
()
Ответ на: комментарий от Deleted

Ну, в общем, как и ожидалось, в это телеке тупо висит вот эта пределсть. Тупо шлет в одностороннем порядке данные модель и Hsync/Vsync. Тупо своими концами I2C. Ничем поуправлять не получится. Только читать.

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

На многих мониторах/телеках эта самая микра питается не с борта монитора/телека, а с видюхи по пину 9 (там +5 вольт). И в этом случае данные будут слаться всегда, даже независимо от того включени ли вообще телек в розетку :).

Именно так это должно работать на всех мониторах и телевизорах. Иначе произойдёт хрень если комп включится при выключенном мониторе. Поэтому нужно именно данные дампить. Это единственный способ понять что там висит и что что именно оно умеет. Ну, кроме разобрать или посмотреть на схеме (если она есть).

В общем пробовать надо.

Вот и я к тому же.

Deleted
()
Ответ на: комментарий от Oberstserj

Почему? Если телеком поддерживается, то

Текущий режим:
00h - ON (монитор включен)
01h - STANDBY (погашен экран монитора)
02h - SUSPEND (отключена строчная развертка)
04h - OFF (монитор отключен)
08h - REDUSED ON (уменьшена яркость изображения)

tiinn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.