kobo touch にUSBシリアルを繋げる

kobo Touch のシリアルピンがわかったので、USBシリアルをつなげてログインしてみました。

使ったのは秋月のFT232RLモジュールです。1.8Vから5VまでのUARTを繋げられるので便利です。

ICクリップを使ってこんな感じで引き出して・・・

kobo touchからUARTを引き出す
kobo TouchからUARTを引き出す 

FT232RLにつなげます。

FT232RLと接続
FT232RLに接続

kobo Touch のJ5と FT232RL モジュールは以下のようにつなぎます。

 Kobo J5       FT232RL
  1 VCC
  2 TX   -----  5 RX
  3 RX   -----  1 TX
  4 GND  ----- 24 GND

電源OFFから起動した時のログは以下のようになりました。

U-Boot 2009.08-dirty-svn (12 13 2011 - 16:52:29)

CPU: Freescale i.MX50 family 1.1V at 800 MHz
mx50 pll1: 800MHz
mx50 pll2: 400MHz
mx50 pll3: 216MHz
ipg clock : 66666666Hz
ipg per clock : 66666666Hz
uart clock : 24000000Hz
ahb clock : 133333333Hz
axi_a clock : 400000000Hz
axi_b clock : 200000000Hz
weim_clock : 100000000Hz
ddr clock : 200000000Hz
esdhc1 clock : 80000000Hz
esdhc2 clock : 80000000Hz
esdhc3 clock : 80000000Hz
esdhc4 clock : 80000000Hz
Board: MX50 RDP board
Boot Reason: [POR]
Boot Device: SD
I2C: ready
DRAM: 256 MB
MMC: FSL_ESDHC: 0, FSL_ESDHC: 1
In: serial
Out: serial
Err: serial

MMC read: dev # 0, block # 1023, count 1 partition # 0 …
1 blocks read: OK

MMC read: dev # 0, block # 1024, count 1 partition # 0 …
1 blocks read: OK
[only 1 key]
0 keys,0x00,0x00
0 keys,0x00,0x00
0 keys,0x00,0x00
0 keys,0x00,0x00
ram p=70000000,size=268435456

MMC read: dev # 0, block # 1023, count 1 partition # 0 …
1 blocks read: OK

MMC read: dev # 0, block # 1024, count 1 partition # 0 …
1 blocks read: OK

MMC read: dev # 0, block # 18431, count 1 partition # 0 …
1 blocks read: OK

MMC read: dev # 0, block # 14335, count 1 partition # 0 …
1 blocks read: OK

MMC read: dev # 0, block # 14336, count 1979 partition # 0 …
1979 blocks read: OK
Kernel RAM visiable size=255M->255M
Hit any key to stop autoboot: 0

MMC read: dev # 0, block # 2047, count 1 partition # 0 …
1 blocks read: OK
cmd=mmc read 0 0x778205a0 0x7ff 0x1
no kernel image signature !
cmd=mmc read 0 0x70800000 0x800 0x1800

MMC read: dev # 0, block # 2048, count 6144 partition # 0 …
6144 blocks read: OK
## Booting kernel from Legacy Image at 70800000 …
Image Name: Linux-2.6.35.3-850-gbc67621+
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1904568 Bytes = 1.8 MB
Load Address: 70008000
Entry Point: 70008000
Loading Kernel Image … OK
OK

Starting kernel …

Uncompressing Linux… done, booting the kernel.
epdc_init_sequence(994) : epd_power_on request fail !
1+0 records in
1+0 records out
512 bytes (512B) copied, 0.002350 seconds, 212.8KB/s
cannot open /dev/null
dosfsck 3.0.6, 04 Oct 2009, FAT32, LFN
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
494:9c/00, 495:e2/00, 496:48/00, 497:42/00, 498:2a/00, 499:dc/00, 500:b3/00
, 501:7b/00, 502:4b/00, 503:25/00, 504:a0/00, 505:b1/00, 506:65/00
, 507:43/00, 508:ed/00, 509:52/00
Not automatically fixing this.
/dev/mmcblk0p3: 299 files, 3579/348630 clusters
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!

(none) login: Screen resolution is.. 600 x 800
> ApplicationBase: loading locale: “:/translations/trans_ja_JP”
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
> WebSyncScheduler: scheduleTimer: No need to schedule a sync
loadPlugin: loaded plugin for QFontEngine
Loading iType.. YES
> FTE Startup stage: 0. Language selection…
> FTE Startup stage: 1. Select setup type…
> FTE Startup stage: 2. Changelog…
> FTE Startup stage: 3. Auxillary notifications…
> Warning: You haven’t called pageView yet: “5(Settings*Set%20View%20Type*List)”
> Warning: Why are you deselecting an unselectable textheader?
> Warning: Why are you deselecting an unselectable textheader?
static QList Repository::retrieve(QString, QString, const QMap&, const QList&, int, int, const QString&) [with T = ShelfContent] Falling back to db
> Warning: You haven’t called pageView yet: “5(Settings*Set%20View%20Type*List)”
> FSCheckThread: dbMalformed: false fsCorrupted: false
loadPlugin: loaded plugin for QRasterPaintEngine

