Купил себе Amazon Kindle (без тачскрина, версия за $79 баксов со встроенной рекламой). Хороший девайс (хотя недостатки тоже есть). Довольно долго не было никакой информации о его перепрошивке и наконец вот недавно, что-то начало у людей получатся.

Сразу поясню зачем это нужно было мне – я спокойно переношу английский интерфейс девайса и на рекламу мне по большей части наплевать, меня интересовал сам процесс, да и хотелось подарить некоторым людям, которые не то что читать по-английски – на русском инструкцию от телевизора не поймут.

Поэтому сразу скажу – процесс прошивки сложный и если вы не понимаете что делаете, рискуете запороть девайс. Внутри Kindlе крутится модифицированный Busybox (это такой линукс урезаный донельзя), поэтому и прошивать его стоит под аналогичной осью – я прошивал под Ubuntu 11.10.

Сразу посмотрите какая у вас прошивка и серийный номер. Надо на главном экране Kindle нажать кнопку menu и выбрать Settings. У меня была последняя на данный момент прошивка 4.01, но вам может и повезти со старой 4.0.

Смотрим раздел Device Info, строка Serial Number.

У меня это что-то вроде B00E 1501 1373 0B9X – у вас номер будет другой. Запишите его без пробелов.

Итак, заходим в Ubuntu, заапускаем терминал, пишем:

zombak@ubuntu:~$ python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> print("fiona%s"%hashlib.md5("ТУТ_ПИШЕМ_СЕРИЙНИК_БЕЗ_ПРОБЕЛОВ!\n".encode('utf-8')).hexdigest()[7:11])
fiona5ad3

Таким образом получаем пароль на SSH. fiona5ad3 – это и есть пароль.
Запоминаем пароль (fionaЦИФРЫ) и выходим из питона, терминал не закрываем.

exit()

Подключаем Kindle к USB, создаем в корне его диска пустой файл ENABLE_DIAGS

Перезагружаем Kindle — Settings->Menu->Restart

Попадаем в меню Kindle для самодиагностики.

TEQUILA - System Diags
---- 1.0.6.194 ------

S) Device Settings
O) Operator test suite
R) Run in Test
G) Gas Gause
E) 511
T) Power Test
H) Adjust battery
M) MoviNand
N) Misc individual diagnostics
Y) ART 11g factory test
U) USB device mode
D) Exit, Reboot or Disable Diags
——————
X) Exit – FW RIGHT to exit

Заходим в Misc individual diagnostics > Utilities > Enable USBnet
Девайс напишет свой айпишник и маску
192.168.15.244
255.255.255.0

В терминале пишем:
zombak@ubuntu:~$ ifconfig -a | grep usb
usb0 Link encap:Ethernet HWaddr ee:29:00:00:00:15

Если показалось устройство usb – значит всё ок, комп нашел Kindle, если нет, то попробуйте подключить Kindle не через usb-хаб, а напрямую к компу или проверьте хорошо ли вставлен шнур.
На этот новый usb-интерфейс нужно назначить айпишник из той же сети, из которой Kindle (т.е. из 15-й подсети)

Под обычным пользователем этого не сделать, поэтому делаем под рутом
Пишем в терминале:

zombak@ubuntu:~$ sudo ifconfig usb0 192.168.15.12 up
[sudo] password for zombak: ******

Теперь у нас есть соединение между Kindle и компов через 15-ю подсеть. Попробуем пингануть Kindle:

zombak@ubuntu:~$ ping 192.168.15.244
PING 192.168.15.244 (192.168.15.244) 56(84) bytes of data.
64 bytes from 192.168.15.244: icmp_req=1 ttl=64 time=6.73 ms
64 bytes from 192.168.15.244: icmp_req=2 ttl=64 time=1.76 ms
64 bytes from 192.168.15.244: icmp_req=3 ttl=64 time=0.805 ms
^C
--- 192.168.15.244 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.805/3.100/6.735/2.599 ms
zombak@ubuntu:~$

Жмём CTRL+C, чтобы прекратить пинговать несчастный Kindle, похоже что всё ок.
Теперь дело за малым.
Логинимся на Kindle под рутом (root) через SSH, пишем в терминале:

zombak@ubuntu:~$ ssh root@192.168.15.244

Если пишет что-то вроде:

The authenticity of host '192.168.15.244 (192.168.15.244)' can't be established.
RSA key fingerprint is 89:38:a2:42:b4:01:05:77:96:ae:2c:f9:34:f9:b6:b9.
Are you sure you want to continue connecting (yes/no)?
Please type 'yes' or 'no': yes

Пишем тут буквами yes.

