PRS-505: Podpora adresářů

Jestli mě na Sony Readeru jedna věc vadila a vadí, je to nedoladěný firmware. Občasné restarty, nezarovnávání EPUBu do bloku a tak dále a tak podobně. Úplně nejvíc mi ale vadí špatná podpora pro adresářovou strukturu (adresáře lze použít, ale stejně se všechny knihy zobrazí v jednoúrovňovém seznamu, takže je to celkem k ničemu). Dnes se ale zčistajasna objevil hack, který podporu pro adresářovou strukturu přidává. Hack se nazývá Enhanced firmware for PRS 505, je to open source a jeho autorem je nováček Kartu.

Základní použití

Předem drobný disclaimer: Uvedené řešení je neoficiální hack. To znamená, že fungovat může, ale nemusí, a když si s ním čtečku pokazíte, každý jen pokrčí rameny a řekne, že jste se v tom neměli hrabat. Mě to sice fungovalo bez nejmenších potíží, ale to docela klidně může být náhoda a ne pravidlo. S trochou smůly by se klidně mohlo stát, že si přepíšete nějakou klíčovou část čtečky a už ani nepůjde provést záchranný reflash. Pokud tedy podporu pro adresáře nepotřebujete, možná radši počkejte, jestli nějakou podporu nezavede Sony oficiálně (mezi námi, dost o tom pochybuju…).

Enhanced Firmware se ve své základní podobě skládá z jednoho ZIP archívu, který si stáhnete z domácí stránky projektu. Uvnitř naleznete seznam novinek (changelog.txt), který je k ničemu, nový firmware (new_opt.img) a soubory pro nahrání do interní paměti čtečky (autorun.js a celý adresář addons). „Oficiální postup“ je následující (pozor, že úplně všude záleží na velikosti písmenek – pokud je něco napsané malými písmeny, musíte to opravdu napsat malými písmeny):

  1. Připravte si SD kartu s Universal Flasherem 2.1. To znamená stáhněte si Universal Flasher a rozbalte ho na (nejlépe čistou) SD kartu. (Ještě jednodušší je použít PRS Customizer a nechat si celou kartu připravit – tak to funguje taky).

  2. Soubor autorun.js nakopírujte do kořenového adresáře interní paměti čtečky.

  3. Adresář addons nakopírujte do kořenového adresáře interní paměti čtečky.

  4. Soubor new_opt.img nakopírujte do kořenového adresáře SD karty.

  5. Odpojte čtečku od počítače. Měl by nastartovat Universal Flasher, ve kterém zvolte napřed zvolte funkci 4 („Copy image from the card“) a pak funkci 6 („Flash the image“).

  6. Až se čtečka zrestartuje, můžete vyjmout SD kartu a smazat z ní soubory Universal Flasheru.

To je z instalace všechno. Až čtečka znovu nastartuje, už byste měli vidět nové hlavní menu, ve kterém byly mírně přeuspořádány některé volby, aby vzniklo místo pro funkci Books by Folder (omluvte prosím sníženou kvalitu fotek, to jsem fotil já):

Hlavní menu po aplikaci Enhanced Firmware

Hlavní menu po aplikaci Enhanced Firmware

Po spuštění funkce Books by Folder vám čtečka nabídne z dostupných pamětí (zobrazuje mimochodem jen ty karty, které jsou vložené – drobnost, ale potěší) a poté už jednotlivé úrovně adresářů. Může to vypadat třeba takhle (pozn.: nejde to úplně popořadě, ty nejvíce roztřesené fotky jsem musel smazat):

Adresáře v rootu interní paměti

Adresáře v rootu interní paměti

Adresář /books/Feist Raymond Elias

Adresář /books/Feist Raymond Elias

Adresář /books/Feist Raymond Elias/Conclave of Shadows

Adresář /books/Feist Raymond Elias/Conclave of Shadows

Funguje to velice rychle a pohodlně, zkoušel jsem však pouze soubory ve formátu LRF. Teoreticky by měly fungovat i ostatní formáty, ale ověřené to nemám.

Mimochodem, Enhanced Firmware má i některé další vlastnosti – například dovolí říct čtečce, že danou paměťovou kartu nemá prohlížet a generovat seznam knih v ní. Tím je umožněno nahrát na kartu tisíce knih a nestrávit pak půl života čekáním, až čtečka přechroupe jejich seznam. Ale to už nechám na vás, je to srozumitelně popsané na MobileRead.

Spolupráce s PRS Customizerem

