2014-02-21

[.tested] Wowza Media Server [Debian Wheezy][AX3]

Wowza Media Serverは、Flash media server互換のサーバ製品であり、 動画のストリーミング再生、ライブ配信、多人数接続でのチャットサービス、テレビ会議などに対応します。
本製品は、Javaで記述されており、Javaの動作する様々な環境での動作が可能です。


今回、OpenBlocks AX3 JモデルおよびDPモデルによる動作検証を行いました。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作の保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40 JモデルまたはDPモデル


2. 導入方法


Javaのインストール

OpenBlocks AX3の、Debian 7.1版は、Java SE for Embededd 7を標準搭載しており、特にインストールの必要はありません。

wowza media serverパッケージの入手

wowza media systemsのサイトより、Free Trialバージョン、またはデベロッパーバージョンを入手してください。
それぞれ、ユーザ情報の登録を行い、シリアルコードを入手します。
Trialバージョンはトライアル期間が設定されますが、接続数制限がありません。デベロッパーバージョンは期間の設定がなく、接続数制限があります。

インストールするパッケージは、プラットフォームとして、Linux DEB版を選択してください。

Media Server & Video Streaming Server | Wowza Media Systems:

AX3より直接ダウンロードする場合は、wgetコマンドを使用します。
2013/8/19現在の最新版3.6.2の場合は以下のURLとなりますが、より新しいバージョンがリリースされた場合は変更してください。

# wget http://www.wowza.com/downloads/WowzaMediaServer-3-6-2/WowzaMediaServer-3.6.2.deb.bin


apache2パッケージのインストール

評価用のwebサーバとして、apache2をインストールしておきます。

# aptitude install apache2

wowza media serverのインストール

入手したパッケージにより、インストールを行います。

# chmod +x WowzaMediaServer-3.6.2.deb.bin
# ./WowzaMediaServer-3.6.2.deb.bin

トライアル用のシリアルコードの適用

トライアル用のシリアルコードを適用します。

# # cd /usr/local/WowzaMediaServer/bin
# ./startup.sh

ライセンスに関する合意文書に対しての確認の後、シリアルコードを入力すれば、自動的にサーバが立ち上がります。

wowza media serverの起動と停止

起動
# /etc/init.d/WowzaMediaServer start

停止
# /etc/init.d/WowzaMediaServer stop


2. 動作テスト


wowza media serverのインストール手順および、quick streaming testに関しては、以下のサポートフォーラムを参考にして行いました。

 Forum, Support | Wowza Media Systems - Quick Start Guide:


quick streaming testの手順

今回は、apache2を事前にインストールしているため、デフォルトのDocumentRootに評価用のplayer.htmlその他をコピーします。

# cd /usr/local/WowzaMediaServer/examples/VideoOnDemandStreaming/FlashRTMPPlayer
# cp -R * /var/www


テスト用のmp4ファイルは、 /usr/local/WowzaMediaServer/content以下に置いてください。
評価用として、sample.mp4が用意されています。

サーバを起動させた状態で、以下のURLにアクセスします。

http://wowza media serverのIPアドレス/player.html

wowza media serverをインストールしたサーバのアドレスおよび、コンテンツファイル名を入力し、connectボタンを押します。

Server: rtmp://wowza media serverのIPアドレス/vod
Stream: mp4:sample.mp4




3.さいごに


今回は、標準インストールのみで、プラグインなどの評価は行っておりません。

2014-02-18

[.tested] ownCloud 6.0.1 [Debian Wheezy][AX3][A7]

ownCloudは、WebブラウザやWebDAVクライアントからアクセスできるオンラインストレージを構築するソフトウェアです。

ownCloud.org | Your Cloud, Your Data, Your Way!

http://owncloud.org/

今回は、ownCloud をOpenBlocks Aシリーズにインストールする手順を紹介します。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks A7 Debian 7.1 kernel:3.2.40

(*)本ソフトウェアの利用にはSSDキットおよび開発環境の導入が必要です。

1.debianパッケージによる導入方法 (5.0.14)


