Rstream A1 ニュース 2014/01/13版

これが最後になりそうな、Rstream A1ニュース。
前回はこちら→ Rstream A1 ニュース 2012/10/20版

久しぶりに、androidptを見てみたら、2013年8月に、EAv8が出ているではないですか!

[ROM 2.3.7] EAv8 25.03.2013

このパッケージのkernelは2.6.32.9-EA。
Rstream A1で使うには、2.6.32.9-EA-muchtel-a1 #32などを追加インストールする、下記の手順を行うこと。
(1)「muchtela1-afnf2.6.32.9-15-libnetutils.zip(/system/lib/libnetutils.soを置き換え)」
(2)「muchtela1-afnf2.6.32.9-23-kernel.zip(/system/lib/libcamera.soと/system/lib/liboemcamera.soを置き換え)」
(3)「updatezip-afnf2.6.32.9-32_signed.zip(kernelを置き換え)」
ファイルの入手については、前回のニュースを参照のこと

さらに新しいkernel 2.6.35.14もあるようだ。
[Kernel] EA-GB (13/07/2012)
ただし、Rstream A1とキー配置が違うので注意。

また、.nb0形式のアップデータについては、EAv7.2のものだけが公開されている。
Modem REVの違いで、2つのバージョンがあるので注意。
EAv7.2 .nb0 file Modem REV: FXX-2-25D-00 Download
EAv7.2 .nb0 file Modem REV: FXX-3-220-00 Download
上記適用後、CWM recoveryでEAv8へアップデートのこと。

Citrix XenAppでXenReceiverが接続できない?

Citrix XenAppをとりあえず試しているところ。
一通り設定を済ませてクライアントから http://サーバ名/Citrix/StoreWeb/ にアクセスし、アプリケーションを選択してみると、アプリの起動に失敗する。

具体的には、アプリを選択すると、以下のようにXen Receiverが起動する。
logonfailed-001
しかし、しばらくステータスバーが進まないまま、時間が経過し、以下のエラーとなる。
logonfailed-002

最初は、DNSの名前解決の問題かと考えたけれども、どうやら違いそう。
Wiresharkでパケットキャプチャしてみたところ原因判明。
logonfailed-003

サーバのIPアドレスとして「192.168.x.x」が渡されている!
そっちは、管理用のネットワークIPアドレスなので、クライアントからはアクセスできないのは当然のことだった。

Citrixのサービスが見るネットワークインタフェースから192.168.x.xを除外すればいいんだろう、と設定を探してみる・・・

が・・・XenDesktop 7.1でのやり方が分からない。
XenApp 6.5でのやり方は「Application Launch Requests Might Fail on a Provisioned XenApp Version 6.0 or 6.5 Multihomed Server」とかに書いてあるんだけど、ここで紹介されている設定項目がXenDesktop 7.1では見当たらない・・・

とりあえず、仕方がないので、ネットワーク構成を変更して、192.168.x.xを使わないようにする、という後ろ向きな対応をしてみたり

Spreadtrum社から4コアCPU SC8735S/SC8835S/SC7735Sなど5製品がリリース

Spreadtrum社から、4コアのCPU SC8735Sが出荷開始されたそうで、2013/12/16のプレスリリースが出ていました。

SC8735Sのプレスリリース
SC8735S製品情報

製品化第1弾はChina Unicom/China Mobile向けのHTC Desire 7088であるようです。

ほほ~、と思って、製品ページをよく見てみると、さらに「SC7730A」「SC7735S」「SC8830A」「SC8835S」と新製品ラッシュが・・・
え?と思ってプレスリリースを読み直すと、後ろの方に「In addition to the SC8735S, ~」と記載が・・・

基本は、「CPU Cortex-A7 4コア」+「GPU Mali400」なんですが、いろいろ細かい点が違う、という感じです。

SC8735S SC8835S SC7735S SC8830A SC7730A
対応電波形式 TD-SCDMA/WCDMA
両対応
TD-SCDMA WCDMA TD-SCDMA WCDMA
CPU Cortex-A7 4コア 1.2GHz
GPU Mali400 MP4 (4コア) Mali400 MP2 (2コア)
最大メモリ 2GB
ディスプレイ QCIF, QVGA, WQVGA, CIF, VGA, HVGA, WVGA, FWVGA, qHD, WxGA
カメラ 1300万画素対応

全部有りの「SC8735S」
標準の「SC8835S」と「SC7735S」
GPUを減らして低コスト化した「SC8830A」と「SC7730A」
という感じの違いです。

