Pokazywanie postów oznaczonych etykietą Modyfikacje. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Modyfikacje. Pokaż wszystkie posty

piątek, 25 sierpnia 2017

Wyłączenie oświetlenia w czytnikach Kindle PW i VOYAGE

W tym poście poruszę swoją metodę na nieobecną w domyślnym FW opcję całkowitego wyłączenia oświetlenia w czytnikach Kindle Paperwhite 1/2/3 i Voyage.

Pierwsza faza

Do systemu dodałem polecenie ;loff (light off) wywoływane, jak zwykle, w polu wyszukiwania. Jego działanie jest oczywiste (zgodne z nazwą) – wyłącza oświetlenie. Efekt mija po np. zamknięciu okładki lub wciśnięciu przycisku zasilania, tak więc jest to rozwiązanie doraźne.

Działanie przedstawia poniższy film. Nie najlepszej jakości, jednak wszystko co trzeba jest widoczne.

Druga faza

Doraźne rozwiązanie nie wyczerpuje zagadnienia, więc dodałem sobie do systemu skrypty, które przy ustawieniu suwaka oświetlania na 0 – dbają o to, by to faktycznie było 0. Skrypty te wywoływane są przy takich zdarzeniach jak włączenie czytnika, włączenie ekranu czy otwarcie okładki.

Podsumowanie

Brak możliwości wyłączenia oświetlania to jedna z najbardziej niezrozumiałych decyzji nt. opcji czytnika. Chociaż na co dzień nie ma potrzeby całkowitego wyłączenia „światełka”, to jednak zaskakuje brak takiej możliwości. Wśród szeregu modyfikacji, dostosowujących czytnik do moich własnych preferencji nie pominąłem skorygowania i tego elementu.

wtorek, 3 stycznia 2017

Extra Kindle Tools

Przedmowa

Extra Kindle Tools to narzędzie, które pozwala na zrobienie porządku na czytniku Kindle, bez konieczności podłączania go do komputera. Na pomysł stworzenia takiego narzędzia „wpadłem” w połowie grudnia 2016 roku. Źródła znajdują się na github-ie (github.com/AthameBook/EKT/).

Projekt pierwotnie bazował na PC-owym narzędziu ExtractCoverThumbs stworzonym przez Roberta Błauta (znanego też jako quiris), który w swoim projekcie korzystał m.in. z pracy Johna Howella (obsługa formatu KFX) czy Charlesa M. Hannuma oraz Pawła Jastrzębskiego (autorów kindle_unpack).

ExtractCoverThumbs miał jednak z mojego punktu widzenia kilka wad, z czego najpoważniejsza dotyczyła uzależnienia działania od obecności numeru ASIN (bez tego tytułowy „cover” nie powstawał) oraz działał z poziomu komputera.

Aktualną wersję, o możliwościach znacznie rozbudowanych względem ExtractCoverThumbs (z oryginalnego kodu pozostał głównie pomysł…), przygotowała @Becky, znana z forum eksiazki oraz z tłumaczenia interfejsu Kindle na język polski. Ja w tym układzie robiłem za „natręta”, który zasypywał pytaniami quirisa oraz dopingował pracę @Becky. No dobra, moja rola nie była do końca tak bezproduktywna – przygotowałem niezbędny składnik całości – pythona 2.7 działającego bezpośrednio na czytniku wraz z modułem Pillow.

Beczka dziegciu…

Extra Kindle Tools to nie jest samodzielne narzędzie. Do działania wymaga pythona wraz z niestandardowym modułem. O ile na PC nie stanowi to żadnego problemu, o tyle na czytniku już nie jest tak miło. Do tego trzeba zastosować jakiś „wyzwalacz” lub powiązać wykonanie z jakimś zdarzeniem. Osobiście dodałem do systemu polecenie „ekt”, które wykonuje skrypt.