ownCloudの最新は6.0.1ですが、debian wheezyでのパッケージ対応は、wheezy-backportsにて提供される、
ownCloud 5.0.14.a+dfsg-1~bpo70+2 (Debian)
となります。wheezy-backportsを使用する場合は、/etc/apt/sources.lstに以下の行を追加することで、wheezy-backportsにて提供されるパッケージの導入が可能です。

/etc/apt/sources.lstに以下の行を追加

# Backports repository
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free

パッケージリストの更新とowncloudの導入

# aptitude update
# aptitude install owncloud

上記の操作により、owncloud 5.0.14の構築に必要な関連パッケージも全てインストールされますが、旧バージョンであるため、次項に最新版の導入手順について説明します。

2. 最新版(6.0.1)の導入方法


関連パッケージを導入します。

# apt-get install apache2 php5 php5-gd php-xml-parser php5-intl
# apt-get install php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl
# apt-get install mysql-server mysql-client

ユーザ管理にmysqlを使用する場合は、データベースの初期化を行います。
ユーザ名およびDB名は別途設定されることをお勧めします。 
また、passwordは必ず独自のものを使用してください。


ユーザ名: owncloud@localhost
バスワード: password
データベース名: owncloud

注) A7の場合、ユーザ名を、oc_登録するユーザ名 とする必要がありました。

# mysql -u root -p

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql> grant all on *.* to owncloud@localhost IDENTIFIED BY 'password';
mysql> create database owncloud character set utf8 ;
mysql> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'password';

owncloudのwebページより、パッケージをダウンロードします。
INSTALLページより、tarファイルのURLを入手し、wgetしました。

# wget http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2

パッケージを展開し、/var/www以下へコピーした後、パーミッションを変更します。

# tar xvjf owncloud-6.0.1.tar.bz2
# cp -r owncloud /var/www/
# chown -R www-data:www-data /var/www/

/etc/apache2/sites-enabled/000-defaultを編集します。

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>


apache2の2つのモジュールを有効にし、再起動します。

# a2enmod rewrite
# a2enmod headers
# service apache2 restart

3.httpでの接続テスト


Webブラウザより、以下のURLにアクセスしてください。

http://URLまたはIPアドレス/owncloud

以下の画面が表示されますので、MySQLを選択し、上記で設定したユーザ名、パスワード、データベース名、ホスト名(今回はlocalhost)を入力します。


下記の画面が表示されます。dropboxの様に、専用の同期アプリケーションをインストールする場合は対応する機種のページよりクライアントをダウンロードし、インストールしてください。


Personalメニューより、言語を日本語に設定することが出来ます。


4.httpsによる接続設定


今回は、OpenSSLにより自己認証局を設定し、apache2でのhttps通信を行いました。

設定は以下の手順で行ってください。

# mkdir -p /usr/local/ssl
# cd /usr/local/ssl

秘密鍵を作成します。

# openssl genrsa -aes128 -rand /dev/urandom -out owncloud_server.key 2048
2048 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
...(snip)...
Enter pass phrase for owncloud_server.key: xxxxxxxx
Verifying - Enter pass phrase for owncloud_server.key: xxxxxxxx

証明書の書名要求CSRを生成します。
Countroy NameとCommon Nameだけ設定し、省略可能な部分は.により省略しています。

# openssl req -new -key owncloud_server.key -out owncloud_server.csr
Enter pass phrase for owncloud_server.key:
...(snip)...
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:xxx.xxx.xxx.xxx
Email Address []:xxx@hoge.hoge

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.

サーバ証明書の発行を行います。

#openssl req -in owncloud_server.csr -out owncloud_server.crt -key owncloud_server.key -x509 -days 1825

owncloud_server.keyはバックアップを取った後に削除、パーミッションの設定などを行います。


# chmod 400 owncloud_server.*
# chown root:root owncloud_server.*

apacheを設定します。

# vi /etc/apache2/sites-available/default-ssl

以下の項目を修正します。

SSLCertificateFile /usr/local/ssl/owncloud_server.crt
SSLCertificateKeyFile /usr/local/ssl/owncloud_server.key

ssl関連を有効にし、apache2を再起動します。

# a2enmod ssl
# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl
# service apache2 restart

5.httpsによる接続確認


Webブラウザより、以下のURLにアクセスしてください。

