自從買了 Kindle DXG 後,使用率一直很高。不過說來也是我不小心,後來發生了一件慘劇。
原本有些小構想,決定要改寫 Kindle 裡面的一些 java 程式。
於是,我將 /opt/amazon 備份了一份成為 /opt/amazon2,然後將使用者介面停止。
一開始的計畫將修改的版本放入 /opt/amazon2 內,然後copy 並修改相關的 script裡面的 path。這樣,我就有一份可以修改的使用這介面,不會影響原本的系統。
由於都是 user mode 的東西,想來應該很安全,即使 script 失敗,最多就是程式終止罷了。
為了怕有些地方 path 沒改到,執行了原本的 /opt/amazon 裡的程式,所以我又將 /opt/amazon 改成 /opt/amazon0,執行 /opt/amazon2 的版本試試看。
結果執行新的 script ,失敗了,這不意外,因為難免會漏掉一些地方沒改到。
意外的是,機器非常迅速的重新開機。
這只能怪我沒有事先注意到這個起始使用這介面的 script 有個當掉會自動重開機的保護機制。由於只是一瞬間的事,我來不及將 /opt/amazon0 改回,所以機器就磚了。
總之,錯在於我過於大意,沒有將 usbnetwork 設為開機自動啟動。
上網搜尋了一下,找到所謂的進入 recovery mode的方式:按住電源 30 秒,然後長按 Home。
然後我就讓他回復了原廠設定。可惜回復原廠設定不包含讓 /opt/amazon 回復。
Recovery mode 可以讓你用 usb 傳入更新檔,然後更新。可惜這個階段的更新檔的格式和普通那種 font hack 之類從使用者介面選單更新的那種不同,update maker 還不支援。
想說送廠維修曠日費時,而且因為是自己 hack 的結果,所以難免有點心虛。所以就想自力救濟。
依照這個
網頁的說明,拆解了 kindle 的塑膠頭蓋。沒有 iPad 拆解工具,所以就用一字起,指甲和卡片完成工作。
如
這張圖的最上端中間,j9 那個區域,有四塊明顯的方形金屬片,用這個區域來連 serial console。所以需要 USB to TTL 裝置,電壓需要 3.3v版本。四個金屬片由左至右分別為,3.3v, TX, RX, GND,所以要依序連上 USB to TTL 端的 3.3v RX TX GND(我其實不太懂,但就我的印像是 TX<->RX)。
理論上來說,應該要焊上去比較牢靠,但是我的銲錫和電烙鐵不知塵封何處,而且我之前只是拿來焊接舞台魔術道具的一些電線,所以其實技術非常糟糕。或者應該要做個像是
這樣的接頭,但同樣我也沒有工具。
所以我剪開一條壞掉的網路線,抽出幾條短電線,然後在卡紙上用針穿了四個孔,把導線頭穿過針孔,然後膠帶貼好,用剪刀把導線頭剪齊,作成了這樣的接頭
這樣的接頭當然十分不穩,所以要一隻手用點力去讓導線頭和 kindle 上的金屬板接觸。更不幸的是,由於擺設方向的問題,我必需要用右手做這件事。也就是說,鍵盤、滑鼠、重開 kindle 的動作必須由左手來負責。
經過一點練習後,終於能成功的讓 hyperterm 連到 kindle 的開機畫面。
不過發現 login 時,會問密碼。
網路上搜尋了一下,發現真的要連進 shell ,要使用先進入 uboot 互動環境。
進入的方式是在 reboot 後第一時間按下 enter(也許是任意鍵,不過反正 enter 也是任意鍵)。
按的時間不對的話,會進入 developer mode,那是壞得更嚴重的時候才需要的。
在 uboot 下輸入
uboot> setenv bootargs $(bootargs_base) root=/dev/mmcblk0p1 rw init=/bin/sh
uboot> bootm 0xa0060000
這兩行指令就可以進入 shell 了。當然,由於我只有左手能工作,所以那兩行我是先 copy 起來,讓鬥在 hypterterm 裡面貼上。
經過漫長的努力後,終於看到睽違已久的 # shell 命令列提示符號,不用再 root ,也不用再 remount ,不過 PATH 沒有設定,所以輸入完整的 /bin/mv 把 /opt/amazon0 改回 /opt/amazon。
然後 shutdown now, reboot 都無效,只好按電源紐重新啟動。其實有點緊張,不過很順利的重新開機。
唯一的遺憾是之前在 recovery mode 時,似乎把下載的藏書以及 font hack 等等都刪除了。不過amazon 的帳號資料還在,所以跟 amazon 買的書都還會在。