Niedogodność to brak generowania okładek dla niektórych e-booków w formacie KFX – tych które informacje o okładce mają w części zaciemnionej DRM-em. Na szczęście to mniejszość w Kindle Store, ale i tak irytuje. Oczywiście nie wygeneruje okładki, jeśli takowej nie ma zaszytej w pliku (jeden przykład w filmie demonstracyjnym).

Dodatkowo domyślnie cierpi na tę samą złośliwość, zafundowaną przez Amazon, co ExtractCoverThumbs – od wersji oprogramowania Kindle FW 5.8.5, wszystkie własne pliki pobrane z chmury trafiają na „czarną listę” – nie można dla nich wygenerować okładki, a dokładniej można, ale czytnik z niej nie skorzysta (nie wyświetli się w Bibliotece).

Osobiście stosuję pewien skomplikowany mod, który niweluje ten efekt, ale niestety zrobiłem go dość intuicyjnie, przy okazji kilkanaście razy brickując czytnik (nawet kiedy już wiedziałem co robić) – po prostu modyfikowany plik (/opt/amazon/ebook/lib/kaf.jar) jest z jednej strony wrażliwy na zachowanie integralności (nie można bezkarnie w nim „grzebać”), a z drugiej jest niezbędny do prawidłowej pracy czytnika (ładuje się jako jeden z pierwszych). Co gorsza jest nieprzenośny pomiędzy różnymi egzemplarzami czytnika, chyba że pochodzą one z tej samej partii produkcyjnej tzn. poprawny plik z PW3 zadziała na niektórych innych PW3, ale nie na każdym.

Z uwagi na powyższe problemy taki mod funkcjonuje aktualnie na tylko dwóch czytnikach w Polsce i z dużym prawdopodobieństwem także na Świecie. Przydałby się jakiś hacker, który zrobi to porządnie, bo brak okładek dla PDOC-ów jest strasznie irytujący. Nawet pomimo domyślnego upośledzenia w tym względzie, Extra Kindle Tools to nadal przydatne narzędzie, o czym poniżej.

Beczka miodu…

W przeciwieństwie do ExtractCoverThumbs, Extra Kindle Tools działa nie z poziomu komputera, a z poziomu czytnika. Przez to nie tylko uniezależnia nas od kabla, ale też może korzystać z danych ukrytych w systemie, a niedostępnych z poziomu PC. Dzięki temu działa niezależnie od obecności numeru ASIN (ExtractCoverThumbs pomija takie pliki) i generuje okładki dla każdej książki, dla której to możliwe (pomija PDF-y i wymaga jedynie tego by jakakolwiek okładka była w pliku).

Po ExtractCoverThumbs odziedziczył także generowanie numerów stron – zgrubnym algorytmem, nie przez pobieranie tej liczby z serwisu Lubimy Czytać – to spowalnia drastycznie pracę, a efekt i tak nie jest precyzyjny, bo księgarnie często dodają stronę lub dwie z informacjami o „znaku wodnym” – co przekłamuje wynik, a dla publikacji zawierających grafiki czy tabelki, strony i tak nie będą się pokrywać – słowem: więcej wad niż pożytku.

Ma jednak więcej funkcji – przede wszystkim moduł czyszczący czytnik z:

  • folderów .sdr będących pozostałością po usuniętych już książkach;
  • pustych folderów;
  • okładek dla książek, których już nie ma na czytniku;
  • plików tymczasowych (.partial, _ASC itp.);
  • plików wininfo_screenshot*.txt tworzonych wraz z zrzutem ekranu.

W skrócie – dba o porządek na czytniku.

Działanie w praktyce

wtorek, 8 listopada 2016

Jak zrobić JailBreak na Kindle – metoda 2016 – polska instrukcja

Przedwstęp

Wpis powstał jako odpowiedź na wiadomości, które otrzymywałem od różnych osób. Było ich ho-ho-ho i jeszcze trochę i we wszystkich, autorzy podkreślali, że nie znają angielskiego. W tej sytuacji postanowiłem zrobić polski opis całej procedury.

