PQI AirCardのfirmwareが出たのでFlucard Proのfirmwareとざらっと比較

PQI Air Cardにfirmwareアップデータが出たらしい。

Air Cardファームウェア V147ということで、ダウンロードしてばらしてみた。

手法は「Flucard ProはARM Linux搭載でtelnetdを有効にできるなんておもしろそう!」の時と同じ。

$ ls -l
合計 6296
-rwxrwxrwx 1 osakana  user 2664833 12月 14 15:40 Image3
drwxrwxr-x 2 osakana  user    4096  1月  8 17:23 __MACOSX
-rwxrwxrwx 1 osakana  user    1024 12月 17 14:32 autoload.tbl
-rwxrwxrwx 1 osakana  user 2564665 12月 20 14:26 initramfs3.gz
-rwxrwxrwx 1 osakana  user 1048576 12月 17 14:57 mtd_jffs2.bin
-rwxrwxrwx 1 osakana  user  113920 12月 17 14:32 program.bin
$

まずは、initramfs3.gzの分解。
ヘッダはFlucardと同じ「KAGZ」

$ expr 2564665 - 8
2564657
$ cat initramfs3.gz |tail -c 2564657 > initramfs3-tmp.gz
$ file initramfs3-tmp.gz
initramfs3-tmp.gz: gzip compressed data, from Unix, last modified: Thu Dec 20 14:26:43 2012
$ gzip -dc initramfs3-tmp.gz > initramfs3-tmp
$ file initramfs3-tmp
initramfs3-tmp: ASCII cpio archive (SVR4 with no CRC)
$

mtd_jffs2.binの中身をstringsで見る限りでは、Flucardの時の「/dev/mtdblock0(/mnt/mtd)」にあった設定ファイルの元が含まれてるだけっぽいです。

program.binは、「U-Boot 2010.06-rc1」という文字列があったりするので、ブート部分っぽいですね。

・・・で・・・久々に、Flucardのサポートページに行ったわけなんですよ。
したら、12月にver 3.70なんてfirmwareが出てたんですね^^;;;;
で、こっちも展開してみると、program.binがいたりするわけで・・・

# ls -l
-rw-rw-r-- 1 root root     199 Nov 27 15:51 autorun.sh
-rw-rw-r-- 1 root root 2794656 Dec 13 11:30 Image
-rw-rw-r-- 1 root root 2853952 Dec 13 10:53 image3
-rw-rw-r-- 1 root root 2619629 Dec 13 11:28 initramfs3.gz
-rw-rw-r-- 1 root root 2609006 Dec 13 11:33 initramfs.gz
-rw-rw-r-- 1 root root  109400 Nov 27 15:51 program.bin
-rw-rw-r-- 1 root root     115 Dec 13 11:28 version3.txt
-rw-rw-r-- 1 root root     120 Dec 13 11:33 version.txt
#

というか、Flucard Pro GEN3と、PQI Air Cardは同じものっぽいですよね。
initramfs3.gzだし、program.binあるしで。

program.binをstringsレベルで簡単に比較すると、U-Bootのバージョンが変わったので変更になったのかな?という雰囲気と
読み込むファイルが違っていることによる違い(-がFlucard、+がAir Card)とか、アドレスとかが違う感じです。

 fatload mmc 1 100000 preprog_chk.bin; sf erase 100000 1000; sf write 100000 100000 400;
 sf read 30000 100000 400; sf erase 100000 1000
-sf read e00000 3000 20000; fatload mmc 1 e00200 u-boot.bin;  sf erase 3000 20000; sf wr
ite e00000 3000 20000
+sf read 1000 0 1000; md 1000 10; fatload mmc 1 1000 autoload.tbl; sf erase 0 1000; sf w
rite 1000 0 1000; sf read 3000 0 1000; md 3000 10
+sf read 1000 0 1000; md 1000 10; mw 1004 00000000; sf erase 0 1000; sf write 1000 0 100
0; sf read 3000 0 1000; md 3000 10
+sf read 1000 0 1000; md 1000 10; mw 1004 00000300; sf erase 0 1000; sf write 1000 0 100
0; sf read 3000 0 1000; md 3000 10
 fatload mmc 1 208000 image3; sf erase 200000 300000; sf write 1ffc00 200000 300000
 fatload mmc 1 208000 image; sf erase 200000 300000; sf write 1ffc00 200000 300000
 fatload mmc 1 500000 initramfs3.gz; sf erase 500000 300000; sf write 4ffc00 500000 3000
