Armadilloフォーラム

eth1が使用できない

ttt90

2025年8月4日 22時12分

==========
製品型番:Armadillo-IoT G4
Debian/ABOSバージョン:Alpine Linux 3.15
カーネルバージョン:5.10.112-0-at on an aarch64 (/dev/ttymxc1)
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
お世話になっております。

現在、Armadillo-G4 IoTを使用しており、2ポート目のEthernet(eth1)を利用しようとしていますが、一部の個体で下記のエラーが発生し、eth1が利用できない状況です。

[ 306.010240] imx-dwmac 30bf0000.ethernet eth1: no phy at addr -1
[ 306.016201] imx-dwmac 30bf0000.ethernet eth1: stmmac_open: Cannot attach to PHY (error: -19)

この問題は、**シリアル番号が `00C900290021` 以降の個体でのみ発生**しており、それ以前の個体では同じソフトウェア(カーネル・デバイスツリー・ブートローダー)で問題なく eth1 が動作しています。

当方で確認した内容:
- `eth1` インターフェース自体は `ip addr`, `/sys/class/net/` に存在
- しかし `/proc/device-tree/` に `ethernet@30bf0000` ノードが存在せず
- `printenv fdt_file` は空で、`.dtb` は `boot.scr` で読み込んでいると推測
- U-Boot を含むSWUを使用しており、`.dtb` は特に変更していません

質問事項:
1. シリアル番号 `00C900290021` 以降のモデルでハードウェアの変更(PHYのアドレスなど)はありましたでしょうか?
2. eth1を使用する場合、推奨される `.dtb` または `fdt_file` の設定はありますか?
3. 当該ハードに対応したデバイスツリー `.dts` サンプルがあればご提供いただけますでしょうか?

お手数をおかけしますが、ご確認・ご回答のほどよろしくお願いいたします。

コメント

at_dominique.m…

2025年8月5日 10時41分

ttt90 さん

お世話になっています、
マルティネです。

> 1. シリアル番号 `00C900290021` 以降のモデルでハードウェアの変更(PHYのアドレスなど)はありましたでしょうか?

「以降」というのはまだ改番前の個体も製造しましたが、00C90029* のロットは新しい phy が搭載されていますので、
phy の変更による問題で間違いありません。

> 2. eth1を使用する場合、推奨される `.dtb` または `fdt_file` の設定はありますか?

ありません。eth0 は Armadillo X2 と同じ phy を利用しますので、古い OS でも対応していますが、
eth1 は Linux 5.10.161-r0 以降、imx-boot 2020.04-at11 以降が必要です(ABOS 3.17.1-at.1、2023年1月リリース)

> 3. 当該ハードに対応したデバイスツリー `.dts` サンプルがあればご提供いただけますでしょうか?

弊社のサポートの推奨としては dts の変更ではなく、他の修正や脆弱性対応も入ってますので更新するようにお願いしています。

armadillo サイトのアップデート許可を残した場合は、大変お手数ですが、初期の頃から全くアップデートしてなかったので 3.16.at-1 ~ 3.20-at.4 の間のアップデート(2022年6月 ~ 2024年10月)を通る必要があります。

# 一回目のアップデート
swupdate -d '-u https://download.atmark-techno.com/armadillo-iot-g4/image/baseos-x2-3.20.2-at.1.swu'
# 2回目で最新にアップデートします
abos-ctrl update

ご自身の SWU 鍵しか許可してない場合は当社サイトの最新の baseos tar アーカイブと imx-boot のイメージで問題ないはずです。

アップデートの際に問題か疑問があれば聞いてください。

また、どうしても今のカーネルのまま使いたい場合はサポートできませんが、最新の dts を参考できるかもしれません。
https://github.com/atmark-techno/linux-5.10-at/blob/master/arch/arm64/b…

お手数ですが、
よろしくお願いします

マルティネさん

お世話になっております。
迅速な回答ありがとうございます。

00C90029* のロットは新しい PHYが搭載されているということで承知いたしました。

ご回答を踏まえた上で、追加の質問があります。
・今後もPHYが変更される可能性はありますでしょうか?
・00C90029*より前のロットに最新のBaseOSをインストールしても問題はないでしょうか?
・ `00C900290021` 以降で改番前の個体も製造しているとのことですが、改番前の個体をご教授いただけますでしょうか?

