e-Ink 電子書籍端末のKobo Touch にDebian を入れて遊ぶ方法

このエントリは,「Debian/Ubuntu JP Advent Calendar 2013」 18日分です.

オープンソースカンファレンス2013 福岡/オープンソースカンファレンス2013 大分で見かけた方が居るかもしれませんが,最近電子書籍端末のKobo Touch にDebian を導入して遊んでいます.
といってもmarekさんという方がDebian 導入済みのイメージを公開してくれているのでこのイメージを突っ込んでるだけです.
ここでは,Kobo Touch でDebian が起動できるようになるイメージの導入方法を説明します.

必要なもの

  • Kobo Touch(N905B)
  • 8GB 以上の容量のmicroSD card(出来ればClass10 等速度の速いもの)
  • 母艦
    ここではDebian Jessie の入ったLenovo X220 を利用しています.#このKobo のイメージもJessie なので丁度いい?

失うもの

  • 保証
    分解時にメーカー保証がなくなります><

Kobo の分解とmicroSD のバックアップ

スイッチの辺りを押して出来た隙間からパキパキ爪を外していきます.プラスチック製のポイントカードなどを使うと傷がつきにくいです.
裏蓋を外すとmicroSD にアクセスできるようになります.スイッチを上にした状態でmicroSD の上のカバーを右にスライドさせるとロックが外れます.

取り出したmicroSD を母艦に接続してdd コマンドでバックアップします.

$ sudo dd if=/dev/mmcblk0 of=kobo_touch.img bs=4M

※/dev/mmcblk0 部分は環境により変わります.microSD 接続時にdmesg 等で確認してください.

バックアップ完了後このmicroSD は保管しておきましょう.
ちなみにこの元々ついていたmicroSD を戻すと保証を除き元の環境に戻せます.

Kobo用Debian イメージの入手と書き込み

次のページの
Kobo as a Linux tablet – mgibek
Sample image can be downloaded from here: というところから
2013-08-17_kobo_debian.part01.rar
2013-08-17_kobo_debian.part02.rar
2013-08-17_kobo_debian.part03.rar
を入手します.

用意しておいた8GB 以上のmicroSD に書き込みます.

% sudo sh -c "unrar p -inul 2013-08-17_kobo_debian.part01.rar > /dev/mmcblk0"

ここでは /dev/mmcblk0 が書き込み先のmicroSD のデバイス名です.自分の環境に合わせて修正してください.

※ここで書き込み先のデバイスを間違えるととても悲しいことになるので注意しましょう!

hw_configの書き換え

実は配布されているイメージはN905C 用です.今回はN905B で動かしたいのでhw_config を書き換えます.

hw_config というのは私よくわかっていないのですが(誰か教えてくださいorz),恐らくhw 初期化時にこの値を参照してデバイスを有効化したりしてるのかなと思っています.
hw_config を修正しないとタッチドライバが読み込まれなかったりします.(スイッチボタンでシャットダウン走ります)

hw_config はオリジナルKobo イメージから書き出して今回の新しいmicroSD に書き込みます.初めのほうでバックアップしたイメージファイル(kobo_touch.img)から該当場所をglo_hwconfig.bin として抜き出し,Debian イメージの書き込まれたmicroSD Card に書き込みます.

% sudo dd if=kobo_touch.img of=glo_hwconfig.bin bs=512 count=1 skip=1024 count=2
% sudo dd if=./glo_hwconfig.bin of=/dev/mmcblk0 bs=512 count=1 seek=1024 count=2

swap 作成

このイメージには3番目のパーティションにswap が設定されていますが,私の環境ではswapon しても認識されませんでした.恐らく利用したmicroSD が8GB より少し小さく壊れているのでしょう.mkswap しておきます.

% sudo mkswap -c /dev/mmcblk0p3

起動選択画面

これでとりあえず準備は完了です.microSD をKobo に接続して電源を入れます.
起動すると起動選択画面が表示されます.
それぞれのアイコンをタップすることによりそれぞれのモードに移行できます.

  • コンピュータアイコン -> Debian イメージが起動.
  • 本アイコン -> 通常の kobo イメージが起動(海外版)
  • WiFi アイコン -> 診断モード(ftp/telnet)

IMG_20131112_214839

診断モード

診断モードは,telnet/ftp が利用可能です.
id:root
password:無し
で接続でき,ホームボタンでシャットダウンされます.
環境をカスタマイズするときなどに利用できます.

WiFi の設定

