Kobo Touchを32GB内蔵モデルに改造した

昨日、Kobo Touchの内蔵メモリを8GBのmicroSDに交換したばかりなのですが、秋葉にいったら32GBのmicroSDが、あきばおーで1099円だったので、買ってしまいました。

まぁ、こんな感じで認識しています。
もちろん、「内蔵」なので、microSDスロットは空いてます。

ちなみに、今回使ったのはGigastoneのmicroSD 32GB CLASS 4 です。
品質は問わずに、とりあえず実験用途という感じで買ってみました。

いまのところは使用感しては大差がないかなぁ、というところ。

行った手順は、昨日ddで取得したイメージをそのまま使って書き込んだあと、
partedコマンドのresizeでパーテーションサイズを変更する、というものです。

ま、わかる人にとっては簡単なものですね。

ちなみに、昨日使った8GBはCLASS6で、今日の32GBはCLASS4になります。
速度差があるのかないのかは、正直微妙な感じです。
なにせ、もともとページめくり速度が微妙なものですから^^;;;

kobo Touch シルバー

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

kobo Touch ブラック

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

root@lxf:~# fdisk -l /dev/sde

Disk /dev/sde: 31.9 GB, 31914983424 bytes
255 heads, 63 sectors/track, 3880 cylinders, total 62333952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1            8192    62333951    31162880    c  W95 FAT32 (LBA)
root@lxf:~# df 
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sde1             31154688        32  31154656   1% /media/3832-3435
root@lxf:~# umount /media/3832-3435
root@lxf:~# dd if=/mnt/tmp/sde.dat of=/dev/sde bs=4096
482816+0 records in
482816+0 records out
1977614336 bytes (2.0 GB) copied, 425.841 s, 4.6 MB/s
root@lxf:~# fdisk -l /dev/sde

Disk /dev/sde: 31.9 GB, 31914983424 bytes
4 heads, 16 sectors/track, 973968 cylinders, total 62333952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1           19456      543744      262144+  83  Linux
/dev/sde2          543745     1068033      262144+  83  Linux
/dev/sde3         1068034     3862527     1397247    b  W95 FAT32
root@lxf:~# parted /dev/sde
GNU Parted 2.3
Using /dev/sde
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: Multi Flash Reader (scsi)
Disk /dev/sde: 31.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      9961kB  278MB   268MB   primary  ext4
 2      278MB   547MB   268MB   primary  ext4
 3      547MB   1978MB  1431MB  primary  fat32

(parted) resize
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Partition number? 3
Start?  [547MB]?
End?  [1978MB]? -1
(parted) p
Model: Multi Flash Reader (scsi)
Disk /dev/sde: 31.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      9961kB  278MB   268MB   primary  ext4
 2      278MB   547MB   268MB   primary  ext4
 3      547MB   31.9GB  31.4GB  primary  fat32

(parted) quit
Information: You may need to update /etc/fstab.

root@lxf:~# fdisk -l /dev/sde

Disk /dev/sde: 31.9 GB, 31914983424 bytes
4 heads, 16 sectors/track, 973968 cylinders, total 62333952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005bb3f

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1           19456      543744      262144+  83  Linux
/dev/sde2          543745     1068033      262144+  83  Linux
/dev/sde3         1068034    62333950    30632958+   b  W95 FAT32
root@lxf:~#

Kobo Touchの内蔵メモリ交換

Kobo Touchのシステムは2GBのmicroSD上に構築されています。

なかをあけて取り出してみると、SanDiskを使っていました。

それをLinuxでマウントしてみるとこんな感じです。

root@lxf:~# fdisk -l /dev/sde
Disk /dev/sde: 1977 MB, 1977614336 bytes
4 heads, 16 sectors/track, 60352 cylinders, total 3862528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000

Device Boot Start End Blocks Id System
/dev/sde1 19456 543744 262144+ 83 Linux
/dev/sde2 543745 1068033 262144+ 83 Linux
/dev/sde3 1068034 3862527 1397247 b W95 FAT32
root@lxf:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sde2 253871 151777 102094 60% /media/recoveryfs
/dev/sde1 253871 219036 34835 87% /media/rootfs
/dev/sde3 1394520 576964 817556 42% /media/KOBOeReader
root@lxf:~#

