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

Mach's Principle Is Not About Inertia. It's About Everything.

J. Rogers, SE Ohio When you remove every human unit standard from measurement, every physical quantity reduces to the same ratio against th...