Celé je to velice pěkné, ale má to jeden háček: Tím, že musíte přeflashovat dodaný image, ztratíte všechny přínosy PRS Customizeru. Autor Enhanced Firmware to řeší tak, že do svého hacku přidal i některé základní funkce z PRS Customizeru, ale pořád to není ono – mimo jiné není způsob, jak použít současně Enhanced Firmware a vlastní fonty (nemusí to tolik vadit, protože autor integroval do image i Unicode písmo číslo 2 z PRS Customizeru, takže podpora češtiny je zajištěna, ale já se tedy na tak hnusná „ť“ dívat nechci). Tudíž jsem spustil svoje programátorské nástroje a po pár nezdařených pokusech se mi podařilo celý Enhanced Firmware hacknout tak, aby fungovalo i s PRS Customizerem! Následující postup vám tedy dovolí použít všechny vlastnosti obou nástrojů současně! Je to ovšem trochu složitější a nevyhnete se editaci některých souborů. Postup je následující:

  1. Nainstalujte, nastavte a spusťte PRS Customizer podle bodů 1-7 kapitoly „Nahrazení fontů – trvalá verze“ ve článku
    PRS-505: Čeština
    .

  2. Na SD kartě najděte soubor /files.505.1.1.00.18040/opt/sony/ebook/application/resources/applicationStart.xml (první část příslušně upravte, pokud je váš firmware v jiné verzi než 1.1.00.18040) a otevřete ho ve svém oblíbeném editoru.

  3. Ke konci souboru najdete následující kód:

    <function id="initialized">
    	USBDispatcher.doRegister(this.getWindow())
    	this.getDevice().doProcessed(100);
    	this.getDevice().enableBlueLED(true);
    </function>
  4. Nahraďte ho následujícím kódem:

    <function id="initialized">
    	USBDispatcher.doRegister(this.getWindow())
    	this.getDevice().doProcessed(100);
    	this.getDevice().enableBlueLED(true);
    	try {
    		var path = "/Data/autorun.js";
    		if(FileSystem.getFileInfo(path)) {
    			var f = new Stream.File(path);
    			try {
    				var fn = new Function("target", f.toString(), path, 1);
    				fn(this);
    			} finally {
    				f.close();
    			}
    		}
    	} catch(ignore) {
    	}
    </function>
  5. Proveďte kroky 2 a 3 z návodu na instalaci Enhanced Firmware výše.

  6. Proveďte kroky 8, 9 a 10 z návodu na instalaci češtiny.

No a to je vše. Výsledkem je čtečka, ve které jsou provedeny všechny úpravy z PRS Customizeru a navíc máte podporu adresářů. Jediná chybka na kráse je, že budou chybět ikonky u nových funkcí, ale to se snad dá přežít.

Drobné chybky a jejich oprava

Uvedené postupy fungují, ale mají několik vad na kráse.

1) Soubory v kořenovém adresáři paměti

Řekněte si, že jsem puntičkář, ale mě prostě vadí, když jsou v hlavním adresáři interní paměti (nebo karty) zbytečné soubory – hlavně proto, že když pak spravuji svoji databázi knížek správcem souborů, tak se mi ty pracovní soubory pletou mezi soubory s knížkami. Zvlášť to naštve u adresáře addons, který začíná na „A“ a tudíž se řadí před adresář s knihami books. Naštěstí jde Enhanced Firmware snadno přesvědčit, aby svoje soubory odklidil někam z cesty (nejlépe někam do adresáře database, který stejně už musí existovat, tak proč ho nevyužít i pro tohle…).

Odklidit adresář addons je jednodušší: Otevřete soubor autorun.js a hned na prvním řádku najdete umístění adresáře addons:

this.addonRoot = "/Data/addons/";

Takže si celý addons přesuňte třeba do database/software a změňte řádek na:

this.addonRoot = "/Data/database/software/addons/";

A je to hotovo.

I samotný soubor autorun.js jde přesunout, ale je to trochu složitější – jeho umístění je uloženo ve firmwaru, takže je nutné flashovat. Postup je v zásadě stejný jako ve výše uvedeném návodu pro zkombinování Enhanced Firmware s PRS Customizerem, jen v kroku 4) je drobná změna: Řádek

var path = "/Data/autorun.js";

je třeba upravit tak, aby ukazoval na vámi preferované umístění – takže třeba /database/software/autorun.js v interní paměti:

var path = "/Data/database/software/autorun.js";

Pak už stačí jen přesunout soubor autorun.js na správné místo a flashnout čtečku. Hotovo.

2) Knihy v interní paměti se nezobrazují

Ve své základní podobě je funkce Books by Folder nastavena tak, že v interní paměti hledá knížky až v adresáři /database/media/books (zřejmě proto, že tam knížky standardně ukládá Sony eBook Library a autor hacku je chtěl mít rychle dostupné). To je ovšem problém v případě, že jste tímto adresářem opovrhli a knížky máte uložené někde jinde (třeba v /books jako já) – do nadřazených adresářů se nedá dostat. Co s tím? Snadná pomoc! Otevřete soubor /addons/_BrowseByFolder.js a dejte si v něm vyhledat text /Data/database/media/books. Měli byste najít dva výskyty, jeden na řádku 246 a druhý na řádku 339 (ve verzi 0.84):

var rootFolder = "/Data/database/media/books/";
...
var node = new FolderNode("/Data/database/media/books", "", "directory", "Internal Memory", NodeKinds.INTERNAL_MEM);