https://URLまたはIPアドレス/owncloud

今回はプライベート認証局であるため、Webブラウザより警告が出ますが、例外として設定します。


確認後、常にhttpsでの接続に変更をします。


6. さいごに 


以上の設定により、owncloud 6.0.1の動作を確認しました。
A7の場合、最初のMySQLでのユーザ名に対して指定したものと違うものを要求されるため、記事内に書いた通りに指定することで回避しています。また、A7をサーバに使用した場合、操作に対しての反応が非常に遅いということも追記しておきます。



2014-02-04

OpenBlocks ファームウェア作成ガイドをgithubにて公開しました

OpenBlocks(AX3, A7, A6, 600)のファームウェア作成ガイドをgithubにて公開しました。

/ debian_based_firmware

・対応ファームウェアについて

OpenBlocksのファームウェアは、機種(AX3, A7, A6, 600)とOS(DebianGNU/Linux)によって異なります。対応しているファームウェアは下の表をご覧ください。

機種キシュ Debian 作成サクセイホスト TARGET DIST ARCH
AX3 7 7/amd64 obsax3 wheezy armhf
AX3 6 6/amd64 obsax3 squeeze armel
A7 7 7/amd64 obsa7 wheezy armel
A6 7 7/amd64 obsa6 wheezy armel
A6 6 6/amd64 obsa6 squeeze armel
600 7 7/i386 obs600 wheezy powerpc

ファームウェアを作成するホストのOSはDebian GNU/Linuxです。そのバージョンとアーキテクチャは、ファームウェアの対象となる機種とOSによって異ります。表の作成ホストに「バージョン/アーキテクチャ」を記述しました。


2014-01-09

[.tested] SquidGuardによるURLフィルタリング [Debian Wheezy][AX3][A7]


前回の記事において、ClamAVによるアンチウィルスゲートウェイの構築方法をご紹介しました。
今回は、この環境にURLフィルタリングの機能として、SquidGuardを導入します。

 SquidGuard:

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40

1.事前準備

squid3などの環境は、前回の記事をご参照下さい。
今回は、前回の環境の上に追加で設定しています。

[.tested] Clam AntiVirusによるWebフィルタリング [Debian Wheezy][AX3][A7]

2.SquidGuardのインストールと設定


squidguardをdebianのパッケージよりインストールします。

# aptitude install squidguard

ドメイン、URLリストの用意

ブロックしたいURL、パスしたいURLをドメイン毎および、URL指定により設定します。
blacklistに関しては、国内においてフリーでメンテナンスされているものは、おそらくありません。
このソリューションを利用する場合、国内サイトのURL/ドメインリストは自身で管理する必要があります。
海外のサイトに関しては、SquidGuardのページからもリンクされていますが、個人使用に限り、無償で提供されるリストがありますので、海外のポルノサイトやスパムサイトなどをある程度ブロックできるのではないかと思います。
今回は、 Shalla Secure Services からblacklistを取得しました。
必要なリストだけを展開すればいいのですが、今回は全て取得しています。

# wget http://www.shallalist.de/Downloads/shallalist.tar.gz
# tar xvzf shallalist.tar.gz
# cp -R BL /var/lib/squidguard/db

/var/lib/squidguard/db/BLの下に全てのカテゴリのデータが展開されていますので、必要なものを使用して下さい。
また、自身で管理するリストの作成は、 /var/lib/squidguard/dbの下に別のディレクトリを作成して管理します。
たとえば、denyというディレクトリを作成し、以下の様に、domainsとurlsというテキストファイルを作成します。

# ls -la deny
total 32
drwxr-xr-x 2 proxy proxy 4096 Jan  8 17:20 .
drwxr-xr-x 4 proxy proxy 4096 Jan  7 17:08 ..
-rw-r--r-- 1 proxy proxy   73 Jan  8 17:20 domains
-rw-r--r-- 1 proxy proxy   32 Dec 26 17:55 urls

それぞれ、domain名またはurlを列記したテキストファイルとなります。

squidGuard.confの設定

時間でのアクセス制限なども可能ですが、今回は、最もシンプルな記述をしています。
badが自身で管理するブラックリスト、pornが、上記のサイトより取得したポルノサイトのブラックリストです。localnetはこちらの環境のIPアドレスを記述していますので、ネットワーク環境に合わせて変更して下さい。

# cat squidGuard.conf
#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#

dbhome /var/lib/squidguard/db
logdir /var/log/squidguard

#
# SOURCE ADDRESSES:
#

src localnet {
        ip      192.168.3.0/24
}

#
# DESTINATION CLASSES:
#

dest good {
}

dest bad {
        domainlist      deny/domains
        urllist         deny/urls
}

dest porn {
        domainlist      BL/porn/domains
        urllist         BL/porn/urls
}

#
# ACL RULES:
#

acl {
        localnet {
                pass good !bad !porn
        }
        default {
                pass none
                redirect http://192.168.3.103/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
                log /var/log/squidguard/block.log
        }
}

redirectの記述は、該当するアドレスのリクエストを受け取った時に、警告ページへリダイレクトする設定であり、cgiスクリプトとして、squidguardパッケージに付属するサンプルを若干修正しています。 警告表示のためのサーバが必要ですが、前回設定したsquidclamav用のapache2環境を使用しています。

# cd /usr/share/doc/squidguard/examples/
# gunzip squidGuard-simple-de.cgi.gz
# cp squidGuard-simple-de.cgi.gz /usr/lib/cgi-bin/

そのままでも動作はしますが、squidguardのロゴファイルを、
http://www.squidguard.org/Logos/squidGuard.gif
に変更しています。

dbファイルは、Berkeley DB形式に変更する必要があります。

全てを更新する場合:
# squidGuard -C all

変更したカテゴリだけを変更する場合:
# squidGuard -C /var/lib/squidguard/db/deny

更新後、dbファイルのユーザ、グループを変更します。

# chown -R proxy /var/lib/squidguard/db/
# chgrp -R proxy /var/lib/squidguard/db/

3.squid3の設定


squidguardは、squidclamavの設定から呼び出すことも可能ですが、squid3側で設定することをお勧めします。

/etc/squid3/squid.confに以下の行を追加します。該当のオプションがある部分を編集してください。

  :
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
  :

編集後、squid3の設定のリロードを行います。

# service squid3 reload


4.動作確認


ブロック指定したドメインのwebサイトにアクセスしてみます。



今回は、前回最後に設定した透過型設定であるため、ブラウザ側でのproxy設定は行っていません。

5.Wifi接続によるモバイルデバイスへの対応


Wifi APとして動作させる方法としては、以下の記事を参考にして下さい。
今回はブリッジ設定により同一セグメントとして扱いました。

 [.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]

/etc/network/interfacesのbr0設定に関しては、前回の記事で行った、eth0-eth1ブリッジの設定を変更する必要はありません。wlan0はhostapdが起動時にaddします。

以下、iphone4Sでアクセスした場合のスクリーンショットです。

<テストウィルス検出時>

<URLフィルタリング>

6.さいごに


今回は、squidguardを使用したURLフィルタリング装置の構築を行いました。
同時にWifiAPとして設定することにより、モバイルデバイス向けのWebフィルタリングも行ってみました。

2013-12-20

[.tested] Clam AntiVirusによるWebフィルタリング [Debian Wheezy][AX3][A7]


Clam AntiVirus は、オープンソースで提供されるクロスプラットフォームのアンチウイルスソフトウェアであり、OpenBlocksが採用するDebianにおいてもパッケージが用意されています。

 Clam AntiVirus:

今回、clamav、squid3、squidclamav(+c-icap)による、webアンチウィルスゲートウェイについて、squidを利用した、proxy型構成、および、透過型の構成について、設定の手順を紹介します。


OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40

1.事前準備


squidclamavは最新のパッケージをビルドする必要がありますので、開発環境および、必要なライブラリをあらかじめインストールしておく必要がります。

開発環境のインストール
# aptitude install build-essential

ライブラリのインストール
# aptitude install curl libcurl4-gnutls-dev c-icap libicapapi-dev

2.clamav-daemonのインストールと設定


clamavをdebianのパッケージよりインストールします。


# aptitude installclamav-daemon

