格安SPI/I2C ReaderをLinuxで使う

仕事で SPI Flash の読み書きが必要になって、個人的にもSPI Flashのライターが欲しいなと思っていたので、色々と探してみたらAmazonで格安のSPI Flash / I2C リーダライタ を発見。

買ったときの値段は忘れてしまったけど、現在の価格は送料込みでたったの 325円 !!
怪しいくらい安い。でもこのくらいなら失敗しても痛くないので買ってみた。
中国からの発送で2週間位かかったと思う。

見た目はこんな感じ。写真は撮ってないけど他にもSOP-DIPのピッチ変換基板が付いてきた。

こういうDIPソケットってめちゃくちゃ高かった気がするから、貧相な安物だろうと思っていたら、ちゃんとTEXTOOLだった。すごいな。この値段っておかしくないか?

裏面はこんな感じ。

裏面のシルクのように、ソケットの位置でSPIフラッシュとI2CのEEPROMを使い分けるようになっている。TX, RXもあり、USBシリアルとしても使えるらしい。

Windows版のプログラムは以下からダウンロードできるみたい。おそらくここがオフィシャル?のツールだと思う。

英語ページよりも中国語ページのほうが内容が充実しているので、中国語ページをgoogle翻訳したものを見るといいかも。

ただ、上記でダウンロードできるツールは、いくつかのアンチウィルスソフトで「トロイの木馬」と検出されるらしい。誤検知らしいんだけど、こういう前例があると会社では使えないよね。

色々探してみると、Linux版のツールも見つかった。

SPI Flashライタツール

どちらも CLI のツール。flashromの方は ubuntu のリポジトリにも入っている。

flashromの方が対応しているFlashデバイスが多く、SFDP にも対応しているみたいなので、対応リストに入っていないFlashでも使える可能性は高い。基本的にはこちらを使っていれば問題はないと思う。

ただ、どちらのツールも4byteアドレスには対応していないので、16MBまでのFlashしか読み書きできない。
また、クロックがそれほど速くないせいか、大容量のFlashだと読み書きに結構時間がかかるようだ。

I2C EEPROMライタツール

Linux用で見つけられた唯一のツール。

24c32 と 24c64 にのみ対応している?のかな?
違う容量のEEPROMの場合はソースの修正が必要になるかも。

パーツボックスに転がっていた 24LC64 は問題なく Read/Writer/Erase できていそうだった。
24LC64 (8kB) で Read が 0.3 秒、 Erase が 3.3 秒、 Write も 3.3 秒だった。

USB I2C kernel driver

kernelドライバとして実装されているので、kernelが持っているI2Cデバイスのドライバ(温度センサやタッチパネルとか)が使える。

これは試してみてはいない。

USBシリアル kernel driver

USBシリアルのドライバとしてはすでにメインラインに取り込まれている。ubuntuでも使えるかも。

シリアルとSPI Flashライタツールを同時に使うことはできるのかなぁ。
kernelドライバとlibusbで同時に1つのデバイスを操作できるのだろうか。

 

軽く使ってみた感じでは、CLIであればLinuxでもまぁまぁ使えることがわかった。値段の割にはちゃんと使えるので、ライターが欲しい人にはいいかもしれない。

でも裸だと雑に扱えないからケースがほしいなぁ。アクリルで作ってみようかな。

Huawei P9 のバンパーケースを購入したものの失敗・・?

失敗談です。悔しかったので記事にしてみました。

Amazon で Huawei P9 のバンパーケースを買いました。

Huawei P9 は画面のガラスがラウンド加工されています。デザイン的にはいいのかもしれないですが、個人的にはこれは大きなお世話で、こいつのせいで落とした時に割れる可能性が飛躍的に高まっています。

狭縁が流行りですが、実用性も考えて欲しいですね。結局ケースつけたらデザインが損なわれてしまうので。

で、落下耐性を上げるにはバンパーです。Huawei P9はキャリアから発売されているものではないので、P9用のケースはヨドバシなどの量販店ではほとんど取り扱われていません。

いまでもこのケースを使っているのですが、裏側の透明アクリル板が厚くてせっかくのP9薄さが台無しなんですよねー。

