USB温度計 TEMPerV1.2は計測ミスが多い

(注意: TEMPer V1.2のドライバは→「ここ」にあります)
USB温度計TEMPer V1.2で温度取得をおこなっていると、以下の様な形で、エラーとなることがある。

 $ ./pcsensor
USB interrupt read: Resource temporarily unavailable
Fatal error> USB read failed
$

しかも、これが発生すると該当デバイスは一度offlineとなり、別のデバイスとして認識されてしまいます。

どれくらいの確率で発生するのかを、スクリプト組んで確かめてみました。

作成したスクリプト

#!/bin/bash

SUCCESS=0
FAILED=0
I=0
while [ $I -lt 1000 ]
do
        echo -n "$I "
        ./pcsensor > /dev/null 2>&1
        if [ $? -eq 0 ];
        then
                SUCCESS=`expr $SUCCESS + 1`
        else
                FAILED=`expr $FAILED + 1`
        fi
        sleep 5
        I=`expr $I + 1`
done
echo ""
echo "successed: $SUCCESS"
echo "failed:    $FAILED"

pcsensorを実行して5秒待つ、というのを繰り返すという、まぁ、素直なものですね。

USB温度計を2つつなげて、1000回の測定を開始!

$ ./test.sh
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
<略>
7 988 989 990 991 992 993 994 995 996 997 998 999
successed: 879
failed:    121
$

2個のうちどちらか片方こけただけでも、両方アウトになるので、失敗確率が結構いってしまいます。

また、エラーが発生すると、offlineになるので、ログには以下の様な記録がずらずらっと・・・

# tail /var/log/messages
Jan 17 15:02:27 temperserver kernel: usb 2-2: configuration #1 chosen from 1 choice
Jan 17 15:02:27 temperserver kernel: input: RDing TEMPerV1.2 as /class/input/input174
Jan 17 15:02:27 temperserver kernel: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.2] on usb-0000:00:1d.0-2
Jan 17 15:02:27 temperserver kernel: hiddev96,hidraw96: USB HID v1.10 Device [RDing TEMPerV1.2] on usb-0000:00:1d.0-2
Jan 17 15:03:02 temperserver kernel: usb 3-1: USB disconnect, address 90
Jan 17 15:03:03 temperserver kernel: usb 3-1: new low speed USB device using uhci_hcd and address 91
Jan 17 15:03:03 temperserver kernel: usb 3-1: configuration #1 chosen from 1 choice
Jan 17 15:03:03 temperserver kernel: input: RDing TEMPerV1.2 as /class/input/input175
Jan 17 15:03:03 temperserver kernel: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.2] on usb-0000:00:1d.1-1
Jan 17 15:03:03 temperserver kernel: hiddev96,hidraw96: USB HID v1.10 Device [RDing TEMPerV1.2] on usb-0000:00:1d.1-1

そして、lsusbを実行すると、以下のように、デバイス番号がすごいことに・・・

# lsusb
Protocol spec without prior Class and Subclass spec at line 4297
Bus 003 Device 091: ID 0c45:7401 Microdia
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 084: ID 0c45:7401 Microdia
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

(1000回スクリプト実行前にも、テストとかをおこなっているので・・・)

運用に当たっては、いろいろ配慮が必要なようです。

MTK系Android携帯でIMEIが消えた時の対処方法

MTK MT6575,MT6577搭載のAndroid携帯に対して、SP Flash Toolを使ってfirmware書き換えをおこなうと、IMEIが消えます。

この状態で起動させると「Invalid IMEI」という表示がでます。
IMEIが消えたままではAPNを設定しても、3Gのネットワークに接続ができません。

ちなみに、Invalid IMEIの時は、どういうことになっているかと言いますと・・・

・Wi-Fiは使える
・Google Playとかも、だいたい普通に使える
・正常なSIMをさしていると、アンテナは立つ
 (ドコモMNVO系のうちデータ通信のみのやつはセルスタ対策(俗称)をしないとアンテナが立たないことがほとんど)
