こんにちわわ。
DAppNodeのセットアップで、WiFiの設定につまずいた事を記事にしようと思います。
前回の連載3回目で、DAppNodeのダッシュボードには無事接続できました。
DAppNode自体がWiFiのアクセスポイントになって、スマフォや別のPCからアクセスできるように自動的になるような工夫がされていることが分かりました。
(すごい!と思いました。)
結論から言うと、DAppNodeのサービスが全部自動でアクセスポイントになるように設定をやってくれるのですが、DAppNodeを立てたPCのWiFiの適切なドライバーが入っていて、且つアクセスポイントになれるタイプのドライバーがはいっていないとならないということが分かりました。
つまり、これからDAppNodeにチャレンジしてみようという方は選定して用意するPC上のWiFiチィップとそのドライバーを気にしておいた方が良いということです。
上記の仕掛けを理解していないままデバックしていたので、対策までにかなり苦労しました。
連載2回目で説明したように、今回のチャレンジは、Linux OSから丸ごとコピーしていいます。そのため、コピー元のLinux OSのDebian kernel 5.10.0-11に自分のPCのWiFiのドライバが既にインストールされていて、且つそのドライバーがアクセスポイント対応であることが条件であることが分かりました。
ただ、以下に述べるようにドライバー入っていなくても後でインストールしてあげたり、私のように既に入っていたアクセスポイント未対応のドライバーをアクセスポイント対応のドライバーにkernelをパッチしたりすれば大丈夫です。
以下の検証結果で述べますが、別のPCからはWiFi接続できましたが、私の手持ちのiphoneからはうまく接続できませんでした。
なので重要なことは、DAppNodeを自分のPCに立てる場合には、自分のPCのWiFiのチィップが標準でアクセスポイント対応であるかどうかや、DebianまたはUbuntuのドライバーが既にあること、及びiphoneやAndroidからの接続実績があるかをあらかじめネット検索しておいた方が良いということです。
ただ、WiFiからDAppNodeへの接続は、スマフォは持っているけど、別のPCが無い方向けのようなので機能として必須ではありませんので、私と同じような現象が出た場合でも、ダッシュボード上からWiFiの設定はOFFにしておくだけで済むので無理に対応しようとしなくても大丈夫そうです。
少し前置きが長くなってしまいましたが、早速行ってみましょう。
ダッシュボード上でWiFiがアクセスポイントとして機能していない事が分かりました。
WiFiのドライバーは認識しているもののアクセスポイントとして起動できないことを示しています。
解析するのにつまずいたポイントは、この状態になると、DAppNodeがWiFiのドライバーをリセットし続けて制御しようとしてしまうため、コンソール上からドライバーが見えたり消えたりしてデバックの邪魔をしてしまう事でした。
インストール時にコンソール上から作成した一般ユーザでログインして、「dappnode_stop」コマンドでDAppNodeをストップさせる事でWiFiの制御を一時的に止められることが分かりました。
WiFi関連のデバックをするためのコマンドをインストールするために、一般ユーザはログアウトコマンド(logout)で一旦抜けて、rootユーザで入り直します。
以下のコマンドで、wireless-toolsをインストールしました。
apt-get update
apt-get upgrade
apt-get install aptitude
aptitude update
aptitude upgrade
aptitude install --reinstall wireless-tools
wireless-toolsをインストールすると、WiFi関連の状態等が見れるようになります。
「iw dev」コマンドでドライバーの状態を確認します。
phy#0として認識している事が分かります。
phy#0(コマンドでは、phy0)のドライバー内を確認するため、「iw phy0 info | less」コマンドを実行します。
ドライバーの詳細が表示されますが、今回重要だったのが、「Supported interfase modes:」の欄です。managedやmonitorのモードにしか対応しておらず、アクセスポイント(AP)のモードが無いことが分かりました。
WiFiのドライバの仕様がDebian kernel5.3から新しくなっている事が分かり、PCのWiFiのドライバーでkernel5.3以上且つアクセスポイント(AP)対応のドライバーを見つけることにしました。
githubに対応のものがあったので、git cloneコマンドでダウンロードし、メイク(make)して、インストール(make install)しました。
gccなどのコンパイラーは既にインストールされていたので、メイクにあたって追加で必要になったアプリケーションは、gitとlinux-headers-genericの2つだけした。
aptitude install -y git
apt-get install -y linux-headers-generic
git clone https://github.com/・・・ (⇒目的のgitのパス)
cd XXX (⇒git名)
make
make install
gitで公開してくれているユーザにもよるのですが、今回使用させて頂いたドライバーを作成した方は、インストール時に自動でkernelへのパッチもやってくれる優れものでした。
インストール後にrebootで再起動して、rootユーザでログインし、先ほどと同じくドライバーの状態を確認しました。
見事に、アクセスポイント対応を示す「AP」が追加されていました!やったぁ~
次に、DAppNodeを再度起動するために、rooユーザをログアウトし、一般ユーザでログインし直します。
「dappnode_start」コマンドでDAppNodeを再スタートさせ、「dappnode_status」コマンドで状態を確認しました。
どうやらWiFiは無事にアクセスポイントとして機能したように見えます。
iphoneで確認してみると、「DAppNodeWIFI」がアクセスポイントとしてありました!
しかし、喜びもつかぬ間、実際接続しようとすると、接続できませんでした。
iphoneでダメでもWindows PCからなら接続できるかも?と思い、Windows PCからDappNodeWIFIに接続してみたら、普通に繋がりました。
デバックしてみましたが、ハンドシェイク後の認証にどうやら失敗しているようで、ドライバーの相性の問題だと結論づけました。
シスログは、rootユーザでログインし、
tail -f /var/log/messages
コマンドでリアルタイムに表示しならが確認ができます。
(表示をやめたい場合は、Ctrlキーを押しながら「C」を押して止めます。)
つまり、DAppNodeのせいではなく、パッチしたドライバーがiphoneとの相性が合わなかったということです。
こんな感じで、少しずつ理解しながら進めています。
次回は、DAppNodeのETHの同期についてと今回使ったハードウェアとの相性等の気が付いたことを記事にしようと思います。
今回も最後までお読み頂き、ありがとうございました。
またね(=゚ω゚)ノシ
この記事をお読みになられて、DAppNodeに興味を持たれた方は、連載1~3回目も是非お読みください。
以下にリンクを貼っておきます。