Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

ラズパイでのソフトウェアアクセスポイントを用いたクライアントとAPモードの並列使用

前回Raspberry PiでAPモードを用いることで無線LANでの親機として用いる方法を記載いたしました。
elsammit-beginnerblg.hatenablog.com

ただ、もし親機として使用しながら子機のようにも扱いたいな!!と思った時に
こちらの方法だと切り替えが必要になるよな。。。切り替えしたい時面倒だよな。。
と思っておりました。
まぁ、普通はそんなことしないよね😅
普通はこちらのように有線LANに接続しておいてWifiはAPモードで動かす、ルータ的な利用が普通ですよね🤣
www.itmedia.co.jp

ただ、、、やってみたい!!と思い調べてみたところ1つ方法を見つけました!!
ソフトウェアアクセスポイントを用いる方法です!!
f:id:Elsammit:20210128212341p:plain



■ソフトウェアアクセスポイントとは

APモードで動作させつつクライアントモードして動作させることが出来る。
要するに仮想的にwifiを二つに分けて片方をAPモードとして、もう一方をクライアントモードとして動作させる方法です。
具体的な手順はこちらにまとまっております。
https://wiki.archlinux.jp/index.php/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88

今回はRapsberry Piでソフトウェアアクセスポイントを用いて両方いいとこどりを目指していきたいと思います!!

■何を実施したか?

先ほどの記事からAPモードかつ単一モードであれば動作すると記載されていたため、
下記コマンドを実施の上、確認したところ

iw list
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * P2P-client
		 * P2P-GO
		 * P2P-device
 #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
		   total <= 4, #channels <= 1

出力されたのでまずは条件はOKと判断。

次に単一のWifiモジュール(今回はwlan0)を仮想的に二つに分けてみます。
とりあえずこちらのコマンドを実行!!

sudo iw dev wlan0 interface add wlan0_sta type managed

そうしたところ、

command failed: Device or resource busy (-16)     

とのエラーとなりました。
こちらのコマンドを実行しても、

sudo iw dev wlan0 interface add wlan0_ap  type managed

同じように、

command failed: Device or resource busy (-16)  

と出力。。。

調べてみたところ、こちらの記事のようにwlan0を完全に停止させればよさそう。
https://bbs.archlinux.org/viewtopic.php?id=261603

ということでこちらのコマンドを実行!!

sudo ifconfig wlan0 down
sudo ip link set dev wlan0 down
sudo service wpa_supplicant stop

再度こちらのコマンドを実行!!

sudo iw dev wlan0 interface add wlan0_ap  type managed

同じように

command failed: Device or resource busy (-16)  

と出力。。。

■うまく行かなった理由

どうやら、ラズパイに組み込まれたWifiだとうまくいかない模様。。。
こちらのQAにもラズパイにWifiドングルを装着して解決したと記載されておりました。。。
https://superuser.com/questions/1148811/adding-virtual-interface-to-wlan0-with-iw-device-or-resource-busy-16

少し特殊な条件でのみ動作するんでしょうか??
それともwlan0を停止させることが出来ないのでしょうか??

■最後に

Wifiドングル付けたら仮想的に2つに分けずに物理的に用途分けて使いますよね😅
とりあえず、当面動かすことないと思うので先ほどの記事のように無線LANルータ化して使用しようかな??🤔
https://www.itmedia.co.jp/news/articles/2008/14/news042.html

後、ソフトウェアアクセスポイントだと仮想MACアドレスをセットしなければならないらしいけどいいのかな?