Metoda ta, zgodnie z nagłówkiem, działała do wersji 5.8.7 (2016). Obecnie nie zadziała, podobnie jak wszystkie pozostałe metody na odblokowanie oprogramownia Kindle'a.

Wstęp

Opisywana metoda może być zastosowana dla czytników 6-tej, 7-mej i 8-mej generacji Kindle, z wyłączeniem najnowszego (w chwili pisania postu) modelu PW3 32 GB (wersja japońska).

Sama metoda przeznaczona jest dla czytników z FirmWare >5.6.5. Może być zastosowana także dla starszych wersji FW, ale w takich przypadkach są prostsze i szybsze sposoby.

Przygotowanie

  1. Czytnik powinien być zarejestrowany.
  2. Wszelkie kody: na czytnik i dla kontroli rodzicielskiej powinny być wyłączone.
  3. Akumulatorek powinien być naładowany przynajmniej w 50% - bezpieczniej >70%.
  4. Po każdym kroku odłączenie czytnika od komputera i restart.
  5. Podczas całej procedury czytnik powinien być w trybie off-line (airplane mode).

Procedura krok po kroku

  1. Przywrócenie ustawień fabrycznych.
  2. Pobranie odpowiedniego obrazu fabrycznego:
  3. Instalacja pobranego obrazu tak samo jak każdej aktualizacji wgrywanej „po kablu”.
  4. Pobranie fabrycznego JB: Factory JailBreak
  5. Instalacja JB, po odłączeniu czytnika od komputera, poprzez wykonanie polecenia:
    ;installHtml
    wpisanego w pole wyszukiwania wprost z ekranu głównego czytnika (nie z otwartej książki!)
  6. Pobranie i instalacja ([HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle) zabezpieczenia przed usunięciem JB: JB-hotfix
  7. Pobranie i instalacja „po kablu” najnowszej dostępnej aktualizacji czytnika.
  8. Pobranie KUAL-a: KUAL, rozpakowanie i skopiowanie pliku KUAL-KDK-2.0.azw2 do katalogu documents.
  9. Pobranie MRPI: MR Package Installer, wypakowanie i skopiowanie otrzymanych katalogów na czytnik.

Suplement

Instalacja pakietów BIN przy użyciu MRPI
  1. Pobrany pakiet BIN kopiujemy na czytnik do katalogu mrpackages.
  2. Odłączamy czytnik od komputera(!).
  3. Uruchamiamy KUAL i wybieramy pozycję: Install MR Packages.

Gdy instalator wykona pracę, czytnik odświeży interfejs. Niektóre hacki (większość?) wymagają do działania dodatkowego restartu czytnika (z menu).

Alternatywne wgranie JB + bridge

W związku ze zgłaszanymi różnymi problemami (m.in. przez użytkownika Andrzej Andrzej w komentarzach pod postem) przygotowałem alternatywny instalator. Zamiast pojedynczej instalacji JB i potem bridge'a (hotfix) można od razu wgrać paczkę JB+hotfix. Nazwa taka sama jak dla fabrycznego JailBreaka i sposób instalacji (oraz moment) również identyczny. Tylko zawartość inna. Po wgraniu na system „initial”, trzeba jeszcze zrobić jeden lub dwa (dla pewności) restarty czytnika i dopiero potem można instalować aktualizację do najnowszej (lub innej wybranej) wersji. Po tych zabiegach JailBreak przetrwa każdą aktualizację. „Zaszkodzi mu” jedynie przywracanie ustawień fabrycznych.

czwartek, 19 maja 2016

Wgranie czystego systemu w dowolnej wersji – instrukcja dla początkujących

Jeśli ktoś namieszał sobie w systemie modami, których działania nie rozumie lub zwyczajnie chciałby zrobić downgrade, bo nie podobają mu się zmiany wprowadzone w nowszej wersji, to ma taką możliwość.

Co będzie potrzebne?

  • dostęp do roota,
  • RescuePack (oba te elementy opisałem w poście o JB),
  • oryginalny plik *.bin z aktualizacją – w dowolnej wersji przygotowanej dla odświeżanego czytnika.

Kolejne kroki

  1. Wrzucamy RP do systemu Kindle.
  2. Tworzymy na partycji użytkownika (główny katalog przy podłączeniu czytnika do komputera) pusty plik o nazwie ENABLE_DIAGS.
  3. Restartujemy czytnik, który uruchomi się w trybie diagnostycznym.
  4. Wybieramy kolejno:
    • (o)–Misc individual diagnostics
    • (o)–Utilities
    • (o)–Enable USBnet
  5. Podłączamy czytnik do komputera i logujemy się przez SSH i wykonujemy polecenia:
    • # mkfs.ext3 /dev/mmcblk0p1
    • # mkfs.ext3 /dev/mmcblk0p3
  6. Kończymy połączenie SSH i na czytniku wybieramy:
    • (x)–Exit
    • (x)–Exit
    • (USB EXPORT)–USB device mode
  7. Kopiujemy plik *.bin (z systemem w wybranej wersji) do pamięci Kindle i restartujemy czytnik (w dowolny sposób).
  8. Po restarcie wgra się wybrany system, a czytnik ponownie wystartuje w trybie diagnostycznym. W tym momencie osobiście odbudowuję RP (część na partycji main).
  9. Aby dokończyć czyszczenie po starych śmieciach warto usunąć wszystko z partycji użytkownika:
    # mkfs.vfat -F32 /dev/mmcblk0p4
  10. Wyłączamy bootowanie w trybie diagnostycznym:
    # /usr/sbin/idme -d --bootmode main
  11. Restartujemy czytnik i mamy świeżutki system.

Podsumowanie

Jak widać procedura jest bardzo prosta, bezpieczna i powtarzalna. Jedynym warunkiem powodzenia jest poprawne działanie sprzętu. Taka sekwencja to najprostszy debrick dla Kindle PW (każdej wersji), Kindle Touch 2014 oraz Kindle Voyage. Dla Kindle Oasis procedura wygląda inaczej. W starszych czytnikach prościej użyć narzędzia Kubrick (dla Kindle Touch 2011, Kindle Classic i Kindle 3 (Keyboard).

sobota, 22 sierpnia 2015

[☆☆] Zmieniamy wystój wnętrza

Jak już mamy za sobą włamanie do systemu, to najwyższa pora na wykonanie kilku modyfikacji przydatnych dla polskiego użytkownika, podzielonych na 3 kategorie:

I. Oczywiste, przydatne dla każdego:


1) Odblokowanie trybu reflow w PDF

Pobieramy plik i kopiujemy go do pamięci Kindle. Logujemy się przez SSH i przełączamy system plików na tryb RW (do zapisu)
mntroot rw

oraz umieszczamy zmodyfikowany plik w odpowiednim miejscu:
cp /mnt/us/Reader-plugin-en_GB.jar /opt/amazon/ebook/lib/

Restartujemy czytnik i od tego momentu w menu otwartego PDF-a pojawi się pozycja: "Text-only Display" aktywująca tryb reflow.

2) Podmieniamy klawiaturę na taką zawierającą wszystkie polskie znaki oraz przy okazji ulepszającą "kropkę"