で、手持ちの8GB microSDにコピーしようとしました。
とりあえず、手法としては、一番簡単な、丸ごとddでコピーして、パーテーション拡張、というもの

# dd if=/dev/sde of=sde.dat bs=4096

でイメージを取得したあと、microSDを入れ替えて

# dd if=sde.dat of=/dev/sde bs=4096

を実行するだけ、というもの。

このあと、GUIのgpartedを使って、/dev/sde3のパーテーション拡張とファイルシステム拡張を行いました。

そして、その8GB microSDをKobo Touchの中に入れて電源を入れると・・・

無事、8GBメモリ搭載のKobo Touchが完成しました。
(2012/07/22 22:00追記:32GBも試しました)

Kobo Tocuhの中を開けて8GBにしてみませんか? 16GBはまだ試してないんですけど、行けそうな感じです32GBも行けました

楽天版Kobo Touchの出荷時firmwareと最新firmwareのURL

出荷時の楽天版Kobo Touchは、以下の状態でした。
Firmware v1.9.18
kernel 2.6.35.3

この状態で、Koboデスクトップによってfirmwareアップデートを行い、使える様にしますが、その際にダウンロードに行く2012/07/20 16:00時点での最新firmware URLは以下です。
http://download.kobobooks.com/firmwares/kobo3/Eel/kobo3-update-2.0.2.zip

2012/08/26にv2.1.1が出ました。
http://download.kobobooks.com/firmwares/kobo3/rgreen/kobo3-update-2.1.1.zip

2012/12/20現在はv2.3.1が最新です。
touch用 http://download.kobobooks.com/firmwares/kobo3/bryant/kobo-update-2.3.1.zip
glo用 http://download.kobobooks.com/firmwares/kobo4/bryant/kobo-update-2.3.1.zip