このDebian イメージはchroot で動作します.chroot 時にネットワーク周りの設定をroot 側の設定からコピーしてくるので,WiFi を利用するには先ずKobo を起動してWiFi の設定をしておきます.

その後,Debian で起動しなおし,左下のメニューから[Config]->[Wi-Fi]->[Start]でWiFi に接続できます.
WiFi 接続時にsshd/ftpd が起動します.id:marek / password:abc123 で接続できます.

awesome のメニュー登録方法

このDebian 環境はタイル型WM のawesome を利用しています.
この環境ではapt でアプリケーションを導入しただけではメニューに登録されないようです.

以下のファイルを編集することで登録が可能でした.
* ~/.config/awesome/rc.lua
* ~/.config/awesome/debian/menu.lua

以下は, ~/.config/awesome/rc.lua を編集して, Apps -> mikutter を登録する例です.

  menuapps = {
     { "Firefox", "firefox" },
     { "FBReader", "fbreader" },
-    { "Calculator", "xcalc" }
+    { "Calculator", "xcalc" },
+    { "mikutter", "mikutter" },
  }

Debian で遊ぶ

後は基本的に普通のDebian Jessie です.普通に遊べます.
実は実用的な利用方法が思いつかず,ほぼmikutter 表示専用マシンとなっています.面白い活用方法を思いついたら教えてください.

その他

以下のページに小ネタをまとめています.

IMG_20131120_222854 VNC 経由で艦これ
IMG_20131114_190530 xload
16 - 1 mikutter を表示しながらXrdp

追記)
Kobo mini でも動くようですが,手元にないので試せていません.Kobo glo でも動きますが,そのままでは解像度が違う(ハードコーディングされている)ので操作が難しいです.

IMG_20131115_022044
IMG_20131115_023206

20140103追記)

  • Kobo mini を入手したので試してみると同様の手順で動作しました.
  • 現在 apt-get dist-upgrade をするとDebian 上でタッチパネルが利用できなくなるようです.apt-get update までにしておいたほうがいいです.
  • mikutter のパッケージはjessie から無くなっているようです.

Kobo mini on Debian

Debian/Ubuntu に Arduino IDE を導入する

今度の日曜日にフィジカルコンピューティングワークショップ Arduinoで遊んでみよう【定員20名】 に参加予定ですが,Linux での導入手順がないので.

実はパッケージが用意されています.
なので,

% sudo apt-get install arduino

で導入完了です.

しかし,このままではArduino に接続する際にroot 権限が必要になって面倒なので,Arduino のデバイスが自分のユーザで利用できるように dualout グループに登録しておきます.

% sudo addgroup user dialout
ユーザ `user’ をグループ `dialout’ に追加しています…
ユーザ user をグループ dialout に追加
完了。

※user 部分は自分のユーザに置き換えてください.

もし,以下のように表示されたら既に登録済みなので問題ありません.

% sudo addgroup mk dialout
ユーザ `mk’ はすでにグループ `dialout’ のメンバーです。

– ドライバは?
自動認識するので特に導入の必要はありません.Arduino  をPC に接続すると /dev/ttyUSB0 や /dev/ttyACM0 などとして認識されます.このデバイスをArduino IDE のポートに設定します.
#最後の0部分はデバイスが増えると1,2,3…と増えていきます.dmesg 等で確認できます.

– おまけ

最新のArduino IDE が使いたい!

例えばDebian Stable のWheezy ではArduino 1.0.1 ベースですが,公式サイトを見ると1.0.5 がリリースされています.
Debian — wheezy の arduino パッケージに関する詳細
Arduino – Software
新機能を使いたい場合やBETA版を使いたい場合などは標準パッケージのままでは利用できません.

以下はArduino IDE BETA を ~/opt 以下に導入する例です.
Arduino IDE をダウンロードします.32bit/64bit は uname -m 等で確認できます.以下の例では64bit になります.

% uname -m
x86_64
% wget http://downloads.arduino.cc/arduino-1.5.5-linux64.tgz

~/opt 以下に展開します.

% tar xvzfC arduino-1.5.5-linux64.tgz ~/opt

シンボリックリンクを貼っておく.(バージョンアップ時にリンクを貼り直して何時も同じパスで利用できるように)

% ln -s ~/opt/arduino-1.5.5 ~/opt/arduino-beta

起動しやすいようにメニューに登録しておく.(シンボリックの方を登録する)
Screenshot-ランチャのプロパティ
Screenshot-メイン・メニュー

Ardublock や Fritzing もお勧めです :-)
Getting Started with ArduBlock | Ardublock
Download – Fritzing