RaspberryPiのネットワーク周りをNetworkManagerで構成する


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

  1. [Internationalization Options]
  2. [Change Keyboard Layout]
  3. "Generic 105-key(Intl) PC"
  4. "Japanese"
  5. "The default for the keyboard layout"
  6. "No compose key"
  7. ""

これで私のキーボード(NEC製のふっつーのキーボード)が刻印通りに入力されるようになりました。

タイムゾーンの変更

terminalからsudo raspi-config

  1. [Internationalization Options]
  2. [Change Timezone]
  3. "Asia"
  4. "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_mgmtprotoを加えています。

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に変更します。

/etc/network/interfaces
:
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にコピーします。

コピーしたファイルを編集します。

/etc/usb_modeswitch.d/1004
# 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...]を選択します。

  1. [Set up a Mobile Broadband Connection]で[Next]
  2. [Choose your Provider's countory or Region]で"Japan"を選択して[Next]
  3. [Choose your Provider]で[I can't find my provider〜]を選択し、Providerに"soracom"と入力します。
  4. [Choose your Billing Plan]で[Selected plan APN]に"soracom.io"と入力します
  5. [Confirm Mobile Broadband Settings]で[Apply]

作成されたファイルを編集します。ファイルを直接作成してもよいのですが、uuidの付与方法がわからなかったので、一旦GUIで作成しています。

/etc/NetworkManager/system-connections/soracom
[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に接続できるようにしよう。

参考にしたページ