I cracked my kindle paper white 2, got root on it and am running the software of my choice. Weird that I had to break into my own hardware. That in theory is my property.
I did a very controlled upgrade to a firmware version that was susceptible to the Winterbreak. I had managed to not update it for over 5 years.
I followed this guide after trying a few other guides that did not work.
https://www.youtube.com/watch?v=IRW_EYDcW1o
After it updated and was working I put a directory in place of the file name that kindle uses to download firmware, this works for me because I have the firmware version just before they fixed that workaround.
One thing I did have to do different is that for the life of me I could not get the hotfix to load, but I was able to just add Kual 2.0.azw2 to my document folder and run it from there.
But I loaded ko reader and a few other things and look around inside the kindle for the first time ever for me.
And for fun I ssh'ed into the kindle over wifi and wrote a banner program to print to the display.
[root@kindle us]# cat print_banner.sh
#!/bin/sh
# banner.sh - print each word as 5-row ASCII art, stacked vertically
# Usage: ./banner.sh Hello from root
# ----- letter definitions (5 rows each) -----
H1="* *"; H2="* *"; H3="*****"; H4="* *"; H5="* *"
E1="*****"; E2="* "; E3="*** "; E4="* "; E5="*****"
L1="* "; L2="* "; L3="* "; L4="* "; L5="*****"
O1=" *** "; O2="* *"; O3="* *"; O4="* *"; O5=" *** "
W1="* *"; W2="* *"; W3="* * *"; W4="** **"; W5="* *"
R1="**** "; R2="* *"; R3="**** "; R4="* * "; R5="* *"
D1="**** "; D2="* *"; D3="* *"; D4="* *"; D5="**** "
F1="*****"; F2="* "; F3="*** "; F4="* "; F5="* "
M1="* *"; M2="** **"; M3="* * *"; M4="* *"; M5="* *"
Y1="* *"; Y2=" * * "; Y3=" * "; Y4=" * "; Y5=" * "
T1="*****"; T2=" * "; T3=" * "; T4=" * "; T5=" * "
U1="* *"; U2="* *"; U3="* *"; U4="* *"; U5=" *** "
S1=" ****"; S2="* "; S3=" *** "; S4=" *"; S5="**** "
P1="**** "; P2="* *"; P3="**** "; P4="* "; P5="* "
G1=" ****"; G2="* "; G3="* **"; G4="* *"; G5=" ****"
A1=" * "; A2=" * * "; A3="*****"; A4="* *"; A5="* *"
B1="**** "; B2="* *"; B3="**** "; B4="* *"; B5="**** "
C1=" ****"; C2="* "; C3="* "; C4="* "; C5=" ****"
D1="**** "; D2="* *"; D3="* *"; D4="* *"; D5="**** "
I1="*****"; I2=" * "; I3=" * "; I4=" * "; I5="*****"
J1=" ***"; J2=" * "; J3=" * "; J4="* * "; J5=" ** "
K1="* *"; K2="* * "; K3="*** "; K4="* * "; K5="* *"
N1="* *"; N2="** *"; N3="* * *"; N4="* **"; N5="* *"
Q1=" *** "; Q2="* *"; Q3="* *"; Q4="* * *"; Q5=" *** "
V1="* *"; V2="* *"; V3=" * * "; V4=" * * "; V5=" * "
X1="* *"; X2=" * * "; X3=" * "; X4=" * * "; X5="* *"
Z1="*****"; Z2=" * "; Z3=" * "; Z4=" * "; Z5="*****"
SP1=" "; SP2=" "; SP3=" "; SP4=" "; SP5=" "
# ----- clear screen -----
eips -c
# ----- collect words -----
if [ $# -eq 1 ]; then
# split single argument on spaces
set -- $(echo "$1" | tr ' ' '\n')
fi
# ----- starting Y position -----
y=5
# ----- loop over each word -----
for word in "$@"; do
# convert to uppercase
w=$(echo "$word" | tr '[:lower:]' '[:upper:]')
len=${#w}
# initialize rows for this word
r1=""; r2=""; r3=""; r4=""; r5=""
i=0
while [ $i -lt $len ]; do
char=$(echo "$w" | cut -c $((i+1)))
case $char in
A) r1="$r1$A1"; r2="$r2$A2"; r3="$r3$A3"; r4="$r4$A4"; r5="$r5$A5" ;;
B) r1="$r1$B1"; r2="$r2$B2"; r3="$r3$B3"; r4="$r4$B4"; r5="$r5$B5" ;;
C) r1="$r1$C1"; r2="$r2$C2"; r3="$r3$C3"; r4="$r4$C4"; r5="$r5$C5" ;;
D) r1="$r1$D1"; r2="$r2$D2"; r3="$r3$D3"; r4="$r4$D4"; r5="$r5$D5" ;;
E) r1="$r1$E1"; r2="$r2$E2"; r3="$r3$E3"; r4="$r4$E4"; r5="$r5$E5" ;;
F) r1="$r1$F1"; r2="$r2$F2"; r3="$r3$F3"; r4="$r4$F4"; r5="$r5$F5" ;;
G) r1="$r1$G1"; r2="$r2$G2"; r3="$r3$G3"; r4="$r4$G4"; r5="$r5$G5" ;;
H) r1="$r1$H1"; r2="$r2$H2"; r3="$r3$H3"; r4="$r4$H4"; r5="$r5$H5" ;;
I) r1="$r1$I1"; r2="$r2$I2"; r3="$r3$I3"; r4="$r4$I4"; r5="$r5$I5" ;;
J) r1="$r1$J1"; r2="$r2$J2"; r3="$r3$J3"; r4="$r4$J4"; r5="$r5$J5" ;;
K) r1="$r1$K1"; r2="$r2$K2"; r3="$r3$K3"; r4="$r4$K4"; r5="$r5$K5" ;;
L) r1="$r1$L1"; r2="$r2$L2"; r3="$r3$L3"; r4="$r4$L4"; r5="$r5$L5" ;;
M) r1="$r1$M1"; r2="$r2$M2"; r3="$r3$M3"; r4="$r4$M4"; r5="$r5$M5" ;;
N) r1="$r1$N1"; r2="$r2$N2"; r3="$r3$N3"; r4="$r4$N4"; r5="$r5$N5" ;;
O) r1="$r1$O1"; r2="$r2$O2"; r3="$r3$O3"; r4="$r4$O4"; r5="$r5$O5" ;;
P) r1="$r1$P1"; r2="$r2$P2"; r3="$r3$P3"; r4="$r4$P4"; r5="$r5$P5" ;;
Q) r1="$r1$Q1"; r2="$r2$Q2"; r3="$r3$Q3"; r4="$r4$Q4"; r5="$r5$Q5" ;;
R) r1="$r1$R1"; r2="$r2$R2"; r3="$r3$R3"; r4="$r4$R4"; r5="$r5$R5" ;;
S) r1="$r1$S1"; r2="$r2$S2"; r3="$r3$S3"; r4="$r4$S4"; r5="$r5$S5" ;;
T) r1="$r1$T1"; r2="$r2$T2"; r3="$r3$T3"; r4="$r4$T4"; r5="$r5$T5" ;;
U) r1="$r1$U1"; r2="$r2$U2"; r3="$r3$U3"; r4="$r4$U4"; r5="$r5$U5" ;;
V) r1="$r1$V1"; r2="$r2$V2"; r3="$r3$V3"; r4="$r4$V4"; r5="$r5$V5" ;;
W) r1="$r1$W1"; r2="$r2$W2"; r3="$r3$W3"; r4="$r4$W4"; r5="$r5$W5" ;;
X) r1="$r1$X1"; r2="$r2$X2"; r3="$r3$X3"; r4="$r4$X4"; r5="$r5$X5" ;;
Y) r1="$r1$Y1"; r2="$r2$Y2"; r3="$r3$Y3"; r4="$r4$Y4"; r5="$r5$Y5" ;;
Z) r1="$r1$Z1"; r2="$r2$Z2"; r3="$r3$Z3"; r4="$r4$Z4"; r5="$r5$Z5" ;;
*) r1="$r1$SP1"; r2="$r2$SP2"; r3="$r3$SP3"; r4="$r4$SP4"; r5="$r5$SP5" ;;
esac
i=$((i+1))
done
# print the 5 rows for this word
eips 5 $y "$r1"
eips 5 $((y+1)) "$r2"
eips 5 $((y+2)) "$r3"
eips 5 $((y+3)) "$r4"
eips 5 $((y+4)) "$r5"
# move y down by 5 for next word (no gap)
y=$((y+6))
done
No comments:
Post a Comment