(none) login:
(none) login:
(none) login: sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
Object::connect: No such slot KepubBookReader::displayTitlePage()
Object::connect: (sender name: ‘ReadingView’)
Object::connect: No such signal KepubBookReader::showFooter()
Object::connect: (receiver name: ‘ReadingView’)
Object::connect: No such signal KepubBookReader::hideFooter()
Object::connect: (receiver name: ‘ReadingView’)
Object::connect: No such signal KepubBookReader::openFooterMenu()
Object::connect: (receiver name: ‘ReadingView’)
Object::connect: No such signal KepubBookReader::closeFooterMenu()
Object::connect: (receiver name: ‘ReadingView’)
Object::connect: No such slot KepubBookReader::footerMenuClosed()
Object::connect: (sender name: ‘ReadingView’)
Object::connect: No such slot KepubBookReader::footerMenuOpened()
Object::connect: (sender name: ‘ReadingView’)
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
loadPlugin: loaded plugin for QRawFont

(none) login: sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill

(none) login:
(none) login: sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill
sh: you need to specify whom to kill

(none) login:
(none) login:
(none) login:
(none) login:
(none) login:
(none) login:

root 、パスワード無しでログインできます。

ただ、数秒触らないとすぐにサスペンド(?)してしまいます。頻繁にサスペンドできるのはE-ink端末ならではですね。 そりゃ電池ももつわけだ。

ryoさんのブログによると、killall nickel で nickel プロセスを止めると、このスリープも止まるそうです。

これで色々いじれる環境が整いました。

kobo touch のUART

今回も kobo Touch ネタです。

前回、蓋を開けた時に基板上にUART用端子らしきものがあったのですが、複数あったのでどれが i.MX508 につながっているか調べてみました。

結果的には、以下の写真の J5 が i.MX508のUARTにつながっているようです。

i.MX508のUART端子
i.MX508 の UART 端子

上記写真では、下から順に、VCC(3.3V)、TX、RX、GNDの順になっています。

起動時の波形をロジアナで調べた結果がこちら。

UARTの波形
UARTの波形 (クリックで拡大)

茶色がRX、赤がTXにつながっています。

ロジアナのシリアル解析機能を使ってデコードすると、”U-Boot 2009.08-dirty-svn” という文字列が出力されていることがわかります。(画像の緑色の部分)

また、波形からレートは 115200bps, 8bit, パリティなしであることもわかりました。

ピンがわかったので、次回はUSBシリアルをつなげてログをとってみようと思います。

 

