1. Make sure your Kobo ereader is already running firmware version 4.4.9298 (1614b85db3). If not, then you need to upgrade before applying this patch.
2. Check that your battery is well charged.
Patching from Windows, Linux (i386/x86_64), or Mac (OS X 10.8-10.9, i386/x86_64):
1. Download and extract patch_kobo_4049298.zip (attached).
2. Download the Kobo firmware archive version 4.4.9298 for your device (See this thread) and copy it into the 4.4.9298_source/ subdirectory. (Don't unzip the firmware.)
3. Read and edit all the *.patch files in the 4.4.9298_source/ subdirectory in order to: choose which patches to enable (patch_enable=`yes`) or disable (patch_enable=`no`); and to change some of the replacement values to suit your device and preferences.
4. In Windows double-click 4.4.9298.bat; For Linux/Mac open a terminal, change to the patch_kobo_4049298/ subdirectory, and run ./4.4.9298.sh from the command line.
5. If there were no errors, a new 4.4.9298_target/ subdirectory will be created. Copy the KoboRoot.tgz from this subdirectory to the .kobo directory on your ereader.
6. Safely eject and unplug the device, which will then update and restart.
To return your ereader to its original unpatched state:
1. Edit all the 4.4.9298_source/*.patch files to disable all patches (set patch_enable = `no` for every patch).
2. Repeat steps 4-6 of the procedure above.
Note that the following patches are enabled by default:
In librmsdk.so.1.0.0.patch:
`Fix page breaks bug`
`Default ePub monospace font (Courier)`
In libnickel.so.1.0.0.patch:
`Custom left & right margins`
`Custom page refresh options`
`Fix three KePub fullScreenReading bugs`
Last edited by GeoffR; 05-10-2017 at 07:49 PM.
Reason: Updated attachment to include missing nickel patches, thanks oren64 and jackie_w
This firmware version has been reported to have problems recognising unnamed external micro-SD cards, see this post. (In Linux you can use gparted [desktop] or mlabel [mtools package, command line] to label a partition.)
Code for the old tiled homescreen seems to have been removed from this firmware version, so the following two patches are no longer available:
`Disable new home screen`
`Enable new home screen`
All keyboard patches are still missing from the .zip file in post #1, will be added later. (See Other patches below for some that are ready for testing.)
Thank you very much GeoffR-oren64-jackie_w for the quick delivery of the patches.
I tried to incorporate also the Greek keyboard KA1 patch from previous version but it fails.
The patch relies on finding string 'ÉÀÇ' which was the button text to enable the extended keyboard on KA1 up to firmware 4.3.9084.
Could someone already updated to version 4.4.9298 check what is displayed on that keyboard button now and post?
Device: Kobo: KA1, ClaraHD, Forma, Libra2, Clara2E. PocketBook: TouchHD3
`Dictionary frame size`
`Dictionary frame size - beta8`
Spoiler:
Code:
<Patch>
patch_name = `Dictionary frame size - beta8`
patch_enable = `no`
# Multi-version patch: 4.4.9298+
#
find_base_address = `\xB5\x58\x5D\x8F\x9B\x38\x14\x7D\x9F\x5F\x81\x9A`
replace_bytes = 0000, B5 58 5D 8F 9B 38 14 7D, B5 58 5B 6F 9B 30 18 7D
replace_bytes = 0008, 9F 5F 81 9A D7 46 E2 23, EF AF 40 CB EB 22 71 89
replace_bytes = 0010, 30 21 A3 79 18 69 56 D5, C9 A5 EA 43 A5 4E 53 A7
replace_bytes = 0018, 54 6D 35 6A A3 7D 59 AD, 6D AA B6 68 2F D3 54 39
replace_bytes = 0020, 46 4E 70 88 5B 83 A9 71, C1 21 DE 0C 66 C6 59 93
replace_bytes = 0028, 3A C9 AE FA DF 17 82 93, 4D FD EF 83 00 89 C1 1F
replace_bytes = 0030, 18 7C 31 26 DD 26 4F 5C, 60 D2 AD 7D E2 8B 7D CE
replace_bytes = 0038, EC 73 0E BE 9F B0 64 BB, C1 DF 15 2F F9 6E BD FD
replace_bytes = 0040, F5 F6 23 CE 77 CE BF 37, 40 E2 9D F5 E7 CA B2 56
replace_bytes = 0048, 8E B3 62 3C C1 7C E1 E4, 5C 04 44 2C AC 98 C7 E4
replace_bytes = 0050, 2C C7 77 37 3F 6F 3E 91, FA EA F9 EA 23 5D FF 20
replace_bytes = 0058, F5 37 4C 97 ED 35 68 FD, 6C 59 5F 83 D7 3F 42 C1
replace_bytes = 0060, 2D E5 6C 97 27 D3 35 A3, 77 71 30 5E 73 C6 B3 D5
replace_bytes = 0068, AC 5A 2D 38 CA CB 02 71, 52 E0 38 4D B0 20 B1 BC
replace_bytes = 0070, 9C 8B BB 6A 41 86 78 4A, CE 16 44 58 84 34 5E 58
replace_bytes = 0078, F2 85 E3 CD 8A 7D 0D 52, CE 24 D9 E7 20 F9 CE 25
replace_bytes = 0080, EF 5C E2 BD 78 12 38 7B, D9 CB 7B 49 A2 D7 C7 A7
replace_bytes = 0088, 7B BC 7A CA 50 8A EB CB, FB 08 87 24 7F 6C 01 7C
replace_bytes = 0090, 1E C0 D7 2D 11 B8 BB F5, DA 52 49 9A 5B BF FE BC
replace_bytes = 0098, AF EF 0F 45 F1 92 E0 1F, 4D 92 C7 80 FC A2 6B 72
replace_bytes = 00A0, 64 8D 9F CA 25 27 94 A5, 9F 2E 05 65 3C 3C DC 48
replace_bytes = 00A8, 87 7B C1 77 F8 EF 0E AA, B1 23 DF 1A A8 1D 2B 8F
replace_bytes = 00B0, 61 E5 91 30 23 F9 F4 95, 84 11 8D C7 4F 34 90 DB
replace_bytes = 00B8, 24 62 BB 70 7C D7 D5 45, 85 E5 DA B6 2E B2 BE FF
replace_bytes = 00C0, B6 F7 3F 6F 19 CE C9 DE, 61 CB 49 4C F7 06 4C B5
replace_bytes = 00C8, 82 A9 B5 52 63 F2 07 99, 95 1A 93 DB CB 74 27 70
replace_bytes = 00D0, 1E 39 4A 59 6E 41 A4 2E, C8 63 03 22 75 61 93 C7
replace_bytes = 00D8, EC F2 04 C3 4F F4 88 0E, EB 7F A3 3B 7C 60 34 DC
replace_bytes = 00E0, 94 A4 5B 61 C3 D4 5A AA, 4A 13 A6 DA 52 8D 6B 0E
replace_bytes = 00E8, 71 C5 00 97 33 C9 94 AB, 70 59 A3 48 79 7A 8F 57
replace_bytes = 00F0, 0F 68 85 A9 D9 CD 8E 23, 84 75 BB D9 B2 CA E7 15
replace_bytes = 00F8, AF 57 B4 5A 62 01 D7 48, CB 96 18 C0 15 12 19 5F
replace_bytes = 0100, A4 6C 8D 28 FE 84 32 7C, 63 46 3E E2 88 DC BC FA
replace_bytes = 0108, FF E6 2B 7A 79 FF FC A6, 8E 1F DF 3D BC 2A F4 6D
replace_bytes = 0110, D1 B7 61 B9 98 6E 50 46, 78 2C C7 1B 1C 51 76 58
replace_bytes = 0118, E8 61 E1 7C A9 22 73 FA, 58 9F B3 C8 1C 7F 26 82
replace_bytes = 0120, 05 73 B2 79 FF FC D6 29, 6E DE 3D BC B6 D2 FC 29
replace_bytes = 0128, EB AB B2 BE BA 3B 2D 2C, CD 9F AE AB 85 A9 3C 30
replace_bytes = 0130, C5 81 E2 3A E0 79 86 A8, 92 07 BC 88 30 33 E6 6E
replace_bytes = 0138, 35 77 7F 6C 35 A0 E4 9F, 8F AD 02 94 FE CE 30 9D
replace_bytes = 0140, 0A D3 8B AD 0E 67 28 86, B9 D1 E1 F4 C5 90 82 E8
replace_bytes = 0148, 14 44 3F B8 02 51 0B 16, 7A 17 20 6A C1 A2 02 5E
replace_bytes = 0150, 15 F0 1A 89 0F F4 50 96, 22 F1 96 1D D2 74 17 C1
replace_bytes = 0158, BB 0C 46 0C FC 6B 24 EA, 88 9E 7B 89 44 3D CA 54
replace_bytes = 0160, 51 A6 42 DE 5E 01 09 67, C8 E9 05 90 70 D6 6F 49
replace_bytes = 0168, FD 16 D7 34 0B 67 16 D5, 4E B3 B0 26 7E 0E 99 97
replace_bytes = 0170, 90 75 A9 DA 77 6C BF EC, AA 7D C3 F6 62 77 A9 34
replace_bytes = 0178, 2E 95 26 04 68 C2 6B 68, 08 A0 41 97 D0 80 09 5F
replace_bytes = 0180, C0 84 3F 21 DE BA 3A CB, 21 4E 6D 9D 65 6A 96 98
replace_bytes = 0188, AD 5D 62 5A 25 FB 09 33, 46 C9 5E 61 CE 01 1E C3
replace_bytes = 0190, 06 78 2C 0B C0 90 6F 0A, 02 D0 E7 9B 04 07 01 8D
replace_bytes = 0198, 94 24 24 4F A7 82 15 55, C3 B1 E4 49 16 94 05 4D
replace_bytes = 01A0, 50 36 34 27 DB 8A 09 C1, 65 5B 71 29 79 54 9A 5F
replace_bytes = 01A8, 32 69 FE 65 F7 B4 98 02, EC 9E 1A 93 07 33 FD 93
replace_bytes = 01B0, 98 E9 7F C9 B2 16 D1 0C, 2C AB 11 4D 60 22 A0 41
replace_bytes = 01B8, 26 02 1A E4 35 4E 6A 51, 5E E2 A4 1A 15 82 A9 10
replace_bytes = 01C0, 85 30 55 08 34 05 22 10, D0 14 A8 C4 8C AE D3 9B
replace_bytes = 01C8, 25 EB F2 7E 83 68 59 41, 0D 66 69 06 D5 52 B7 6B
replace_bytes = 01D0, F5 D4 ED 56 3D 7D 87 59, F5 F4 2D E1 59 73 C7 CD
replace_bytes = 01D8, D5 DC 51 B7 7C 36 48 1A, F2 59 20 69 04 24 C6 2B
replace_bytes = 01E0, 01 CE D1 8A E2 64 80 40, 46 82 1E 82 B2 FA 8F E6
replace_bytes = 01E8, 56 FF 49 7C FC D5 20 4F, C7 BF 1C E4 3E 66 34 26
replace_bytes = 01F0, 39 25 39 7E 24 6B 41 58, 77 74 2D 29 8F B1 38 7C
replace_bytes = 01F8, 8E F8 E1 4F 82 5F BB BD, A1 E4 A9 D9 7B 90 AF 84
replace_bytes = 0200, 27 8C 94 70 D4 6C 4A D8, A3 66 53 C2 D6 F3 80 2C
replace_bytes = 0208, FA F3 99 1E B7 D2 08 53, 2C 8D 30 D5 80 AE EE CF
replace_bytes = 0210, 8D E8 EA 51 3C D7 54 5C, 67 9A 8A B3 4D AD 38 2E
replace_bytes = 0218, 6C 8A 8A 20 04 54 48 A3, 54 72 5C 63 15 5D 2D DF
replace_bytes = 0220, 8D 0A 53 CB F7 5C 57 3F, B1 6D FD 2C 14 A3 22 C3
replace_bytes = 0228, 0B C5 A8 16 BE 18 AA 7C, B7 01 19 A5 D1 48 46 E7
replace_bytes = 0230, 71 64 2D C3 38 0F 78 01, 3C E0 78 90 10 0F 12 32
replace_bytes = 0238, 24 24 80 84 44 B3 B9 2E, 9D 02 42 4A E3 F3 D5 28
replace_bytes = 0240, 44 1A 7F DE 4C 92 B3 06, 38 69 D0 CA 90 EF BA C0
replace_bytes = 0248, AD 0C 05 B7 C0 23 28 C6, 2B 9C 8D F9 F0 59 4B 85
replace_bytes = 0250, 7A F8 94 85 C4 6D D9 28, D2 C4 C8 46 E6 C7 A2 31
replace_bytes = 0258, DE 88 FA 5C 34 8A 41 7F, F4 BA FB A5 90 BA EF 14
replace_bytes = 0260, 0F 61 FA 43 98 BA F7 14, 44 C7 86 20 51 1F 24 E0
replace_bytes = 0268, C8 00 82 0C 06 21 01 4F, 87 3E D0 6A 00 1D C9 2C
replace_bytes = 0270, 28 A0 33 1F 00 9D C9 1A, 05 DF 04 54 6A 29 E5 20
replace_bytes = 0278, 3A 11 55 12 FE 91 10 A1, 3D A5 4E 36 C5 05 AE 3B
replace_bytes = 0280, 25 95 17 EA 49 75 B6 29, D3 5D 50 1A 15 FC 21 AD
replace_bytes = 0288, 4E F0 42 5F 77 82 34 2A, B2 16 39 BA 51 C9 38 04
replace_bytes = 0290, F8 63 9A A5 07 F5 97 8B, 64 1C EA A6 EE 6C 9F 13
replace_bytes = 0298, 51 C9 B9 00 C8 B9 60 6E, 04 C4 D3 D9 78 66 9E 03
replace_bytes = 02A0, A4 36 36 50 1F EA D3 17, 15 A7 B4 B5 33 77 B7 54
replace_bytes = 02A8, E3 85 39 0E F4 F0 8E CF, 34 03 B8 CF 46 25 B3 5C
replace_bytes = 02B0, 9E EA 61 36 37 D5 20 80, E4 E9 99 55 1A 33 F6 94
replace_bytes = 02B8, A2 39 D0 B9 3D DF 8D F5, 48 99 95 FB B4 65 D2 1E
replace_bytes = 02C0, DC 92 C6 8A BD C4 42 54, 05 F3 FC FF 54 B6 81 72
replace_bytes = 02C8, 05 BF EC 99 B5 27 49 5C, AE 86 CF 29 52 2A D8 FF
replace_bytes = 02D0, FF CF 85 1B 28 E8 7A 98, 3A 71 37 58 06 CD D6 2D
replace_bytes = 02D8, 2B B0 BF 75 E6 EE B0 8C, 7B 8D A6 E8 96 BD 26 F3
replace_bytes = 02E0, 9A AE 7B F6 5A CD D1 3D, 72 CB 56 A3 C9 B8 8D D6
replace_bytes = 02E8, 7B 6D 26 E6 9E AD 56 B3, 68 06 36 3E AB AA FF 97
replace_bytes = 02F0, 71 1F AD D5 14 6C 7D 56, F5 A4 31 53 89 22 D2 9C
replace_bytes = 02F8, A7 09 40 96 BD CE 54 C5, 6E 49 ED D3 53 89 EA C3
replace_bytes = 0300, 65 7E 99 25 F5 CF 4F 12, A8 FE B0 F3 AD 83 BA B0
replace_bytes = 0308, 35 82 51 A3 71 E7 DB 06, 54 77 F0 E9 35 60 67 30
replace_bytes = 0310, F5 61 A9 FE E8 D3 EB C0, EC 6C E0 09 18 A4 89 51
replace_bytes = 0318, CE 61 D8 F9 C8 13 B0 48, D9 F7 7A F6 76 D7 77 AF
replace_bytes = 0320, 93 11 65 7F CC F3 B4 76, 8A C3 88 A4 69 F6 E1 AE
replace_bytes = 0328, 9F E2 30 C3 65 59 BD BA, A7 E1 ED AF 4C B8 50 DE
replace_bytes = 0330, EB 69 F8 F0 A3 12 CE 95, 78 61 D9 F5 3D FF 37 A7
replace_bytes = 0338, 27 5E 38 6E 7B CF EF CD, 5B 49 A4 78 5C 7E 82 48
replace_bytes = 0340, E9 5E 12 C1 5F 96 9F 21, 4E B5 A8 B9 BB D7 19 85
replace_bytes = 0348, 92 73 2D EA EE 1E 74 86, 87 BD 7A 6F 2E 1D EC 21
replace_bytes = 0350, EC 99 E7 E6 75 34 F2 D3, E8 AD FB 5C 54 20 22 1B
replace_bytes = 0358, 90 05 3D F5 90 8B 1A C4, 42 44 E0 39 F6 3B AE C0
replace_bytes = 0360, D0 85 10 43 F0 1C 87 1D, F4 41 95 7E A5 72 C3 B9
replace_bytes = 0368, D7 60 46 A0 CA E8 A4 72, 24 42 EF 8E 48 6F 13 5E
replace_bytes = 0370, C3 98 C0 7C D4 1B AB DC, 7D 4F DF 59 FD 4C 04 4F
replace_bytes = 0378, 33 74 56 DF 0B CE 0A CC, 88 90 87 A3 90 0F E5 1D
replace_bytes = 0380, C5 E1 28 E4 A3 FC 4A E7, 9D 6B 5F D7 7E 3B EA 69
replace_bytes = 0388, BB 77 AD 7B 47 3D 7D 37, FB B1 F8 96 A8 7E B5 B5
replace_bytes = 0390, 9B B7 89 F6 DD D6 54 07, 11 17 E8 E0 13 BB 43 A4
replace_bytes = 0398, B4 F0 C8 35 A8 D4 8E BF, 76 FA 2D 1A 51 97 46 34
replace_bytes = 03A0, 47 64 68 12 19 1A 45 86, 48 23 02 34 A2 4E 8D BA
replace_bytes = 03A8, 5D 91 A6 F7 58 58 A4 EE, 3F 61 95 9E DB A1 B2 F9
replace_bytes = 03B0, 51 58 66 E0 1B 64 76 6F, 63 8F 4A 1F 50 79 1A 34
replace_bytes = 03B8, B6 65 36 77 5B F3 90 0F, 18 8E C3 9D 16 77 66 DD
replace_bytes = 03C0, CD 43 E7 8A 43 51 9E EE, 12 DE 6B D6 2D E1 BD 46
replace_bytes = 03C8, B4 E0 B3 6B 99 F0 5E BB, DD 12 DE 6A D6 2D 5B 68
replace_bytes = 03D0, 96 09 EF B5 6A 99 F0 56, CD BA A5 E9 59 81 E1 60
replace_bytes = 03D8, BB 96 D9 43 6B D7 32 6D, 7A 58 F5 EF 90 61 A7 A5
replace_bytes = 03E0, CF AA F5 9D C6 7C D0 50, EE 9D 75 13 83 95 E5 BC
replace_bytes = 03E8, 29 52 62 7E 40 B6 5E 74, DB B1 CB DB 84 D1 96 E0
replace_bytes = 03F0, 2E 7B E7 66 62 B0 BC 28, A0 AC 21 C5 7D FE E9 12
replace_bytes = 03F8, 01 E2 CA 57 CA C9 16 A3, C0 49 F6 56 CA 19 0D AC
replace_bytes = 0400, 44 16 92 E6 B3 FE F9 5B, 50 E0 43 57 48 3A C0 17
replace_bytes = 0408, 80 57 EC 9D 92 51 92 38, 6C C7 9D 59 C9 39 64 E0
replace_bytes = 0410, 29 47 07 53 54 7A C0 1B, EF 8C 71 08 EE E2 3B 30
replace_bytes = 0418, A4 A9 10 35 9C 63 A6 7E, 18 ED F2 BB AE BF 28 9B
replace_bytes = 0420, 63 C5 80 E0 8C 93 BC 31, A5 AA 00 00 00 00 00 00
replace_bytes = 0428, B5 41 34 F3 74 6E CE C1, 00 00 00 00 00 00 00 00
replace_bytes = 0430, FF 00 86 CE A7 83 00 00, 00 00 00 00 00 00 00 00
</Patch>
I've taken this opportunity to try and improve upon the previous beta5 version of this patch. I've tested briefly on a Glo, H2O and GloHD. Due to other circumstances I'm not in a position to test on my KA1 right now but I have no reason to believe it won't work.
The 2 images below show the dictionary pop-up widget, on a Kobo Glo, before and after enabling this new beta8 patch.
In beta5, if long-pressing on a word located slightly above the middle of the screen, it was possible for the dictionary pop-up widget to completely cover the mini-menu containing the Highlight/Search/Share icons.
With beta8, the mini-menu may still be partially covered (see second image) but hopefully you can see enough of it to be able to tap-activate it.
Please also note that in firmware v4.4.9298 Kobo seem to have fixed the minor annoyance where the left-hand edge of the numbered dictionary items was shaved off (more on some models than others).
ETA: Forgot to say (again!) this patch goes in nickel.patch
Last edited by jackie_w; 05-10-2017 at 06:17 PM.
Reason: ETA
I've taken this opportunity to try and improve upon the previous beta5 version of this patch. I've tested briefly on a Glo, H2O and GloHD. Due to other circumstances I'm not in a position to test on my KA1 right now but I have no reason to believe it won't work.
The 2 images below show the dictionary pop-up widget, on a Kobo Glo, before and after enabling this new beta8 patch.
In beta5, if long-pressing on a word located slightly above the middle of the screen, it was possible for the dictionary pop-up widget to completely cover the mini-menu containing the Highlight/Search/Share icons.
With beta8, the mini-menu may still be partially covered (see second image) but hopefully you can see enough of it to be able to tap-activate it.
Please also note that in firmware v4.4.9298 Kobo seem to have fixed the minor annoyance where the left-hand edge of the numbered dictionary items was shaved off (more on some models than others).