以上、お手数ですが、よろしくお願いいたします。

at_dominique.m…

2025年8月5日 13時40分

マルティネです。

> ・今後もPHYが変更される可能性はありますでしょうか?

他の PHY の変更は今のところ考えてません。
可能性の話でしたら、10年後の仕入れ状態が保証されてませんので、ゼロとは言い切れませんが、少なくともしばらく変更されません。

> ・00C90029*より前のロットに最新のBaseOSをインストールしても問題はないでしょうか?

はい、u-boot で phy を認識して Linux の dts を修正(利用しない phy の設定を無効化)しますので、同じソフトで旧モデルと新しいモデルを利用できます。
更新していただければ、意識せずにどちらもの Armadillo を利用できるはずです。

> ・ `00C900290021` 以降で改番前の個体も製造しているとのことですが、改番前の個体をご教授いただけますでしょうか?

すみません、「改版前」の誤記でした(PHY変更前と同じ物です)
00C90029 で始まる個体番号はすべて新しい PHY が搭載されてます。
00C90030 以降の個体はまだしばらく 00C90028以前と同じ構成で製造しましたが、今後に出荷する Armadillo のバージョンを指定できないので、両方のモデルを対応しないといけません。

よろしくお願いします

マルティネ様

お世話になっております。
ご回答ありがとうございました。

追加でご相談がございます。

ご案内いただいた baseos-x2-3.20.2-at.1.swu を使用して、Armadillo-G4 IoT(シリアル番号:00C900290021以降)へBaseOSのアップデートを試みました。
本体がネットワークに接続できないため、Windows PCでSWUファイルをダウンロードし、USBメモリ経由でArmadilloに渡して swupdate を実行しております。

しかしながら、以下のようなエラーが出力され、アップデートに失敗しました。

swupdate -i /mnt/baseos-x2-3.20.2-at.1.swu
SWUpdate v2021.11.0
 
Licensed under GPLv2. See source distribution for detailed copyright notices.
 