なお、旧版についてですが、v1.9.17のURL ( http://download.kobobooks.com/firmwares/kobo3/cod/kobo3-update-1.9.17.zip )は判明していますが、v1.9.18は不明です。

最新firmware URLを取得するためにKoboデスクトップアプリが行っている操作は、以下です。

POST http://mobile.kobobooks.com/65796/mobileRequest.ashx HTTP/1.1
送付するコンテンツの中身

<?xml version="1.0" encoding="UTF-8"?>
<ConfigurationRequest xmlns="http://kobobooks.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RequestBody>
<PlatformID>00000000-0000-0000-0000-000000000310</PlatformID>
<PlatformOS>2.6.35.3</PlatformOS>
<PlatformOsVersion>NA</PlatformOsVersion>
<DeviceModel>Kobo Touch</DeviceModel>
<ApplicationVersion>1.9.18</ApplicationVersion>
<AffiliateName>RakutenBooks</AffiliateName>
<SerialNumber>シリアル番号</SerialNumber>
</RequestBody>
</ConfigurationRequest>

返ってくるXMLの応答中に「http://download.kobobooks.com/firmwares/kobo3/Eel/kobo3-update-2.0.2.zip」がある。

なぜか同期されないKoboライブラリ

2019/10/10追記
このページの記載は過去のものです。いまは当てはまらないと思います。


結構、検索でくる人が多いので、内容を改訂しました。

Koboデスクトップアプリと、Kobo Touchの間での同期に問題が生じることがあります。
当方で確認した現象は以下の3種類。
(1)買ったはずの書籍がKoboデスクトップアプリのライブラリに表示されない
(2)Koboデスクトップアプリのライブラリにある書籍がKobo Touch側にコピーされない(同期されない)
(3)Kobo Touchに手動でコピーしたpdf/epubファイルが、表示されない

対処方法
(1)買ったはずの書籍がKoboデスクトップアプリのライブラリに表示されない
Koboデスクトップアプリが、楽天版ではない場合に発生します。
http://rakuten.kobosetup.com/から、入手したものを使用してください。
英語サイトからのだと、だめなようです。

(2)Koboデスクトップアプリのライブラリにある書籍がKobo Touch側にコピーされない(同期されない)
Kobo Touch上のデータベースが壊れている場合に発生するようです。
一回、Kobo Touchを初期化すれば治ります。
ただし、Kobo Touch内のデータは全部消えますので、手動でpdfやepubファイルをコピーしている場合は、手動でパソコンにコピーしておく必要があります。

発生原因ですが、おそらく、Koboデスクトップアプリで購入した書籍の同期と、手動でのpdf/epubファイルのコピーを同時に行うと、Kobo Touch内のデータベース作成に問題が生じてしまうようです。

(3)Kobo Touchに手動でコピーしたpdf/epubファイルが、表示されない
これも、(2)と同様にKobo Touch上のデータベースの問題なようで、初期化必須な感じです。

なお、(2)と(3)の対処方法ですが、もしかすると初期化ではなく「.Koboディレクトリ」全体を削除する、でもいいかもしれません。

Kobo Tocuhの中を開けて8GBにしてみませんか? 16GBはまだ試してないんですけど、行けそうな感じです

— 以下、最初に作成した記事 —
昨日の夜に、海外Koboから楽天ID宛に20%オフクーポンが来たわけです。
なので、とりあえず、何を買うかなぁ、と悩んだのですが、まぁ、Lerning Perlを買ってみたわけです。
で、ついでに、安いのなにかないかなぁ、と探してみたらGA文庫マガジン Vol.1なんてのもあったので買いました。

そういえば、Android版Koboアプリなんてのもあったっけ、とインストールしたところ、以前は海外Koboアカウントでログインだったものが、楽天IDでのログインとなっているのを発見。
で、楽天IDでログインすると、さきほど買った、「Lering Perl」と、おそらく英語版Kobo Touchでデフォルト書籍である2冊がダウンロードされてきました。
GA文庫マガジンは、eReadersのみ対応、とあるので、まぁ、当然といえば当然です。

で、問題はここから。
Kobo Desktopアプリを、別のパソコンにセットアップして、つなげて、ライブラリを同期してみました。

なぜか3冊しか表示されない・・・

Webでライブラリを確認すると下記の様に11冊あるはずなのに・・・

そんなこんなで、初期トラブルはまだまだ続きそうです・・・
— 追記 —

原因判明

http://www.kobosetup.com/から入手できるKoboデスクトップアプリ3.0.0では、現象が発生。
http://rakuten.kobosetup.com/から入手できるKoboデスクトップアプリ 3.0.1では、発生しない。

・・・なんでそんなことになったかというと、KoboデスクトップアプリのダウンロードURLがわからなかったので、ヘルプを見たら、Q.koboデスクトップの設定はどうすればいいですか?に「無料のkobo デスクトップをダウンロードし、インストールします。」と書いてあったから。(2012/07/23 このQAは修正されました)

— 追記2 —
マニュアルPDFを20個ばかり入れてみたら、「コンテンツを処理しています」の表示のまま30分以上待ちに・・・
ゆっくりとパーセンテージは増えているので、なにか処理は行っているみたいなんだけど・・・

あと、GA文庫マガジンは、Kobo Touch内に同期が完了しないのは何なんだろうか。
Koboデスクトップアプリの表示上はあと少しでコピーが完了しそうなのに、そこから30分経過しても何も変わらない。
.Kobo\epubフォルダをのぞくと、それっぽいファイルはコピーされているので、後処理に問題が生じているんだろうけど・・・

— 追記3 —
その後、何度やってもちゃんと登録されないので、Kobo Touchを初期化してみた。
そうしたら、同じpdf群を入れても比較的素早く認識するようになった。

おそらく、Koboデスクトップアプリによる書籍追加、と、エクスプローラ操作によるpdf/epubファイルコピーを同時に行うと、内部のSQLite3によるデータベース登録処理に問題が生じてしまう、というバグなんじゃないかと・・・

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
#