Как стать автором
Обновить

Комментарии 46

Очень интересно. На моем компуктере тоже много I2C устройств оказалось. А можно как узнать что это за устройства и посмотреть что передается в шине? Вдруг что-то полезное там есть.

 i2cdetect -l
i2c-1   i2c             mga i2c                                 I2C adapter
i2c-0   smbus           SMBus I801 adapter at 0400              SMBus adapter

Как вариант, а вообще только с доками на материнскую плату. На своей я эмпирическим путём. Ещё можно ID устройств считывать и гуглить что это там висит

Кстати да, чтение SPD оперативки, вроде, довольно типичный пример применения видимых в системе I2C-интерфейсов.

Раньше можно было и писать, кстати.

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

Поддерживают ли какие-нибудь мониторы переключение источника сигнала по I2C?

Было бы здорово переключаться между виртуалкой с пробросанным GPU и хостом по горячей клавише.

UPD: можно. Нужно было ветку до конца читать.

Там был стандартный DDC/CI, конечно. Смена прошивки -- это уже недокументированная (?) фича. Предполагаю, что от вендора к вендору сильно зависит. На том мониторе, с которым я работал эту "фичу" отключить нельзя.

Для сервисных центров в свое время были программы от брендов для коррекции дефектов изображения мониторов. Подключались через адаптер от COM порта к VGA. Например SOFTJIG PROGRAM FOR WINDOWS95, winDDC, EDID Editor ViewSonic

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

Эти утилиты (как минимум несколько) позволяли считывать и записывать всю прошивку монитора. Мастер мог затереть текущую прошивку заводской и при дефолтных значениях диагностировать дефект. Если сама перепрошивка не устранила проблему.

Понял, я видел такие штуки тоже. Просто в моём случае не надо специализированного железа, достаточно запустить программу в обычном окружении.

Ниже уже упомянули DDC, но вскользь. А я недавно был очень удивлён, когда полез гуглить, что же это за загадочный пункт "DDC/CI: Enable" в меню моего монитора. Оказывается, давно есть стандарт, чтобы управлять монитором с компьютера: поставил ddcutil из репозитория -- и можно, например, регулировать яркость по HDMI. Ну или видеовход на мониторе на VGA переключить (но это уже попахивает настройкой фаервола по ssh).

В отличие от фаерволла вы можете переключить входящий сигнал и кнопочками из меню монитора.

Это очень удобно если у вас несколько источников сигнала для монитора.

Например два монитора, к которым подключены ноут и десктоп, и kvm-свитч, который у еет переключать мышь с клавиатурой, но только один монитор.

Второй придётся переключать руками в меню монитора или вот такими командами. Их и из-под винды можно отдавать.

Про кнопочки, разумеется, согласен -- просто "улыбнуло" наличие такого параметра. На самом деле не удивлюсь, если команды DDC принимаются сразу со всех видеовходов, но тут уже от монитора зависит.

Это только с Linux работает, или на W тоже можно?

То что можно - это без сомнения. Но видимо будет несколько сложнее.

Судя по сайту, не сильно сложнее...

Простите, не ту ссылку кинул - вот с исходником.

Вот бы еще пример, как из-под винды к данной шине обращаться.

По виндой раньше всё зависело от дров видюхи. Есть тулина www.entechtaiwan.com/lib/softmccs.shtm она умеет с мониторами общаться через этот I2C(DDC).
Думаю если сильно приспичит то можно пореверпсить, в поисках того как она это делает.

Вот примерчики бы на эти функции где тон найти ... https://learn.microsoft.com/en-us/windows-hardware/drivers/display/i2c-bus-and-child-devices-of-the-display-adapter Или надо свой драйвер видеоадаптера под это сочинять?

Как же воняет тот код с GitHub! Надеюсь, его в таком виде не используют.

дисплей живёт по адресу 0x27 (справедливости ради — это 0x4E, но не будем путать людей).

Почему 0x4e? Согласно спецификации, адрес - это 7 бит, следующих за условием СТАРТ, и в данном случае это именно 0x27. Очень часто почему-то указывают сдвинутый влево адрес вместе битом с направления передачи, это неправильно, это действительно часто путает и приходится пробовать 2 варианта, если недоступен даташит.

В документации часто указывают старший адрес. Например на блоки питания. Так что поэтому приходится думать. Ну и по логике бит, таки полный адрес выглядит так. Но я согласен с вами.
Все гениальное-просто.
Спасибо!

Прикольная штука. Только, вроде, VGA разъем уже мало где есть?

На видеокартах VGA разъём уже выпилили, но на материнских платах он всё еще востребован

Ха, даже думал спросить, нет ли этой штуки в HDMI :)

Ссылка в посте
Вначале дал список интерфейсов: dvi, vga, hdmi

Сори, невнимательно читал.

Но ведь можно передавать через i2c какое-нибудь небольшое разрешение (типа 320x200) и выводить, получается, нормальную VGA картинку... Пусть и с низкой частотой... (задумался)

В конце есть ссылки, и там так и делают.

Отличная статья! Интересно попробовать будет, и не только такой дисплей подключить. Навскидку есть дома модули АЦП и OLED дисплеи...

У меня на работе висит громадное количество устройств вот так через VGA.

Где можно купить такой экран?

Достаточно просто найти где они продаются.

Простите за такое капитанство, просто откровенную рекламу делать не хочу.

Ай-яй-яй. Теперь получилась реклама для Google!

Вообще есть специализированные чипы преобразователи интерфейсов. Тыкаешь его в usb , а на выходе получаешь com, i2c, spi, итд не помню точно названия но это что то из разряда ftdi. Такой чип например используется в дебагере для esp32

Как пример адаптеры-переходники USB-1-Wire часто встречаются в системах мониторинга температур в помещениях.

Пробовал его. Начался цирк с драйверами и настройкой. Очень ненадёжно, особенно для промышленного применения. Но это тоже допустимый вариант.

"12:11" Что то пошло не так. Надо изучать PTP. :-)

Более чем неожиданно!

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.