dlinyj: (Default)
[personal profile] dlinyj
Порой мне кажется я проклят этой шиной, потому что с ней постоянно приходится сталкиваться. Вот сейчас тоже.


Понадобилось мне в рабочих нуждах подключить по шине i2c, а точнее smbus некое устройство (блок питания, но посложнее чем просто БП). В качестве жертвенной материнки используется Supermicro X8DTL-i, да, да, именно та на которой я делал комп. Потому, что могу, потому что дёшево и потому, что не жалко сжечь.
Теперь внимание вопрос: где на серверной материнской плате есть i2c (smbus)?

На матери есть разъём PMBUS, для подключения блока питания.



Разъём реально классный для того, чтобы оперативно что-то цеплять по шине i2c, но проблема в том, что на этой же шине живут и другие устройства на материнке. И к большому сожалению, устройства по адресу пересеклись с моим. На своей железке, по бюрократическим причинам поменять адрес не могу, на матери тоже думал передвинуть, но оказался ядрёный контроллер вентиляторов и тоже не удалось (да, я так жёстко упорот). Едем дальше, где же ещё взять i2c?


Разъём PMBUS.


Следом можно найти i2c на шине PCI, PCI-e. Для этого надо замкнуть соответствующие джампера. Но, к большому сожалению оказалось что это та же самая шина, что и pmbus, и там же точно так же буду иметь пересечение адресов. Осталось самое страшное, i2c в разъёме VGA. И это, на самом деле, вполне рабочий варик оказался.


Где искать i2c в разъёме VGA.


Как оказалось, это вполне себе отдельная шина, на которой, кроме монитора вообще ничего и не было. Всё адресное пространство твоё.


Жертвенная плата.


Как можно видеть, у меня есть некоторый тестовый шилд для i2c, который я вешаю на PCI и другие шины. Этот шилд с успехом определился на VGA и даже радостно взял с него питание.

user@user-X8DTL:~$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77


Так, что если вам надо где-то быстро взять шину i2c в вашем компе, вы знаете что делать. Туда же всякие hdmi, dvi и прочее.

Date: 2022-09-09 04:36 pm (UTC)
From: [identity profile] rbs-vader.livejournal.com
А вот вопрос: третьего дня на али купил платок мультиплексоров i2c, оно вообще как работает? У меня там в задумке универсальный монитор окружающей среды на esp, ну и хочется навесить датчиков от пыли до гейгера. На платах оных есть вход с обычными sda/scl и сразу несколько "выходов". Но как оно вместе будет работать — пока не знаю, не все датчики приехали пока.

Date: 2022-09-09 05:16 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ничего внятного не могу сказать, так как не работал и не знаю о чем речь.

Date: 2022-09-09 06:27 pm (UTC)
From: [identity profile] alexadmin.livejournal.com
В модулях DIMM еще

Date: 2022-09-09 06:29 pm (UTC)
From: [identity profile] alexadmin.livejournal.com
Мультиплексор — это микросхема со своим собственным адресом на той же I2C. Через него подаются команды какую шину подключить. Обычно так. Надо смотреть на чем конкретно сделано и читать документацию на микросхему.

Date: 2022-09-09 07:12 pm (UTC)
From: [identity profile] lubezniy.livejournal.com
Спасибо. А там какие-то специальные драйверы нужны, чтобы с i2c под какую-то ОС работать?

Date: 2022-09-09 08:58 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Если правильно понял вопрос, то я просто смотрел те, которые видел Linux.

Date: 2022-09-09 08:59 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну у меня только две шины были видны

Date: 2022-09-09 09:15 pm (UTC)
From: [identity profile] lubezniy.livejournal.com
Просто мне никогда ещё не приходилось подключать i2c-устройства к PC, интересуюсь механизмом взаимодействия железа и ПО.

Date: 2022-09-10 04:10 am (UTC)
From: [identity profile] simsun.livejournal.com
Даже удобней отчасти, что сразу внутри корпуса, но там наверное 3.3 ?
А так то я тоже с VGA начал

Date: 2022-09-10 07:53 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Под Линукс обычная работа с файл-устройством.

Date: 2022-09-10 08:19 am (UTC)
From: [identity profile] lubezniy.livejournal.com
Спасибо. Попробую как-нибудь.

Date: 2022-09-10 09:58 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
Так i2c согласуется по уровням элементарно парой полевиков и парой резисторов к каждому из них. Модуль продаётся за копейки на aliexpress.
Вот примерно так:
Image

Date: 2022-09-10 10:01 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
На linux — есть модуль i2c-dev. После загрузки появляется пачка шин в /dev/i2c-*
Дальше пакет (в debian) i2c-tools, в нём весь комплект для работы с ними.
Ну или есть питоновский модуль smbus, кажется, который делает примерно то же самое.

Date: 2022-09-10 10:17 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
Вообще — если цель подцепить что-то i2c-шное к компьютеру, то есть варианты проще (хотя и не дешевле).
Вариант первый — i2c-tiny-usb
Вариант второй — переходник на cp2112.
У второго преимущество в том, что он определяется как HID-устройство, то есть в теории заведётся на винде даже без админских прав.
Linux-ом поддерживаются оба.
Как вариант — вот такая железка: https://www.aliexpress.com/item/32820488243.html — проверял, работает (когда к роутеру цеплял датчик температуры/влажности)

Date: 2022-09-11 04:09 am (UTC)
From: [identity profile] lubezniy.livejournal.com
Спасибо. Прямо интересно стало. Подумываю уже, пойдёт ли это дело на внешней видеокарте.

Date: 2022-09-11 07:49 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Я повозился с дровами этих железяк, в бубунте не завелись. Нафиг эти грабли, когда есть заводское решение.

Date: 2022-09-11 07:50 am (UTC)
From: [identity profile] dlinyj.livejournal.com
лучше с малины начать, чтобы понимание возникло.

Date: 2022-09-11 02:20 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
Хм, у меня заводились обе — i2c-tiny-usb был глючный, он был самодельный и не всегда определялся на шине usb, но если определялся — тогда работал без проблем.
cp2112 определялся всегда.
К сожалению мои железки всем комплектом остались в России, так что деталей уже не скажу — на каком ядре и как.
Но та платка работала и на desktop-е с debian 11, и на роутере со свежим openwrt.

Собственно отсутствующие драйвера были причиной, почему я не взял альтернативный вариант от microchip, который был дешевле.

Date: 2022-09-13 05:19 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Вопрос — а при наличии нескольких выходов VGA там как — несколько шин или одна? Если одна, то как там что, если мониторы как устройства пересекаются?

Date: 2022-09-13 09:46 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Логика подсказывает, что у каждого разъёма свой i2c.

Date: 2022-09-13 09:54 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Это правда? А то мало ли чего нелогичного встречается — вон и на половине поздравительных открыток на сегодня — то таракан, то костыли :-)

Date: 2022-09-13 09:57 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Да хрен его знает :). Мне лень проверять, но ИМХО у каждого монитора, если они одинаковые, микрухи имеют один и тот же адрес.

Date: 2022-09-13 10:07 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Это как раз логично, но мало ли...

P.S. Добавить что ли проводок на AVR чтоб красиво читать что это нафиг там за монитор?...

Date: 2022-09-13 07:18 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
Несколько, проверено. Иначе флешки в мониторах конфликтовать будут.

Date: 2022-09-13 07:23 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
А ещё некоторые мониторы по i2c управляться умеют (яркость, контраст, переключение входов и тд).

Date: 2022-09-14 04:19 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Огромное спасибо за "проверено"!
(так-то я не знал — может они и конфликтуют)

Date: 2022-09-14 04:21 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Вчера придумал ещё одно "бесполезное устройство" (как минимум уже есть коробочка с тумблером и манипулятором, выключающим тумблер при его включении) — при подключении к монитору оно выводит на него его название.

Хотя если добавить вывод всех режимов и управление — не такое уж и бесполезное устройство выходит.

Date: 2022-09-14 06:03 pm (UTC)
From: [identity profile] e-pipe.livejournal.com
Ух ты! У меня на компе в девайсах нашлось аж четыре шины...

home:$ ls /dev/i*
/dev/i2c-0 /dev/i2c-1 /dev/i2c-2 /dev/i2c-3

Date: 2022-09-14 08:15 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Одна на матери (pci, pci-e), остальные видео.

Date: 2022-09-14 10:01 pm (UTC)
From: [identity profile] Николай Замотаев (from livejournal.com)
user@smaug:~$ sudo i2cdetect -l
i2c-3 i2c AMDGPU DM i2c hw bus 3 I2C adapter
i2c-1 i2c AMDGPU DM i2c hw bus 1 I2C adapter
i2c-8 smbus SMBus PIIX4 adapter port 2 at 0b00 SMBus adapter
i2c-6 i2c AMDGPU DM aux hw bus 3 I2C adapter
i2c-4 i2c AMDGPU DM aux hw bus 0 I2C adapter
i2c-2 i2c AMDGPU DM i2c hw bus 2 I2C adapter
i2c-0 i2c AMDGPU DM i2c hw bus 0 I2C adapter
i2c-9 smbus SMBus PIIX4 adapter port 1 at 0b20 SMBus adapter
i2c-7 smbus SMBus PIIX4 adapter port 0 at 0b00 SMBus adapter
i2c-5 i2c AMDGPU DM aux hw bus 2 I2C adapter

Итого — 4 шины от видяхи, 3 материночных. Кто такие aux — не знаю.
(Это машинка на мобильном Ryzen-е)
Edited Date: 2022-09-14 10:01 pm (UTC)

Date: 2022-09-15 02:27 pm (UTC)
From: [identity profile] e-pipe.livejournal.com
На ноутбуке их оказалось вообще аж 13:
~$ sudo i2cdetect -l
i2c-3 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-10 i2c i915 gmbus dpc I2C adapter
i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-8 smbus SMBus I801 adapter at f040 SMBus adapter
i2c-6 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-4 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-11 i2c i915 gmbus misc I2C adapter
i2c-2 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-0 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-9 i2c i915 gmbus dpb I2C adapter
i2c-7 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-5 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-12 i2c DPDDC-A I2C adapter

Здесь, похоже, еще и точскрин (который я не могу запустить под линухом) и тачпад (который работает только после инициализации из винды).

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 01:10 pm
Powered by Dreamwidth Studios