This service is available only in Japanese-language.

WiFi WILC SDIOドライバ のmodprobeでの読み込み

現在、microchip社のATWILC1000の無線LANモジュールでWILC SDIOドライバを使用しております。
Linuxの構築はYocto2.2 core-image-minimalイメージをベースに行っております。

現在はWILC SDIOドライバをカーネル起動時にドライバのロードは出来ているのですが、
「modprobe wilc-sdio」でのドライバの再読み込みが出来ません。
これを有効にするには何か追加の設定などいるのでしょうか?

カーネルコンフィグレーションは以下の設定にしております。

CONFIG_CFG80211=y
CONFIG_WILC=y
CONFIG_WILC_SDIO=y
#CONFIG_WILC_SDIO=y
# CONFIG_WILC_HW_OOB_INTR is not set
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPUFREQ_DT=y
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
CONFIG_ARM_TI_CPUFREQ=y
# CONFIG_QORIQ_CPUFREQ is not set
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_DT_IDLE_STATES=y
CONFIG_ARM_CPUIDLE=y
CONFIG_CPU_PM=y
# CONFIG_CPU_THERMAL is not set
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
# CONFIG_SUSPEND_SKIP_SYNC is not set
CONFIG_PM_SLEEP=y
# CONFIG_PM_AUTOSLEEP is not set
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_WAKELOCKS_LIMIT=50
CONFIG_PM_WAKELOCKS_GC=y
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_SLEEP_DEBUG=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPUFREQ_DT_PLATDEV=y
CONFIG_PM_OPP=y
CONFIG_MAC80211=y
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
# CONFIG_WLAN_VENDOR_REALTEK is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
# CONFIG_CLOCK_THERMAL is not set
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_BIG_KEYS is not set
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_GHASH=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_PPP=y
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_DEFLATE is not set
CONFIG_PPP_FILTER=y
# CONFIG_PPP_MPPE is not set
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=y
CONFIG_PPP_ASYNC=y
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=y

以下の設定を「m」にしてもmodprobe出来ませんでした。
CONFIG_WILC=m
CONFIG_WILC_SDIO=m

エラーメッセージに含まれるエラー番号を調べることで、原因が判る場合も多いです。

modprobe wilc-sdio 実行後は何も表示されない状態になります。

core-image-minimalは、非常にコンパクトなイメージレシピのため、何も指定しない場合はkernel moduleは
インストールされませんが、既に
IMAGE_INSTALL_append = " kernel-module-wilc-sdio "
といった指定を行って /usr/lib/modules 以下にインストールされているという理解で宜しいでしょうか?

ありがとうございます。
IMAGE_INSTALL_append = " kernel-module-wilc-sdio "
を追加したところmodprobe wilc-sdioのドライバ読み込みが出来るようになりました。

上記のカーネルコンフィグレーション、カーネルモジュールを追加し
無線LANを確立しwlanとして認識することが出来ました。

以下のNICの状態で無線LAN「wlan0」に接続し
192.168.2.254のIPアドレスでping、TCP通信などで接続できるのですが、
有線LAN「eth0」のIPアドレス192.168.1.253でもping、TCP通信などが出来てしまいます。
逆に有線LAN「eth0」側から「wlan0」のIPアドレスにping、TCP通信などは出来ません。
ブリッジ、IPフォワーディングなどの設定は特段していないと思うのですが、
何か余分にカーネルコンフィグレーションなどの設定を追加しているのでしょうか?

ベースはイメージは「Yocto2.2 core-image-minima」となっております。

eth0 Link encap:Ethernet HWaddr 4C:3F:D3:84:C0:D4
inet addr:192.168.1.253 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::4e3f:d3ff:fe84:c0d4%lo/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25942 errors:0 dropped:0 overruns:0 frame:0
TX packets:12485 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25842875 (24.6 MiB) TX bytes:2595324 (2.4 MiB)
Interrupt:175

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:78 (78.0 B) TX bytes:78 (78.0 B)

mon.wlan0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-64-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr F8:F0:05:9A:B5:35
inet addr:192.168.2.254 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::faf0:5ff:fe9a:b535%lo/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:484 errors:0 dropped:0 overruns:0 frame:0
TX packets:494 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:45218 (44.1 KiB) TX bytes:496942 (485.2 KiB)

> 192.168.2.254のIPアドレスでping、TCP通信などで接続できるのですが、
> 有線LAN「eth0」のIPアドレス192.168.1.253でもping、TCP通信などが出来てしまいます。
こちらは、192.168.2.0/24 に接続されている他のマシンよりping が通るという理解で宜しいでしょうか?
そのマシンは192.168.1.0/24 のネットワークに接続されていないという理解で宜しいでしょうか?

