i2c ポートがランダムに変更されます。

i2c ポートがランダムに変更されます。

私はアップスクエアコンピュータを使用しています。 HATコネクタのi2cポートを介してデバイスを接続します。使用すると、i2cdetect異なるポートで同じデバイス(アドレスで識別)を検出します。再起動の間に変更が発生します。

私が知っているのは、 にルールを設定すれば、この問題を解決できると思いますが、etc/udev/rules.dどうすればいいのか分かりません。特に、センサーをフィルタリングしてルールを作成する方法がわかりません。私が見たことkernelはありますが、i2c-2次回の再起動時にこれが変わるかどうか疑問に思います。

答え1

私はSeed ODYSSEYボードであなたと同じ問題を経験しました。ルールファイル71-i2c.rulesを/etc/udev/rules.d/に追加してこの問題を解決しました。

71 - i2c.rulesの詳細コード

SUBSYSTEM=="i2c-dev", KERNELS=="i2c_designware.1", SYMLINK+="i2c-10"

私はこのコードを使用して、私が望む特定のi2cへのシンボリックリンクを作成します。そして、/dev/i2c-10で作業すると、常に正しいデータを取得できます。

希望のi2cバスの特定のデータを取得するには?次のコマンドを使用して取得できます。

udevadm info -a /dev/i2c-1

このコマンドの出力で、i2cバスに含めたい特定のデータを見つける必要があります。

答え2

私が知っている限り、i2c番号は動的に割り当てられているため、変更される可能性があります。したがって、静的に使用することはできないと思います。

関連情報