最終更新:2024-12-03 (火) 03:27:15 (5d)  

Module LLM/無線LAN
Top / Module LLM / 無線LAN

Module LLM本体のOTGポート(Type-C)でUSB/無線LANアダプタを使いたい話

準備

Ubuntu 22.04のPCを準備 (x64)

必要なパッケージをいれる

Module LLM/Linuxカーネル

Module LLMの初期状態

ドライバ

Module LLM/.config

  • USB/無線LANアダプタのドライバが全て無効になっている
  • CONFIG_MAC80211が無効になっている
    • 最近の無線LAN/チップのドライバで使われている機能
    • 使えるようにするには依存している設定がいろいろあって試しにCONFIG_RTL8XXXUを有効化(=m)してビルドしていろいろモジュール入れても動かなかった
    CONFIG_WIRELESS=y
    CONFIG_WEXT_CORE=y
    CONFIG_WEXT_PROC=y
    CONFIG_CFG80211=y
    CONFIG_CFG80211_WEXT=y
    # CONFIG_MAC80211 is not set

Module LLM/Ubuntu/パッケージ

関連するカーネルの設定

CONFIG_MAC80211 (mac80211)

  • a framework which driver developers can use to write drivers for SoftMAC wireless devices.
  • SoftMACのデバイスでMACMLME処理を行うモジュール
  • 最近になってもFullMACのチップを作っているのはBroadcomMarvellのみらしい (2017)

CONFIG_CFG80211 (cfg80211)

成功例

動いたチップ: RTL8188EUS

ドライバの選定

メインラインのRTL8188EUSのドライバ

GitHubrtl8188eu

GitHubのドライバのビルド

対応デバイス

ビルド手順

  • git clone https://github.com/lwfinger/rtl8188eu
    cd rtl8812au/
    git checkout origin/v5.2.2.4 -b v5.2.2.4
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C ~/linux-4.19.125-head/ M=~/rtl8188eu modules

Module LLMにコピー

  • Module LLM本体のUSBPCにつないでadbで転送
    adb push 8188eu.ko /lib/modules/4.19.125/
    adb push rtl8188eufw.bin /lib/firmware/rtlwifi/

自動ロード

wpa_supplicant.confの設定

  • /etc/wpa_supplicant.confを用意
    ctrl_interface=/var/run/wpa_supplicant
    update_config=1
    pmf=1
    sae_pwe=2
    
    network={
        ssid="SSID Here"
        psk="Password Here"
        key_mgmt=WPA-PSK SAE
        ieee80211w=1
    }

wpa_supplicantを起動 (とりあえず手動)

  • この辺はパッケージ入れてsystemdで起動するなりしたほうがよさそう
    wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
  • 繋がったらバックグラウンドモードで実行
    wpa_supplicant -i wlan0 -B -c /etc/wpa_supplicant.conf

参考になりそうなスクリプト

その他

  • IPを自動で取得してくれなかったのでdhclientを実行した
  • iw devでも認識した

失敗1

  • 手元にあったArcher T2U Nanoを動かそうとして失敗
  • このチップ(RTL8812AU)向けのドライバはメインライン化されてない模様

チップ: RTL8812AU

ドライバ

ビルド

  • git clone https://github.com/gnab/rtl8812au/
  • cd rtl8812au/
  • Makefileを編集
    diff --git a/Makefile b/Makefile
    index 7c2cdc2..a03467b 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -54,14 +54,14 @@ CONFIG_EXT_CLK = n
     CONFIG_FTP_PROTECT = n
     CONFIG_WOWLAN = n
     
    -CONFIG_PLATFORM_I386_PC = y
    +CONFIG_PLATFORM_I386_PC = n
     CONFIG_PLATFORM_ANDROID_X86 = n
     CONFIG_PLATFORM_JB_X86 = n
     CONFIG_PLATFORM_ARM_S3C2K4 = n
     CONFIG_PLATFORM_ARM_PXA2XX = n
     CONFIG_PLATFORM_ARM_S3C6K4 = n
     CONFIG_PLATFORM_ARM_RPI = n
    -CONFIG_PLATFORM_ARM_RPI_64 = n
    +CONFIG_PLATFORM_ARM_RPI_64 = y
     CONFIG_PLATFORM_MIPS_RMI = n
     CONFIG_PLATFORM_RTD2880B = n
     CONFIG_PLATFORM_MIPS_AR9132 = n
    @@ -751,8 +751,10 @@ ifeq ($(CONFIG_PLATFORM_ARM_RPI_64), y)
     EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
     ARCH := arm64
     CROSS_COMPILE := 
    -KVER ?= $(shell uname -r)
    -KSRC ?= /lib/modules/$(KVER)/build
    +# KVER ?= $(shell uname -r)
    +# KSRC ?= /lib/modules/$(KVER)/build
    +KVER  := 4.19.125
    +KSRC := ~/linux-4.19.125-head/
     MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
     endif
    
  • クロスコンパイル
    • make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
  • できたファイル
    • /rtl8812au/8812au.ko

自動ロード

動かない

失敗2

  • 最近のRealtekのチップはCONFIG_RTL8XXXUでわりと対応してるぽいので関連するモジュールをビルドして入れてみようとしたけど失敗
  • Linux 4.19の時点での対応デバイス

CONFIG_RTL8XXXU=mとしたときの差分

  • 依存でいろんなモジュールが必要になってビルドして入れてみたけど動かなかった
    make ARCH=arm64 xconfig
  • CONFIG_MAC80211=m
  • CONFIG_MAC80211_HAS_RC?=y
  • CONFIG_MAC80211_RC_MINSTREL?=y
  • CONFIG_MAC80211_RC_MINSTREL_HT?=y
  • CONFIG_MAC80211_RC_DEFAULT_MINSTREL?=y
  • CONFIG_MAC80211_RC_DEFAULT?="minstrel_ht"
  • CONFIG_WLAN=y
  • CONFIG_WLAN_VENDOR_ADMTEK?=y
  • CONFIG_WLAN_VENDOR_ATH?=y
  • CONFIG_WLAN_VENDOR_ATMEL?=y
  • CONFIG_WLAN_VENDOR_BROADCOM?=y
  • CONFIG_WLAN_VENDOR_CISCO?=y
  • CONFIG_WLAN_VENDOR_INTEL?=y
  • CONFIG_WLAN_VENDOR_INTERSIL?=y
  • CONFIG_WLAN_VENDOR_MARVELL?=y
  • CONFIG_WLAN_VENDOR_MEDIATEK?=y
  • CONFIG_WLAN_VENDOR_RALINK?=y
  • CONFIG_WLAN_VENDOR_REALTEK=y
  • CONFIG_RTL_CARDS?=m
  • CONFIG_RTL8XXXU=m
  • CONFIG_WLAN_VENDOR_RSI?=y
  • CONFIG_WLAN_VENDOR_ST?=y
  • CONFIG_WLAN_VENDOR_TI?=y
  • CONFIG_WLAN_VENDOR_ZYDAS?=y
  • CONFIG_WLAN_VENDOR_QUANTENNA?=y
  • CONFIG_CRYPTO_GF128MUL?=m
  • CONFIG_CRYPTO_CCM?=m
  • CONFIG_CRYPTO_GCM?=m
  • CONFIG_CRYPTO_SEQIV?=m
  • CONFIG_CRYPTO_CTR?=m
  • CONFIG_CRYPTO_CMAC?=m
  • CONFIG_CRYPTO_GHASH?=m
  • CONFIG_CRYPTO_ARC4?=m

参考