pingを実施した機器のnetstat -rn の結果をお送りいただければ、ある程度の状況は掴めるかと。

こちらは、192.168.2.0/24 に接続されている他のマシンよりping が通るという理解で宜しいでしょうか?
そのマシンは192.168.1.0/24 のネットワークに接続されていないという理解で宜しいでしょうか?

他の端末(pcなど) ⇒ Yocto Inux端末にping、tcp通信を行っている状態で、
WiFiで接続しております。(他の端末(pcなど)がWiFi STA、Yocto Inux端末がWiFi AP)
他の端末(pcなど) は192.168.2.0/24に接続されていて、192.168.1.0/24 のネットワークには接続されていない状態になります。

netstat -rn などの設定は以下の通りです。よろしくお願い致します。

Yocto Linux側
:/# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

他の端末(Windows PC)側

>ipconfig
Windows IP 構成

イーサネット アダプター イーサネット:

メディアの状態. . . . . . . . . . . .: メディアは接続されていません
接続固有の DNS サフィックス . . . . .:

Wireless LAN adapter ローカル エリア接続* 1:

メディアの状態. . . . . . . . . . . .: メディアは接続されていません
接続固有の DNS サフィックス . . . . .:

Wireless LAN adapter ローカル エリア接続* 2:

メディアの状態. . . . . . . . . . . .: メディアは接続されていません
接続固有の DNS サフィックス . . . . .:

Wireless LAN adapter Wi-Fi:

接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.2.16
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.2.254

>netstat -rn
===========================================================================
インターフェイス一覧
18...2c ea 7f 14 a6 05 ......Realtek PCIe GbE Family Controller
13...04 33 c2 d9 11 fc ......Microsoft Wi-Fi Direct Virtual Adapter
17...06 33 c2 d9 11 fb ......Microsoft Wi-Fi Direct Virtual Adapter #2
15...04 33 c2 d9 11 fb ......Intel(R) Wireless-AC 9560
16...04 33 c2 d9 11 ff ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
===========================================================================

IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
0.0.0.0 0.0.0.0 192.168.2.254 192.168.2.16 55
127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331
127.0.0.1 255.255.255.255 リンク上 127.0.0.1 331
127.255.255.255 255.255.255.255 リンク上 127.0.0.1 331
192.168.2.0 255.255.255.0 リンク上 192.168.2.16 311
192.168.2.16 255.255.255.255 リンク上 192.168.2.16 311
192.168.2.255 255.255.255.255 リンク上 192.168.2.16 311
224.0.0.0 240.0.0.0 リンク上 127.0.0.1 331
224.0.0.0 240.0.0.0 リンク上 192.168.2.16 311
255.255.255.255 255.255.255.255 リンク上 127.0.0.1 331
255.255.255.255 255.255.255.255 リンク上 192.168.2.16 311
===========================================================================
固定ルート:
なし

>ping 192.168.1.253

192.168.1.253 に ping を送信しています 32 バイトのデータ:
192.168.1.253 からの応答: バイト数 =32 時間 =18ms TTL=64
192.168.1.253 からの応答: バイト数 =32 時間 =10ms TTL=64
192.168.1.253 からの応答: バイト数 =32 時間 =20ms TTL=64
192.168.1.253 からの応答: バイト数 =32 時間 =11ms TTL=64

192.168.1.253 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 10ms、最大 = 20ms、平均 = 14ms

この場合、WiFi側では同一のネットワークでないアドレスに対してdefault gwである192.168.2.254 宛にパケットを送信します。
パケット転送が無効であっても、192.168.1.253は192.168.2.254と同一ホストのため、pingへの応答は返ります。
192.168.1.0/255.255.255.0 に接続されている他のマシン宛にはpingは通らないかと。

ご返答りありがとうございます。

接続端末(Windows PC)側が192.168.2.254 宛にパケットを送信は理解致しました。

192.168.1.253は192.168.2.254と同一ホストであるというのはLinuxで判断しているということでしょうか?
これを防ぐにはeth0、wlna0を同時に立ち上げるのをやめるしかないということでしょうか?

meta/recipes-extended/iptables/ 以下のiptablesのレシピの構築を行い生成されたパッケージ及び、必要なカーネルモジュールのパッケージをIMAGE_INSTALL 変数に追加すれば、応答を防ぐことは可能です。
なお、iptablesの細かい設定に関しましては、YoctoBBQの守備範囲を超えてしまいますので、その点ご了承ください。

iptablesでブロックできるか試してみます。
ありがとうございました。