В поисках шины I²C на материнской плате
Sep. 9th, 2022 07:08 pmПорой мне кажется я проклят этой шиной, потому что с ней постоянно приходится сталкиваться. Вот сейчас тоже.
Понадобилось мне в рабочих нуждах подключить по шине i2c, а точнее smbus некое устройство (блок питания, но посложнее чем просто БП). В качестве жертвенной материнки используется Supermicro X8DTL-i, да, да, именно та на которой я делал комп. Потому, что могу, потому что дёшево и потому, что не жалко сжечь.
Теперь внимание вопрос: где на серверной материнской плате есть i2c (smbus)?
На матери есть разъём PMBUS, для подключения блока питания.

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

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

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

Жертвенная плата.
Как можно видеть, у меня есть некоторый тестовый шилд для i2c, который я вешаю на PCI и другие шины. Этот шилд с успехом определился на VGA и даже радостно взял с него питание.
Так, что если вам надо где-то быстро взять шину i2c в вашем компе, вы знаете что делать. Туда же всякие hdmi, dvi и прочее.
Понадобилось мне в рабочих нуждах подключить по шине 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 и прочее.
no subject
Date: 2022-09-09 04:36 pm (UTC)no subject
Date: 2022-09-09 05:16 pm (UTC)no subject
Date: 2022-09-09 06:27 pm (UTC)no subject
Date: 2022-09-09 06:29 pm (UTC)no subject
Date: 2022-09-09 07:12 pm (UTC)no subject
Date: 2022-09-09 08:58 pm (UTC)no subject
Date: 2022-09-09 08:59 pm (UTC)no subject
Date: 2022-09-09 09:15 pm (UTC)no subject
Date: 2022-09-10 04:10 am (UTC)А так то я тоже с VGA начал
no subject
Date: 2022-09-10 07:53 am (UTC)no subject
Date: 2022-09-10 08:19 am (UTC)no subject
Date: 2022-09-10 09:58 pm (UTC)Вот примерно так:
no subject
Date: 2022-09-10 10:01 pm (UTC)Дальше пакет (в debian) i2c-tools, в нём весь комплект для работы с ними.
Ну или есть питоновский модуль smbus, кажется, который делает примерно то же самое.
no subject
Date: 2022-09-10 10:17 pm (UTC)Вариант первый — i2c-tiny-usb
Вариант второй — переходник на cp2112.
У второго преимущество в том, что он определяется как HID-устройство, то есть в теории заведётся на винде даже без админских прав.
Linux-ом поддерживаются оба.
Как вариант — вот такая железка: https://www.aliexpress.com/item/32820488243.html — проверял, работает (когда к роутеру цеплял датчик температуры/влажности)
no subject
Date: 2022-09-11 04:09 am (UTC)no subject
Date: 2022-09-11 07:49 am (UTC)no subject
Date: 2022-09-11 07:50 am (UTC)no subject
Date: 2022-09-11 02:20 pm (UTC)cp2112 определялся всегда.
К сожалению мои железки всем комплектом остались в России, так что деталей уже не скажу — на каком ядре и как.
Но та платка работала и на desktop-е с debian 11, и на роутере со свежим openwrt.
Собственно отсутствующие драйвера были причиной, почему я не взял альтернативный вариант от microchip, который был дешевле.
no subject
Date: 2022-09-13 05:19 am (UTC)no subject
Date: 2022-09-13 09:46 am (UTC)no subject
Date: 2022-09-13 09:54 am (UTC)no subject
Date: 2022-09-13 09:57 am (UTC)no subject
Date: 2022-09-13 10:07 am (UTC)P.S. Добавить что ли проводок на AVR чтоб красиво читать что это нафиг там за монитор?...
no subject
Date: 2022-09-13 07:18 pm (UTC)no subject
Date: 2022-09-13 07:23 pm (UTC)no subject
Date: 2022-09-14 04:19 am (UTC)(так-то я не знал — может они и конфликтуют)
no subject
Date: 2022-09-14 04:21 am (UTC)Хотя если добавить вывод всех режимов и управление — не такое уж и бесполезное устройство выходит.
no subject
Date: 2022-09-14 06:03 pm (UTC)home:$ ls /dev/i*
/dev/i2c-0 /dev/i2c-1 /dev/i2c-2 /dev/i2c-3
no subject
Date: 2022-09-14 08:15 pm (UTC)no subject
Date: 2022-09-14 10:01 pm (UTC)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-е)
no subject
Date: 2022-09-15 02:27 pm (UTC)~$ 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
Здесь, похоже, еще и точскрин (который я не могу запустить под линухом) и тачпад (который работает только после инициализации из винды).