00
 fatload mmc 1 500000 initramfs.gz; sf erase 500000 300000; sf write 4ffc00 500000 30000
0
 fatload mmc 1 d00000 mtd_jffs2.bin; sf erase 80000 100000; sf write d00000 80000 100000

<略>
 program.bin
 go e00000
 preprog_chk.bin
 pre-program check passed.
 ******          Program Mode (GEN%d)              ******
 sf probe 0; mmc init
-u-boot.bin
-found u-boot.bin, start program.
+autoload.tbl
+found autoload.tbl, start program.
+sf read 1000 0 400
+delchain.dis
+disable delay chain
+enable delay chain
 image3
 found image3, start program.
 image3 oversize, size 0x%x > 0x300000

<略>
  initrd=0x800000,4M
 misc_args=mem=30M
 set_bootargs=setenv bootargs ${console_args} ${root_args} ${misc_args}
-boot_sd=run set_bootargs; mmc init; fatload mmc 1 208000 image2632; fatload mmc 1 60000
0 initramfs.gz; go 208000
+boot_sd=run set_bootargs; mmc init; fatload mmc 1 208000 image3; fatload mmc 1 500000 i
nitramfs3.gz; go 208000
 bootf=mmc init; go 0x208000
 bootcmd=run set_bootargs; run bootf

・・・・あのさぁ・・・PQI Air Cardのfirmware 作った人さぁ・・・
「etc/init.d/rcS~」ってファイルとか残したまま配布とかやめようよ・・・
emacsで編集してんの、そのまんまかよ!

あと・・・

 $ cat ./initramfs3/usr/bin/copy_control_images_to_nor.sh
cp /mnt/sd/DCIM/123_TREK/config.JPG /mnt/mtd/config
cp /mnt/sd/DCIM/123_TREK/receiver_control.JPG /mnt/mtd/config
cp /mnt/sd/DCIM/123_TREK/sender_control.JPG /mnt/mtd/config
cp /mnt/sd/DCIM/123_TREK/upload.JPG /mnt/mtd/config
$

なんて形で、「TREK」なんて書かれるんですが、大丈夫なんでしょうか?

RouterBoard RB250GSと新製品RB260GS

日本では代理店がないので、ほとんど無名ですが、ラトビアにあるMikroTikという会社は、無線APを含め、いろいろなSMB向けルータ製品「RouterBoard」を出している。
2008年頃まではボード(基板)とケースを別に販売していたが、2010年ぐらいからケース一体型での販売に切り替わっているという感じである。

また、ルータ製品だけではなく、スイッチ製品の販売も行っている。

RB250GS」というのが初代スイッチ製品なのだが、こちらがこの度モデルチェンジするようである。

新機種は「RB260GS
違いは、以下の2点であるようである。
・ネットワークチップが「Atheros AR8316」から「Atheros AR8327」に切り替わったこと。
・SFPモジュールの増設も可能になったこと。

スペックを比較する限りでは、Atheros AR8316の製造中止が原因でモデルチェンジ、という感じです。

CPU: Taifatech社TF470
RISC TF-390コア 50MHz
L2/L3/L4、NATルータ
組み込みだと10/100Mbpsのみ対応。1000Mbps対応は外部チップ必須。
TA-470wrというブロードバンドルータ基板のOEM提供も行っている。

ネットワーク: QUALCOMM社のAtheros AR8327
5ポートの1000Mbpsを持てる
タグVLANとかサポート。

さて、RouterBoardですが、OSはRouterOSもしくはSwOSという独自のものを使っています。
ベースはLinux 2.6で、そこにルータやスイッチとして使いやすい様にGUIおよびCLIを搭載しているというものです。