Tu są dwie opcje – jedna z wykorzystaniem systemu Debug – druga nieco dyskretniejsza, ale też bardziej skomplikowana. W obu przypadkach pobieramy plik i umieszczamy go w pamięci Kindle.

W pierwszym przypadku uruchamiamy tryb Debug wpisując przy połączeniu SSH:
idme -d --bootmode diags

i restartując czytnik.

Po uruchomieniu systemu, nadal przy połączeniu SSH, logujemy się, w taki sam sposób jak przy wgrywaniu JB i podmontowujemy system main w katalogu /mnt/mmc
mount /dev/mmcblk0p1 /mnt/mmc

oraz podmieniamy plik z klawiaturą
cp /mnt/us/keyboard.cramfs.img /mnt/mmc/usr/share/

po czym odmontowujemy /mnt/mmc
umount /mnt/mmc

i opuszczamy tryb Debug
idme -d --bootmode main
reboot


Druga, subtelniejsza droga wygląda tak – logujemy się przez SSH i kolejno:
mntroot rw
cd /etc/upstart/
mv kb.conf kb.bak
killall -9 kb


(teraz najprawdopodobniej framework się zrestartuje – jeśli tak, to połączamy się ponownie i dalej

umount /usr/share/keyboard
cp /mnt/us/keyboard.cramfs.img /usr/share/
cd /etc/upstart/
mv kb.bak kb.conf
reboot


II. Warte wykonania, choć niekonieczne


3) Zmniejszenie domyślnych marginesów