全製品で、3枚SIMサポートだが同時使用は2枚まで、と謳っています。
 (Supports dual-SIM dual-active capability
 (Supports tri-SIM cards, both 1.8V and 3.0V devices

ただ、WCDMAが2回線使用できるかは不明です。

SC8875S/SC8835S/SC7735Sの製品情報に書かれているダイヤグラムにある電波送信部分「Multimode RF SR3530」。
この製品はRF Transceivers製品情報を見ると「SR3500 Series (for 4G LTE devices)」に該当しそうなんですが、複数SIM使用時については、特に明記していないので、どうなるのか不明です。

プレスリリース内で「The SC8735S and other chipsets in Spreadtrum’s quad-core smartphone portfolio are available now and already shipping in commercial devices globally.」と、各チップが出荷開始されているらしいので、製品が出てくるのを楽しみにしてましょうかねぇ


追記
2014/01/21にタブレット向け4コアのSC5735と、スマホ向け1コアのSC7715/SC6815/SC8815が登場しました。
関連記事:Spreadtrum社からタブレット向けSC5735とスマホ向けSC7715登場!

2013年に買ったものを振り返って

2013年に買ったものを自分の中で面白かった順に並べて見る。

・Covia FleaPhone CP-D02

MediaTek社MT6577搭載のAndroidスマートフォン。
なんやかんやで、いまもまだメインとして使用中。
Bluetoothのデキがいまいち。WiFiとBluetoothを両方有効にしてるとよく通信がおかしくなる。

・freetel FT132A

Spreadtrum社SC7710搭載のAndroidスマートフォン。
画面が小さいのと、FOMAプラスエリア非対応が響いてメインにはなれず。

・SmartQ Z Watch

Android腕時計。
思いの外電池が持ってびっくりしたもの。
とはいえ、WiFi通信させたりすると、減りが早いので注意。
ウチの事情で言えば、coviaのBluetoothのデキが微妙で、Bluetooth通信ができなくなりやすいのが難点。(freetelやThunderbird i5sだと大丈夫なので、完全にcoviaの問題)

・Thunderbird i5s

MediaTek MT6572搭載のAndroid。
というか、ほんと、iPhone5s。
発注時は、coviaの次、というところで使おうかと思ってたんだけど、内部もほんとiPhoneで、ネタアイテムとして見せびらかしたかったので、ほぼ標準状態のままにすることに・・・

・NEC VersaPro VY10A
ジャンク屋で3980円とかで売ってたので買ったのが始め。
最終的にいろいろ不具合点があるものを全部で5台買って
それなりに動くものが4台分完成。
液晶割れ、マザー死亡、キートップ欠け1台、という感じになった。
キーボードのゴム不良については、ジャンクのノート用キーボードを買って、それから抜いて流用。
とか、そんな感じでなんとか4台分確保した、というところ。
うち、2台はハムフェアで販売して、1台はうちの奥さん使用中。
1台は予備機という感じ。

・NEC VersaPro VJ12AC-6
上記のVY10Aのパーツ漁り中にメモリ2GB積んだこいつが8000円だったので、つい買ってしまった。
おかげで自分用に最強にしたVY10Aは冬眠中(予備機)・・・

・Grandstream Networkの「HandyTone 702 ATA」
VoIPアダプターボックス
2回線のVoIPを収納できるんだけど、それぞれの回線用に電話機は必要。
FUSION IP-Phone SMARTを1回線設定して使用中。
どこからかかってきたかというログは機器に保存されないので注意が必要。
ログを閲覧/保存したい場合は別途用意したsyslogサーバにログを転送する必要がある。

なお、1回線のみサポートのHandyTone701は日本でも取扱が始まった模様

・Kindle Fire
HDぢゃない方。
会社で、とあるソフトウェアの研修を受けに行ったらもらった。
標準OSがおもしろくなかったので、速攻Android OSに書き換えられてしまったという不遇な子。
Kindle用に細かく調整されてるらしいものから、最新を使いたくてCynanogenMod純正バージョンにしたらバッテリーの減りが激しくなってしまったなぁ・・・

・K-Touch W619

MSM7225A搭載で安かったので買ってみたもの
CPUのクロックが低いものと高いものが同じ型番であるらしく、うちに来たモノはクロックが高いものだった模様。
CWM Recoveryはクロック毎で違うらしく、どっちバージョンで配布なのか明記されてないというのが大変でした。
非対応バージョンを適用するとまともに起動しない、という感じでした。
ベトナム方面では、別ブランドで結構数が出てるようで、現在も.vn系でカスタマイズが進行中な模様。


以下は、「失敗」アイテム。

・だれとでも定額パス WX01TJ
初期不良を売りつけられて約2ヶ月まるで使い物にならなかったのに、なんも補填されなかった一品。
死ねよウィルコム。
交換後はそれなり動作中。

・サンコー AUTCT2BK

パソコンを専用させずにカセットテープをmp3にコンバートできるな、と思って買ってみた。
microSDへの録音が開始されない、という事象ばかりが発生したあげく、microSDを1枚殺してくれた品。

・サンワサプライ TAP-TST10

サーバの消費電力測定のために期待して買ったんだけど、現在値を測定するのではなく、適当に記録された10分おきの過去データを取得できるだけ、という残念仕様でした。
というか、素直に現在値を取得させてくれよ。

IIJmioクーポンスイッチAPIを使って使用量グラフ作成

IIJmioクーポンスイッチAPI」というものが公開された。

AndroidアプリからこのAPIを使う、というのが想定されている使われ方だと思うんですが、違う使い方をしてみた。
というのは、「データ利用量照会」という機能を見つけ、これを利用すれば1年分のデータ使用量グラフが作れる、と思ったからです。

幸い、常時起動のサーバがあるので、そいつに仕込めばいいか、と、やってみました。

まずは、完成品をご覧ください。
test

現在SIMを4枚もっているので、こんなグラフになっています。
メインで使ってるのがSIM2、SIM4はSMS対応のものでテストに使用。
SIM3はうちの奥さんに渡しているもの、SIM1は実家においてあるルータ、という感じです。

さて、このグラフ作るまでに行ったことですが、まず最初はアクセストークン取得です。
いろいろ悩んだんですが、適当な手法をとっています。

まず、redirect_uriとして適当なCGIを作りました。

#!/usr/bin/perl
print "Content-Type: text/plain; charset=UTF-8\n\n";
print "test\n";

えぇ、適当過ぎますね。

そして、普通のHTMLを作ります。

<html>
<head>
<title>iijmio</title>
</head>
<body>

<a href="https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&client_id=<DeveloperID>&state=test&redirect_uri=http%3A%2F%2F~.osakana.net%2Ftest.cgi">go to IIJMIO</a>

</body>
</html>

redirect_uriには、先ほど作成した適当なCGIのアドレスを記載します。

ブラウザで作成したhtmlにアクセスし、IIJmioの認証を行い、正常に通ると、redirect_uriに指定したURLに対して、戻ってきます。
ブラウザのURL欄に表示された文字列から「access_token=~」という記述を見つけ、アクセストークンを取得します。
ちなみに、このアクセストークン、7776000秒有効です。つまり90日間です。
IIJmio側に30日分のデータが保管されているので120日以内に1回手動で更新すればいいか、と考え、テキトーな実装になっています。

次に、利用量取得のperlスクリプト作成。

#!/usr/bin/perl
use strict;
use warnings;
use LWP;
use URI::Escape;
use JSON;
use Time::Local;

my $lwpua = LWP::UserAgent->new;

my $url="https://api.iijmio.jp/mobile/d/v1/log/packet/";

my $developerid="<DeveloperID>";
my $usertoken  ="<アクセストークン>";

my $lwpreq = HTTP::Request->new(GET => "$url");
$lwpreq->header("X-IIJmio-Developer" => "$developerid");
$lwpreq->header("X-IIJmio-Authorization" => "$usertoken");
my $lwpres= $lwpua->request($lwpreq);
my $data = decode_json($lwpres->content);

for(my $i=0;$i<@{$data->{packetLogInfo}};$i++){
        #print $i . ":" . $data->{packetLogInfo}->[$i]->{hddServiceCode} ."\n";
        my $hddServiceCode=$data->{packetLogInfo}->[$i]->{hddServiceCode};

        for(my $j=0;$j<@{$data->{packetLogInfo}->[$i]->{hdoInfo}};$j++){
                #print $i . "-" . $j . ":" . $data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{hdoServiceCode} . "\n";
                my $hdoServiceCode=$data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{hdoServiceCode};
                if(! -f "$hdoServiceCode.rrd"){
                      print "rrdtool create $hdoServiceCode.rrd --start 1384786740 --step 86400 DS:withCoupon:GAUGE:86400:0:U DS:withoutCoupon:GAUGE:86400:0:U RRA:LAST:0.5:1:100000 \n";
                      system("rrdtool create $hdoServiceCode.rrd --start 1384786740 --step 86400 DS:withCoupon:GAUGE:86400:0:U DS:withoutCoupon:GAUGE:86400:0:U RRA:LAST:0.5:1:100000");

                }

                for(my $k=0;$k<@{$data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}};$k++){
                      #print "   " . $data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{date} ;
                      #print ":" . $data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{withCoupon} ;
                      #print ":" . $data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{withoutCoupon} ;
                      #print "\n";
                      my $d=$data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{date};
                      my $year = substr($d,0,4);
                      my $mon  = substr($d,4,2) - 1;
                      my $mday = substr($d,6,2);
                      my $unixtime = timelocal(0,59,23,$mday,$mon,$year);
                      my $withCoupon=$data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{withCoupon};
                      my $withoutCoupon=$data->{packetLogInfo}->[$i]->{hdoInfo}->[$j]->{packetLog}->[$k]->{withoutCoupon};
                      print "rrdtool update $hdoServiceCode.rrd $unixtime:$withCoupon:$withoutCoupon \n";
                      system("rrdtool update $hdoServiceCode.rrd $unixtime:$withCoupon:$withoutCoupon");
                }
        }
}

これを「get.pl」というファイル名で保存します。
実行すると、「hdo810xxxxx.rrd」というような感じのファイルがSIMカード分作成されます。
なお、手抜きをしているので、2回目以降は、同じ値を入力しようとし、「ERROR: hdo8371xxxx.rrd: illegal attempt to update using time 1387378740 when last update time is 1387378740 (minimum one second step)」みたいなエラーがでてしまいますが、仕様です。
また、rrdtoolは一度登録した情報の更新ができない構造をしているので、日付が変わる直前に実行することを推奨します。

で・・・グラフ作成は以下の様な感じで、情報取得と連続で行わせています。
現在SIMが4枚あるので、4枚分を集計しています。
クーポン使用の有無は区別せず合算としています。

#!/bin/bash
cd /home/~/mio
./get.pl
rrdtool graph iijmio-use.png --imgformat=PNG --end now --start end-1months \
--vertical-label "MB" \
--title="IIJmioの使用量" \
DEF:SIM1C=hdo8038xxxx.rrd:withCoupon:LAST \
DEF:SIM1N=hdo8038xxxx.rrd:withoutCoupon:LAST \
DEF:SIM2C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM2N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM3C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM3N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM4C=hdo8371xxxx.rrd:withCoupon:LAST \
DEF:SIM4N=hdo8371xxxx.rrd:withoutCoupon:LAST \
CDEF:SIM1=SIM1C,SIM1N,+ \
CDEF:SIM2=SIM2C,SIM2N,+ \
CDEF:SIM3=SIM3C,SIM3N,+ \
CDEF:SIM4=SIM4C,SIM4N,+ \
LINE1:SIM1#0000FF:"SIM1" \
LINE2:SIM2#00FFFF:"SIM2" \
LINE3:SIM3#00FF00:"SIM3" \
LINE4:SIM4#F00F00:"SIM4"

で、これをサーバのcrontabに突っ込んで、23:58に実行する設定しました。
さて、これでちゃんと更新し続けてくれるといいのですが・・・


APIが公開されて速攻作成&記事公開したところ、IIJmioの人に発見された模様。


2013/12/24追記

しばらく運用してみた結果、見にくかったので、グラフ作成については、以下の様に変更した。

rrdtool graph iijmio-use.png --imgformat=PNG \
--height=300 \
--lower-limit=0 \
--end now --start end-1months \
--vertical-label "MB" \
--title="IIJmioの使用量" \
DEF:SIM1C=hdo8038xxxx.rrd:withCoupon:LAST \
DEF:SIM1N=hdo8038xxxx.rrd:withoutCoupon:LAST \
DEF:SIM2C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM2N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM3C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM3N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM4C=hdo8371xxxx.rrd:withCoupon:LAST \
DEF:SIM4N=hdo8371xxxx.rrd:withoutCoupon:LAST \
CDEF:SIM1=SIM1C,SIM1N,+ \
CDEF:SIM2=SIM2C,SIM2N,+ \
CDEF:SIM3=SIM3C,SIM3N,+ \
CDEF:SIM4=SIM4C,SIM4N,+ \
LINE2:SIM1#0000FF:"SIM1" \
LINE2:SIM2#00FFFF:"SIM2" \
LINE2:SIM3#00FF00:"SIM3" \
LINE2:SIM4#F00F00:"SIM4"

iijmio2

「LINE数字:~」の数字部分の意味を取り違えていたという・・・太さの意味だったか・・・


2014/12/19追記

作ってから約1年が経過しました。
最近はこんなグラフにしています。(横軸のめもりを日付にした)

rrdtool graph iijmio-use.png --imgformat=PNG \
--height=300 \
--lower-limit=0 \
--end now --start end-2months \
--vertical-label "MB" \
--x-grid DAY:1:WEEK:1:WEEK:1:0:%m/%d \
--title="IIJmioの使用量" \
DEF:SIM1C=hdo8038xxxx.rrd:withCoupon:LAST \
DEF:SIM1N=hdo8038xxxx.rrd:withoutCoupon:LAST \
DEF:SIM2C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM2N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM3C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM3N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM4C=hdo8371xxxx.rrd:withCoupon:LAST \
DEF:SIM4N=hdo8371xxxx.rrd:withoutCoupon:LAST \
CDEF:SIM1=SIM1C,SIM1N,+ \
CDEF:SIM2=SIM2C,SIM2N,+ \
CDEF:SIM3=SIM3C,SIM3N,+ \
CDEF:SIM4=SIM4C,SIM4N,+ \
LINE2:SIM1#0000FF:"SIM1" \
LINE2:SIM2#00FFFF:"SIM2" \
LINE2:SIM3#00FF00:"SIM3" \
LINE2:SIM4#F00F00:"SIM4"

mio-20141219

そして、1年分

rrdtool graph iijmio-use-year.png --imgformat=PNG \
--height=300 \
--width=600 \
--lower-limit=0 \
--end now --start end-14months \
--vertical-label "MB" \
--x-grid WEEK:1:MONTH:1:MONTH:1:0:%m/%d \
--title="IIJmioの1年分使用量" \
DEF:SIM1C=hdo8038xxxx.rrd:withCoupon:LAST \
DEF:SIM1N=hdo8038xxxx.rrd:withoutCoupon:LAST \
DEF:SIM2C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM2N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM3C=hdo8100xxxx.rrd:withCoupon:LAST \
DEF:SIM3N=hdo8100xxxx.rrd:withoutCoupon:LAST \
DEF:SIM4C=hdo8371xxxx.rrd:withCoupon:LAST \
DEF:SIM4N=hdo8371xxxx.rrd:withoutCoupon:LAST \
CDEF:SIM1=SIM1C,SIM1N,+ \
CDEF:SIM2=SIM2C,SIM2N,+ \
CDEF:SIM3=SIM3C,SIM3N,+ \
CDEF:SIM4=SIM4C,SIM4N,+ \
LINE2:SIM1#0000FF:"SIM1" \
LINE2:SIM2#00FFFF:"SIM2" \
LINE2:SIM3#00FF00:"SIM3" \
LINE2:SIM4#F00F00:"SIM4"

test-year-20141219

おまけ:上記のグラフの利用率変動の解説。

SIM1はミニマムスタートプラン、SIM2/3/4はファミリーシェアプランで、SIM3はmicroSIM、SIM4はnanoSIM/SMS付。

・2013/12頃
 メイン機CP-D02:SIM2
 偽iPhone5s(Thunderbird i5s):SIM4
 奥さんのP-01D:SIM3
 奥さん実家の緊急用ルータ:SIM1
・2014/01頃
 ほとんど使用されていないSIM1の容量がもったいないので入れ替え
 メイン機CP-D02:SIM2→SIM1
 奥さん実家の緊急用ルータ:SIM1→SIM2
 偽iPhone5s(Thunderbird i5s):SIM4
 奥さんのP-01D:SIM3
・2014/02頃の変更点
 Thunderbid i5sの液晶を割ったので余ったSMS付SIM4をメイン機へ 
 メイン機CP-D02:SIM1→SIM4
 奥さん実家の緊急用ルータ:SIM2
 奥さんのP-01D:SIM3
・2014/03頃の変更点
 Covia CP-F03aが来たのでがんばって使用開始。
 それに伴い余剰になったCovia CP-D02を奥さんのに充当
 メイン機CP-F03a:SIM4 & SIM1
 奥さん実家の緊急用ルータ:SIM2
 奥さんのCP-D02:SIM3
・2014/06頃の変更点
 JIAYU F1購入。使い勝手が良かったので、メイン機に変更。
 メイン機JIAYU F1:SIM4
 予備機CP-F03a:SIM1
 奥さん実家の緊急用ルータ:SIM2
 奥さんのCP-D02:SIM3

・2014/11頃の変更点
 GMOBBのWiMAXを使い始めたのでメイン機SIM4の使用量低下

・2014/12頃の変更点
 自宅のフレッツが微妙に不安定なことが多いので、奥さんCP-D02のWiFiをオフにしてみた。