Kobo Touchを改造

Kobo Touchをいろいろいじってたら、初期化しないでもtelnet/rootを有効にする方法がわかりました。
Kobo Touchのroot/telnet有効手順 改訂版」にて解説しています。
また、「Kobo Touchを32GB内蔵モデルに改造した」という記事もあります。

以上、2012/07/24追記分でした。
以下は、2012/07/19作成の元記事です。




さて、楽天Kobo Touch

とりあえず、買って使ってみましたが、まぁ、いろいろ不満点があるわけです。
ページめくり操作とかカスタマイズできたらいいなぁ、とか考えるわけです。

Sony Readerの時に情報源にしたMobileRead Wikiを探すとありました。
Kobo Touch Hacking

楽天版Kobo Touchでも同じでした。

手法の概要
・初期セットアップ時にfirmwareをダウンロードしてくるので、それを改造してtelnetを有効にする

そんなわけで、初期化が必須となります。

手順

1. 初期化する
2. Kobo Desktopでユーザ登録&firmwareダウンロードする。
3. Kobo Desktop上、作業が終わっても、Kobo TouchのUSBを抜かない
4. Kobo Touchをパソコンから開き、「.Kobo」ディレクトリ内にある「KoboRoot.tgz」あと、「upgradeディレクトリ」と「manifest.md5sum」をパソコンにコピー
5. 7zipでKoboRoot.tgzの中にある「KoboRoot.tar」を開く
6. KoboRoot.tgzの中の「etc\init.d\rcS」を編集する
 最終行に「/mnt/onboard/run.sh &」を追加する
7. 編集したrcSはKoboRoot.tgzに戻す
8. 変更したKoboRoot.tgzをKoboTouchの「.Kobo」ディレクトリに戻す
9. パソコンから開いたKobo Touchのドライブ直下に「run.sh」というファイルを作成
 内容は以下。なお、改行コードはUNIX準拠にすること

#!/bin/bash
cp /etc/inittab /mnt/onboard
cp /etc/inetd.conf /mnt/onboard
cp /etc/init.d/rcS /mnt/onboard

10. USBケーブルを外すと、firmware updateが開始
11. firmware update終了後、パソコンにつないでみると、「inetd.conf」「inittab」「rcS」がコピーされている

これを行うと、以後、run.shを編集するとなんでもできる、という感じです。

で、手順6,7を、inetd.confやinittabにも適用すると、ログインできるように・・・・

ということなんだけど、うちの環境だと、telnetが拒否られてる・・・
2012/07/20 1:20 追加

拒否られているように見えたけど、実は、違うIPにアクセスしようとしていたことが判明・・・
うちでは、wikiの内容とは別のやりかた、どちらかというとEA800やflucardの時に使ったやりかたでtelnetdを有効にしています。

/etc/init.d/rcS内に/mnt/onboard/run.shを実行する修正だけを行って、run.shの方に以下を書くやり方です。

#!/bin/sh
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
/bin/busybox telnetd -l /bin/sh &

inetd.confとinittabを書き換えなくても、これでokです。

なお、Kobo Touchの中をあけると、システムは2GBのmicroSDに入っている、というのがわかります。
このmicroSDを交換して、大容量にする、ということが可能だったります。
詳しくは「Kobo Touchの内蔵メモリ交換」にてっ!


以下は資料用情報です。

# uname -a 
Linux (none) 2.6.35.3-850-gbc67621+ #325 PREEMPT Wed May 23 09:35:44 CST 2012 armv7l GNU/Linux
# busybox
BusyBox v1.17.1 (2011-05-30 22:37:11 EDT) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

	BusyBox is a multi-call binary that combines many common Unix
	utilities into a single executable.  Most people will create a
	link to busybox for each function they wish to use and BusyBox
	will act like whatever it was invoked as.

