Milk-V DuoをWiFiに繋げてみました。
Milk-V Duoは超小型のLinuxシングルボードコンピュータです
を参照
背景
進めているプロジェクトの中で、Milk-V DuoをWiFiに接続する必要がありました。
Milk-V DuoはWiFiモジュールを持たず、独力では無線LANにアクセスできないので、外付けのドングルとそのドライバを用意する必要がありました。
機材
筆者が使用した機材は以下のとおりです。お使いの機材やソフトウェアに合わせて読み替えてください。
名前 | URL | 備考 |
---|---|---|
Ubuntu 22.04 LTS | ビルドするPCのOS | |
Milk-V Duo 64MB | https://milkv.io/duo | |
IO Board | https://milkv.io/docs/duo/io-board/usb-ethernet-iob | |
TP-Link TL-W725N | https://www.tp-link.com/jp/home-networking/adapter/tl-wn725n/ | 内蔵チップはRTL8188EU。他のRTL8188EU搭載ドングルでも同一ドライバで問題なく動作。 |
ソフトウェアの準備
Buildroot SDKの準備
公式のgithubリポジトリからBuildroot SDKをクローンします。(この辺は、公式のドキュメントでも説明されています)
公式のドキュメントに従ってビルドしておき、MicroSDカードに書き込んでおきます。
Wi-Fiドライバの準備
https://github.com/ivanovborislav/rtl8188eu
筆者はこのドライバを使いました。
クローンして、そのディレクトリに入ります。
makeでビルドします。
make ARCH=riscv CROSS_COMPILE=/path/to/sdk/duo-buildroot-sdk/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl- KSRC=/path/to/sdk/duo-buildroot-sdk/linux_5.10/build/cv1800b_milkv_duo_sd -j$(nproc)
成功するとドライバのディレクトリに8188eu.koとその他複数のファイルが生成されます。
OS側の準備
Buildrootを書き込んだSDカードをPCに挿入します。
rootfsをマウントし、その下のmnt/system/koにさっき生み出した8188eu.koをコピーします。
接続情報の記述
rootfs/etc/wpa_supplicant.confを編集します。
ctrl_interface=/var/run/wpa_supplicant
update_config=1
country=JP #居住国に合わせて変更
network={
ssid="APのSSID"
psk="APのパスワード" #パスワードなしのAPの場合は明示的にクオートなしでNONEと記述
key_mgmt=WPA-PSK #同様にパスワードなしのAPの場合は明示的にクオートなしでNONEと記述
}
自動起動の設定
ドライバの自動挿入
/mnt/system/ko/loadsystemko.sh上方に以下を追記
insmod /mnt/system/ko/8188eu.ko
WPA Supplicantの自動起動
/mnt/system/auto.shとして自動起動に使用できるスクリプトがBuildroot側で用意されているので、有り難く使わせてもらいましょう。以下を追記
wpa_supplicant -Dn80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
MicroSDカードをアンマウントし、Duoに挿入して起動します。
うまく行けばDuoがWiFiに接続され、認識されるはずです。
BuildrootはApacheとかも入れられるようなので、小型ウェブ鯖みたいなのもアリ?