スイッチモデルのRB260GSが$39.95、ルータモデルのRB750GL(CPU 400MHz)が$59.95、無線AP付きのRB951G-2HnD(CPU 600MHz)が$79,95、という値段をどう考えるかというところ。

マニュアルに掲載されているいろいろは興味深いところ。

なお、RouterboardのRB400番台、RB700番台は、OpenWRTが載る。
WOLFS TECH BLOG:OpenWRT on Mikrotik Routerboard 411/750

firmware書き換えは標準firmwareを一から再インストールする際と同様にtftpで行うが、Mikrotikから提供されている「Windows用のGUIツール」を使うと簡単そうである。

TOOKY T1982を使う

まあ、日本にTOOKY T1982を買うユーザがどれだけいるかわかりませんが、いろいろ調べた結果を書いておく。

・adbで接続できないように見えるがちょっとした設定追加でok
adbを実行するユーザのホームディレクトリにある.androidというディレクトリ(C:\Users\ユーザ名\.android)内に「adb_usb.ini」というファイルを作成し、「0x4BB0」と書いておくと使える。
なお、adb_usb.iniは標準状態では存在しない。
また、adb_usb.ini書き換え後は、adbを再起動するために「adb kill-server」を実行すること。

ロシアの掲示板に「0x4BB0」接続用に改変されたadb.exeがあるので、それを使っても良い。
「ADB」ってところの「1. Скачиваем – download/file.php?id=46316」がそれ。