Amazonで色々と探した結果、LUPHIEのアルミ製バンパーケースを買ってみました。

中国からの配送でしたが、1週間位で届きました。早い!

つけてみた感じが以下の写真。

かなりいい感じです。

端子部分はこんな感じ。

結構細かいところもしっかりと作りこまれていて、加工も精度が高そうです。

バンパー部分が僅かにガラス面より出ているので、落とした時にガラス面が地面に接触する可能性が下がります。

デザインも高級感があり大満足。

 

だが、しばらく使っていて気づいたことが・・・・。

Wifiの電波の入りが悪い。

Wifi Analyzerでケース無しとケース有りを比べてみた結果・・・

うわっ・・・Wifiの感度低すぎ・・・?

画面の真ん中から左がケース無し、右側がケースありです。明らかに電波強度が低下。

一応金属製バンパーなので多少の電波干渉は覚悟していたんだけど・・・。

うーん。見た目も質感も、モノは悪くないんだけどなー。

ちょっとしばらく使ってみるか・・。

ownCloudのContactsをふりがなに対応してみた

久しぶりに投稿できそうなネタができたので数年ぶりに復活。

クラウド全盛期のこのご時世、Google カレンダーも Google コンタクトも便利なのはわかっているんですが、予定や電話帳、位置情報と言った個人情報を Google に提供するのがどうにも気持ちが悪くて、Android スマホを使っていながらも、これらのアプリは Google アカウントとは連携せずに使ってます。※1

そんな私のニーズにバッチリなのが ownCloud で、Dropbox、Google Calender (CalDAV)、Google Contacts (CardDAV) を自分のサーバで完全に置き換えることができます。素晴らしい!!

そんなこんなで重宝している ownCloud ですが、不満があったのが Contacts アプリです。一通り機能は揃っていて UI も今風で使いやすいのですが、致命的な欠点はふりがなに対応していないことでした。

内部の DB としてはふりがななどの情報も保持できているようで、 CardDAV を使ってAndroidなどのクライアントからふりがな付きのデータを同期することは問題なくできます。なので、Android 端末側で全て操作して、クラウドの保存先として使う分には問題ありません。

ただ、スマホの機種変更の際の操作ミスが重なり、ふりがなが消えたデータで上書き同期してしまいました。スマホの操作で全部ふりがなを書くのは気が遠くなるので Contacts アプリを改造することにしました。

で、対応したのがこれ。

Contactsアプリを上記のものに置き換えると、設定に「Enable phonetic」「Reverse name order」の2つのチェックボックスが追加されます。

「Enable phonetic」のチェックボックスを有効にすると「せい」「めい」の項目が表示されます。

「Reverse name order」のチェックボックスを有効にすると、「名」「姓」の順から「姓」「名」の順に変わります。

両方にチェックを入れた時の右側の詳細画面がこちら。

もう1つ、ソートの項目に「せい」と「めい」の2つが追加されます。これを選ぶとふりがなでソートができるようになります。

日本なら2つのチェックボックスを有効にして、ソートは「せい」を選ぶのが良いでしょう。「せい」を選んだ場合、同姓なら「めい」でソートされます。

これで日本語環境で最低限使えるようになったと思います。

ソースは github で公開しています。一応本家にもプルリを送ってみたのでうまくいけばマージしてもらえるかも?

※1 .. LINE のほうが Google に比べて信用度は下がるのに、こっちは使わないわけには行かないというジレンマ・・・  コミュニケーションツールがクローズドな仕様で一社寡占状態なのは不健全だと思うんだけどねぇ。

Raspberry Pi 2 やっと届いた

先々週に発売されて話題の Raspberry Pi 2。 早速買ってしまいました。

Raspberry Pi 2Raspberry Pi2 買っちゃいました

発売されてすぐの2/3に注文したんですが、在庫切れで届いたのは今日でした。

早くも秋月千石電商Amazonでも販売されています。RSコンポーネンツに注文するより小売店で買ったほうが早く入手できたようです。

旧機種と新機種旧機種のRaspbery Pi model B(左) と新機種の Radpberry Pi 2 model B(右)

こう見ると違結構違いますが、基板の形状やコネクタ位置は旧機種の model B+ と同じだそうです。

