3.4K Views
February 04, 25
スライド概要
M5Stack LLM 座談会 #02 - connpass
https://stack-boards-enthusiasts.connpass.com/event/342944/
! buildrootとかニーズないかなw 辛さ等級 !!!!!!!!!!!!!!!!!!!! (20辛) [email protected] 2025/02/06 M5Stack LLM 座談会 #02
・正方形のM5Stack買わない人です StickとかATOMは持ってます ESP32はモジュールのが好きです ・ハンダ付けが面倒です ・3Dプリンタとかレーザーカッターとかいっぱいです @kinneko ・平日毎日、技術ネタ書いてます FANBOXで検索してくだちい ・薄い本書きます BOOTHで検索してくだちい ・Maker系イベント出展してます 直近は 3/1-2「メイカーズながおかまつり2025」 ・去年転職しましたが、今年定年退職年齢ですw ・ネットワーク屋と組み込みLinux屋の自認があります いろいろやりすぎて何の人かは相手によって違います ・クラウド嫌いですが、食べるのにクラウド使います
こんなAndroid搭載カメラのサービス開発してます @kinneko Android (組込,アプリ) クラウド AI, Rust 音声処理 等 「リファラル採用」積極展開中!人がたりませんw 勤務地:文京区湯島とかフルリモートとか
Coreを使わないで、単体で 使用するノウハウをまとめ @kinneko た「薄くない本」です。 A5版PDF v0.7版発行: 2025/1/27 本文320ページ (まだ更新中!) https://kinneko.booth.pm/items/6429476
1. はじめる前に 2. LLM Moduleを買う 3. Axera AX630C 4. LLMモジュールが届く 5. デバッグボードとモジュールを接続 6. システム環境を調べる 7. 動作中のシステムを見てみる 8. 有線LANを接続する 9. lls-sysと通信してみる 10. んで、何を送ればいいの? 11. SYS (システムユニット) - lsmode(利用可能なモデルを取得) 12. AUDIO(オーディオユニット) - setup(初期化) - pause(タスクの一時停止) - work(一時停止中のタスクを再開) - exit(ユニットの作業終了とリソース解放) - taskinfo(タスクインスタンス情報の取得) 13. KWS(キーワードスポッティング) - setup(初期化) - pause(タスクの一時停止) - work(一時停止中のタスクを再開) - exit(ユニットの作業終了とリソース解放) - taskinfo(タスクインスタンス情報の取得) 14. ASR(自動音声認識) - setup(初期化) - hwinfo(CPU負荷、メモリ負荷、チップ温度を取得) - reset(ユニットの再起動) - reboot(システム全体を再起動) - ping(システム通信状態確認) - pause(タスクの一時停止) - work(一時停止中のタスクを再開) - exit(ユニットの作業終了とリソース解放) - taskinfo(タスクインスタンス情報の取得) https://kinneko.booth.pm/items/6429476
15. LLM(大規模言語モデル) 18. telnetの終わり方とセッションの継続性 19. llmサービス群のファイルを調べる - setup(初期化) - inference(推論データの送信・実行) - fileコマンドのインストール - pause(タスクの一時停止) - llmサービス群のバイナリファイルを調べる - work(一時停止中のタスクを再開) 20. 音を鳴らす - exit(ユニットの作業終了とリソース解放) - KSWの応答音声ファイル - taskinfo(タスクインスタンス情報の取得) - sample̲audioで音を鳴らす 16. TTS(テキストから音声への変換) - tinyplayで音を鳴らす - setup(初期化) 21. マイクを使った録音 - inference(推論データの送信・実行) - pause(タスクの一時停止) - 録音してみる - exit(ユニットの作業終了とリソース解放) - 入力ゲインの調整 17. Application(アプリケーション例) 22. LEDの制御 - work(一時停止中のタスクを再開) - 録音時の音量調整 - taskinfo(タスクインスタンス情報の取得) - sample̲audioのドキュメント 1. Text To Speech(TTS) 2. Text Assistant(テキストアシスタント) 3. Voice Assistant(音声アシスタント) https://kinneko.booth.pm/items/6429476
23. LLM Software Configuration Tool - パスワードの変更 (動かない) - /soc/scripts/usb-adb.sh - /etc/init.d/axsyslogd - /etc/init.d/S99checkboot systemA - ロケールの設定 - /etc/init.d/S99checkota start - タイムゾーンの変更 - /usr/local/m5stack/bin/ax̲usb̲adb̲event.sh - ホスト名の変更 - SSHの起動 27. デバッグボードがない場合:adb接続 - メモリ割り当ての変更 - adbコマンドをインストールする - SSHでのrootユーザーアクセスの許可 - adbとは? - その他の機能 - 接続デバイスを確認する 24. タイムゾーンのデフォルトがCST 25. ユーザーの追加とsudo問題 - LLMモジュールのシェルにアクセスする - LLMモジュールにファイルを転送する - LLMモジュールからファイルを転送する - ユーザーを追加する - sudoに失敗する問題 - adbで使えないオプション 26. LLMモジュールの起動時設定(rc.local) - /etc/profile - /usr/local/m5stack/startup-script.sh - /etc/init.d/axemac.sh - /soc/scripts/auto̲load̲all̲drv.sh - /soc/scripts/npu̲set̲bw̲limiter.sh 28. デバッグボードがない場合:USB接続 - デバッグボードのフレキが外れやすい - 給電ポート付きのUSB HUBを使ってみる(失敗) - OTG対応アダプタを追加購入する -1- - OTG対応アダプタを追加購入する -2- (失敗) - OTG対応アダプタを追加購入する -3- https://kinneko.booth.pm/items/6429476
29. USB-NICで有線LAN接続 -Apple編- ハードオフでUSB-NICを調達する - デバイスドライバをビルドする - デバイスドライバを組み込んでみる - ビルド済みのドライバを使う - ネットワークの設定を行う - デバイス名を固定する - 利用者からの動作報告 30. USB-NICで有線LAN接続 -TP-Link編31. 普通のUSB HUBを接続する 290 32. USB-WiFiで無線LAN接続 -TP-Link編- TP-Link TL-WN725N なげーよ! - kernel環境の確認とツールのインストール - TL-WN725Nの情報を確認する - 対応ドライバを調べる - ドライバをビルドする - ドライバーのコピー - モジュールのロード - 無線LANの接続設定 https://kinneko.booth.pm/items/6429476
デバッグボードのフレキ、外れがち...
これで使えるの超便利! Wi-Fi 電源
フレキの再接続に疲れたら... あなたもUSB有線LAN、USB無線LANに取り組む時! コピれば動く! (そこまで簡単じゃないw) M5Stack̲LLM̲USBNIC̲ASIX: ASIX USB-NIC用ビルド済みドライバ https://github.com/kinneko/5Stack̲LLM̲USBNIC̲ASIX M5Stack̲LLM̲USBWIFI Realtek RTL8188EUS)向けUSB-WiFi用ビルド済みドライバ https://github.com/kinneko/M5Stack̲LLM̲USBWIFI
本日のお題 buildrootとかニーズないかなw
! この資料作ってたら 勢いで薄い本に しちゃったので 読んでねw https://kinneko.booth.pm/items/6559849
1. はじめる前に 2. ゴタクはいいからさっさとビルドさせろ 3. LLMモジュールのbuildrootが公開された それって何ですか? Buildrootって何? 4. SoC のLinux 起動の仕組み 1. ブートROM(BootROM)の実行 2. SPLの起動 3. メインブートローダの起動 さらなるハードウェア初期化 5. ビルドに必要な環境を整える Ubuntu Server 22.04.5 LTS をセットアップする ! amd64環境でないと動かない ! 事前のパッケージインストールは不要 ! zipがいない... ! simg2imgが足りない ! simg2imgのパッケージがない ! 24.04.1では少しパッケージ足りない ! ncursesライブラリが足りない 19 デバイスツリーとカーネルイメージの読み込み kernel起動パラメータの設定 Linux kernelに処理を引き渡し 4. Linuxカーネルの起動 カーネル自身の内部初期化 デバイスドライバのロード rootfs の用意 init プロセスの起動 13 https://kinneko.booth.pm/items/6559849
6. Buildroot の仕組み Buildroot のビルドシステム 自動処理するファイル config.in *.mk *.hash *.patch external.desc 自動処理されないファイル フックスクリプト その他のファイル Buildrootの動作 設定のロード (Configuration) ツールチェーンのビルド (Toolchain) パッケージのビルド (Packages) Linux kernel のビルド ルートファイルシステムの構築 (Root Filesystem) ブートローダーのビルド (Bootloader) イメージの生成 (Image Generation) クリーンアップ (Optional) ステップごとのビルドディレクトリ 7. LLM̲buildroot のファイル構造 プロジェクトのダウンロード br2-externalメカニズム configs external.desc package m4projects ax620e̲bsp̲sdk tinyalsa̲custom config.in LICENSE ! MITライセンスと書かれているが... README.md tools ! binにあるバイナリはライセンス不明でソースがない その他の注意点 ! プロジェクトにはリリースもブランチもない ! コミットメッセージが意味がない board ! ボードが同居しているので混乱が生じている模様 ! board/m5stack/の下がいっしょくた ! ライセンス不明のファイルがゴロゴロ... docs external.mk linux provides toolchain boot https://kinneko.booth.pm/items/6559849
8. ビルドの実行 ビルド実行用のシェルスクリプト creat̲Module̲LLM̲buidlroot̲image.sh の中身 ビルドに必要なパッケージのインストール 作業用ディレクトリの作成 buildroot 環境の作成 Buildrootの初期設定と実行 最小限のシステムイメージをビルドする ! ホスト名をチェックする罠がある ! -jオプションが無効になってしまう ! ライセンス不明のバイナリ ! さすがにこれはTypoでいいですよね? ビルドの完了 Ubuntu イメージをビルドする 9. ビルドしたイメージの内容確認 axp ファイルに含まれているもの rootfs̲sparse.ext4 をマウントしてみる 10. Linux kernel のカスタマイズ kernel 設定の変更 変更した設定を次回からも使う 設定を反映した buildroot の再実行 11. イメージの書き込み (未実施) A5版PDF 本文80ページ ! 再ビルドにはトラップが... ! 放置では進まない... Ubuntu イメージのビルドの完了 https://kinneko.booth.pm/items/6559849
LLMモジュールで 無線LAN動かそうとすると いろいろ困る
Linux kernelの ソースコードないかな〜 (というかライセンス違反じゃね?)
1/27にLLMモジュールの buildrootが公開された
https://x.com/HanxiaoM/status/1883762209152774169
LLMモジュールにインストールできる、ソフトウ エア一式を自動作成するツール Buildrootと書かれているけど、Buildrootそのも のは入ってない それって何? Buildrootは作業中に取得して使う Buildrootでビルドする環境を整えるもの kernelとパッチも含まれている (大半は動作中に外部から取得する) m5stack/LLM̲buildroot-external-m5stack https://github.com/m5stack/LLM̲buildrootexternal-m5stack
Buildroot は、組み込み向けの Linux システムを Buildroot って何? 簡単に構築するためのオープンソースのツール/プロ ジェクト。 カーネルやブートローダ、クロスコンパイラ、ライ ブラリ、各種アプリケーションなどをまとめて管理 し、一括でビルドして最小限のルートファイルシステ ム(rootfs)を生成することができる。 組み込み機器で Linux を動かす際によく利用され るもの。(最近あんまり見ないけどね)
! こわくないよ〜w
! Ubuntu Server環境の準備 ・amd64のPCが必要 ・22.04.5 LTS or 24.04.1 LTS ・作業前にインストールが必要なパッケージが不足 zip, simg2img, android-sdk-libsparse-utils, mtools, e2fsprogs, libpcre3, libncurses-dev (あると便利も含む)
プロジェクトのClone $ git clone https://github.com/m5stack/ LLM̲buildroot-external-m5stack.git $ cd LLM̲buildroot-external-m5stack/
! ビルドスクリプトどこ?どれ? $ ls tools/ bin creat̲AX630C̲LITE̲ax̲ubuntu22̲04̲image.sh creat̲AX630C̲LITE̲buidlroot̲image.sh creat̲AX630C̲LITE̲ubuntu22̲04̲desktop̲image.sh creat̲AX630C̲LITE̲ubuntu22̲04̲image̲full.sh creat̲AX630C̲LITE̲ubuntu22̲04̲image.sh creat̲Module̲LLM̲buidlroot̲image̲4̲8.sh creat̲Module̲LLM̲buidlroot̲image.sh creat̲Module̲LLM̲ubuntu22̲04̲image.sh overlay̲ubuntu22̲04 overlay̲ubuntu22̲04̲LITE overlay̲ubuntu22̲04̲LITE̲desktop 内部で呼び出し
!
ビルドスクリプトの修正
$ cd tools
$ vi creat̲Module̲LLM̲buidlroot̲image.sh
#if [ "$hostname" = "nihao-z690" ]; then
[ -f 'dl.7z' ] || wget https://m5stack....
[ -d 'dl' ] || 7z x dl.7z -odl
[ -d 'dl' ] || { echo "not found dl" && exit -1; }
#fi
! ビルド実行 エラーの原因になるのであらかじめ削除する $ rm -rf ./overlay̲ubuntu22̲04/etc/ld.so.conf.d ビルド実行 $ ./creat̲Module̲LLM̲ubuntu22̲04̲image.sh
できたイメージファイルの場所 build̲Module̲LLM̲ubuntu22̲04/ M5̲LLM̲ubuntu22.04̲20250204.axp
イメージファイルの書き込み Windows機がないので未実施です 公式のドキュメントを参照して、 AXDL ツールで実施してください LLM Module ファームウェアアップグレードガイド https://docs.m5stack.com/ja/guide/llm/llm/image
! そのほかの!たち ・プロジェクトにリリースもブランチもない ・コミットメッセージが意味なし ・MITライセンスと書かれているが... ・ライセンス不明のバイナリがゴロゴロ(外からも) ・board/m5stack の下が2ボード混在 ・tools の下の混在環境が混乱中 ・放置ではビルドが進まない...
! さすがにこれはTypoでいいですよね? ビルド用のスクリプトと、 そのスクリプトの作成するディレクトリ名が buidlroot になっている 実行にはまったく差し支えはない でも、ちょっと恥ずかしい...
! できたファームの再配布は微妙 ライセンスの不明なファイルやバイナリが含まれる 自分でビルドして書き込むのは私的利用の範囲内 誰かに再配布するのは権利が明確ではない
kernel 設定の変更 $ cd ~/LLM̲buildroot-external-m5stack/tools/ build̲Module̲LLM̲buidlroot/buildroot $ make BR2̲EXTERNAL=../../.. linux-menuconfig
kernel 設定を反映したFWのビルド 環境変数 BR2̲EXTERNAL を設定して make を実行 $ make BR2̲EXTERNAL=../../..
! こわくないよ〜w ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !