2014-06-16

[.tested] Wireshark [debian Wheezy][AX3][A7][A6]

GUI版のネットワークアナライザ、WiresharkをOpenBlocks Aシリーズで利用するためのTipsです。

 Wireshark · Go Deep.:

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

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)

1. 導入前の準備


OpenBlocks Aシリーズは本体にグラフィック表示機能を持ちません。
X環境を導入するためには、USB VGAディスプレイアダプタを利用するか、X端末ソフトウェアなどを利用する必要があります。

USB VGAディスプレイアダプタについては、以下の記事を参考にしてください。

【.tested】RATOC REX-USBDVI2 ディスプレイアダプタ [Debian Wheezy][AX3][A6]

X端末ソフトウェアの導入方法に関しては、SourceForgeの以下の記事などを参考にしてください。


2. Wiresharkの導入


debianのパッケージを導入します。
 
#aptitude install wireshark

3. 動作確認


メニューより起動するか、xtermなどからwiresharkを直接起動します。

wiresharkは、セキュリティ上のポリシーから、rootで直接起動することを推奨していません。
rootで起動した場合は、以下の警告メッセージが出力されます。



そのため、一般ユーザでログインして、wiresharkを立ち上げることになりますが、 dumpcapというパケットキャプチャプログラムに許可を与える必要があります。
wireshark wikiのページにもありますが、以下の方法で設定します。

# setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap

ただし、このFile Capabilitiesの仕組みは、aufsでは対応しておらず、aufsによるOpenBlocksのディスク共有モードで利用する場合は、setcapによる許可が与えられません。
( 一つの解決策としては、dumpcapに+sしてしまうという方法もありますが、前提から考えても、お勧めできません)

ユーザモードによる動作を行いたい場合は、aufsではなく、ext4などのファイルシステムでシステムを構成する必要があります。
rootfsの変更方法に関しては、以下の記事にて解説しています。

OpenBlocks Aシリーズ rootfs変更方法 (FlashROMブート) [debian Wheezy][AX3][A7][A6]
 
今回は、ext4にて作成したrootfsに変更することにより、dumpcapのFile Capabilityを変更しました。

表示画面は以下のようになります。



なお、上記の画面は、Xmingを利用し、OpenBlocksにはwiresharkだけをインストールして使用しています。

4. さいごに


今回は、wiresharkの利用方法についてご紹介しました。
GUIを使用しない場合、tsharkもdebianのパッケージとして提供されていますので、お試しください。

2014-06-09

[.tested] Planex GW-450D 無線LANアダプタ [AX3][A7][A6]

Planex GW-450Dは、802.11ac/n/a/g/bに対応したUSB無線LANアダプタです。
GW-450Dは、写真の小型のタイプと、稼働式アンテナのついたGW-450D KATANAがありますが、アンテナ以外は同一の設計の製品と思われます。
Openblocks AX3およびA7での動作検証を行いました。


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

<検証環境>
OpenBlocks AX3/4 Debian 7.5 kernel: 3.2.54
OpenBlocks A7 Debian 7.5 kernel:3.2.54

1. 対応ドライバと事前準備


GW-450Dは、MediaTek MT7610Uを採用しており、現在AX3およびA7/A6に搭載されたカーネル3.2.54ではサポートされていません。
Planex社の以下のページにおいて、開発者向け情報が公開されています。

開発者向け情報|無線LAN USBアダプタ|プラネックス:

ドライバのソースコードは、上記のページよりダウンロードできますが、今回はチップセットメーカであるMediaTek社のホームページよりダウンロードし、OpenBlocks向けにビルドしました。

・カーネル構築環境の導入

本ドライバは、ビルドする際に、カーネルの構築環境を参照するため、build-essentialsによる開発環境の構築のみでは、ドライバのビルドが出来ません。
以下の手順を参考に、カーネルのソースを導入し、make modules_installまでを行っておく必要があります。

カーネルのカスタマイズ手順について(非公式版) [AX3][A6]

・ソースコードの入手と展開

以下のページの、7610U USBよりファイルをダウンロードして下さい。

Downloads - MediaTek:

ダウンロードしたファイルは以下の手順で解凍してください。

# tar jxfv mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
# cd mt7610u_wifi_sta_v3002_dpo_20130916

common/rtusb_dev_id.cを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

diff -u rtusb_dev_id.c.orig rtusb_dev_id.c
--- rtusb_dev_id.c.orig 2014-06-09 15:18:30.209980000 +0900
+++ rtusb_dev_id.c      2014-06-09 15:19:43.299980000 +0900
@@ -36,6 +36,7 @@
 /* module table */
 USB_DEVICE_ID rtusb_dev_id[] = {
 #ifdef MT76x0
+       {USB_DEVICE(0x2019,0xab31)}, /* MT7610U */
        {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
        {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
        {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */

os/linux/config.mkを編集し、wpa_supplicantのサポートをyにします。

# diff -u config.mk.orig config.mk
--- config.mk.orig      2014-06-09 15:22:00.759980000 +0900
+++ config.mk   2014-06-09 15:22:17.039980000 +0900
@@ -23,12 +23,12 @@

 # Support Wpa_Supplicant
 # i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y


 # Support Native WpaSupplicant for Network Maganger
 # i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

 #Support Net interface block while Tx-Sw queue full
 HAS_BLOCK_NET_IF=n

変更後、make および installを行います。

# make install

README_STA_usbを参考に、コンフィギュレーションファイルをコピーします。

# mkdir /etc/Wireless/RT2870STA
# cp RT2870STA.dat  /etc/Wireless/RT2870STA/RT2870STA.dat

A7の場合は、デバイスをUSBポートに差し込めば認識するのですが、AX3の場合は、ubootが設定したvmallocのサイズの関係で、ドライバがvmallocに失敗したというメッセージを出し、起動しません。
起動時に一旦ubootに入り、

# openblocks> setenv miscargs vmalloc=200M

として、拡張する必要がありました。

デバイスは、/dev/ra0となります。

ra0       Link encap:Ethernet  HWaddr 00:22:cf:e2:4d:39
          inet addr:192.168.10.95  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::222:cfff:fee2:4d39/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:247723 errors:9 dropped:0 overruns:0 frame:0
          TX packets:1591 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:62913475 (59.9 MiB)  TX bytes:128084 (125.0 KiB)

起動時に立ち上がらない場合は、
/etc/modulesに
mt7650u_sta
を追加してください。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

以下の通り、クライアントモードでの動作を確認しました。

# iwconfig ra0
ra0       Ralink STA  ESSID:"******"  Nickname:"MT7610U_STA"
          Mode:Managed  Frequency=2.412 GHz  Access Point: 00:1D:73:C2:F4:00
          Bit Rate=108 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:9394-8D4B-D889-F2A3-0EF7-E943-73A8-719C [3]   Security mode:open
          Link Quality=64/100  Signal level:-73 dBm  Noise level:-73 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

3. さいごに


今回は、クライアント接続のみのテストとしています。
AP化に関しては、hostapdが本アダプタをサポートしておらず、また、realtek社の様に専用のhostapdの配布もされていないため、今回は特に追いかけていません。
新たな情報が入り次第、追記させていただきます。

[.tested] Planex GW-450S 無線LANアダプタ [AX3][A7][A6]

Planex GW450Sは、802.11ac/n/aに対応した5GHz帯専用のUSB無線LANアダプタです。
Openblocks AX3およびA7での動作検証を行いました。


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

<検証環境>
OpenBlocks AX3/4 Debian 7.5 kernel: 3.2.54
OpenBlocks A7 Debian 7.5 kernel:3.2.54

1. 対応ドライバと事前準備


GW-450Sは、Reaktek 8811AUを採用しており、現在AX3およびA7/A6に搭載されたカーネル3.2.54ではサポートされていません。
Planex社の以下のページにおいて、開発者向け情報が公開されています。

開発者向け情報|無線LAN USBアダプタ|プラネックス:

ドライバのソースコードをこのページのリンクからダウンロードし、OpenBlocks向けにビルドする必要があります。
(2014/06/06現在、Reaktek社の製品情報ページからは8811Uの情報が検索出来ません)

Realtek社のチップセットに関しては、以下の記事で行った手順にて検証作業を行います。

[.tested] Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2 無線LANアダプタ [AX3][A6]

・カーネル構築環境の導入

本ドライバは、ビルドする際に、カーネルの構築環境を参照するため、build-essentialsによる開発環境の構築のみでは、ドライバのビルドが出来ません。
以下の手順を参考に、カーネルのソースを導入し、make modules_installまでを行っておく必要があります。

カーネルのカスタマイズ手順について(非公式版) [AX3][A6]

・ソースコードの入手と展開

展開には、unzipが必要となります。

# aptitude install unzip

上記、Planex社の開発者向け情報より、Linux版のソースコードを入手します
ダウンロードしたファイルは以下の手順で解凍してください。

# unzip gw-450s_driver_linux_v424.zip
# cd gw-450s_driver_linux_v424
# unzip RTL8811AU_linux_v4.2.4_9533.20131209.zip

このパッケージは、ターゲットが対応する機器ならば、作成されたディレクトリへ移動し、
install.shによりインストールが行えるのですが、Openblocksは対応機器にありませんので、
以下の手順によりドライバパッケージのコンパイルおよびインストールを行います。

# cd RTL8811AU_linux_v4.2.4_9533.20131209
# cd driver
# tar xvzf rtl8811AU_linux_v4.2.4_9533.20131209.tar.gz
# cd rtl8811AU_linux_v4.2.4_9533.20131209

Makefileを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

# diff -u Makefile.orig Makefile
--- Makefile.orig       2014-06-06 10:02:14.427254000 +0900
+++ Makefile    2014-06-06 10:05:18.947254000 +0900
@@ -52,7 +52,8 @@
 CONFIG_LOAD_PHY_PARA_FROM_FILE = y
 CONFIG_ODM_ADAPTIVITY = n

-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_JB_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -709,6 +710,17 @@
 CROSS_COMPILE ?=
 KVER  := $(shell uname -r)
 KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER  := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=
 endif

また、本デバイスのデバイスIDをドライバソースコードに追加する必要があります。
os_dep/linux/usb_intf.cを編集し、RTL8821Aの項目にデバイスIDを追加登録してください。

#ifdef CONFIG_RTL8821A
        /*=== Realtek demoboard ===*/
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811),.driver_info = RTL8821},/* Default ID */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821),.driver_info = RTL8821},/* Default ID */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822),.driver_info = RTL8821},/* Default ID */
        /*=== Customer ID ===*/
        {USB_DEVICE(0x7392, 0xA811),.driver_info = RTL8821}, /* Edimax - Edimax */
        {USB_DEVICE(0x04BB, 0x0953),.driver_info = RTL8821}, /* I-O DATA - Edimax */
        {USB_DEVICE(0x2001, 0x3314),.driver_info = RTL8821}, /* D-Link - Cameo */
        {USB_DEVICE(0x2001, 0x3318),.driver_info = RTL8821}, /* D-Link - Cameo */
        {USB_DEVICE(0x0E66, 0x0023),.driver_info = RTL8821}, /* HAWKING - Edimax */
        {USB_DEVICE(0x2019, 0xAB32),.driver_info = RTL8821}, /* Planex - Abocom */
#endif

変更後、make および installを行います。

# make install

デバイスをUSBポートに差し込めば認識します。
デバイスは、/dev/wlan0となります。

起動時に立ち上がらない場合は、
/etc/modulesに
8821au
を追加してください。

本ドライバは、そのままmake するとデバッグメッセージをconsoleに表示しますので、console作業等で気になる場合は、include/autoconf.hにおいて、DEBUGもしくはDBGと書かれたdefine行をコメントアウトすることにより抑止出来ます。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

本製品は5GHz帯専用の製品ですので、AP側も対応したものを使用する必要があります。

以下の通り、クライアントモードでの動作を確認しました。

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:22:cf:eb:8d:2b
          inet addr:192.168.10.107  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::222:cfff:feeb:8d2b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19492 errors:0 dropped:3063 overruns:0 frame:0
          TX packets:2187 errors:0 dropped:4 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:172328795 (164.3 MiB)  TX bytes:4108434 (3.9 MiB)

# iwconfig wlan0
wlan0     IEEE 802.11an  ESSID:"******"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:5.18 GHz  Access Point: 00:1D:73:C2:F2:A0
          Bit Rate:150 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=48/100  Signal level=56/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

3. さいごに


今回は、クライアント接続のみのテストとしています。
AP化や、WPSボタンの使用方法に関しては、前回の記事を参考に試してみてください。

2014-05-14

[.tested] express + socket.ioによるWebSocket実装方法について [debian Wheezy][AX3][A7][A6]

前回インストールした、node.js上でexpressおよびsocket.ioを使用した、Websocket通信のテストを行ってみました。
Aシリーズでのnode.jsのビルド方法については、前回の記事を参考にしてください。

[.tested] node.js [debian Wheezy][AX3][A7][A6]

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

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)

1. 導入前の準備


express 4.0以降、雛形を作成するexpressコマンドは分離されているため、express-generatorをインストールします。

# sudo npm install -g express-generator

2. socket.ioのサンプルプログラムの作成


下記の記事を参考に、chatのサンプルプログラムをexpress 4.0向けに導入してみました。


雛形を作成します。

# express -e sample

以下、sampleというディレクトリに雛形が作成されます。

package.jsonを以下の内容に修正します。
  socket.ioを追加することにより、npm installによりsocket.ioも組み込まれます。

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.0.0",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "ejs": "~0.8.5",
    "socket.io": "~*"
  }
}

bin/wwwにchatプログラム本体を記述します。
// add以下が追加される部分です。

#!/usr/bin/env node
var debug = require('debug')('my-application');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
}); 

// add start
var socketIO = require('socket.io');
// クライアントの接続を待つ(IPアドレスとポート番号を結びつけます)
var io = socketIO.listen(server);

// クライアントが接続してきたときの処理
io.sockets.on('connection', function(socket) {
  console.log("connection");
  // メッセージを受けたときの処理
  socket.on('message', function(data) {
    // つながっているクライアント全員に送信
    console.log("message");
    io.sockets.emit('message', { value: data.value });
  });
  
  // クライアントが切断したときの処理
  socket.on('disconnect', function(){
    console.log("disconnect");
  });
});

クライアントサイドとして、views/index.ejsを作成します。

<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://接続するサーバのURLまたはIPアドレス:3000');
socket.on('connect', function(msg) {
  console.log("connet");
  document.getElementById("connectId").innerHTML = 
    "あなたの接続ID::" + socket.socket.transport.sessid;
  document.getElementById("type").innerHTML = 
    "接続方式::" + socket.socket.transport.name;
});

// メッセージを受けたとき
socket.on('message', function(msg) {
  // メッセージを画面に表示する
  document.getElementById("receiveMsg").innerHTML = msg.value;
});

// メッセージを送る
function SendMsg() {
  var msg = document.getElementById("message").value;
  // メッセージを発射する
  socket.emit('message', { value: msg });
}
// 切断する
function DisConnect() {
  var msg = socket.socket.transport.sessid + "は切断しました。";
  // メッセージを発射する
  socket.emit('message', { value: msg });
  // socketを切断する
  socket.disconnect();
}
</script>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

  <h1>socket.ioのサンプルプログラム</h1>
  <div id="connectId"></div>
  <div id="type"></div>
  <br>
  <input type="text" id="message" value="">
  <input type="button" value="メッセージを送る" onclick="SendMsg()">
  <input type="button" value="切断する" onclick="DisConnect()">
  <div id="receiveMsg"></div>

  </body>
</html>

必要なパッケージをインストールします。

# npm install

3. 動作確認


サーバを起動します。

# ./bin/www

Webブラウザを立ち上げ、以下のURLまたはIPアドレスを指定してアクセスしてください。

http://サーバのURLまたはIPアドレス:3000

複数のブラウザ画面を立ち上げ、相互に入力した文字が表示されることを確認してください。


4. さいごに


上記の手順により、Aシリーズ上でビルドしたnode.jsのsocket.ioモジュールによるWebSocket通信の確認を行いました。

今回は、express 4の場合、functionの定義方法などが異なるため、参考にしたサイトより、必要な部分だけを抜き出して利用させていただきました。

2014-05-09

[.tested] node.js [debian Wheezy][AX3][A7][A6]

node.jsはサーバサイドのJavaScriptインタプリタです。
今回は、node.jsのOpenBlocks Aシリーズへの導入を行いました。

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

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)

1. 導入前の準備


node.jsは、公式サイトからソースコードをダウンロードしてビルドを行います。
そのため、開発環境のインストールを行っておく必要があります。

OpenBlocks における開発環境構築手順について [debian Wheezy][AX3][A7][A6]

検索などをすると、npmのインストールのためにcurlを入れる事例などありますが、現状では、node.jsのインストールによりnpmもインストールされますので必要ありません。

2. node.jsのビルド


node.jsの公式サイトより最新のソースパッケージを入手してください。


以下の例は、2014/05/09時点での最新のバージョンです。

# wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz

展開します。

# tar xvzf node-v0.10.28.tar.gz
# cd node-v0.10.28

一般的には、ここでconfigureしてmakeするだけなのですが、Aシリーズの場合は、以下のパラメータを指定する必要があります。

AX3の場合

# ./configure --without-snapshot --with-arm-float-abi=hard

A7/6の場合

# ./configure --without-snapshot

また、A7/6の場合、一部のソースコードを修正する必要があります。

# vi deps/v8/src/arm/macro-assembler-arm.cc

以下のイタリック表記の3行を追加してください。