[INFO ] : SWUPDATE started :  Software Update started !
[ERROR] : SWUPDATE failed [0] ERROR : mkdir: cannot create directory ‘/target//var/app/volumes/SWU’: Read-only file system
[ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
[ERROR] : SWUPDATE failed [0] ERROR : /!\ Could not create /target//var/app/volumes/SWU
[ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
[ERROR] : SWUPDATE failed [0] ERROR : ERROR: not a btrfs filesystem: /target/var
[ERROR] : SWUPDATE failed [0] ERROR : Command failed: sh -c '${TMPDIR:-/var/tmp}/scripts/post_rootfs_baseos.sh' -- /var/tmp//_home_jenkins_worker..rootfs_baseos_sh_____c2e8af902ec97d7abcecfd8fbc13c9696ded0f14.zst
[ERROR] : SWUPDATE failed [0] ERROR : Error streaming _home_jenkins_worker..rootfs_baseos_sh_____c2e8af902ec97d7abcecfd8fbc13c9696ded0f14.zst
[ERROR] : SWUPDATE failed [1] Image invalid or corrupted. Not installing ...
swupdate_image_write failed: Broken pipe

現行のBaseOSが古く、/target/var が btrfs ファイルシステムでないことが原因と考えています。

ただし、機器の構造上、SDカードによるイメージのフル書き込みは物理的に困難な状況です。
そのため、現行の古いBaseOSでも実行可能な .swu ファイルの提供や、別のアップデート手段がございましたらご教示いただけないでしょうか。

お手数をおかけしますが、よろしくお願いいたします。

マルティネです。


> [ERROR] : SWUPDATE failed [0] ERROR : mkdir: cannot create directory ‘/target//var/app/volumes/SWU’: Read-only file system
> [ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
> [ERROR] : SWUPDATE failed [0] ERROR : /!\ Could not create /target//var/app/volumes/SWU

おそらくですが、こちらのエラーは OS が古いのではなく、 /etc/swupdate_preserve_files に /var/app/volumes か /var/app/volumes/SWU が記載されてると思いますが、あってますか?
/var/app/volumes は rootfs外なので swupdate_preserve_files から削除してもう一度試してください。
(違ってたらすみません)

こちらの 3.20 のアップデートはもうどうしようもないですが、明日は再現してエラーメッセージを改善したいと思います。

> [ERROR] : SWUPDATE failed [0] ERROR : ERROR: not a btrfs filesystem: /target/var
> 現行のBaseOSが古く、/target/var が btrfs ファイルシステムでないことが原因と考えています。

こちらの btrfs のエラーも気になりますが、おそらく失敗した後のエラー処理がおかしくなっただけだと思います。
古いバージョンからでもインストールできます(少なくとも 3.20 次代はまだデフォルトで ext4 の rootfs をつかっていたので、ファイルシステムは関係ありません。3.21-at.2以降までアップデートしたら新しい rootfs が勝手に btrfs に変換されます)
こちらも明日改めて再現できるか見てみます。

お手数ですがよろしくお願いします

at_dominique.m…

2025年8月7日 10時52分

マルティネです。

前の返事の表示がおかしくなって失礼しました。

 > [ERROR] : SWUPDATE failed [0] ERROR : mkdir: cannot create directory ‘/target//var/app/volumes/SWU’: Read-only file system
> > [ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
> > [ERROR] : SWUPDATE failed [0] ERROR : /!\ Could not create /target//var/app/volumes/SWU

こちらの問題は「POST /var/app/volumes/SWU」またそれ以下のパス(/var/app/volumes/SWU/hoge/hoge)で再現できました。
今後のアップデートでエラー改善ではなく、パスを無視するように修正します。
(persist_file ですでに追加できなくなってますが、チェックを追加するなら無視でいいと思います)

/etc/swupdate_preserve_files を直して再び試してください

> ERROR: not a btrfs filesystem: /target/var

こちらは思っていた通りエラー処理の無視できる出力ですが、修正すべき箇所ありましたのでこちらも修正します。

引き続きよろしくお願いします

マルティネ様

お世話になっております。
ご確認ありがとうございます、とんでもございません。
ご指摘の通り/etc/swupdate_preserve_files内から/var/app/volumes/SWUを削除したところ、swupdateは実行されました。
しかし、更新後に再起動された際に下記のようなエラーが出ます。

Loading fdt boot/armadillo.dtb
## Flattened Device Tree blob at 45000000
   Booting using the fdt blob at 0x45000000
   Loading Device Tree to 0000000052bc3000, end 0000000052bf4fff ... OK
/soc@0/bus@30800000/ethernet@30be0000/mdio/fec-phy@0 is BADPATH
ethernet0/mdio/fec-phy@3 is BADPATH
/soc@0/bus@30800000/ethernet@30bf0000/mdio/eqos-phy@0 is BADPATH
ethernet1/mdio/eqos-phy@3 is BADPATH
 
Starting kernel ...
 
[    0.089552] imx8mp-pinctrl 30330000.pinctrl: pin MX8MP_IOMUXC_NAND_ALE already requested by 30330000.pinctrl; cannot claim for lvds-reset
[    0.089564] imx8mp-pinctrl 30330000.pinctrl: pin-56 (lvds-reset) status -22
[    0.089574] imx8mp-pinctrl 30330000.pinctrl: could not request pin 56 (MX8MP_IOMUXC_NAND_ALE) from group lvds_reset_grp  on device 30330000.pinctrl
[    0.089584] gpio-reset lvds-reset: Error applying setting, reverse things back
[   10.466069] mmc2: Timeout waiting for hardware interrupt.

タイムアウトを何度も繰り返すと一度抜けるのですが、
下記のメッセージが1分周期で表示されて、OSが起動されません。

[    0.089873] gpio-reset lvds-reset: Error applying setting, reverse things back
[   21.429963] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[   21.436070] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=2625
[   84.449939] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[   84.456042] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=10501
[  147.469953] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  147.476052] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=18377
[  210.489944] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  210.496040] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=26253
[  273.509936] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  273.516032] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=34129
[  336.529965] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  336.536067] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=41835
[  399.549657] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  399.555759] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=49192
[  462.570282] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  462.576379] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=56566
[  525.589958] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  525.596056] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=63947
[  588.609659] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  588.615755] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=71325
[  651.629657] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[  651.635756] rcu:     1-...0: (0 ticks this GP) idle=b9a/1/0x4000000000000000 softirq=36/36 fqs=78873

デバイスツリーの設定ファイルも変更が必要でしょうか。
ご確認よろしくお願いいたします。