👀
M5StackLLMでUSB-有線LANアダプタ(RTL8152)を使う
忘れてしまいそうなので手順を記しておきます。(間違っていたら教えてください。)
有線LANアダプタ付きのUSB-HUBを入手
MOGOOD USB CハブUSB2.0x2と100MbpsのLANポートを備えたハブです。
使われているチップはRealtekのRTL8152
デバイスドライバはカーネルに含まれているのでそれを母艦PC上でクロスコンパイルします。
クロスコンパイル環境の作成
cinimlさんの手順を元にカーネルのクロスコンパイル環境を作成します。
フォルダはModuleLLMを作業フォルダにしています。参考:cinimlさんのgist
.configの編集
下記の行を変更します。
- # CONFIG_USB_RTL8152 is not set
+ CONFIG_USB_RTL8152=m
moduleのコンパイル
make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
するとdrivers/net/usb/配下にr8152.ko
というファイルが作成されていると思います。
カーネルモジュールのコピー
r8152.koをModuleLLMにコピーします。
フォルダは下記
/lib/modules/4.19.125/
ModuleLLM上での操作
modprobe
modprobe r8152
リブートしてHUBが接続されるとlsmodでr8152が出てきます。
この状態でip a
を実行するとまだSTATUSはDOWNのままです。
/etc/network/interfacesの編集
下記のように変更します。
固定IPの場合(アドレス等は自分の環境に合わせてください。)
auto eth1
allow-hotplug eth1
iface eth1 inet static
adress 192.168.0.2
netmask 255.255.255.0
getaway 192.168.0.1
dns-nameservers 192.168.0.1 8.8.8.8
DHCPの場合
auto eth1
allow-hotplug eth1
iface eth1 inet dhcp
これで、再起動するとeth1にIPアドレスが割り当てられてネットワークが使えるようになっていると思います。
未解決な点
同一のネットワークで複数接続しているからかもしれませんが、デバッグボードのeth0やUSB-WiFiのwlan0等ネットワークが複数あると優先順位があるようでeth0が優先されるようです。
私の場合は、/etc/network/interfaces でeth0の設定をコメントアウトすることによりeth1が使えるようになりました。(正解は分かりません。)
Discussion