// We always generate arm code, never thumb code, even if V8 is compiled to
// thumb, so we require inter-working support
#if defined(__thumb__) && !defined(USE_THUMB_INTERWORK)
#error "flag -mthumb-interwork missing"
#endif

// ADD THESE THREE LINES TO macro-assembler-arm.cc

#if !defined(CAN_USE_THUMB_INSTRUCTIONS)
# define CAN_USE_THUMB_INSTRUCTIONS 1
#endif


// We do not support thumb inter-working with an arm architecture not supporting
// the blx instruction (below v5t).  If you know what CPU you are compiling for
// you can use -march=armv7 or similar.
#if defined(USE_THUMB_INTERWORK) && !defined(CAN_USE_THUMB_INSTRUCTIONS)
# error "For thumb inter-working we require an architecture which supports blx"
#endif

上記の修正および、configureの実行を行った後、makeを実行し、インストールします。

# make
# make install


3. 動作確認その他


インストール後、nodeコマンドを実行し動作を確認してください。

# node -v
v0.10.28

前述しましたが、npmは同時にインストールされます。


プロジェクト毎に必要なモジュールはインストールされますので、特にグローバルにインストールする必要はないようです。

*) 2014/05/12 expressに関しての記述は削除しました。

2014-04-25

[.tested] Tomcat7の導入について [debian Wheezy][AX3][A7][A6]

Apache Tomcatの導入方法について、若干のTipsも交えてご紹介します。



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

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (DPパッケージのみjavaライセンス付きでの出荷をしています)

1.Tomcat 7 のインストール


Apache Tomcat 7は、Debian Wheezyのパッケージとしても用意されていますが、合わせてOpenJDK6を導入してしまいます。
OpenBlocksシリーズは、Oracle Javaを標準搭載していますので(A6はDPモデルのみ)、Tomcatのパッケージのみを公式のサイトよりダウンロードしてインストールすることをおすすめします。

Apache Tomcat

# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz

/usr/localの下に展開します。

# tar zxpvf apache-tomcat-7.0.53.tar.gz -C /usr/local

setenv.shを作成します。

# vi /usr/local/apache-tomcat-7.0.53/bin/setenv.sh

下記の内容を記述してください。

#!/bin/bash
JRE_HOME=/usr/lib/jre
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

JAVA_OPTSの設定は、linuxの/dev/randumの仕様によるもので、特にOpenBlocks A7の場合において、再起動時の環境ノイズの再収集時間に起因する起動遅延を解消するものです。
randomを使用する場合は、上記の記述を削除してください。(A7の場合30分程度、AX3の場合はばらつきがあり、20秒程度で立ち上がる場合もあれば、6分かかる場合もありました)

2. 動作確認および開発環境の構築について


手動での立ち上げは以下の様に行ってください。


# /usr/local/apache-tomcat-7.0.53/bin/startup.sh

ブラウザで動作確認をする場合は、以下のURLとなります。

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


2014-04-23

[.tested] RXTXによるjavaのシリアル通信について [debian Wheezy][AX3][A7][A6]

RXTXライブラリを使用したjavaのシリアル通信を行う際のパッケージ導入方法について説明します。

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

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (DPパッケージのみjavaライセンス付きでの出荷をしています)

1. RXTXライブラリおよびlibrxtxSerialのインストール


それぞれ、Debainのパッケージによりインストールします。

# aptitude install librxtx-java
# aptitude install libserializer-java

RXTXライブラリを以下の場所にコピーします。

# cp /usr/share/java/RXTXcomm.jar /usr/lib/jre/lib/ext/

librxtxSerialを以下の場所にコピーします。

# cp /usr/lib/jni/librxtxSerial-2.2pre1.so /usr/lib/jre/lib/arm/librxtxSerial.so

2. 動作確認および開発環境の構築について


RXTXによるシリアル通信を行うのであれば、上記のセットアップにより、基本的には、他のプラットフォーム上で開発したclassファイルやjarファイルを実行できるかと思います。

OpenBlocks上で開発も行う場合は、一つの方法としては、Debianのパッケージより、java7-jdkなどを導入する方法があります。( 導入されるのはopenjdkです )

# aptitude install java7-jdk

java7-jdkにも、librxtxSerialが含まれますので、こちらを使用する場合は、libserializer-javaの導入の必要はありません。

作成したプログラムは、以下のようにjavacにてクラスファイルに変換してください。

# javac -cp /usr/lib/jre/lib/ext/RXTXcomm.jar test.java