Mastodon Politics, Power, and Science: Cracked my kindle paper white 2

Monday, March 9, 2026

Cracked my kindle paper white 2

 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. 






Wrote a script for printing the banners to the screen.  You have to save it in '/mnt/us/'  to save it between the cleaning of the room folder that happens every so often. 

[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

Made Progress on the r36s handheld.

 I got it last year and loaded a game on it and couldn't get it to not pop up the menu every few seconds because that menu had been mapp...