パッケージインストールにより、clamdは自動的に立ち上がる設定となりますが、初期化のために、一度手動で立ち上げを行う必要があるようです。

# /etc/init.d/clamav-daemon start

3.squid3のインストールと初期設定


squid3をdebianのパッケージからインストールします。

# aptitude install squid3

まずは、web proxyとして必要な設定を行います。
/etc/squid3/squid.conf の、該当する部分を追加または、コメントを外してください。
今回は、localnetとして、192.168.3.x を設定し、そこに許可を与えています。

  :
acl localnet src 192.168.3.0/24 # local network
  :
http_access allow localnet
  :

一度再起動し、ブラウザよりproxyサーバを指定して動作確認します。

# /etc/init.d\squid3 restart

squidclamavを使用するための、c-icapの設定追加については次項で説明します。

4.squidclamavのインストールと設定


squidclamavを入手します。

 SquidClamav : Securing Web Delivery (antivirus for Squid):


より、最新の6.10を入手しました。

# wget http://sourceforge.net/projects/squidclamav/files/squidclamav/6.10/squidclamav-6.10.tar.gz

解凍し、ビルド、インストール作業を行います。

# tar xvzf squidclamav-6.10.tar.gz
# cd squidclamav-6.10
# ./configure --prefix=/usr/local/c-icap
# make
# make install

警告表示用のコンテンツサーバとして、apache2を使用しています。
新規にインストールする場合は、以下の手順となります。

# aptitude install apache2

squidclamavをビルドした場所より、警告用画面表示のcgiをapache2のデフォルトのcgi-binディレクトリへコピーします。

# cp cgi-bin/clwarn.cgi /usr/lib/cgi-bin

/etc/squidclamav.confを編集し、redirect先を指定します。
サーバのIPアドレスはご使用のものを記述してください。

# tredirect http://192.168.3.103/cgi-bin/clwarn.cgi

5.squid3+c-icapの設定


squid3の追加設定

/etc/squid3/squid.confを編集し、c-icapに対応した以下のパラメータを変更、もしくは追加記述して下さい。

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Authenticated-User
icap_preview_enable on
icap_preview_size 1024
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

 c-icap関連の設定

/etc/c-icap/c-icap.confに、以下の記述を追加します。

Service squidclamav squidclamav.so

c-icap を自動起動させるため、/etc/default/c-icapを修正します。

START=yes

c-icapおよび、squid3を再起動します。(もしくはreboot)

# /etc/init.d\squid3 restart
# /etc/init.d\c-icap restart

6.proxy型設定での動作確認


テスト用のデータとして、以下のサイトのデータを利用します。

Home ° EICAR - European Expert Group for IT-Security:


テスト用ウィルスをダウンロードすると、以下の警告画面が表示されます。



7.透過型構成への変更


proxyサーバの設定が不要な透過モードでのWebフィルタリングを行う場合は、ブリッジ構成のため、ネットワークポートを複数備えるAX3もしくはA7を使用します。

ブリッジ構成へのネットワーク設定変更

ブリッジの構成のために、bridge-utilsをインストールします。

# aptitude install bridge-utils

/etc/network/interfaces を編集し、eth0、eth1の設定を全てコメントで外し、
br0を設定します。
( 以下の設定はこちらでのテスト環境ですので、ご自身の環境に合わせて変更して下さい)

auto br0
iface br0 inet static
address 192.168.3.103
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.1
dns-nameservers 172.16.12.10
bridge_ports eth0 eth1

iptablesによる、ポートの変換設定

ポート80から送出されたリクエストパケットを3128へリダイレクトする設定を行います。

# iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

/etc/squid3/squid.confを編集します。

http_port 3128 transparent

本装置は、フィルタを行いたいノードのHubの上流へIN-OUTの形で接続してください。

8.さいごに


今回は、clamavを使用したWebフィルタリング装置の構築方法として、proxy型/透過型の最低限必要な設定を行いました。
squidに関しては、URLフィルタリングも比較的簡単に実装出来ますので、別途パフォーマンスのチューニングポイントと合わせてご紹介します。

2013-12-12

[.tested] TI CC2541 SensorTag Development Kit[debian Wheezy][AX3][A7]




