mahoyaya’s diary

主に自分用メモです

intel NUC NUC5CPYH にLinuxを入れて無線LANを使う

intel NUC NUC5CPYHで無線LANを利用した時のメモです。

※数カ月前にやったことなので場合によってはネタが古いかも。作業順序は特に最適化していないのでよしなにしてください。

※パスワードの暗号化について後述と書いておきながら書いていなかったので追記

環境

Fedora22 + intel nuc Network controller: Intel Corporation Wireless 3165 (rev 81)

最初はCentOSでやろうと思ったんですが、この機種に搭載されている無線LANのドライバは"kernel version +4.1 needed"なので、さくっと終わらせるためにFedora22に変更しました。

セットアップ

準備

Fedora22を自分の好みでインストールして、とりあえず有線LANを利用してお決まりのコマンドを実行して再起動します。

$ sudo dnf update
$ sudo shutdown -r now

するとカーネルバージョンが上がるはずなので、カーネルバージョンを確認。

$ uname -a
Linux fedora.localdomain 4.1.6-200.fc22.x86_64 #1 SMP Mon Aug 17 19:54:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

作業用にpciutilsを入れます。

$ sudo dnf install pciutils

ドライバのインストール

適当なディレクトリに無線LANドライバをダウンロードして展開後、ライブラリに追加してまた再起動します。

$ cd workdir

$ wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-7265-ucode-25.30.13.0.tgz

$ tar xvzf iwlwifi-7265-ucode-25.30.13.0.tgz

$ cd iwlwifi-7265-ucode-25.30.13.0

$ sudo cp iwlwifi-7265* /lib/firmware/

$ sudo shutdown -r now

認識されドライバが読み込まれているか確認

$ lspci
$ dmesg | grep iwl

以下のログが出ていればOKです。

[ 12.749723] iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
[ 13.189540] iwlwifi 0000:02:00.0: loaded firmware version 25.30.13.0 op_mode iwlmvm
[ 13.490190] iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
[ 13.490590] iwlwifi 0000:02:00.0: L1 Enabled - LTR Enabled
[ 13.491211] iwlwifi 0000:02:00.0: L1 Enabled - LTR Enabled
[ 13.689111] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 13.774546] iwlwifi 0000:02:00.0 wlp2s0: renamed from wlan0

インターフェースを有効化

インターフェースをUP状態に変更します。

$ sudo ip link set up wlp2s0

インターフェースが動作することを確認

次のコマンドでアクセスポイントがリストアップされることを確認します。

$ sudo iwlist wlp2s0 scan

WPA2のクライアントをインストール

wpa_supplicantをインストールします。

$ sudo dnf install wpa_supplicant

wpa_supplicantの設定ファイルを編集します。 "your said"の箇所に接続するAPのSSIDを設定し、yourwpa2keyにパスワードを設定します。

※pskの暗号化は後述

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=1
network={
ssid="your ssid"
key_mgmt=WPA-PSK
proto=WPA2
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=yourwpa2key
}

使わなくてもwepのパスワード設定が必要らしいので適当な値を入れておく。

$ echo 'KEY="s:dummyKey"' > /etc/sysconfig/network-scripts/keys-ra0

接続テスト

手動で接続してみます。これで問題なく動けば一安心

$ sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlp2s0 -Dwext

次のようなログが出るはず

Successfully initialized wpa_supplicant
wlp2s0: Trying to associate with x:x:x:x:x:x (SSID='your ssid' freq=5540 MHz)
ioctl[SIOCSIWFREQ]: Device or resource busy
wlp2s0: Association request to the driver failed
wlp2s0: Associated with x:x:x:x:x:x
wlp2s0: WPA: Key negotiation completed with x:x:x:x:x:x [PTK=CCMP GTK=CCMP]
wlp2s0: CTRL-EVENT-CONNECTED - Connection to x:x:x:x:x:x completed [id=0 id_str=]

DHCPならdhclientを実行してIPをもらう

$ sudo dhclient wpl2s0

$ ip addr

パスワードを暗号化する(追記)

次のコマンドで暗号化されて出力された認証キーで "/etc/wpa_supplicant/wpa_supplicant.conf" の yourwpa2key(pskの値)を書き換える。 重要なポイントは"Your Wi-Fi Netowrk Name"のダブルクォート(")で囲まれた箇所をWi-Fiルータで設定されたSSID名にし、yourwpa2keyの箇所を先ほど接続に成功した平文のパスワードにすることです。

$ wpa_passphrase "Your Wi-Fi Network Name" yourwpa2key

ちなみに、パスワードをヒストリー(上キーを押すと出てくる履歴)に残したくない場合は、 一旦、ログアウトしてから再度ログインし、bashの場合はコマンドを実行したユーザーの~/.bash_historyから消したい履歴を削除して、 再度ログアウトしてから再ログインすると消すことが出来ます。

箇条書きにすると次の通り。

  • ログアウト
  • ログイン
  • ~/.bash_history を編集
  • ログアウト
  • ログイン

何故ログアウトするのかというと、履歴がファイルに出力されるのが、ログアウトを実行したタイミングだからです。

手動で動作させた設定をコンフィグに登録する

インターフェースは-iの後ろにスペースを入れると動作しないので注意すること

$ sudo vi /etc/sysconfig/wpa_supplicant
INTERFACES="-iwlp20a"
DRIVERS="-Dwext"

systemdに自動起動登録する

$ sudo systemctl start wpa_supplicant.service
$ sudo systemctl status wpa_supplicant.service

わからない人のためにsystemdのコマンド一覧

有効化
$ sudo systemctl enable wpa_supplicant

無効化
$ sudo systemctl disable wpa_supplicant

稼働中のサービス
$ sudo systemctl list-units --type=service

しぼらず確認
$ sudo systemctl list-unit-files

定義されているサービス一覧
$ sudo systemctl list-unit-files --type=service

NetworkManagerが起動しているとアドレス設定がうまくいかないので止める

systemdで完全に止める場合は次のコマンド

$ sudo systemctl disable NetworkManager

インターフェース毎に制御する場合はインターフェースのファイルを編集して、NM_CONTROLLED="no"を追記する

$ vi /etc/sysconfig/network-scripts/ifcfg-wlp2s0
NM_CONTROLLED="no"

NetworkManagerを停止した場合はboot時にnetworkが起動する様に設定

これ忘れると泣ける

sudo chkconfig --list
sudo chkconfig network on
sudo chkconfig --list

intel NUC NUC5CPYH は消費電力6Wで最高。

ただし、RAMは8Gまでなので重い処理は辛い。

おわり