Robimy dokładnie to samo co w przypadku reflow z tym, że potrzebujemy pliku.

Moja wersja pozostawia dla górnego i dolnego marginesu domyślne wartości, zaś boczne modyfikuje tak, że największy odpowiadał najmniejszemu ze standardowej wersji, a pozostałe są odpowiednio mniejsze. Dzięki temu na ekranie mieści się sporo więcej tekstu, a pozostawienie marginesów wertykalnych na domyślnym poziomie pozwala na testowanie własnoręcznie przygotowanych plików (jestem także składaczem e-book'ów) w warunkach domyślnych (modyfikacja tych marginesów jest możliwa tylko poprzez podmianę pliku i nie można tego dokonać na działającym systemie). Zmiana zabezpieczona jest przed przycinaniem marginesów w podglądzie PageFlip (poprzedni moderzy o to nie zadbali) oraz dotyczy każdego typu plików czytanych przez Kindle (MOBI 7, KF8, PDF).

III. Wynikające z indywidualnych preferencji


4) Podmiana czcionki

Sposób wgrania taki sam jak dla podmiany klawiatury, ale tylko ta pierwsza droga (z czcionek korzystają kluczowe elementy systemu i próba podmiany "na żywca" skończy się semi-brick'iem).

Odpowiedni plik należy wgrać do właściwego katalogu
cp /mnt/us/fonts.cramfs.img /mnt/mmc/usr/java/lib/

Moja modyfikacja jedynie pogrubia (wytłuszcza) czcionkę Bookerly (domyślna była dla mnie zbyt cienka).

5) Zmiana domyślnych wielkości czcionek

To w zasadzie nie jest hack, a zwykła funkcja systemowa: Tworzymy plik FONT_RAMP w pamięci Kindle, a jako zawartość wpisujemy 8 liczb rzeczywistych reprezentujących wielkość czcionki wyrażoną w jednostce big point (punkt PostScript). Pod linkiem przykładowy poprawny plik.


Uzupełnienie: wszystkie te modyfikacje dotyczą systemu, w którym wybrano język interfejsu Angielski (Wielka Brytania). Linki prowadzą do plików, które bezpiecznie można wgrywać w Kindle Voyage i Kindle PaperWhite 3 z oprogramowaniem 5.6.X. Dla starszych czytników właściwe pliki krążą po sieci.

środa, 19 sierpnia 2015

[☆☆☆] Włamujemy się do środka i dorabiamy zapasowe klucze

Prawie wszystkie modyfikacje działania oprogramowania Kindle wymagają obecności w systemie tzw. jailbreak'a. W starych czasach hack'i wgrywało się przez fałszywe update'y. Niestety to już przeszłość. Amazon dobrze zabezpieczył oprogramowanie w wersjach 5.6.X, a co gorsze z każdą aktualizacją (5.6.2, 5.6.5) dochodzą nowe utrudnienia. Skończyły się dobre czasy...