Currently defined functions:
	[, [[, acpid, addgroup, adduser, adjtimex, arp, arping, ash, awk,
	basename, beep, blkid, bootchartd, brctl, bunzip2, bzcat, bzip2, cal,
	cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
	chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw,
	cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod,
	devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
	dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,
	envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset,
	fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs,
	flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget,
	ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm,
	head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig,
	ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice,
	ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,
	kbd_mode, kill, killall, killall5, klogd, last, length, less, linux32,
	linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname,
	logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb,
	lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev,
	mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.ext3,
	mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo,
	modprobe, more, mount, mountpoint, mt, mv, nameif, nc, netstat, nice,
	nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof,
	ping, ping6, pipe_progress, pivot_root, pkill, popmaildir, poweroff,
	printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead,
	readlink, readprofile, realpath, reboot, reformime, renice, reset,
	resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake,
	run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed,
	sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons,
	setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey,
	slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon,
	stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon,
	switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee,
	telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr,
	traceroute, traceroute6, true, tty, ttysize, tunctl, udhcpc, udhcpd,
	udpsvd, umount, uname, unexpand, uniq, unix2dos, unlzma, unlzop, unxz,
	unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, volname,
	wall, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat,
	yes, zcat, zcip

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               247.9M    213.9M     34.0M  86% /
none                     16.0M         0     16.0M   0% /tmp
none                    124.2M      4.0K    124.2M   0% /dev
none                     16.0K         0     16.0K   0% /var/log
none                    128.0K      8.0K    120.0K   6% /var/run
/dev/mmcblk0p3            1.3G     15.9M      1.3G   1% /mnt/onboard
# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext4 rw,noatime,nodiratime,barrier=1,data=ordered 0 0
none /proc proc rw,relatime 0 0
none /tmp tmpfs rw,relatime,size=16384k 0 0
none /dev tmpfs rw,relatime 0 0
none /var/log tmpfs rw,relatime,size=16k 0 0
none /var/run tmpfs rw,relatime,size=128k 0 0
none /sys sysfs rw,relatime 0 0
/dev/mmcblk0p3 /mnt/onboard vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
# cat /proc/meminfo
MemTotal:         254388 kB
MemFree:          202872 kB
Buffers:            1928 kB
Cached:             7232 kB
SwapCached:            0 kB
Active:             3736 kB
Inactive:           6116 kB
Active(anon):        692 kB
Inactive(anon):       12 kB
Active(file):       3044 kB
Inactive(file):     6104 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         254388 kB
LowFree:          202872 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                16 kB
Writeback:             0 kB
AnonPages:           724 kB
Mapped:             1052 kB
Shmem:                12 kB
Slab:               2328 kB
SReclaimable:        852 kB
SUnreclaim:         1476 kB
KernelStack:         352 kB
PageTables:          188 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      127192 kB
Committed_AS:       6300 kB
VmallocTotal:    1638400 kB
VmallocUsed:        1420 kB
VmallocChunk:    1635384 kB
#

楽天版Kobo Touchで日本語epubが文字化ける

2014/09/26 追記

いまでも時々このページにアクセスがあるようなので、2014年9月現在で判明している状況を記載します。

Kobo Touch/Kobo gloともに、epubファイルの取り扱いに独特の仕様があります。

ファイルの拡張子によって、epub readerの動作が変わります。
・「.epub」英語圏の書籍用で、デフォルトフォントが英字
・「.kepub.epub」日本語環境の書籍用で、デフォルトフォントが日本語
(.epubはEPUB2 readerで、.kepub.epubはEPUB3 readerだ、という話もありますが、あんまりそのようには思えない・・・)

つまり・・・「週刊ヤマケイ 創刊準備号01.epub」というファイル名だと文字化けが発生し、下記の様に手動で表示するフォントを変更しなければならない。
「週刊ヤマケイ 創刊準備号01.kepub.epub」と、ちょっと気持ち悪いですが、拡張子を2つ並べることで、日本語も文字化けせずに読むことができるようになります。

このため、Kobo系の対応も考えて、epub書籍を配布する場合は、「.kepub.epub」という拡張子で配布してしまった方がいいでしょう。

以下は、2年前に書いた部分です。


週刊ヤマケイ 創刊準備号01が出た、というメールが来たのでさっそく楽天版Kobo Touchに入れてみました。

見事に文字化けです。


フォント「ドキュメント デフォルト」ではなく、日本語のフォントを指定してみます。

ちなみに、上記画像で指定しているのはやさしさゴシックというフォントです。
Koboをパソコンにつなげて出てくるドライブに「fonts」というディレクトリを作成し、そこにフォントファイルを入れると、好きなフォントが指定できるようになります。

表示できました!

Kobo Touchのセットアップで楽天アカウントが使えない!

下記の記述はKoboのサービスが始まった2012年当初の話です。現在は関係無いので注意してください。とはいえ、初期セットアップ時に「日本語」を選択しない場合に似たような事態が発生するかもしれません。


Kobo Touchのセットアップで楽天アカウントが使えない!

そんなトラブルがありました。
Kobo Desktopのログイン画面で楽天ID入れろ、とあるので入れてみてもエラーになったり。

キャンセルしたあと、なんかかんやしていると、海外Koboのアカウントでログインできてしまって、楽天IDとの連携ができない、なんてことに・・・

kobo Touch ...

kobo Touch シルバー
価格:7,980円(税込、送料込)
楽天ブックスで詳細を見る

(ちなみに、うちで買ったのは↑の裏面がシルバーのモデル。黒か迷ったんですが・・・)

その場合は、一度、Kobo Touch上でログアウトし、Kobo Desktop上でもログアウトします。
その後、再度、Kobo Desktop上で、楽天IDを使ってログインしてみてください。
エラーがでるのであれば、ひとまず、諦めて、あとで再実行してみます。

ログインができると、Kobo Touch上のデータを消していいか、と聞かれますので、ひと思いにやっちゃいましょう(当然消されるけど)

うちの場合は、これで楽天IDでログインできるようになりました。

でさ・・・
うち、海外Koboにアカウントあるんだけど、久々に海外Koboのアカウント状態をWebで確認しようとKobo ebooksのサイトにいったら、「Rakuten ID」でのログインしかできないんですけど・・・
ブラウザの言語を英語のみにしても、日本のしか表示されないし、どうりゃいいんだろ・・・

Kobo Touchが届いた

本日発売の楽天Kobo Touchが、早速届きました。

箱がもうちょっと大きいのかと思っていたら、思いの外コンパクトだったなぁ、とか思いました。

で、届いたのが8時半頃で、セットアップを開始したところ、その時間だと楽天Koboサービスがちゃんと開始していなくて大変でした^^;;
1回、海外Koboアカウントでセットアップしちゃいました。

その後、9時過ぎてから、再度やってみたところ、ようやく楽天IDを利用したセットアップが完了しました。
なお、楽天IDで登録したメールアドレスを使って海外Kobo上にアカウントが作られる模様です。

とりあえず、パソコンにつないで、エクスプローラからKoboに対して、pdf,epub,テキストファイルをコピーしてみたところ、サブディレクトリ内も含めて、認識してくれました。

さすがに拡張子zbfのxmdf書籍は認識してくれませんでした。

まぁ、しばらく使ってみますかねぇ・・・

ちなみに、色は写真にあるようにシルバーを選択しています。
黒にするか悩んだんですが、「外で使うと、黒は熱を吸収して熱いよ」と言われ、あぁ、そういえば、以前、Eee Note EA800を外で使って、それを感じたっけ、と白系を選択した、という経緯があったりします。

kobo Touch シルバー

kobo Touch シルバー
価格:7,980円(税込、送料込)
楽天ブックスで詳細を見る

kobo Touch ブラック

kobo Touch ブラック
価格:7,980円(税込、送料込)
楽天ブックスで詳細を見る

Kobo Touchのカバーを買うかどうかは悩んだんですが、本体価格に対して、その半額程度を占めるカバーってどうなの?と買うのをためらっちゃう感じなんですよねぇ・・・
駄目ならもう1台、的な感じで・・・

追記1
・テキストファイルは、SJIS,UTF-8共に日本語が文字化けしました。
・pdfファイルの表示は右端が微妙に更新されない、表示されない、というバグがあるようです。
・上記pdfバグが治るかなと、「読書設定」で「ページリフレッシュ」の「画面リフレッシュレート」を「6ページ」となっているのを「1ページ」に変更してみても状況は変わらなかった。
・週間やまけい 創刊準備号は文字化けた

追記2
Koboをパソコンにつなぐと、.Koboという、いかにも設定ファイルが入ってそうなディレクトリがあって興味深い

.Kobo
.Kobo/images
.Kobo/kepub
.Kobo/kepub/bf087666-9b66-4c8e-9aea-c26c164587ed
.Kobo/kepub/d3186113-5302-4a38-bf84-b9d5077b9a9e
.Kobo/kepub/16e1c98a-6710-4a53-abad-995013530c50
.Kobo/kepub/7fdfdf2b-b986-4093-b395-75ff4c167bcc
.Kobo/kepub/2565f934-c253-463f-b640-63bfdd683e8c
.Kobo/kepub/5bd01eb7-aa01-48d2-9b54-45e0713549fa
.Kobo/kepub/a4d0ed0f-c1d2-4097-8cb6-05bd3c021348
.Kobo/KoboReader.sqlite
.Kobo/device.salt.conf
.Kobo/Trolltech.conf
.Kobo/version
.Kobo/Kobo
.Kobo/Kobo/Analytics.conf
.Kobo/Kobo/Kobo eReader.conf
.Kobo/affiliate.conf
# cat affiliate.conf
[General]
affiliate=RakutenBooks

# cat version
N905B26325589,2.6.35.3,2.0.1,2.6.35.3,2.6.35.3,00000000-0000-0000-0000-000000000310
#

Trolltech.confとimagesディレクトリは連携しているっぽい感じ。

そして、どうみてもSQLiteなファイル

# file KoboReader.sqlite
KoboReader.sqlite: SQLite 3.x database
$ sqlite3 KoboReader.sqlite
SQLite version 3.7.12.1 2012-05-22 02:45:53
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
AbTest              Rules               content_settings    volume_shortcovers
Achievement         Shelf               publications        volume_tabs
Bookmark            ShelfContent        ratings
DbVersion           content             shortcover_page
Event               content_keys        user
sqlite>

AndroidでXMDF書籍を読む(Kinoppyの活用法)

俗に言うガラケー時代、XMDF書籍を中央公論新社で30冊ほど買ってました。
そんなわけで手元には拡張子がzbfのXMDF書籍が転がっているのですが、Androidで簡単に見る方法というのがありませんでした。

GALAPAGOSSリーダでどーのこーのすると、読める
とか
パブリで立ち読み登録したあと、app-private領域を漁って該当するzbfファイルを見つけて、それを差し替える
とか、姑息なことをすれば読めていました。

で、紀伊國屋書店のKinoppyです。
これで読む方法は非常に簡単。

1. Android端末のSDカード内のDownloadフォルダ(/mnt/sdcard/Download)にzbfファイルを置く
 Downloadフォルダ直下のみ有効です。
 サブフォルダを作ってもその中は読み込みません。
 Kinoppy(/mnt/sdcard/Kinoppy)も対象だそうです。

2. Kinoppyを起動して、「設定」を選択

3. 「追加コンテンツの検出」を選択

4. Downloadフォルダに置いたzbfファイルの数だけ以下のような登録画面がでる

 Downloadフォルダ内にあるファイル全てに対してウィンドウを出してくるので
 不要なファイルがある場合はあらかじめ削除したり、
 登録画面でキャンセルしたり、してください。

5. こんな感じで一段目の本棚に全部登録される

6. 適当に並び替えてみる

以前はKinoppyのバグがあって連続登録すると↓の赤枠で囲んだ4冊のような感じで、表紙の検出がうまくいかない、というものがありました。

ちなみに一度登録した書籍は、編集モードにしてから書籍を1タッチすると出てくるメニューから削除できます。

あと、中央公論新社の電子書籍についてのクレーム・・・
上の書籍一覧を見るとわかるように途中から表紙の絵が無くなっています。
表紙の絵だけ存在を消され、表紙以外の絵は残っている、という意味がわからない仕様です。

表紙に絵があると誤動作する端末があるため、表紙の絵を消した、なんて説明をされたのですが、だったら、表紙としては簡素なものにして、その次のページに表紙を持ってくればいいだけなのに・・・

ちなみに、表紙の絵がないことは、ユーザに対する告知は無しでした。