CPU は ARM11 (ARMv6 アーキテクチャ) から Cortex-A7 x 4 core (ARMv7 アーキテクチャ) と大幅変更になり、RAM も 1GB に増量されたそうです。

ARMv7 アーキテクチャであれば Android も(実用的かどうかはわかりませんが)動くでしょうし、いろいろ遊びの幅が広がりそうです。

個人的には Cortex-A7, A15 などで搭載された Virtualization Extention (VE:仮想化支援) が気になっていたのでこれでいろいろと遊んでみようと思います。(実は Cortex-A7 搭載の Cubieboard2 を持っていたのですが半年近く死蔵したまま・・)

最近の Linux kernel の kvm は VE に対応しているそうなので、kvm も動かしてみたいですし。

ただ、まだデータシート類は公開されていないようですので、本格的にいじれるのはもうちょっと先ですかね。

とりあえずは買った報告だけ。

ZeroPlus LAP-C の EEPROM を Linux から書き換える

なんの脈略もなくロジアナの改造ネタです。

ZEROPLUS 社製のロジアナ LAP-C の型番を書き換えるために Windows を起動したものの Windows7 では書き換え用のドライバがインストールできず、悔しくて Linux 用の書き換えツールを探したが、ちょっと使いにくかったので改造して github で公開したぜという話です。

 

だいぶ前に買って以来、部屋に技術者っぽい雰囲気を漂わせるためのオブジェとして大活躍だったロジアナの LAP-C16032 ですが、最近使いたい用途が出てきたので引っ張り出してきました。

それでふと、LAP-C16032 の内蔵 EEPROM を書き換えることで上位機種相当に改造できることを思い出して、本来の用途そっちのけでまず改造をすることにしました。

情報元は Illegal function call さんの以下のエントリです。

# Illegal function call とは何て懐かしい響き・・・

早速EEPROMを書き換えようとしたのですが、Windows 7 では上記エントリで配布されている libusb のドライバがインストールできませんでした。

Windows XP 機なんて持ってないし、XP mode インストールするのも面倒なので、Linux で書き換えることにしました。

上記エントリに

『今回はGL660USBを解析した外人さんがいるが、
元はLinux用だったり、ちょっと扱いが面倒なので、こんなソフトを作ってみた。』

って書いてあったので、元になる Linux のコードがあるんだろうと探してみたところ・・・見つけました。

zerominus という Linux から LAP-C を叩いて計測データを取り出そうというプロジェクトのようです。

そのプロジェクトの中に  zeroprog という EEPROM を読み書きするツールがあります。きっとこれが元ネタだと思います。

早速ビルドして使ってみました。

一応使えるのは使えるのですが、すんなりビルドできなかったり、バックアップはできるのにリストアができなかったり、バックアップファイルのエンディアンの問題でダンプが読みにくかったりと、いろいろ使いにくかったのでチャチャッと改良してみました。改造したコードは github で公開しています。

ビルド方法などは上記ベージの README.md に書いてあるので割愛します。

リトルエンディアンに変更しているのでバックアップファイルを hexdump すると、文字列が普通に読めます。

オリジナル zeroprog

00000010 5a 1b 52 45 50 4f 55 4c 20 53 65 54 68 63 6f 6e |Z.REPOUL SeThcon|
00000020 6f 6c 79 67 43 20 2c 4f 4c 2e 44 54 ff ff ff ff |olygC ,OL.DT....|

改造後 zeroprog

00000010 1b 5a 45 52 4f 50 4c 55 53 20 54 65 63 68 6e 6f |.ZEROPLUS Techno|
00000020 6c 6f 67 79 20 43 4f 2c 2e 4c 54 44 ff ff ff ff |logy CO,.LTD....|

また、一番重要な restore コマンド (-r) を実装したのでいくらでも失敗ができます。

–help で resutore コマンドが出てきていたのでてっきり使えると思って安心して書き換えていたのですが、いざ restore コマンドを使ったら

// not yet implemented, sorry

なんて冷たくあしらわれてしまったので、仕方なく実装しました。

で、結果的に Product ID と Model string を変更することで LAP-C16128 として問題なく動作させることができましたとさ。めでたしめでたし。