Umažte v nich tu část s database/media/books, jen si dejte pozor, aby výsledný řetězec končil (resp. nekončil) lomítkem přesně stejně, jako v půvopdní verzi:

var rootFolder = "/Data/";
...
var node = new FolderNode("/Data", "", "directory", "Internal Memory", NodeKinds.INTERNAL_MEM);

Odteď se bude interní paměť procházet přímo z kořenového adresáře.

Aktualizace pro PRS Plus 1.0RC (25.1.2010)

Od doby napsání článku se rozšířený firmware značně rozrostl a mimo jiné přejmenoval na PRS Plus. V důsledku toho mimo jiné většina „drobných vylepšení“ výše ztratila smysl a také přestal fungovat návod na kombinaci PRS Plus a PRS Customizeru. Nicméně, stále je možné PRS Plus a PRS Customizer zkombinovat, jen se trochu změnil postup.

Základní změna je ta, že se v bodu 4) návodu „Spolupráce s PRS Customizer“ mění cesta k souboru a přibývá jeden příkaz (bez kterého by se dalo obejít, ale když už to aktualizujete…). Nový kód je:

<function id="initialized">
	USBDispatcher.doRegister(this.getWindow())
	this.getDevice().doProcessed(100);
	this.getDevice().enableBlueLED(true);
	try {
		var path = "/Data/database/system/PRSPlus/PRSPlus.js";
		if(FileSystem.getFileInfo(path)) {
			var f = new Stream.File(path);
			try {
				var fn = new Function("target", f.toString(), path, 1);
				fn(this);
				delete fn;
			} finally {
				f.close();
			}
		}
	} catch(ignore) {
	}
</function>

Pokud si oba kódy porovnáte, zjistíte změnu v řádku 6 (změna cesty k hlavnímu skriptu) a vložený řádek 12 (smazání startovací funkce po jejím provedení).

Zbytek návodu pak už probíhá beze změn. Tím si připravíte firmware samotný, zbytek už se odehrává bez flashování, jen případnými aktualizacemi souborů v adresáři /database/system/PRSPlus – prostě si stáhnete nejaktuálnější PRSPlus Script (tedy NE PRSPlus Firmware Installer) a rozbalíte ho do interní paměti a je zaktualizováno.

Jediný významný rozdíl této kombinace dvou hacků proti standardní instalaci PRS Plus je v tom, že NENÍ implementována podpora výchozího stylopisu pro CSS soubory v souboru /database/system/PRSPlus/epub/style.css; nic vám ale nebrání v tom, abyste ke kombinaci PRS Plus a PRS Customizeru přidali ještě můj hack pro podporu češtiny v každém EPUBu podle varianty 2 návodu.

Podobné příspěvky:

9 Responses to “PRS-505: Podpora adresářů”

  1. avatar pepak napsal:

    Musíš zkombinovat postup z tohoto článku s postupem uvedeným v článku Vytvořte si vlastní hack Sony Readeru.

  2. avatar feri napsal:

    Neúspech… Ako prinútiť k spolupráci PRScustomizer a najnovší PRS Plus 1.1.3?

    Customizer funguje, ale PRS plus/folders nie. (samotný PRSplus ide ale zas bez fontov a ikon)

  3. avatar pepak napsal:

    Aktualizováno pro PRS Plus 1.0RC.

  4. avatar pepak napsal:

    Zjistím to a dám vědět. V zásadě půjde pořád o to samé, ale budou se lišit detaily.

  5. avatar jjh napsal:

    mohu se zeptat, jak postupovat, když už puvodní verze od Kartu není k dispozici? Ke stažení jsou dva archívy PRSPlus_Firmware_Installer_1.0RC.zip a PRSPlus_Script_1.0RC.zip. Které soubory je potřeba přikopírovat na kartu se soubory připravenými přes PRS customizer? díky jjh

  6. avatar Rudla napsal:

    Hack v nové verzi funguje krásně, jen je třeba upravit názvy souborů a jejich lokaci podle tvého návodu, protože ty se teď změnily.

    V souboru aplicationStart.xml na:
    var path = „/Data/database/system/PRSPlus.js“;

    Uff – už jsem nelezl do zdrojáků dekády … 🙂

    R.

  7. avatar VlasTen napsal:

    Zda se, ze autor zapracoval na vsech vecech, ktere jsou v textu popisovany jako vylepseni. Takze ted uz neni potreba nic hackovat. Pokud to pujde takhle dal, tak to Z PRS-505 nakonec udela leadera i po strance softwarove… Diky za clanek, ktery me na existenci tohoto projektu upozornil.
    Nova verze, zda se, funguje na vybornou.

  8. avatar pepak napsal:

    Firmware se přejmenoval na PRS Plus, změnil adresu na http://code.google.com/p/prs-plus/ a dostal novou verzi. Zatím jsem ji nezkoušel, ale seznam novinek vypadá pěkně.

  9. avatar Waylander napsal:

    adresare funguji bezchybne, diky moc!

Leave a Reply

Themocracy iconWordPress Themes

css.php