先日、以下の記事で紹介した、TI CC2541 SensorTag Kitと、OpenBlocks Aシリーズとの接続評価を行いました。

TI CC2541 SensorTag Development Kit


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A6/A7 kernel: 3.2.40

1. 事前準備


本装置は、Bluetooth LEにより通信を行うため、OpenBlocks本体に、USB Bluetoothアダプタを接続して使用します。
Bluetoothアダプタに関しては、以下の記事において、一部製品の接続検証を行っております。

 周辺機器接続テスト

上記の記事に、Bluetooth接続に関する説明を記述しておりますが、今回は、Bluetooth LEによる接続であるため、手順に関しては本記事にて説明します。

Bluez 5.12の導入

Debian Wheezyにて提供されるbluezパッケージでは、gatttoolによるデータのwriteが出来ず、Web検索したところ、以下のページを参考に、5.12をインストールしました。
また、下記ページでは今回使用したデバイスそのもののテストも行っています。

Michael Saunby: Raspberry Pi and TI CC2541 SensorTag:

導入に際しては、事前に開発環境のインストールを行ってください。
( すでに行っている場合は必要ありません)

# aptitude install build-essential

Bluez 5.12のビルドに必要なライブラリをインストールします。

# aptitude install libglib2.0-dev libdbus-1-dev libusb-dev libudev-dev libical-dev systemd libreadline-dev

Bluez 5.12を入手し、解凍します。

# wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.12.tar.xz
# tar -Jxvf bluez-5.12.tar.xz

INSTALLドキュメントに従い、インストールします。

# cd bluez-5.12/
# ./configure
# make
# make install

2. 接続方法


CC2541のデータハンドリングは、以下のTI Wikiに記述されています。

SensorTag User Guide - Texas Instruments Wiki:


今回は、wheezyのbluetoothサポートパッケージを導入していませんので、手動でデバイスの立ち上げからテストまでを行っています。

# hciconfig hci0 up

デバイスサイドにあるスイッチを押して、BLEデバイスのスキャンを行います。


# hcitool lescan
LE Scan ...
34:B1:F7:D5:59:2A (unknown)
34:B1:F7:D5:59:2A SensorTag
 :
 :

gatttoolにより、インタラクティブにセンサーデータを取得してみます。

