👀

M5StackLLMでUSB-有線LANアダプタ(RTL8152)を使う

2024/12/06に公開

忘れてしまいそうなので手順を記しておきます。(間違っていたら教えてください。)

有線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