raspberry pi2 で 無線 LAN 設定まで


何回かやってるので主に自分用メモ。raspi2 + raspbian で無線LANに ssh できるようになるまで。

- raspbian のイメージを sd card に焼いてセット
- 無線LANは [GW-USNANO2A](http://www.amazon.co.jp/%E7%84%A1%E7%B7%9ALAN%E5%AD%90%E6%A9%9F-USB%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF%E3%83%BC%E5%9E%8B-150Mbps-X10-10%E5%AF%BE%E5%BF%9C-GW-USNANO2A/dp/B00ESA34GA) を使った。raspbian から認識すればどれでも良いと思う。

## 有線でログイン

まず有線LANに繋ぐ。dhcpd が割り振った IP を見つける。

```
$ sudo nmap --open -sV -p22 192.168.24.0/24
...
Nmap scan report for 192.168.24.110
Host is up (0.0031s latency).
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0)
MAC Address: B8:27:EB:C6:67:D6 (Raspberry Pi Foundation)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
```

それっぽい IP が見つかったので初期 user / pass ( pi / raspberry ) で繋ぐ。面倒くさいので公開鍵転送しておく。

```
$ ssh-copy-id pi@192.168.24.110
pi@192.168.24.110's password: 

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'pi@192.168.24.110'"
and check to make sure that only the key(s) you wanted were added.

```

ログインしたら passwd でパスワード変更しつつ、今後は鍵でログインするため /etc/ssh/sshd_config に ```PasswordAuthentication no``` しとく。また環境により名前解決で時間がかかる場合があるので sshd_config に ```UseDNS no``` を追記し sshd を restart。


## 諸々最新にする

apt で最新のパッケージを入れる & ファームウェアを更新する。

日本なら近くのサーバを使った方が早いので、```/etc/apt/sources.list``` を書き換える。

```
# deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://ftp.jaist.ac.jp/raspbian/ wheezy main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
deb-src http://archive.raspbian.org/raspbian/ wheezy main contrib non-free rpi
```

```
$ sudo apt-get update && sudo apt-get -y dist-upgrade && sudo rpi-update
...
```

終わったら一度再起動する。

```
$ sudo reboot
```

## raspi-config で各種設定

いつもやるのはこんな感じ

- 1. Expand Filesystem でファイルシステム拡張。しないと rootfs がすぐ容量埋まる (この時点で97%使ってた…)
- 4. で Timezone を Asia / Tokyo へ
- 8. で SPI と I2C を有効にする。
- GPU 使わないなら 8. で GPU のメモリ割り当てを下げる。headless にしてもいいけどとりあえず 64 から最小の 16 へ。なおこの辺の設定は [/boot/config.txt](https://www.raspberrypi.org/documentation/configuration/config-txt.md) に書かれる。

再起動する。

## vim を入れる

そろそろ vim.tiny だと辛くなってくると思うので vim.basic を入れとく。また $EDITOR も nano から vim.basic へ。

```bash
$ sudo apt-get install vim
$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode
```

## 無線 LAN の設定

lsusb で調べる。

```
$ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
```

認識してる。関係ないけど最近の Realtek のチップは蟹の刻印はあるんだろうか。

- http://www.realtek.com.tw/about/contentView.aspx?Langid=4&PNid=2&PFid=2&Level=1

> 強さ、忍耐、順応性を通して、リアルテックは蟹の精神を取り入れています。

そうだったのか、いい話(?)だった。

wifi の設定を書き込む。

```
$ sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'
```

なんか生パスワードがコメントアウトされ書き込まれるというお節介機能があるのでその部分は消しておく…。

設定反映する。

```
$ sudo /etc/init.d/networking restart
```

```
$ ifconfig
...
wlan0     Link encap:Ethernet  HWaddr 00:22:cf:f4:d8:2e  
          inet addr:192.168.24.112  Bcast:192.168.24.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:41 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14704 (14.3 KiB)  TX bytes:6797 (6.6 KiB)
```

認識された。あとは IP アドレスを固定にする。dhcpd 側で MAC アドレスから割り振るもよし、/etc/network/interfaces を弄るもよし。今回は後者で。

```
$ sudo vim /etc/network/interfaces
...
auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet static
address 192.168.24.49
netmask 255.255.255.0
gateway 192.168.24.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
...
```

設定反映する。

```
$ sudo /etc/init.d/networking restart
$ ifconfig
...
wlan0     Link encap:Ethernet  HWaddr 00:22:cf:f4:d8:2e  
          inet addr:192.168.24.49  Bcast:192.168.24.255  Mask:255.255.255.0
...
```

設定できた。あとは ssh 等で繋がることを確認した後、有線LANを抜いて再起動し、繋がればおｋ。

## 良く切れる

なんか sshd 繋いでると良く切れるお…。GW-USNANO2A のパワーマネジメント機能がこまめに切ってくれる嬉しい設計…だかららしい。しかも iwconfig で見ると ```Power Management:off``` になってるのでくせものぽい…。

```/etc/modprobe.d/8192cu.conf``` に

```
options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1
```

を書き込んで再起動。参考: [Raspberry Piで無線LANの反応が悪い時の対処法](http://denshikousaku.net/fix-sluggish-response-of-raspberry-pi-wifi-adaptor)



## その他・開発に向けて

ssh するとき名前打つのが面倒くさいので ~/.ssh/config に書いておく

```
Host pi
  User pi
  HostName 192.168.24.49
```

raspi 上の開発、raspi に最新の vim 等を入れたりしていろいろやってみたけど、手元の mac から sshfs でマウントして開発するのが、今のところ一番やりやすいという結論に。