RaspberryPiのネットワーク(Wi-Fi/PPP)をNetworkManagerを使って構成すると大変便利そうだったので、その手順のメモ。
Raspbian Jessieでの手順です。
やること
- OS(Raspbian)をインストール
- ネットワーク設定(暫定)
- ネットワーク設定(NetworkManager)
- soracom接続
用意しているもの
- Raspberry Pi 2 Model B
- SDカード 16GByte
- wifiドングル (Planex GW-USNano)
- USBドングル(Docomo L-02C)
- SORACOM Air SIM
- wifiルータ(諸事情により有線LANは使っていません)
OS(Raspbian)をインストール
「okuzawatsの日記」を参考にさせていただきました。
ただし、最後の"Raspberry Piの初期設定"は実施していません。
インストールが終わり、再起動するとGUIのデスクトップが表示されます。
キーボードレイアウトの変更
表示の日本語化は行いませんが、日本語レイアウトのキーボードを使用するための設定を行います。
terminalからsudo raspi-config
- [Internationalization Options]
- [Change Keyboard Layout]
- "Generic 105-key(Intl) PC"
- "Japanese"
- "The default for the keyboard layout"
- "No compose key"
- ""
これで私のキーボード(NEC製のふっつーのキーボード)が刻印通りに入力されるようになりました。
タイムゾーンの変更
terminalからsudo raspi-config
- [Internationalization Options]
- [Change Timezone]
- "Asia"
- "Tokyo"
viの設定
とりあえず、編集中にカーソルキーを押すとABCDと入力されてしまうので、vimrcに対して設定を行います。
$vi ~/.vimrc
.vimrcに
set nocompatible
を追記します。ちなみに私は pi と root の.vimrcを編集しました。
ネットワーク設定(暫定)
後からNetworkManagerをインストールしてそちらでwlanもpppも管理するのですが、NetworkManagerをインストールするためのネットワーク接続が必要になるために、一旦設定します。
なお、有線LANが使用できる場合はこの手順は不要です。
wifiドングルをUSBポートに挿すと、USBデバイスとして認識されます。
$ lsusb
:
Bus 001 Device 005: ID 2019:ab28 PLANEX GW-USNAano
:
接続先のSSIDとパスフレーズを確認し、以下のコマンドを実行します
$ wpa_passphrase 接続先のSSID 接続先のパスフレーズ
wpa_passphrase
コマンドの結果を以下のように /etc/wpa_supplicant/wpa_supplicant.confに追記します。
wpa_passphrase
コマンドの結果にkey_mgmt
とproto
を加えています。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="接続先のSSID"
#psk="接続先のパスフレーズ"
psk=暗号化されたパスフレーズ
key_mgmt=WPA-PSK
proto=WPA2
}
この辺はおそらくwifiドングルにより異なるので、つながらない場合は、製品名を使ってググってください。
なお、接続先がステルスモードのときはGW-USNAanoでは一筋縄ではいきませんでした。(というか挫折しました)
/etc/network/interfacesを編集し、以下のようにmanualからdhcpに変更します。
:
allow-hotplug wlan0
iface wlan0 inet dhcp # manual -> dhcp
:
この辺で再起動します。
以下のコマンドでIPアドレスが割りあたっていることを確認します。
$ ip address show wlan0
:
inet 192.168.xxx.xxx/24 brd 192.168.xxx.xxx
:
これで接続できるはずなので、Webブラウザでgoogleなどを開いてみてください。
ネットワーク設定(NetworkManager)
NetworkManagerのインストールとdhcpcd5の削除を行います。
$ sudo apt-get install -y network-manager
$ sudo apt-get install -y network-manager-gnome
$ sudo apt-get remove -y dhcpcd5
ここで一旦再起動します。まだWi-Fiには接続していません。
apt-get install でなんか404エラーになる場合
apt-get install -y network-manager
を実行すると404 Notfoundが出まくりました。
/etc/apt/sources.listを何も変更せずに保存だけしてから、apt-get update
を実行してからinstallを実行するとうまくいきました。
Wi-Fiの設定
NetworkManagerのインストール時の最後に、今ある設定は消しなさい的なメッセージが表示されます。
/etc/network/interfacesをすべてコメントアウトし、 /etc/wpa_supplicant/wpa_supplicant.conf に追加したものをすべて削除します。
再起動後、右上のタスクトレイ(って呼ぶのかな?)からコンテキストメニューを表示し、接続したいSSIDを選択し、パスフレーズ等を設定します。
このとき、Passwordのテキストフィールドの右にあるアイコンをクリックし、"Store password for all users"を選択しておきます。
これでwifiにつながります。
SORACOM接続設定
L-02C用のusb_modeswitch設定を行う。
usb_modeswitchのL-02Cに対する設定はすでに/lib/udev/rules.d/40-usb_modeswitch.rules及び/usr/share/usb_modeswitch/configPack.tar.gzに含まれていますが、5秒間のWaitを入れるために設定をオーバーライドします。
/usr/share/usb_modeswitch/configPack.tar.gz の中にあるファイルのうち、対象デバイスのファイルを探します。
$ tar -tf configPack.tar.gz | grep 1004
1004:1000
1004:607f
1004:613a
1004:613f
1004:614e
1004:6156
1004:6190
1004:61aa
1004:61dd
1004:61e7
1004:61eb
1004:6327
$ dmesg | grep 1004
[ xxx.xxxxxx] usb 1-1.4: New USB device found, idVendor=1004, idProduct=61dd
ということで、1004:61ddがオーバーライドすべきファイルです。tarを展開して得られる1004:61ddファイルを/etc/usb_modeswitch.dにコピーします。
コピーしたファイルを編集します。
# LG L-02C LTE
TargetVendor=0x1004
TargetProduct=0x618f
StandardEject=1
WaitBefore=5
WaitBefore
行を追記しています。
ここでL-02Cを接続したあと、dmesgコマンドを実行し、GSM modem
が出力されていることを確認します。
soracomへの接続設定
一旦GUIでNetworkManagerの設定ファイルを作成してから内容をエディタで編集します。
タスクトレイのNetworkManagerアイコンから、[New Mobile Broadband connection...]を選択します。
- [Set up a Mobile Broadband Connection]で[Next]
- [Choose your Provider's countory or Region]で"Japan"を選択して[Next]
- [Choose your Provider]で[I can't find my provider〜]を選択し、Providerに"soracom"と入力します。
- [Choose your Billing Plan]で[Selected plan APN]に"soracom.io"と入力します
- [Confirm Mobile Broadband Settings]で[Apply]
作成されたファイルを編集します。ファイルを直接作成してもよいのですが、uuidの付与方法がわからなかったので、一旦GUIで作成しています。
[connection]
id=soracom
uuid=xxxxxxxxxxxxxxxxxxxxxxxx
type=gsm
autoconnect=true
[gsm]
number=*99***1#
username=sora
password=sora
apn=soracom.io
[ipv6]
method=auto
[ppp]
refuse-eap=true
refuse-mschap=true
refuse-mschapv2=true
[serial]
baud=460800
[ipv4]
method=auto
この状態からRaspberryPiをshutdownし、L-02Cを接続してから起動すると、1分以内くらいでsoracomに接続されるはずです。(ログインしなくても接続されます)
接続されたら、metadataを取得して接続を確認してみましょう。
$curl http://metadata.soracom.io/v1/subscriber
次は、もうひとつ手元にあるAK-020でもsoracomに接続できるようにしよう。
参考にしたページ
- あっきぃ日誌:NetworkManager、usb_modeswitch
- Aldebaranな人のブログ:wifi接続設定