No ale jeśli potrzebujemy samodzielnie ustawić marginesy (domyślne są wg mnie zbyt duże), dodać polskie "ogonki" do klawiatury, uruchomić reflow w PDF-ach czy też wprowadzić jakiekolwiek inne zmiany, to odblokowanie czytnika jest koniecznością.

Co będzie potrzebne?


  • sam czytnik: dowolny z FW 5.6.X (PW 1, PW 2, PW 3, Touch 2014, Voyage...),
  • konwerter USB-TTL: TTL-232RG-VREG1V8-WE (zastępczo może być FTDI Basic 3.3V),
  • program minicom (ewentualnie w Windows HyperTerminal),
  • python lub KindleTool (Archiwum NiLuJe),
  • jailbreak, usbnet i RescuePack (w załączniku).

Przygotowanie:


1) Konfiguracja minicom-a:
Ustawienia portu szeregowego -> Urządzenie szeregowe: /dev/ttyUSB0
Sprzętowa kontrola przepływu: Nie


2) skopiowanie (rozpakowanego) katalogu z załącznika do głównego folderu użytkownika (w Kindle /mnt/us)

3) hasło root do trybu Debug:
python -c 'import hashlib,sys;print "fiona%s" %hashlib.md5("%s\n" %sys.argv[1]).hexdigest()[13:16]' NR_SERYJNY_KINDLE

lub:
kindletool info NR_SERYJNY_KINDLE

Uzyskanie roota:

4) Odnalezienie pinów portu szeregowego (w Voyage oznaczone na zdjęciu).
Po kolei: GND, RxD, TxD. Podłączamy konwerter:
GND <-> GND,
RxD <-> TxD,
TxD <-> RxD

Uwaga! mało miejsca, niewygodny manewr.

5) Restartujemy Kindle i przerywamy autostart (dowolnym klawiszem).
Jak już przejmiemy kontrolę nad uboot'em, ładujemy system Debug:
bootm 0xE41000

a potem kolejno:
Reboot or Disable Diags -> Exit to login prompt

Logujemy się jako:
user: root
password: to uzyskane w punkcie 3.

6) Montujemy główny system:
mount /dev/mmcblk0p1 /mnt/mmc

wchodzimy do niego:
chroot /mnt/mmc

i ustawiamy hasło roota dla systemu main:
/usr/bin/passwd (lub, w innej wersji softu: /usr/sbin/passwd)

Restartujemy czytnik (polecenie reboot).

Wgranie hack'ów:

7) Spokojnie pozwalamy by załadował się główny system Kindle.

Logujemy się jako:
user: root
password: to ustawione w w punkcie 6.

Ustawiamy główny system plików do zapisu
mntroot rw

i instalujemy kolejno:
cd /mnt/us/tools/jb
sh install-bridge.sh

cd /mnt/us/tools/usbnet
sh install.sh

cd /mnt/us/tools/rescue
sh run.ffs

8) Restartujemy czytnik, odpinamy kabelki i składamy wszystko do obudowy.

Podsumowanie:


Od teraz możemy uzyskać prawa root'a uruchamiając na czytniku usbnet – polecenie ;un w polu wyszukiwania i logując się przez SSH:
ifconfig usb0 192.168.15.201 && ssh root@192.168.15.244

* zamiast usb0 system może używać nazwy zmienionej przez udev; odczytamy ją np. wywołując ifconfig -a lub dmesg.

Plik ENABLE_DIAGS w głównym folderze użytkownika (w czytniku) i restart czytnika uruchomi system Debug z włączonym usbnet (za ten stan rzeczy winę ponosi RescuePack).

Samo uruchomienie systemu Debug można też wymusić poleceniem:
idme -d --bootmode diags

Powrót do systemu Main
idme -d --bootmode main

i restart czytnika.


Załącznik:
Kindle Tools