ちょっといきぬき

vimとかpythonとかロボットとかMLとか環境構築とかの興味ある技術のことを書きたいだけの人生だった。

NAO/Pepperで固定IPを割り当てたい

元々NAO/PepperにStatic IPを振りたかったがうまくいかず挫折。
この度手順を理解したので忘れないようにここに記す。

フォーラムを見ていると、既に設定されている(一度接続した事がある)アクセスポイントについては設定を削除してから行う必要があるとのことだが…

ロボットウェブページ、旧ロボットウェブページからは上手く設定が削除できなかったり(?)とハマりポイントがある気がしたので該当アクセスポイントの設定済みな状態からほぼ確実にIP固定する方法についての手順まとめ。

免疫事項

あくまで非公式の手順です。
Pepperの公式では出来ない、サポート対象外と明記されています。(2017/7/25現在)

faq.mb.softbank.jp

NAOqiのベースになっているGentoo OSのconnmanコマンドによって固定IPを実現しています。

情報に不備がある可能性や、アップデートにより正常に動かなくなる場合があるため情報を鵜呑みにせず、自己責任で対応下さい。

仮にNAO/Pepperの設定を間違えて繋がらなくなってしまった場合は初期化が必要になることがあります。

必要なもの

・NAO or Pepper
・無線アクセスポイント(同じ手順で有線のIP固定も行けるみたい)
・LANケーブル
・Terminalの使えるPC(WindowsならTera TermやPuttyMacなら標準Terminalでおk)

手順

  1. 有線LANでPCとロボットのネットワークを疎通させておく

  2. ブラウザから旧ロボットウェブページにアクセスする

    http://[ロボットのIP Address]/advanced
    http://[ロボットのホスト名].local/advanced
    
  3. Basic認証の入力画面が出てきたら以下の情報を入力する

    User name: nao
    Password: nao(デフォルト)
    
  4. 旧ロボットウェブページ > Network > 該当アクセスポイント > Disconnect

  5. Terminalソフトを開いてNAOに接続する

    Protocol: ssh
    Port: 22
    Host name: ロボット名
    User name: nao
    Password: nao(デフォルト)
    

    NAOに接続したら以下のコマンドを叩いていく

  6. スーパーユーザになる

    $ su
    password: root
    
  7. connmanコマンドで使う該当アクセスポイントの識別子を取得

    # connman services
    
     * AR Wired                { ethernet_001395183773_cable }
     * A   該当アクセスポイント           { wifi_xxxxxxxxxxxx_managed_psk }
     ...
    
  8. 該当アクセスポイントの設定を削除

    # connman remove wifi_xxxxxxxxxxxx_managed_psk
    
  9. 該当アクセスポイントに固定したいIP、Subnet、Gatewayを設定

    /usr/lib/connman/test/set-ipv4-methodの使い方は以下の通り
    /usr/lib/connman/test/set-ipv4-method <service> [off|dhcp|manual <address> [netmask] [gateway]]

    例:
    # /usr/lib/connman/test/set-ipv4-method wifi_xxxxxxxxxxx_managed_psk manual 192.168.1.x 255.255.255.y 192.168.1.z
    

    エラーが出なければこれでコマンドの入力は終了。 ブラウザの操作に戻る。

  10. 旧ロボットウェブページ > Network > 該当アクセスポイント > ConfigurationでNameserver(DNS)を入力 > send

  11. 旧ロボットウェブページ > Network > 該当アクセスポイント > Connect

  12. ロボットが指定のIPを取得していることを確認する

補足

・NAO/Pepperのネットワーク設定コマンドはifconfigではなくconnmanな点に注意

・手順10でNameserverを設定せずにConnectすると接続済み(オフライン)なステータスになるはず…(違う場合はコメント下さい)

DHCPに戻したい時はスーパーユーザ時に以下コマンド叩けばおk

# /usr/lib/connman/test/set-ipv4-method wifi_xxxxxxxxxxx_managed_psk dhcp

参考文献

Pepperへの固定IPアドレス設定方法 | SoftBank Robotics Community

NAO - Connectivity — Aldebaran 2.1.4.13 documentation