私はRPi Zero 2 W、Ubuntuサーバー20.04の2番目の(GPIOベースのi2c)を有効にして、次のものを接続しようとしていますセンサーRPiは別の用途で使用されているため、プライマリi2cピンは物理的に占有されていることに注意してください。ボードたくさんの記事や同様の質問を読みましたが、センサーを検出できませんでした。
これが私のブート構成ファイル:
start_x=1
enable_uart=1
dtparam=i2c_arm=on
dtoverlay=i2c-gpio,bus4,i2c_gpio_delay_us=8,i2c_gpio_sda=23,i2c_gpio_scl=24
推奨に従って、SDA と SCL に 2x4.7 抵抗器も追加しました。抵抗器なしでも試してみました。
走るときi2c検出 -lデフォルトのバスのみが表示されます:
ubuntu@rpi:~$ i2cdetect -l
i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter
明らかに何も与えないi2c検出 -y 1:
ubuntu@rpi:~$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
センサーはプライマリ i2c ポートに接続した場合にのみ表示されます。
ubuntu@rpi:~$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
追加のシステム情報は次のとおりです:
ubuntu@rpi:~$ uname -a
Linux rpi 5.4.0-1050-raspi #56-Ubuntu SMP PREEMPT Thu Jan 13 13:09:35 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
すでにカーネルのアップグレードを試みましたが、Ubuntu 20.04 は 5.4 バージョンのままになっているようです。
ご意見をいただければ幸いです。
アップデート
- 2022/01/31: 追加したdmesg ログ。
答え1
いろいろ試した結果、RPi上のUbuntuは/boot/config.txt
何らかの理由で設定を無視する(または上書きする)ので、/boot/firmware
場所を優先することが判明しました。調べたところ、同じ設定が/boot/firmware/syscfg.txt
見つかりました。そこで、dtoverlay=i2c-gpio,...
syscfg再起動後、i2c センサーが魔法のようにリストに表示されました。すべてのガイドで/boot/config.txt
真実の 1 つの点として言及されているように、これは奇妙で残念なことです。私はこれに何時間も無駄にしました。