・Android 4.0/ICSへのアップデートは期待薄
試しにGoophoneとかGodPhoneのfirmwareを書いてみたら、画面表示はできるけど、タッチパネルが動かないものが出来た。
調子にのってLenovoのfirmwareを書き込んだら、電源も入らなくなった。
TOOKY T1982を分解してみた」にあるような感じで中身を開けて、ごにょごにょやってたら、認識するようになって、復帰できました。
(firmwareが変なのになると、メンテナンスモードで起動するキー入力が効かなくなるので、基板上のテストポイントを直接つついてメンテナンスモードに入らせる、という強攻策。ネタ元:[GUIDE] How to ‘unbrick’ your Mediatek MT65xx”>[GUIDE] How to ‘unbrick’ your Mediatek MT65xx

・framework.odexを書き換えないとIIJmio SIMとかを使えない
ドコモMNVO系でデータ通信のみのIIJmio SIMとかB-mobileなどでは、そのままの状態で3G通信を行うことはできません。(これはMTKチップ採用している端末全般について当てはまります)
ブローヴちゃん:「Android + b-mobile データ専用 SIM で電界強度を表示する」に記載されているような対策を実施する必要があります。
なお、T1982のframework.jarはodex化されているので、ブローヴちゃんで配布されているバッチファイルは使用できません。

・SP Flash Toolは新しいのを入手しておくべし
MTKチップ汎用で使えるので、SP Flash Toolは、MT6577とかMT6589とかに対応している新しいものを使っても問題ない。
Универсальные инструкции по прошивке MT6575/77 устройств」の「Руководство по прошивке с помощью SP Flash Tool для всех MT6575/77 устройств, кроме устройств на базе проектов AGold」を開けたところに「Программа SP Flash Tool. SP_Flash_Tool_v3.1224.01.」とダウンロードリンクがある。

・IMEIが飛んだらMTKdroidToolsで直せる
SP Flash Toolとかでfirmwareを書くとIMEIがinvalidになる場合がある。
そういった場合に備えて、現状のIMEIの値はきちんと記録しておくこと。
MTKdrodToolsについては「MTK系Android携帯でIMEIが消えた時の対処方法」を参照のこと。

・オリジナルのfirmwareは入手可能
ロシアの掲示板にある。
最新は

・rootはツールじゃ取れない。firmware書き換え必須
これもロシアの掲示板にroot取得済みと思われるファイルがあるが、ロシア語がうまく解読できず、よく分からなかった。
いろいろ試した結果、最終的に、boot.imgをばらしてdefault.propを書き換えてadb接続したらrootユーザになるようにした後に、普通に起動させて、/systemをrw,remount&su関連を入れる、という手段をとった。

初期のdefault.prop

#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=0
persist.service.adb.enable=0

書き換えたdefault.prop

#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.adb.enable=1

・FMラジオはあるけど、日本では使えない
いまのところ、FMラジオを日本の周波数帯で使える様にできる改造方法を発見できていません。

fastcardtechで旧正月セールだってさ

fastcardtechで「2013 Newyear super Free gift big promotion」を行うそうだ。

旧正月に入るので、2/2~2/15は休みで、その間の発注は2/18~2/22ぐらいで発送します。
それじゃ申し訳ないんで4つのキャンペーン

1つ目
150ドル以上の買い物で4.5ドルの割引となるクーポン「528888」

2つ目
100ドル以上の買い物をした人に以下の3つが入ったギフトをプレゼント
・1 Free 24K Gold Plating Anti-Radiation Sticker
・1 Free wood birds Phone chain
・1 Free Micphone design Anti-dust Plug Cap( Also Stylus touch pen )

3つ目
もし一度に8800ドル以上を買った人にはもれなくiPad Mini Wifiモデル
12000ドル以上だったらiPhone5 16GBをプレゼント

4つ目
抽選で合計16人に豪華プレゼント
16人の内訳は・・・
・3 buyers will get free iphone 5 (16GB) 3pcs
・3 buyers will get freeSamsung Galaxy note 2 3pcs
・2 buyers will get freeSamsung Galaxy S3 2pcs
・4 buyers will get freeiPad Mini(wifi) 4pcs
・4 buyers will get freeNew iPad 2(wifi) 4pcs
当選の発表は2/30。

さすがに3つ目のは無理だけど、中華スマホに興味があるけど、まだ買ったことない、という人は頼んでみてもいいんじゃないでしょうか?

ちなみに、「発送しました!」という連絡が来てから、配送記録で追えるようになるまで2~3日かかるのが普通なので、焦らないでくださいね。

で・・・何を買ったらいいかは難しいですねw
狙いどころは「Free Shipping」の品物です。

現状、金欠なので買えないのが悔しいんですが、注目しているところとしては以下があります。

・iPhone5もどきのMTK MT6577搭載機
いろいろあるなかで、比較的一般的なGoophone i5 pro。

いい感じのfirmwareが手に入らない感じもするSophone i5 Lte
(LTEが使えるわけではない)

・ふつーのMTK MT6577搭載機としては
防水Lenovo A660

防水じゃないのはLenovo A800

・Tegra3搭載機
Quad core,Tegra3の中でも安いK-Touch V9

値段的にはもっと安いんだけど、ほんとにTegra3か怪しいというのとfirmwareが入手できるのかよくわからない「XIAOLAJIAO XLJ Q1」

たぶん、類似機種のfirmwareが使えそうではあるんだけど・・・

・Samsung Exynos 4412搭載機
これもQuad coreのNewman N2
Newmanは中華メーカの中でもしっかりしてる系のところで、firmwareがまめに更新される。

で・・・firmwareが流用可能な「Freelander I20」
というか、同じもの

この程度の価格差ならオフィシャルのNewman N2の方がいいと思う

・1つ前のMTK MT6575搭載機
わたしのいまのメイン機「TOOKY T1982」

まさか送料込みで$99になるとは・・・

・Intel ATOM Z2460搭載機
ZTE V970 Grand IN

とはいえ、最新のIntel ATOMではない点に注意

・バッテリー最強大容量4160mAh
innos D9、Snapdragon S4のMSM8625

あ・・・そうそう、とりあえずWCDMAが使えて、Android 4.0.4も動く
K-Touch W619もおもしろいですよ。

これは、現在進行形で遊んでるところです。

Proxmox上のOpenVZ仮想マシンをCLIでlive motion

Proxmox 2.xでは、共有ディスク無しでのホストサーバ移行(Live Motion/vMotion)みたいなことができる。
Web GUIでの方法はわかったが、CLIでのやり方についてのドキュメントが見つけにくく難航した。

使用するコマンド「pvectl」

ただし、このコマンドは、自サーバ上のみのコントロールを担当する。

「pvectl list」で、サーバ上にある仮想マシンリストを表示

root@pve1:~# pvectl list
Use of uninitialized value in printf at /usr/bin/pvectl line 46.
      VMID NAME                 STATUS     MEM(MB)    DISK(GB)
       101 server1.osakana.net  running    1024       8.00
       102 server2.osakana.net  running    1280       30.00
#

他にもサーバがある場合は以下の様な形で他サーバに対してssh経由でコマンドを発行して状態を取得する。

root@pve1:~# ssh root@pve2 pvectl list
Use of uninitialized value in printf at /usr/bin/pvectl line 46.
      VMID NAME                 STATUS     MEM(MB)    DISK(GB)
       103 server3.osakana.net  stopped    1024       10.00
       104 server4.osakana.net  stopped    1024       8.00
# 

移動させる時は「pvectl migrate VMID サーバ名 -online」

root@ns5:~# pvectl migrate 101 pve2 -online
Jan 31 15:56:51 starting migration of CT 101 to node 'pve2' (192.168.1.102)
Jan 31 15:56:51 container is running - using online migration
Jan 31 15:56:51 starting rsync phase 1
Jan 31 15:56:51 # /usr/bin/rsync -aHAX --delete --numeric-ids --sparse /var/lib/vz/private/101 root@192.168.1.102:/var/lib/vz/private
Jan 31 15:57:31 start live migration - suspending container
Jan 31 15:57:31 dump container state
Jan 31 15:57:32 copy dump file to target node
Jan 31 15:57:32 starting rsync (2nd pass)
Jan 31 15:57:32 # /usr/bin/rsync -aHAX --delete --numeric-ids /var/lib/vz/private/101 root@192.168.1.102:/var/lib/vz/private
Jan 31 15:57:35 dump 2nd level quota
Jan 31 15:57:35 copy 2nd level quota to target node
Jan 31 15:57:36 initialize container on remote node 'pve2'
Jan 31 15:57:36 initializing remote quota
Jan 31 15:57:37 turn on remote quota
Jan 31 15:57:38 load 2nd level quota
Jan 31 15:57:38 starting container on remote node 'pve2'
Jan 31 15:57:38 restore container state
Jan 31 15:57:39 removing container files on local node
Jan 31 15:57:40 start final cleanup
Jan 31 15:57:40 migration finished successfuly (duration 00:00:49)
root@pve1:~ #

で、うちの環境だと、CPUがpve1はIntel, pve2がAMDなので、移行後の起動に失敗する。
なので、別途、起動させる必要がある。

root@pve1:~# ssh root@pve2 pvectl start 101
Starting container ...
Container is mounted
Adding IP address(es): 192.168.1.201
Setting CPU units: 1000
Setting CPUs: 1
Container start in progress...
root@pve1:~#

これで、以下のような感じで移行が完了する。

root@pve1:~# pvectl list
Use of uninitialized value in printf at /usr/bin/pvectl line 46.
      VMID NAME                 STATUS     MEM(MB)    DISK(GB)
       102 server2.osakana.net  running    1280       30.00
root@pve1:~# ssh root@pve2 pvectl list
Use of uninitialized value in printf at /usr/bin/pvectl line 46.
      VMID NAME                 STATUS     MEM(MB)    DISK(GB)
       101 server1.osakana.net  running    1024       8.00
       103 server3.osakana.net  stopped    1024       10.00
       104 server4.osakana.net  stopped    1024       8.00
# 

さて、この処理を自動化すると・・・

#!/usr/bin/bash

SERVER=pve2
for vid in `pvectl list 2>&1 |grep running | awk '{ print $1 }'`
do
  echo === $vid ===
  echo pvectl migrate $vid $SERVER -online
  pvectl migrate $vid $SERVER -online
  ssh root@$SERVER pvectl list 2>&1 |grep  stop | grep $vid
  echo ssh root@$SERVER pvectl start $vid
  ssh root@$SERVER pvectl start $vid
done

ほんとは、移行後に起動しているか確認した上で、pvectl startを実行させるべきなんだろうけど、起動状態でpvectl startを実行しても影響がないので、無視している。