・電話はできない
・APNを設定しても、つながらない

MTK系Android携帯で、IMEIを復旧させるためには、いくつか手法があります。

WindowsでMTKdroidToolsを使うのが個人的にはお薦めです。
・Windowsで実行できる
・adb関連を揃えておく必要あり
・rootとらなくてもok(Androidのバージョンによってはroot取得必須)

ロシアの掲示板で配布されています。
最新版:v2.3.0

Android端末側の「USBデバッグ機能」を有効化したあと、パソコンにつなげます。
次に「MTKdroidTools.exe」を実行して、しばらく待つと以下の画面がでてきます。
mtktool-001

こんな風に「null」と表示されてしまう場合は、IMEIが飛んでいます。

このようなIMEIを修正したい場合は「Replace IMEI」をクリックすると、以下のウィンドウが開きます。
mtktool-002

ここに新しいIMEIの値を入力し、「Replace IMEI」ボタンをクリックします。
新しく入力したIMEIの値は、再起動後に有効になるため、再起動をおこないます。

Androidが再起動した後に、再度、MTK Droid Toolsに表示される内容を確認し、変更されていることを確認してください。

なお、root取得がMTK Droid Toolsでできない場合は、「Framaroot」というAndroidにインストールするソフトで出来る可能性が高いです。

LinuxサーバにUSB温度計を2つつけてみた

dealextremeから、USB温度計が届いたので、Linuxサーバに複数取り付けてみた。
(ちなみに、上海問屋では欠品ですが、Dealextremeの公式ショップで買うと送料込みで$9.2で、3週間~4週間で到着します。)

