やりたいこと
タイトルの通り、BCM4334チップなWi-FiマシンとUbuntuをAd-Hoc接続したいのです
このエントリーで紹介しているWi-Fi Ad-hocモードは、認証も暗号化もしてませんからご注意を
あくまでサクっとやるため、アドホックな仕組みです
TL;DR
SSIDは ubuntu-ap とします
BCM4334なマシン側
# ip link set wlan0 down
# modprobe -r bcm4334x
# modprobe bcm4334x op_mode=2
# ip link set wlan0 up
# iwconfig wlan0 mode ad-hoc
# iwconfig wlan0 essid ubuntu-ap
# ip addr add 10.42.0.2/24 dev wlan0
-
ip addr
で設定するIPアドレスは、Ubuntu側のIPを調べて適切にセットしてください
Ubuntu側
Network Managerから [新しいWi-Fiネットワークを作成(N)...]
ネットワーク名(SSID)に ubuntu-ap と入力して作成
以上で、完了です
無効化と再度有効化する場合
無効化:切断します
再度有効化:下図の通り、リストから選択します
たまにNetwork Managerが変になり一覧に出てこない場合もあります。その場合はNetwork Managerを再起動しましょう
$ sudo systemctl restart NetworkManager
そのあとどうする?
Ubuntu上でsshdを動かす、httpdを動かすといったことが考えられます。一番手っ取り早いのは Dockerコンテナを動かすのが良いでしょう
$ docker run --rm -it -v $PWD/a:/home/foo -p 2222:22 -e USER=foo -e PASSWORD=bar sjourdan/alpine-sshd
解説
ほかのPCとアドホックでつなげるためには iwconfig DEV mode ad-hoc
とします
しかし
# iwconfig wlan0 mode ad-hoc
Error for wireless request "Set Mode" (8B06) :
Set failed on device wlan0 ; Invalid argument.
と、設定に失敗します
※OpenBlocks IoT BX1/EX1のWi-FiはBCM4334を使ってます
これは、BCM4334なWi-Fiチップのドライバ bcm3443x
を modprobeする際の op_mode
に起因するものです
資料: http://blog.kitaguni.com/hiro_lph/2015/09/intel-edisonbcm43340.html
Ad-hocでつなげるためには DHD_FLAG_P2P_MODE (=2) をop_modeにセットしてファームウェアをロードする (modprobe bcm4334x op_mode=2
) 必要があるようです※
※なぜ仄聞系なのか:ちゃんと調べてないから。ゴメンナサイ
元に戻す
# ip addr flush dev wlan0
# iwconfig wlan0 essid off
# iwconfig wlan mode managed
あとがき
こんなことばかり。