Дальше терминал пустит нас на Kindle, вводим пароль, тот самый, который мы нашли в самом начале нашей инструкции:

Warning: Permanently added '192.168.15.244' (RSA) to the list of known hosts.
root@192.168.15.244's password: ПИШЕМ_ТУТ_ПАРОЛЬ_ФИОНАБУКВЫЦИФРЫ

Если у вас Kindle со старой прошивкой (4.0 а не 4.0.1) то пароль будет mario.

#################################################
# N O T I C E * N O T I C E * N O T I C E #
#################################################
Rootfs is mounted read-only. Invoke mntroot rw to
switch back to a writable rootfs.
#################################################
[root@[192_168_15_244] root]#

Как видно, файловая система доступна только для чтения. Ставим её на запись:

[root@[192_168_15_244] root]# mntroot rw
system: I mntroot:def:Making root filesystem writeable

Убираем рекламу:
[root@[192_168_15_244] root]# mv /var/local/adunits/ /var/local/adunits.bak

Если в дальнейшем её захочется вернуть делаем обратно:
[root@[192_168_15_244] root]# mv /var/local/adunits.bak /var/local/adunits/

Переходим в каталог внутренней памяти:
[root@[192_168_15_244] root]# cd /mnt/us

Создаем каталог sleepscreens
[root@[192_168_15_244] us]# mkdir sleepscreens

Монтируем каталог скринсейверов в основную память
[root@[192_168_15_244] us]# mount /dev/mmcblk0p1 /cust

Переходим в каталог амазоновских скринсейверов
[root@[192_168_15_244] us]# cd /cust/opt/amazon/screen_saver

Переименовываем их, чтобы не машались
[root@[192_168_15_244] screen_saver]# mv 600x800 600x800.bak

Создаём симлинк на наш созданный каталог sleepscrens
[root@[192_168_15_244] screen_saver]# ln -s /mnt/us/sleepscreens/ 600x800

Делаем фальшивый developer id

[root@[192_168_15_244] screen_saver]# cd /mnt/us
[root@[192_168_15_244] us]# mkdir /mnt/main
[root@[192_168_15_244] us]# mount -t ext3 -o rw /dev/mmcblk0p1 /mnt/main
[root@[192_168_15_244] us]# cp -f pubprodkey01.hack.pem /mnt/main/etc/uks/pubdev
key01.pem
[root@[192_168_15_244] us]# sync
[root@[192_168_15_244] us]# umount /mnt/main
[root@[192_168_15_244] us]# rm -r /mnt/main

Набираем в терминале exit, выходим из SSH Kindle, теперь на самом девайсе выбираемся в главное меню (понажимав джойстик влево) и выбираем Exit, Reboot or Disable Diags.

Выбираем пункт

D) Disable Diagnostics

девайс сам перезагрузится в обычный интерфейс Kindle.

Если включить скринсейвер (т.е. выключить Kindle) рекламы не будет, но и не будет и скринсейверов – просто будет показывать белый экран, мы же их не положили в нашу папку.

Учтите, что даже положив файлы в каталог, нужно соблюдать правильные имена:

01N.png
02N2.png
03N2.png
04N.png
05N.png
06N.png
07N.png
09N.png
10N.png
11N2.png
12N.png
13N2.png
14N.png
15N.png
16N.png
17N.png
18N.png
19N.png
20N2.png

Только png, только черно-белые и только с определенными именами (большие буквы важны, поэтому файл 01N.png прочитается, а 01n.png – нет). Обратите внимание, что 08N в списке нет, да и в некоторых файлах есть ненужная цифра 2 в конце – это странно, как будто Amazon’овские инженеры конкретно бухали при переименовывании файлов.

Скачиваем то что нам нравится отсюда:
http://kindlewallpapers.tumblr.com/

Кладем на Kindle в папку sleepscreens с определенным именем.

Перезагружаем Kindle, должно получится.

Теперь о руссификации. Она есть и выполнена тем же парнем из Минска, который делал руссификацию Kindle 3. Но работает она не всегда и похоже не на всех киндлах – непонятно от чего так.

Инструкция по руссификации есть тут и тут.

Вкратце смысл такой: скачиваете файл с руссификатором, распаковываете его в корень Kindle, в настройках (Settings) жмете кнопку Menu и выбираете Update Kindle. Девайс должен увидеть апдейт и перепрошится на русский язык. После перезагрузки всё будет опять на английском – заходим в Settings и в меню Device Language выбираем “Русский”. Снова перезагружаемся.

Из плюсов руссификации (лично для меня): время показывается как 20:30, а не 8:30PM.