いままでは、Relavk Labsの「TEMPer Temperature Sensor Linux Driver」のCrayさんコメントにある「pcsensor-0.0.1.tgz」を使っていましたが、これは1つのみの対応でした。
(ちなみに、Crayさんが「pcsensor-1.0.1.tgz」にアップデートしたとコメントしていましたが、相変わらず1個のみの対応でした。http://www.isp-sl.com/pcsensor-1.0.1.tgz

複数のUSB温度計をつけた場合に対応しているものを探したところ、同じコメント欄に発見しました。
Momtchil Momtchevさんが「pcsensor-1.0.0-multi.tgz」を作ったとコメントしています。
コメント内のリンク先は消えていましたが、「A modified TemperUSB driver that supports multiple devices」にて配布されていました。

(2013/01/24追記: デバイス指定ができる改良版をpcsensor-1.0.2 for TEMPerV1.2 with multi device supportにて公開中)

 $  ./pcsensor
2013/01/16 18:30:12 Temperature 77.45F 25.25C
2013/01/16 18:30:12 Temperature 91.18F 32.88C
$

が・・・デバイスの指定はできないようです。

詳細オプションをつけるとこんな感じです。

$ ./pcsensor -v
usb_set_debug: Setting debugging level to 255 (on)
usb_os_init: Found USB VFS at /dev/bus/usb
usb_os_find_busses: Found 003
usb_os_find_busses: Found 002
usb_os_find_busses: Found 001
usb_os_find_devices: Found 004 on 003
skipped 1 class/vendor specific interface descriptors
skipped 1 class/vendor specific interface descriptors
usb_os_find_devices: Found 001 on 003
error obtaining child information: Inappropriate ioctl for device
usb_os_find_devices: Found 003 on 002
skipped 1 class/vendor specific interface descriptors
skipped 1 class/vendor specific interface descriptors
usb_os_find_devices: Found 001 on 002
error obtaining child information: Inappropriate ioctl for device
usb_os_find_devices: Found 001 on 001
lvr_winusb with Vendor Id: c45 and Product Id: 7401 found.
lvr_winusb with Vendor Id: c45 and Product Id: 7401 found.
USB error: could not detach kernel driver from interface 0: No data available
Device already detached
USB error: could not detach kernel driver from interface 1: No data available
Device already detached
USB error: could not detach kernel driver from interface 0: No data available
Device already detached
USB error: could not detach kernel driver from interface 1: No data available
Device already detached
01 01 6f 20 64 61 74 61
01 80 33 01 00 00 00 00
80 02 19 40 65 72 46 31
01 82 77 01 00 00 00 00
82 01 00 40 65 72 46 31
01 86 ff 01 00 00 00 00
54 45 4d 50 65 72 46 31
2e 32 4d 50 65 72 46 31
01 01 4a d6 ff 7f 00 00
01 80 33 01 00 00 00 00
80 02 20 e0 65 72 46 31
01 82 77 01 00 00 00 00
82 01 00 e0 65 72 46 31
01 86 ff 01 00 00 00 00
54 45 4d 50 65 72 46 31
2e 32 4d 50 65 72 46 31
01 80 33 01 00 00 00 00
80 02 19 40 65 72 46 31
2013/01/16 18:30:49 Temperature 77.45F 25.25C
01 80 33 01 00 00 00 00
80 02 20 e0 65 72 46 31
2013/01/16 18:30:49 Temperature 91.18F 32.88C
$

Malata i8というMTK MT6577チップ搭載でRAM 1GBのAndroid携帯が送料込みで$83.99

2013/01/17 0:40 追記
先ほどページ確認したところ、価格が158ドル(送料込み)に変更されていました。
$83.99でおこなった発注の行方はどうなることやら・・・

2013/01/19 21:00 追記
「Out of Stock」といういいわけで返金されました。


Malata i8というMTK MT6577チップ搭載でRAM 1GBのAndroid携帯が送料込みで$83.99
big_20121128161920137

いや、これ、まじっすか?
あまりMTK系中華フォンの中でも、有名でないMalata(万利达)というメーカから、MTK MT6577チップ搭載で、QHD 4.5インチ液晶、RAM 1GBという立派なスペックながら、送料込みで$83.99なんて・・・

メーカ製品ページ:智能手机(联通版) I8

Malata i8-MT6577 Dual Core 8MP 1.0Ghz 1G Ram 4.5 inch QHD Screen Android 4.0.4 Phone

fastcardtech以外の情報を探すと、
gizchinaに「Malata I8 Great For Students Or Game Addicts!」という記事が。

中国の英語を学ぼうとする学生向けにTOEFL/IELTS関連のアプリがプレインストールされているらしい。
1月1日以降に360BUYという中国のサイトで$99程度で買えそう、というコメント通りに出てきた感じですかね。

でも、なんでこんな値段で出てきたんだろ???

とりあえず、値段が正しいらしいので、発注を入れてみた。
到着までおそらく3週間強ぐらいと見込んでいます。

MIPS系CPUのIngenic Jz4780がようやく正式発表に

2012年9月に発表されるという噂、がありながらも、6月頃を最後にずっと音沙汰が無かったIngenic Jz4780ですが、ようやくCES2013において発表される、という公式情報がありました。

MIPS社プレスリリース:Highly-Integrated MIPS-Based™ SoC from Ingenic Sets New Performance Point for Power-Efficient and Affordable Devices
Ingenicの製品ページ:Jz4780

スペックは、噂にあったとおりの

Jz4780 40nmプロセス
Dual core 1.5GHz
GPU: SGX540

というところですね。
MIPSのリリースには「1.3GHz+ SoC」とありますが、Ingenic側は「1.5GHz」としているので、それに従っています。

JZ4780 Diagram(1)

・・・ここまで遅れといて、そのスペックで大丈夫か?と心配になるレベル。

MIPSのリリースには、Alter-semiconductorのLTEチップFOURGEEと組み合わせたMIPSベースのタブレットも出展するそうなんですが、果たしてどうなることやら・・・