# gatttool -i hci0 -b 34:B1:F7:D5:59:2A -I
[34:B1:F7:D5:59:2A][LE]> connect
Attempting to connect to 34:B1:F7:D5:59:2A
Connection successful
[34:B1:F7:D5:59:2A][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0x002a uuid: f000aa00-0451-4000-b000-000000000000
attr handle: 0x002b, end grp handle: 0x0035 uuid: f000aa10-0451-4000-b000-000000000000
attr handle: 0x0036, end grp handle: 0x003d uuid: f000aa20-0451-4000-b000-000000000000
attr handle: 0x003e, end grp handle: 0x0048 uuid: f000aa30-0451-4000-b000-000000000000
attr handle: 0x0049, end grp handle: 0x0054 uuid: f000aa40-0451-4000-b000-000000000000
attr handle: 0x0055, end grp handle: 0x005c uuid: f000aa50-0451-4000-b000-000000000000
attr handle: 0x005d, end grp handle: 0x0061 uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
attr handle: 0x0062, end grp handle: 0x0068 uuid: f000aa60-0451-4000-b000-000000000000
attr handle: 0x0069, end grp handle: 0xffff uuid: f000ffc0-0451-4000-b000-000000000000
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 00 00 00 00
[34:B1:F7:D5:59:2A][LE]> char-write-req 3c 01
Characteristic value was written successfully
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 4c 6d 46 60
[34:B1:F7:D5:59:2A][LE]>


上記の手順により、センサーデータから数値を取得することが出来ます。


ただし、このデバイスは常時監視する用途には向きません。
USBに直結するタイプのインターフェースも配布されていますので、別途入手して評価する予定です。

2013-12-11

[.tested] OpenBlocks AX3/A7 OpenSSLベンチマーク [debian Wheezy][AX3][A7]

OpenSSLは、DebianのパッケージよりUbuntuの方が40%前後良い結果になるのですが、原因はコンパイルオプションの違いによるものと思われます。
今回、マイクロサーバ技術課にてDebianのOpenSSLを再構築、速度検証を行った結果を、当blogにて報告します。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

1.OpenSSLの作成


開発環境の準備

SSD併用モードの検証機を用意します。
以下のコマンドを入力して、ビルド環境を作成します。

# apt-get install build-essential devscripts
# apt-get build-dep openssl
# apt-get source opnessl


OpenSSLのビルド

configはデフォルトで。

# cd openssl-1.0.1e
# ./config
# make


2.ベンチマーク


以下のopensslのオプションコマンドによるベンチマークを行いました。

# openssl speed md5 sha rc4 aes-128-cbc aes-256-cbc -elapsed

elapsedオプション このオプションを付けた場合は、経過時間に実時間を使用します。
付けない場合は、経過時間にユーザ時間を使用します。
( timeコマンドでいうところのrealを使うかuserを使うかの違いです。)


# time
real 0m0.000s
user 0m0.000s
sys 0m0.000s

AX3

MD5

16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 3959.72k 14570.50k 45317.27k 96043.04k 142521.75k
rebuild 3176.47k 11748.89k 38143.49k 86815.81k 139127.92k

SHA


SHA1
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 4118.90k 13892.91k 37209.22k 64278.28k 81364.79k
rebuild 3258.12k 11657.12k 35595.82k 73223.14k 105856.43k

SHA256
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 1185.47k 2831.95k 21233.46k 27692.57k 30383.88k
rebuild 9166.13k 22245.57k 40425.80k 50926.48k 55104.13k

SHA512
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 1001.78k 4010.72k 5859.25k 8083.48k 9087.40k
rebuild 2900.56k 11631.05k 16581.49k 22607.95k 25313.55k

RC4

16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 76616.54k 92183.77k 99732.75k 101792.74k 101980.87k
rebuild 86311.48k 97458.94k 101188.81k 102165.26k 101828.47k

AES


AES 128 CBC
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 19698.47k 24733.85k 26619.24k 27161.86k 27324.81k
rebuild 37864.58k 48231.72k 52411.28k 53509.61k 53727.00k

AES 256 CBC
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 15526.19k 18610.97k 19649.15k 19927.86k 20001.00k
rebuild 31212.60k 37900.44k 40606.87k 41398.18k 41575.08k
A7

MD5

16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 1498.52k 5339.41k 15721.63k 30893.06k 42628.34k
rebuild 1175.85k 4268.61k 13349.97k 28286.55k 42101.42k

SHA


SHA1
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 1297.46k 4093.24k 10183.34k 16189.44k 19507.88k
rebuild 1140.14k 3761.33k 9810.09k 16310.86k 20307.97k

SHA256
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 1185.47k 2831.95k 5132.54k 6406.29k 6927.70k
rebuild 2689.97k 6131.58k 10653.60k 13119.15k 14002.60k

SHA512
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 153.51k 617.22k 871.08k 1195.69k 1349.91k
rebuild 729.19k 2926.45k 4139.18k 5635.75k 6278.72k

RC4

16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 22444.42k 25887.09k 27038.89k 27221.73k 27396.78k
rebuild 22965.96k 26169.81k 27001.28k 27336.02k 27303.04k

AES


AES 128 CBC
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 4880.32k 5504.11k 5666.79k 5733.38k 5720.79k
original 7606.46k 8501.16k 8808.19k 8854.03k 8899.24k

AES 256 CBC
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
original 3751.82k 4089.11k 4202.92k 4214.39k 4232.53k
rebuild 5890.15k 6452.46k 6589.41k 6650.88k 6660.10k
3.検証結果から


AX3
  • AESは2倍程度高速となります。
  • MD5は遅くなります。
  • RC4, SHA1は大きく変わりません。SHA256, SHA512は数倍高速となります。
A7
  • AESは3割程度高速となります。
  • MD5は遅くなります。
  • RC4, SHA1は大きく変わりません。SHA256, SHA512は数倍高速となります。

暗号化アルゴリズム単位で指定できるので、MD5を指定しない前提であれば、リビルドをすることにより速度向上を見込めます。