CodeZine(コードジン)

特集ページ一覧

続・モノのインターネットのこれから
~カジュアルにモノのインターネットを楽しむ、その先の未来

システム環境の明後日を支える新技術(8)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/12/21 14:00

目次

IPv6 over Bluetooth(RFC7668)を試してみる

 ノルウェー王国に本拠地を置くNordic Semiconductor社のnRF51系チップは、いち早くIPv6 over Bluetoothに対応しています。IoT SDKの公開も行われていますので、今回はRed Bear社製 BLE Nanoを使ってIPv6とBluetoothの世界をいち早く体験してみましょう(※筆者も試し始めたばかりなので「動く」程度の情報です)。

実行ファイルの作成

 まずは、次の手順に従ってGCC-ARM開発環境をLinux上で準備し、実行ファイルを作成しましょう。

1. Linux開発環境を準備する

# uname -sr; cat /etc/redhat-release
Linux 3.10.0-229.20.1.el7.x86_64
CentOS Linux release 7.1.1503 (Core)

# yum install -y wget net-tools bzip2 bc openssl-devel bluez usbutils ld-linux.so.2
# yum groupinstall "Development Tools" -y

2. GCC-ARM Embeded開発環境を準備する

 https://launchpad.net/gcc-arm-embedded/からパッケージをダウンロードします。

# cd /usr/local/
# tar vxfj /opt/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2

3. nRF51 Iot SDK開発環境を準備する

 https://developer.nordicsemi.com/nRF51_IoT_SDK/からパッケージをダウンロードします。

# cd /opt
# unzip nrf51_iot_sdk_0.8.0_f1f6187.zip
# vi /opt/Nordic/nrf51/components/toolchain/gcc/Makrfile.posix
GNU_INSTALL_ROOT := /usr/local/gcc-arm-none-eabi-4_9-2015q3
GNU_VERSION := 4.9.3
GNU_PREFIX := arm-none-enbi

4. サンプルアプリケーションをコンパイルする

# cd /opt/Nordic/nrf51/examples/iot/mqtt/publisher/boards/pca10023/armgcc
# make

5. HEXファイルをLinuxからWindowsにコピーし実行ファイルを作成する

 s1xx-iot-prototype2_softdevice.hexをnrf51_iot_sdkからコピーします。

 nrf51422_xxac_s1xx_iot.hexをnrf51_iot_sdkからコピーします(コンパイルしたもの)。

C:\nrf51_iot_sdk> mergehex.exe --merge s1xx-iot-prototype2_softdevice.hex nrf51422_xxac_s1xx_iot.hex --output output.hex

 ※出来上がった実行ファイル(output.hex)をD:\(MBED)nRF51 USBドングルへコピーします。

Linux環境の作成と動作検証

 続いて、IPv6 over Bluetooth(6LoWPAN)に対応するLinux環境を作ります(図8)。ここではLinux Kernelとして4.1.3を用いています。Kernelを作り替え、新たな環境を作り出しましょう。

図8. IPv6 over Bluetooth(6LoWPAN)Linux環境を整備する
図8. IPv6 over Bluetooth(6LoWPAN)Linux環境を整備する

1. IPv6 over Bluetooth(6LoWPAN) Linux環境を整備する

# uname -sr; cat /etc/redhat-release
Linux 3.10.0-229.20.1.el7.x86_64
CentOS Linux release 7.1.1503 (Core)

# yum install-y wget net-tools bzip2 bc openssl-devel bluez usbutils
# yum groupinstall "Development Tools"-y

# cd /usr/local/src/
# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.1.13.tar.xz
# tar vxf ./linux-4.1.13.tar.xz
# cd /usr/local/src/linux-4.1.13
# cp/boot/config-3.10.0-229.20.1.el7.x86_64./.config

# make oldconfig
# vi.config
CONFIG_6LOWPAN=m
CONFIG_6LOWPAN_NHC=m
CONFIG_6LOWPAN_NHC_DEST=m
CONFIG_6LOWPAN_NHC_FRAGMENT=m
CONFIG_6LOWPAN_NHC_HOP=m
CONFIG_6LOWPAN_NHC_IPV6=m
CONFIG_6LOWPAN_NHC_MOBILITY=m
CONFIG_6LOWPAN_NHC_ROUTING=m
CONFIG_6LOWPAN_NHC_UDP=m
CONFIG_IEEE802.154_6LOWPAN=m
CONFIG_BT_6LOWPAN=m

# make; make modules_install; make install
# sync; sync; sync; reboot
# uname -sr
Linux 4.1.13

 最後に動作検証です。図9のように新たなLinux Kernelで作ったIPv6 over Bluetooth(6LoWPAN)環境を設定しましょう。それが終われば、動作確認です。

図9. IPv6 over Bluetooth(6LoWPAN)を設定する
図9. IPv6 over Bluetooth(6LoWPAN)を設定する

2. IPv6 over Bluetooth(6LoWPAN)を設定する

# modprobe bluetooth_6lowpan
# hciconfig hciO up
# echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable

3. IPv6 over Bluetooth(6LoWPAN)に接続する

# hcitool lescan
LE Scan ...
00:6B:53:21:30:A8|PV6ICMP

# echo "connect 00:6B:53:21:30:A8 1" > /sys/kernel/debug/bluetooth/6lowpan_control

4. IPv6 over Bluetooth(6LoWPAN)を確認する

# hciconfig -a
hcio: Type: BR/EDR Bus: USB
    BD Address:5C:F3:70:63:06:D9 ACL MTU: 1021:8 SCO MTU: 64:1
    UP RUNNING PSCAN

# ifconfig -a
bt0: flags=4177<UP,POINTOPOINTRUNNING,MULTICAST> mtu 1280
    inet6 fe80::5ef3:70ff:fe63:6d9 prefixlen 64 scopeid 0x20<link>

5. Ping6 over IP over Bluetooth(6LoWPAN)で疎通確認する

# ping6 -c2 -| bt0 ff02::1 | grep DUP
64 bytes from fe80::26b:53ff:fe21:30a8: icmp_seq=1 tt|=64 time=77.5 ms (DUP!)

# pingo fe80::26b;53ff:fe21:30a8 -| bt0
64 bytes from fe80::26b:53ff:fe21:30a8: icmp_seq=1 ttl=64 time=146 ms
64 bytes from fe80::26b:53ff:fe21:30a8: icmp_seq=2 ttl=64 time=157 ms
64 bytes from fe80::26b:53ff:fe21:30a8: icmp_seq=3 ttl=64 time=100 ms

 Bluetooth 4.1で規格が整理されBluetooth 4.2のIPSP(Internet Protocol Support Profile)によって実現されるIPv6 over Bluetoothの世界は、いかがでしたか? 先ごろApple社のiPhone 6s/6s PlusでもBluetooth 4.2対応が完了したという噂や、今後のiOSではアプリケーション開発にIPv6対応が必須などのお話が耳に聞こえてきているので、こういった世界も近い未来に現実のモノになっていくと筆者も感じています。

 最後に総括ではありませんが、筆者なりの雑感を読者の皆さまに共有したいと思います。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:システム環境の明後日を支える新技術

もっと読む

著者プロフィール

  • 松本 直人(マツモト ナオト)

    1996年より特別第二種通信事業者のエンジニアとしてインターネット網整備に従事。その後システム・コンサルタント,ビジネス・コンサルタントを経て2010年より,さくらインターネット株式会社 / さくらインターネット 研究所 上級研究員。(2016年より一時退任) 研究テーマはネットワーク仮想化など。...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5