Até onde eu sei, os controladores SMBus são representados como dispositivos I²C no Linux. (Como o SMBus é um subconjunto do I²C, esses dispositivos não suportarão todos os comandos I²C, mas somente aqueles relacionados ao SMBus.) Assim, ter o controlador SMBus de sua placa-mãe visível como /dev/i2c-X
device é necessário para qualquer programa userspace comunicar-se com o seu Dispositivo PCIe SMBus.
Para ter /dev/i2c-X
dispositivos, você precisa carregar o módulo i2c-dev
. Você pode fazer isso manualmente executando modprobe i2c-dev
no shell ou adicionando uma linha contendo apenas o nome do módulo ao arquivo /etc/modules
. Este último carregará o módulo automaticamente em cada inicialização do sistema.
Além disso, você precisa carregar um driver para o controlador SMBus específico em sua placa-mãe (se não for carregado automaticamente). Eu não sei qual mainboard (chipset) você tem. O controlador SMBus da maioria dos chipsets Intel é suportado pelo módulo do kernel i2c-i801
Linux.
Se você carregou os dois módulos, deve haver um ou mais barramentos I²C disponíveis para o seu sistema. Para cada barramento, há um dispositivo /dev/i2c-X
e uma entrada em /sys/bus/i2c/devices/
com o mesmo nome.
Para restringir qual é o seu dispositivo PCIe, você pode tentar:
$ grep . /sys/bus/i2c/devices/i2c-*/name
Isso lhe dará uma lista de todos os ônibus e imprimirá o nome do driver para cada barramento. Como você tem o i2c-tools instalado, você também pode usar i2cdetect -l
para obter uma lista semelhante.
Editar: Parece haver um problema com os chipsets i2c-i801
e Intel C220 em algumas placas principais tornando o módulo SMBus inutilizável.