実はこの情報、つい先日 2ch に公開されていました。ひと足遅かった!ちょっと悔しい。(^^;

 

kobo touch 分解

おととい買ったばかりのkobo Touchですが、ひと通り動作確認した後に分解してみました。

kobo touch 分解
表面 (クリックで大サイズ 約1MB)

右下のCPU近辺をちょっと細かく見ていきます。

 CPU近辺
右下 (クリックで大サイズ 約1MB)

うえににある一番大きいチップが i.MX508 (MCIMX508CVM8B)のようです。

その下の黒いものが SDRAM (SAMSUNG K4X2G323PC – 256MB) です。

その下の小さいチップは MSP430 F2272 ぽいです。マイコンで何かを制御しているようです。

左に microSD スロットがあります。この microSD を交換することで大容量化できるそうです。

他にも、自分で後々見るためにアップでとったものもあるので置いておきます。サイズが大きいのと回線が細いので注意。

 

端子っぽいものは3つ。

端子その1 (UART??)
端子その1 (UART??)

TX, RX と書かれていることから UART と思われます。シルクに書いてあるなんて親切ですね。

ただ、すぐ下に MSP430 があるのでこのマイコンのUARTではないかと思います。

端子 その2 (UART2??)
端子 その2 (UART???)

こちらにも UART らしき端子が。こちらの TX 端子を追いかけてみると、近くのMSP430につながっていたので、こちらもマイコン用のUARTのようです。

端子その2
端子 その3

こちらはシルクが印刷されていません。これが i.MX508用の UART でしょうか。あとで調べてみようと思います。

 

ついでにウラ面も撮ってみました。

ウラ面
ウラ面 (クリックで大サイズ約1MB)

 

microSD 端子と microUSB 端子、リセットスイッチがあります。

microSDスロットあったんですね。分解して初めて知りました (^^;

ちょっと不思議だったのが、周囲にある白い部品です。LEDみたいだったのではじめはバックライト??と思ったんですが、この機器にはバックライトないんですよね。

シルクではD???と、Q???なので、ダイオード(LED??)とトランジスタ(フォトトランジスタ??)のようです。それぞれ外に向いてついています。

タッチ位置の検出用なのかなぁ。ちょっとよくわかりません。

 

今回はとりあえずここまで。

kobo touch 買っちゃいました

久しぶりのエントリです。最近特にネタがなかったのでだいぶ間が開いてしまいました。

さて、今回のおもちゃはこれです。

kobo買いました
kobo Touch 買いました

いろいろと悪い評価が多いこの商品ですが、中身が Linux らしく、カスタムファームウェアも出ているなど、おもちゃとしてはかなり面白そうなので買ってみました。

電源を切っても表示が残る電子ペーパーの特性を使って、kobo のロゴが表示された状態で梱包されていました。

電子ペーパーの機器は前から興味があり、Kindle や Cover story basic などチェックしてたんですが買うまでに至らず・・・。初めての電子ペーパー機器になりました。

さて、ちょっと触った感じでの感想です。

前情報では最初のアクティベーションに色々と問題があるとのことだったので、ちょっと覚悟していたのですが、なんの問題もなく、あっけないくらいすんなりアクティベーションできました。

だいぶ叩かれたので対応されたのかもしれません。今から使う人はあまり苦労せずに使えるのではないでしょうか。

とりあえず、デフォルトで kobo Touch にダウンロードされる「銀河鉄道の夜」を表示させてみました。

銀河鉄道の夜 (モリサワ リュウミン)
銀河鉄道の夜 (モリサワ リュウミン)

こんな感じで文字数的に丁度いい大きさで表示させてみました。デフォルトではモリサワ リュウミンで表示されます。

拡大

全体的にちょっと薄めですかね? ちょっとルビがかすれて正直見にくいです。

電子ペーパーはもっと精細なイメージがあったのですが、思っていたよりは荒かったです。

ゴシックにすればちょっとは見やすくなるかなと思ってフォントを変更したのがこちら。

銀河鉄道の夜 (モリサワ ゴシック)
銀河鉄道の夜 (モリサワ ゴシック)

文字の大きさは同じです。 

ゴシックでもルビはやや薄めですが、個人的にはこちらのほうが見やすいです。

フォントの大きさはそのままに、文字の濃さ(中間色の部分)を変えられると見やすくなると思うんですけどね。

epub 形式の本しか試してませんが、ページ送りはまあまあのスピードですね。別の電子ペーパー機器を使ったことが無いので比較はできないのですが、まぁ使える速度かなという感じでしょうか。

まだ今日届いて開けたてなので、これから色々といじってみようと思います。

オリジナルブートアニメ

今回は完全に自己満足のためのエントリです。

最近 FT701W 絡みで、ブートアニメーションの話題が上がっていたので、私も作ってみました。

 

 

知る人ぞ知る、MSX の起動画面です。(正確には MSX2+ ですね)

MSX はパソコン少年だった頃にハマったマシンです。えぇ、私の青春です。(年がバレる^^)

欲しい人はいないと思いますが、一応、置いておきます。

FT701W の /data/local/ に置いてください。多分 root 権限は不要と思います。

 

ネットの動画からタイミングを調べたり、エミュレータで文字を表示させて切り出したりして作りました。

個人的には、この TV 風な効果が気に入ってます。

 

ドットピッチの粗いテレビに、細い文字を表示しているので、白い縦線のはずなのにエッジに色がついて見えるんですよねー。

これは opemMSX というエミュレータのエフェクトに感動して自分で真似てみたものです。

 

せっかくなので、テレビ風に変換する imagemagick のコマンドラインを紹介します。

2倍に拡大して、テレビ風エフェクトをかけます。テレビ風に見せるために、赤プレーンだけ左に 1 ドットずらして、弱い blur をかけています。

$ convert FROM.png -scale 200% \( -clone 0 -channel BG -fx 0 -channel RGB -roll -1+0 \) \( -clone 0 -channel R -fx 0 -channel RGB \) -delete 0 -compose plus -composite -resize 400%x400% -blur 1 -resize 25%x25% TO.png

元々は 320×240 の画像でアニメを作り、最後にまとめてこのエフェクトをかけて 640×480 に変換しました。

 

このアニメだとなつかしくてついつい見入ってしまって、遅い Android の起動も気にならないです。(私だけでしょうけど ^^;)