Jekyll2022-02-26T03:50:36+00:00https://decryptronics.github.io/feed.xmldeCryptronicsElectronics and Silicon Design AdventuresWe Have a New Logo!2020-09-01T12:00:00+00:002020-09-01T12:00:00+00:00https://decryptronics.github.io/personal/2020/09/01/we-have-a-new-logo<div class="three-img-bar">
<ul>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/dclogo_10.png" alt="dC Logo Black" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/dclogo_5.png" alt="dC Logo Grey" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/dclogo_3.png" alt="dC Light Grey" /></li>
</ul>
</div>
<h3 id="prologue"><strong>Prologue</strong></h3>
<p>I’ve been busy for the past month. Impending project milestones required some additional effort and when you’re new to an organization you try to show that you’re worth your salt. Also, there are lots of new things to learn at work when you start out. I had not forgotten about my blog, I have a new logo, one personal post and one tutorial in the works to be released in the coming weeks. Fortnightly posts seem like a good frequency for blog posts, though it depends on how much content I’m able to churn out. Long story short, extended periods of inactivity on my blog means either I’m dead or no time for blogging.</p>
<h3 id="why-the-new-logo"><strong>Why The New Logo?</strong></h3>
<figure class="fig-left-float">
<img class="img-left-float" src="/media/posts/2020-09-01-we-have-a-new-logo/dclogo.png" alt="dC Old Logo" width="100px" />
<figcaption class="capt-left-float">Old Logo</figcaption>
</figure>
<p>The old logo was designed by me way back during my undergraduate days in the year 2014. Back then I had sketched out a few designs, picked one, and ran with it. Armed with my measly experience in Adobe Illustrator gained from Youtube tutorials I set out to bring my design to life. The result was my old logo. With the relaunch of my blog, I thought maybe it was time to hash out a new logo. Something that looks modern and screams simplicity.</p>
<h3 id="design-idea-and-process"><strong>Design Idea and Process?</strong></h3>
<p>I don’t think of myself as an artist in the conventional sense, though I’m thinking of learning how to play the flute. Between my work breaks, I sketched whatever design or idea came to my mind. You can see some of my initial concepts below.</p>
<div class="three-img-bar">
<ul>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design1.png" alt="Logo Sketch 1" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design2.png" alt="Logo Sketch 2" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design3.png" alt="Logo Sketch 3" /></li>
</ul>
</div>
<div class="three-img-bar">
<ul>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design4.png" alt="Logo Sketch 4" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design5.png" alt="Logo Sketch 5" /></li>
<li><img src="/media/posts/2020-09-01-we-have-a-new-logo/design6.png" alt="Logo Sketch 6" /></li>
</ul>
</div>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-09-01-we-have-a-new-logo/design7.png" alt="Logo Sketch 7" width="300px" />
</figure>
<p>Out of about 10 designs I picked <code class="language-plaintext highlighter-rouge">six</code> designs, numbered <code class="language-plaintext highlighter-rouge">1-5</code> and <code class="language-plaintext highlighter-rouge">7</code>. Now that I had some money in my pocket, I thought not to waste time and effort in graphics design when I could hire a professional for a couple of bucks. I finalized a designer who designs logos on <a href="https://fiverr.com" target="_blank">Fiverr</a> for <code class="language-plaintext highlighter-rouge">$10</code>. Way to go cheap!</p>
<p>I showed my sketches to the designer and following a couple of mock-up’s I thought that a logo needs some substance apart from good looks, a hidden meaning like logos of Amazon, FedEx, or Toyota. Being an electronics engineer, the <a href="https://en.wikipedia.org/wiki/Vaio" target="_blank">VAIO Corporation’s</a> logo came to mind. A logo that’s modern, simple, and has a <a href="https://imjustcreative.com/the-sony-vaio-logo/2015/08/14" target="_blank">hidden meaning</a>. This led me to sketch out logo #6 which was refined by the designer and is the face of my blog now.</p>
<h3 id="hidden-meaning-in-dcs-logo"><strong>Hidden Meaning in dC’s Logo</strong></h3>
<p>The new logo is a mashup of elements from <code class="language-plaintext highlighter-rouge">digital (1 and 0)</code> and <code class="language-plaintext highlighter-rouge">analog (a sine wave)</code> electronics just like <code class="language-plaintext highlighter-rouge">VAIO's</code> logo.</p>
<p>With <code class="language-plaintext highlighter-rouge">1</code> as the stem and <code class="language-plaintext highlighter-rouge">0</code> as the bulb, the character <code class="language-plaintext highlighter-rouge">d</code> is formed. A sine wave and the infinity (∞) symbol is baked into the design formed by an interplay between the <code class="language-plaintext highlighter-rouge">d</code> and <code class="language-plaintext highlighter-rouge">c</code> characters.</p>
<table>
<tbody>
<tr>
<td>1,0</td>
<td>Digital Electronics</td>
<td>The central theme of this blog</td>
</tr>
<tr>
<td>Sine Wave</td>
<td>Analog Electronics</td>
<td>An interface to the real world</td>
</tr>
<tr>
<td>∞</td>
<td>Dual Meaning</td>
<td>The many stories from a person’s life or the infinite possibilities electronics have given to mankind.</td>
</tr>
</tbody>
</table>Soumil HebleInstalling Open Source Silicon Design Tools2020-07-25T12:00:00+00:002020-07-25T12:00:00+00:00https://decryptronics.github.io/silicon_frontend/2020/07/25/installing-open-source-silicon-design-tools<div class="three-img-bar">
<ul>
<li><img src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/verilator_logo.png" alt="Verilator Logo" /></li>
<li><img src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/gtkwave_logo.png" alt="GTKWave Logo" /></li>
<li><img src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/wavedrom_logo.png" alt="Wavedrom Logo" /></li>
</ul>
</div>
<blockquote>
<p>I use the terms Silicon Design/Silicon Development to describe the design and development of ASICs, CPUs, GPUs, SOCs, and FPGAs.</p>
</blockquote>
<blockquote>
<p>This is in no way a comprehensive list of Open Source Silicon Design tools out there. This is just a list of tools I use, and I’ll keep updating this list if I start using new tools.</p>
</blockquote>
<h2 id="the-excitement-of-open-source-silicon-design-tools">The Excitement of Open Source Silicon Design Tools</h2>
<p>A decade ago if you were thinking of dipping your toes in the world of silicon design and development you’d need access to tools from the <code class="language-plaintext highlighter-rouge">Big 3 EDA vendors</code> - <code class="language-plaintext highlighter-rouge">Mentor Graphics</code>, <code class="language-plaintext highlighter-rouge">Synopsys</code>, or <code class="language-plaintext highlighter-rouge">Cadence Design Systems</code>. The only way to get access to these tools is to purchase a license from the vendor, and it’s not cheap. So you have to either be a student at a University that has purchased a license, work at a semiconductor company, or have deep pockets to buy one (I’m not sure whether the vendors supply license to individuals).</p>
<h2 id="os-and-install-locations">OS and Install Location(s)</h2>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/kubuntu_focal_banner.png" alt="Kubuntu Focal Fossa 20.04 LTS Banner" width="740px" />
</figure>
<blockquote>
<p>All the following steps of compiling and installing the software have been done on a <a href="https://kubuntu.org/" target="_blank">Kubuntu Focal Fossa 20.04 LTS</a> based system.</p>
</blockquote>
<p>I like <code class="language-plaintext highlighter-rouge">Ubuntu</code> because of the simplicity, wide adoption by the general public, abundant documentation, and a lot of developer effort spent on the distro. However, I also like customization. The <code class="language-plaintext highlighter-rouge">GNOME</code> desktop environment, though polished, does not provide a lot of customizations like the <code class="language-plaintext highlighter-rouge">K</code> desktop environment (<code class="language-plaintext highlighter-rouge">KDE</code>) does. Kubuntu marries together the Ubuntu distribution with a <code class="language-plaintext highlighter-rouge">KDE</code> desktop environment which is exactly what I need.</p>
<h4 id="install-location">Install Location</h4>
<table>
<thead>
<tr>
<th style="text-align: center">Directory Path</th>
<th style="text-align: center">Reason</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">/opt</td>
<td style="text-align: center">Software that has been pre-compiled and is ready to be used after the download/extracting from the compressed file</td>
</tr>
<tr>
<td style="text-align: center">/usr/local</td>
<td style="text-align: center">Software that has been compiled on the system from the source code</td>
</tr>
</tbody>
</table>
<h2 id="the-tools">The Tools</h2>
<p>We are going to compile and install these tools from the source if possible because the <code class="language-plaintext highlighter-rouge">package manager (apt)/snap</code> versions of these tools might be old and may not have features that are implemented in the latest stable release.</p>
<h3 id="gtkwave---waveform-viewer">GTKWave - Waveform Viewer</h3>
<blockquote>
<p><a href="http://gtkwave.sourceforge.net/" target="_blank">GTKWave</a> is an analysis tool used to perform debugging on Verilog or VHDL simulation models. With the exception of interactive VCD viewing, it is not intended to be run interactively with simulation, but instead relies on a post-mortem approach through the use of dumpfiles. - <a href="http://gtkwave.sourceforge.net/gtkwave.pdf" target="_blank">GTKWave Manual</a></p>
</blockquote>
<p><strong>My Use Case:</strong> To view the waveform dumped by tests run on Icarus Verilog or Verilator.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/gtkwave.png" alt="GTKWave Window" width="740px" />
</figure>
<h4 id="prerequsite-packages">Prerequsite Packages</h4>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>zlib1g bzip2 gperf
<span class="nb">sudo </span>apt <span class="nb">install </span>tcl-dev tk-dev liblzma-dev autoconf
<span class="nb">sudo </span>apt <span class="nb">install </span>libgtk2.0-dev flex
<span class="nb">sudo </span>apt <span class="nb">install </span>libcanberra-gtk-module <span class="c">#Ubuntu</span>
<span class="nb">sudo </span>apt <span class="nb">install </span>gnome-themes-standard <span class="c">#Kubuntu</span></code></pre></figure>
<ul>
<li>Download the latest version of source code from <a href="https://sourceforge.net/projects/gtkwave/files/" target="_blank">GTKWave SourceForge Site</a>.</li>
<li>Uncompress source code and run the following commands inside the directory.</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">./configure
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Make sure that you have <code class="language-plaintext highlighter-rouge">/usr/local/bin</code> in your shell’s PATH variable.</li>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">gtkwave -V</code> and it should print out the version information.</li>
</ul>
<h3 id="wavedrom---timing-diagram-and-waveform-documentation">Wavedrom - Timing Diagram and Waveform Documentation</h3>
<blockquote>
<p>WaveDrom draws your Timing Diagram or Waveform from simple textual description. It comes with description language, rendering engine and the editor. WaveDrom editor works in the browser or can be installed on your system. Rendering engine can be embeded into any webpage. - <a href="https://wavedrom.com/" target="_blank">WaveDrom</a></p>
</blockquote>
<p><strong>My Use Case:</strong> To document timing diagrams of protocols or designs and register definitions.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/wavedrom.png" alt="WaveDrom Generated Timing Diagram" width="740px" />
</figure>
<ul>
<li>Download the pre-compiled release of WaveDrom for <code class="language-plaintext highlighter-rouge">linux-x64</code> from <a href="https://github.com/wavedrom/wavedrom.github.io/releases" target="_blank">WaveDrom GitHub Releases</a>.</li>
<li>Uncompress the download and <code class="language-plaintext highlighter-rouge">sudo</code> move the directory to <code class="language-plaintext highlighter-rouge">/opt/</code></li>
<li>Make sure that you have <code class="language-plaintext highlighter-rouge">/opt/<wavedrom_directory_name>/</code> in your shell’s PATH variable <code class="language-plaintext highlighter-rouge">OR</code></li>
<li>I add the following line to my Shell’s <code class="language-plaintext highlighter-rouge">rc</code> file which opens wavedrom in background and redirects stdout and stderr to <code class="language-plaintext highlighter-rouge">/dev/null</code>.</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">alias </span><span class="nv">wavedrom</span><span class="o">=</span><span class="s1">'/opt/wavedrom-editor-v2.4.2-linux-x64/wavedrom-editor > /dev/null 2>&1 &'</span></code></pre></figure>
<ul>
<li>KDE also allows you to add a custom menu item that triggers a command. You can use the above alias to do so and add the WaveDrom logo as the application’s icon. KDE is pretty neat huh!</li>
</ul>
<h3 id="icarus-verilog---verilog-simulation-tool">Icarus Verilog - Verilog Simulation Tool</h3>
<blockquote>
<p>Icarus Verilog is a Verilog simulation and synthesis tool. It operates as a compiler, compiling source code written in Verilog (IEEE-1364) into some target format. - <a href="http://iverilog.icarus.com/" target="_blank">Icarus Verilog</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Write Verilog testbenches, simulate designs, and use along with SymbiYosys to do formal verification.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/icarus_verilog_logo.png" alt="Icarus Verilog Logo" width="512px" />
</figure>
<h4 id="prerequsite-packages-1">Prerequsite Packages</h4>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>bison</code></pre></figure>
<ul>
<li>Download the latest source code release from <a href="ftp://icarus.com/pub/eda/verilog/v10" target="_blank">Icarus Verilog’s FTP Server</a>.</li>
<li>Uncompress the source code and run the following commands inside the directory.</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">./configure
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Make sure that you have <code class="language-plaintext highlighter-rouge">/usr/local/bin</code> in your shell’s PATH variable.</li>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">iverilog -v</code> and it should print out the version information.</li>
</ul>
<h3 id="yosys---design-synthesis">Yosys - Design Synthesis</h3>
<blockquote>
<p>Yosys is a framework for Verilog RTL synthesis. It currently has extensive Verilog-2005 support and provides a basic set of synthesis algorithms for various application domains. - <a href="http://www.clifford.at/yosys/" target="_blank">Yosys</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Use along with SymbiYosys to do formal verification and synthesize Verilog for <a href="http://www.latticesemi.com/iCE40" target="_blank">Lattice iCE40</a> FPGA.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/yosys.png" alt="Yosys Design Element Diagram" width="512px" />
</figure>
<h4 id="prerequsite-packages-2">Prerequsite Packages</h4>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>build-essential clang bison flex <span class="se">\</span>
libreadline-dev gawk tcl-dev libffi-dev git <span class="se">\</span>
graphviz xdot pkg-config python3 libboost-system-dev <span class="se">\</span>
libboost-python-dev libboost-filesystem-dev zlib1g-dev</code></pre></figure>
<ul>
<li>Download the latest source code release from <a href="https://github.com/YosysHQ/yosys/releases" target="_blank">Yosys GitHub Releases</a>.</li>
<li>Uncompress the source code and run the following commands inside the directory.</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">make config-gcc
<span class="nb">echo</span> <span class="s2">"PREFIX := /usr/local"</span> <span class="o">>></span> Makefile.conf
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">yosys -V</code> and it should print out the version information.</li>
</ul>
<h3 id="systemc-libraries---event-driven-simulation-library">SystemC Libraries - Event Driven Simulation Library</h3>
<blockquote>
<p>SystemC is a set of C++ classes and macros which provide an event-driven simulation interface (see also discrete event simulation). These facilities enable a designer to simulate concurrent processes, each described using plain C++ syntax. - <a href="https://en.wikipedia.org/wiki/SystemC" target="_blank">Wikipedia</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Modelling functionality of designs and connecting them to SystemC testbenches along with open-source RISC-V cores.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/systemc_logo.jpg" alt="SystemC Logo" width="300px" />
</figure>
<ul>
<li><code class="language-plaintext highlighter-rouge">SystemC</code> is an <a href="https://en.wikipedia.org/wiki/Accellera" target="_blank">Accelera</a> standard and the libraries are maintained <a href="https://www.accellera.org/downloads/standards/systemc" target="_blank">here</a>.</li>
<li>Download the latest source code release from <a href="https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz" target="_blank">Accelera’s Download Page</a>.</li>
<li>Uncompress the source code and run the following commands inside the directory.</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">mkdir </span>objdir
<span class="nb">cd </span>objdir
../configure <span class="nt">--prefix</span><span class="o">=</span>/usr/local/systemc-2.3.3 <span class="nt">--enable-debug</span>
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
make check
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<h3 id="verilator---verilog-to-c-behavioural-model">Verilator - Verilog to C++ Behavioural Model</h3>
<blockquote>
<p>Verilator is a free and open-source software tool which converts Verilog (a hardware description language) to a cycle-accurate behavioral model in C++ or SystemC. It is restricted to modeling the synthesizable subset of Verilog and the generated models are cycle-accurate, 2-state, with synthesis (zero delay) semantics. - <a href="https://en.wikipedia.org/wiki/Verilator" target="_blank">Wikipedia</a></p>
</blockquote>
<p><strong>My Use Case:</strong> This my go to software for running tests on the designs that I develop. Its fast, easy to use and C++ based. Recently I used it with the <code class="language-plaintext highlighter-rouge">lowRISC ibex</code> RISC-V core to run a few simple assembly tests.</p>
<figure class="fig-left-float">
<img class="img-left-float" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/verilator_logo.png" alt="Verilator Logo" width="256px" />
</figure>
<p>Verilator can convert Verilog to C++ or SystemC based executables. We are going to compile Verilator with SystemC libraries but we can select during Verilog compilation whether we want the executable to be C++ or SystemC based. Having SystemC support comes in handy when you want to integrate your design with other SystemC based designs.</p>
<h4 id="prerequsite-packages-3">Prerequsite Packages</h4>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>perl python3 make
<span class="nb">sudo </span>apt <span class="nb">install </span>g++ ccache libgoogle-perftools-dev numactl
<span class="nb">sudo </span>apt <span class="nb">install </span>libfl2 libfl-dev zlibc zlib1g zlib1g-dev
<span class="nb">sudo </span>apt <span class="nb">install </span>git autoconf flex bison</code></pre></figure>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/verilator/verilator
<span class="nb">cd </span>verilator
git pull
git tag
git checkout stable
autoconf
<span class="nb">export </span><span class="nv">SYSTEMC_INCLUDE</span><span class="o">=</span>/usr/local/systemc-2.3.3/include
<span class="nb">export </span><span class="nv">SYSTEMC_LIBDIR</span><span class="o">=</span>/usr/local/systemc-2.3.3/lib-linux64
<span class="nb">unset </span>VERILATOR_ROOT
./configure <span class="nt">--prefix</span> /usr/local
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
make <span class="nb">test
sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">verilator -V</code> and it should print out the version information.</li>
</ul>
<p><strong>Additional Tasks:</strong> You will need to add the path of SystemC libraries to the GNU linker environment variable <code class="language-plaintext highlighter-rouge">LD_LIBRARY_PATH</code> so that Verilator can pick it up if need be during Verilog compilation. Add the following lines to your Shell’s configuration file.</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">export </span><span class="nv">SYSTEMC_LIBDIR</span><span class="o">=</span><span class="s1">'/usr/local/systemc-2.3.3/lib-linux64'</span>
<span class="nb">export </span><span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span><span class="s2">"</span><span class="nv">$LD_LIBRARY_PATH</span><span class="s2">:</span><span class="nv">$SYSTEMC_LIBDIR</span><span class="s2">"</span></code></pre></figure>
<h3 id="icestorm---lattice-ice40-fpga-development-tools">IceStorm - Lattice iCE40 FPGA Development Tools</h3>
<blockquote>
<p>Project IceStorm aims at documenting the bitstream format of Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream files. The IceStorm flow (Yosys, Arachne-pnr, and IceStorm) is a fully open source Verilog-to-Bitstream flow for iCE40 FPGAs. - <a href="http://www.clifford.at/icestorm/" target="_blank">Project IceStorm</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Program my <a href="https://www.latticesemi.com/icestick" target="_blank">iCEstick Evaluation Board</a> based on the Lattice iCE40 HX1K FPGA.</p>
<h4 id="prerequsite-packages-4">Prerequsite Packages</h4>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">sudo </span>apt <span class="nb">install </span>build-essential clang bison flex libreadline-dev <span class="se">\</span>
gawk tcl-dev libffi-dev git mercurial graphviz <span class="se">\</span>
xdot pkg-config python python3 libftdi-dev <span class="se">\</span>
qt5-default python3-dev libboost-all-dev cmake libeigen3-dev</code></pre></figure>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/cliffordwolf/icestorm.git icestorm
<span class="nb">cd </span>icestorm
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<h3 id="nextpnr---fpga-place-and-route-tool">NextPnR - FPGA Place and Route Tool</h3>
<blockquote>
<p>nextpnr aims to be a vendor neutral, timing driven, FOSS FPGA place and route tool. - <a href="https://github.com/YosysHQ/nextpnr" target="_blank">NextPnR GitHub</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Place and Route Yosys synthesized design for my <a href="https://www.latticesemi.com/icestick" target="_blank">iCEstick Evaluation Board</a>.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/nextpnr.png" alt="NextPnR GUI" width="740px" />
</figure>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/YosysHQ/nextpnr nextpnr
<span class="nb">cd </span>nextpnr
cmake <span class="nt">-DARCH</span><span class="o">=</span>ice40 <span class="nt">-DCMAKE_INSTALL_PREFIX</span><span class="o">=</span>/usr/local <span class="nb">.</span>
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">nextpnr-ice40 -V</code> and it should print out the version information.</li>
</ul>
<h3 id="symbiyosys---formal-verification-tool">SymbiYosys - Formal Verification Tool</h3>
<blockquote>
<p><a href="https://symbiyosys.readthedocs.io" target="_blank">SymbiYosys</a> (sby) is a front-end driver program for Yosys-based formal hardware verification flows. - <a href="https://github.com/YosysHQ/SymbiYosys" target="_blank">SymbiYosys GitHub</a></p>
</blockquote>
<p><strong>My Use Case:</strong> Formal verification of my Verilog RTL designs.</p>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/YosysHQ/SymbiYosys.git SymbiYosys
<span class="nb">cd </span>SymbiYosys
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<h3 id="yices-2-z3--bootlector---smt-solvers">Yices 2, Z3 & Bootlector - SMT Solvers</h3>
<p><strong>My Use Case:</strong> <a href="https://en.wikipedia.org/wiki/Satisfiability_modulo_theories" target="_blank">SMT</a> solvers for SmbiYosys formal verification flow</p>
<h4 id="yices2">Yices2</h4>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/SRI-CSL/yices2.git yices2
<span class="nb">cd </span>yices2
autoconf
./configure
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<ul>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">yices -V</code> and it should print out the version information.</li>
</ul>
<h4 id="z3">Z3</h4>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/Z3Prover/z3.git z3
<span class="nb">cd </span>z3
python scripts/mk_make.py
<span class="nb">cd </span>build
make <span class="c">#Use make -j$(nproc) is nproc is installed</span>
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre></figure>
<h4 id="boolector">Boolector</h4>
<ul>
<li>Run the following commands:</li>
</ul>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">git clone https://github.com/boolector/boolector
<span class="nb">cd </span>boolector
./contrib/setup-btor2tools.sh
./contrib/setup-lingeling.sh
./configure.sh
make <span class="nt">-C</span> build <span class="c">#Use make -C build -j$(nproc) is nproc is installed</span>
<span class="nb">sudo cp </span>build/bin/<span class="o">{</span>boolector,btor<span class="k">*</span><span class="o">}</span> /usr/local/bin/
<span class="nb">sudo cp </span>deps/btor2tools/bin/btorsim /usr/local/bin/</code></pre></figure>
<ul>
<li>Check the installation by running <code class="language-plaintext highlighter-rouge">boolector -V</code> and it should print out the version information.</li>
</ul>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-25-installing-open-source-silicon-design-tools/fin.jpg" alt="PC from the 2000's" width="740px" />
<figcaption class="capt-center"><a href="https://www.flickr.com/photos/christophebecker/39643834842" target="_blank">That's all Folks!</a> by <a href="https://www.flickr.com/photos/christophebecker/" target="_blank">Christophe Becker</a> is licensed under <a href="https://creativecommons.org/licenses/by-nd/2.0/" target="_blank">CC BY-ND 2.0</a></figcaption>
</figure>Soumil HeblePC Build After 12 Years2020-07-13T15:00:00+00:002020-07-13T15:00:00+00:00https://decryptronics.github.io/personal/2020/07/13/pc-build-after-12-years<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/final_build.jpg" alt="My Workstation" width="740px" />
<figcaption class="capt-center">My Workstation</figcaption>
</figure>
<p>Building my PC had been on my mind ever since I came to the US in August 2018 for my Masters but there were several reasons why I decided to hold off until February 2020.</p>
<ul>
<li>It was more of a <code class="language-plaintext highlighter-rouge">want</code> than a <code class="language-plaintext highlighter-rouge">need</code> at that point in time and an expensive investment.</li>
<li>There was a high chance that any Job I landed after my Masters would not be in Raleigh, NC. So a PC being a large piece of technology and would incur some additional moving expenses.</li>
<li>I would not have been doing anything useful with all that power since I planned to build a gaming PC. I was busy with my education/assignments and whatever free time I had was spent sleeping, eating, or watching movies/TV series online.</li>
<li>I rarely used to play games back then. I started playing <code class="language-plaintext highlighter-rouge">Dota 2</code> and <code class="language-plaintext highlighter-rouge">CS:GO</code> regularly during my last semester.</li>
</ul>
<p>So, I decided to hold off on purchasing one, until I landed a job at AMD, Inc in the first half of my last semester. As soon as I graduated from NC State, I decided that I’d build a PC with my sign-on bonus.</p>
<h2 id="what-would-i-do-with-my-machine">What Would I Do With My Machine?</h2>
<p>This is the most important question that determines what parts to select for your PC. This question also encompasses the question <em>What features do I need on my PC?</em></p>
<p><strong>My requirements were:</strong></p>
<ul>
<li>Gaming on a 2K monitor, medium settings with at at least 90Hz refresh rate</li>
<li>Running design synthesis, PnR tools, and compilation tools quickly
<ul>
<li>Basically, I required multi-threading - at least 4 cores</li>
</ul>
</li>
<li>Quick OS boot with dual boot setup
<ul>
<li>Nowadays I only use Windows 10 for Gaming, Linux for everything else</li>
<li>Needed SSDs as Boot Drives</li>
</ul>
</li>
<li>A color-accurate display - I like the saturated colors of my phone’s AMOLED display and hated the faded colors of my previous laptop’s TN panel.</li>
<li>It should be powerful enough for about 5 years for my tasks</li>
</ul>
<h3 id="the-parts">The Parts</h3>
<p>With a budget of $2000 I set-off looking for parts in January 2020, just before the COVID-19 pandemic scare set in.</p>
<h4 id="the-cpu-and-gpu"><strong>The CPU and GPU</strong></h4>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/cpu_gpu.jpg" alt="AMD Ryzen 5 3600 & AMD Radeon RX 5700XT" width="740px" />
<figcaption class="capt-center">AMD Ryzen 5 3600 & AMD Radeon RX 5700XT</figcaption>
</figure>
<p><strong>CPU</strong></p>
<figure class="fig-left-float">
<img class="img-left-float" src="/media/posts/2020-07-13-pc-build-after-12-years/cpu_closeup.jpg" alt="AMD Ryzen 5 3600 Close-up" width="400px" />
<figcaption class="capt-left-float">AMD Ryzen 5 3600 Close-up</figcaption>
</figure>
<p>I decided to go for <code class="language-plaintext highlighter-rouge">AMD "Matisse" Ryzen 5 3600</code> for the CPU. During that time it was being touted as the best and most economical CPU for ultra-setting 1080p gaming and general applications. It fit my requirements of medium-setting 2K gaming and multi-threading of at least 4 cores (Ryzen 3600 has 6 cores).</p>
<p>My previous experience with an AMD system was not great. I owned an <code class="language-plaintext highlighter-rouge">HP Pavilion g6-1b60us</code> before an HP Pavilion 15 e038tx and the current Lenovo ThinkPad Carbon X1 6th Generation. The g6-1b60us had an <code class="language-plaintext highlighter-rouge">AMD "Llano" Dual-Core A4-3300M APU</code> which ran hot and had poor battery life.</p>
<p>Six years later AMD launched processors based on the Zen architecture which had a massive improvement in performance and power efficiency while being economical. When I was an intern at AMD in the summer of 2019, the Ryzen 3000 series of processors were launched. The launch was very successful because of TSMC’s 7nm process node, Zen 2 Microarchitecture, and the huge IPC gains and performance efficiency that came with it. Apart from being a great product, as an employee, I get a discount on AMD’s products. AMD’s commitment to support the AM4 platform for another year was also a huge factor in my decision. Even if I don’t plan to upgrade my CPU for at least 4 years having a motherboard with support for the next generation CPUs is a bonus.</p>
<p><strong>GPU</strong></p>
<p>NVIDIA has some really good GPUs but I went for Gigabyte Radeon RX 5700XT Gaming OC 8GB card. I got an employee discount and it’s a good card for 2K gaming and surpasses the NVIDIA RTX 2060 Super for about the same price.</p>
<h4 id="parts-list">Parts List</h4>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/pc_parts.jpg" alt="PC Parts Ensemble" width="740px" />
<figcaption class="capt-center">PC Parts Ensemble</figcaption>
</figure>
<table>
<thead>
<tr>
<th style="text-align: center">Parts</th>
<th style="text-align: center">Price</th>
<th style="text-align: center"> </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center"><a href="https://www.amd.com/en/products/cpu/amd-ryzen-5-3600" target="_blank">AMD Ryzen 5 3600</a></td>
<td style="text-align: center">$139.45</td>
<td style="text-align: center">CPU</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.coolermaster.com/catalog/coolers/cpu-air-coolers/hyper-212-black-edition/" target="_blank">Cooler Master Hyper 212 Black 120mm</a></td>
<td style="text-align: center">$31.86</td>
<td style="text-align: center">CPU Cooler</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://noctua.at/en/nt-h1-3-5g" target="_blank">Noctua NT-H1 Pro-Grade</a></td>
<td style="text-align: center">$8.39</td>
<td style="text-align: center">Thermal Paste</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.gigabyte.com/us/Graphics-Card/GV-R57XTGAMING-OC-8GD-rev-10#kf" target="_blank">Gigabyte Radeon RX 5700 XT Gaming OC</a></td>
<td style="text-align: center">$370.27</td>
<td style="text-align: center">GPU</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.asus.com/Motherboards/TUF-GAMING-X570-PLUS-WI-FI/" target="_blank">ASUS TUF Gaming X570-Plus (WiFi)</a></td>
<td style="text-align: center">$195.49</td>
<td style="text-align: center">Motherboard</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.newegg.com/g-skill-16gb-288-pin-ddr4-sdram/p/N82E16820232880" target="_blank">G.SKILL Ripjaws V Series 16GB (2 x 8GB) DDR4 3200MHz CL16</a></td>
<td style="text-align: center">$78.61</td>
<td style="text-align: center">RAM</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.silicon-power.com/web/product-Ace_A55" target="_blank">Silicon Power 256GB SATAIII</a></td>
<td style="text-align: center">$42.49</td>
<td style="text-align: center">Windows 10 OS - SSD</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.intel.com/content/www/us/en/products/memory-storage/solid-state-drives/consumer-ssds/7-series/ssd-760p-series/760p-series-256gb-m-2-80mm-3d2.html" target="_blank">Intel SSD 760p 256GB NVME</a></td>
<td style="text-align: center">$0 (Salvaged from Laptop)</td>
<td style="text-align: center"><a href="https://kubuntu.org/" target="_blank">Kubuntu 20.04 LTS</a> - SSD</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.seagate.com/internal-hard-drives/hdd/firecuda/" target="_blank">Seagate FireCuda Gaming (Compute) 2TB</a></td>
<td style="text-align: center">$79.67</td>
<td style="text-align: center">Mass Storage - HDD</td>
</tr>
<tr>
<td style="text-align: center"><a href="www.phanteks.com/Eclipse-P400A.html" target="_blank">Phanteks Eclipse P400A</a></td>
<td style="text-align: center">$82.35</td>
<td style="text-align: center">Case</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/cxm-series-2015-config/p/CP-9020103-NA" target="_blank">Corsair CX Series 650 Watt 80 Plus Bronze</a></td>
<td style="text-align: center">$84.99</td>
<td style="text-align: center">PSU</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://noctua.at/en/nf-s12b-redux-1200-pwm" target="_blank">Noctua NF-S12B redux</a></td>
<td style="text-align: center">$44.31</td>
<td style="text-align: center">Case Fans</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.pixiogaming.com/px7" target="_blank">Pixio PX7 Prime 2K IPS 165Hz</a></td>
<td style="text-align: center">$403.74</td>
<td style="text-align: center">Great Features, 95% DCI P3 Color Gamut</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/dp/B07C9V1NF1/ref=twister_B07ZNBQKWX?_encoding=UTF8&psc=1" target="_blank">PC RGB LED Strip</a></td>
<td style="text-align: center">$25.49</td>
<td style="text-align: center">RGB</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.corsair.com/us/en/Categories/Products/Gaming-Keyboards/Mechanical-Gaming-Keyboards/K68-Mechanical-Gaming-Keyboard-%E2%80%94-Red-LED-%E2%80%94-CHERRY%C2%AE-MX-Red/p/CH-9102020-NA" target="_blank">Corsair K68</a></td>
<td style="text-align: center">$74.36</td>
<td style="text-align: center">Cherry MX Red Mechanical Keyboard</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/Avantree-Aluminum-Headphone-Sennheiser-Accessories/dp/B01A09KCJ4" target="_blank">Avantree Aluminum Metal Headphone Stand</a></td>
<td style="text-align: center">$21.24</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/VicTsing-Extended-31-5%C3%9715-75%C3%970-12-Computer-Water-Resistant/dp/B0794WBPHK" target="_blank">Victsing Extended Gaming Mouse Pad</a></td>
<td style="text-align: center">$14.86</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/AmazonBasics-8-Outlet-Surge-Protector-6-Foot/dp/B07GFRKSXD" target="_blank">AmazonBasics 8-Outlet Power Strip Surge Protector</a></td>
<td style="text-align: center">$17.61</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/Soundcore-Cancelling-Headphones-Wireless-Bluetooth/dp/B07NM3RSRQ" target="_blank">Anker SoundCore Life Q20</a></td>
<td style="text-align: center">$42.5</td>
<td style="text-align: center">Bluetooth 5.0 Headset</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/atolla-Splitter-Switch-Charging-Adapter/dp/B00W9FLKTY" target="_blank">Powered USB 3.0 HUB</a></td>
<td style="text-align: center">$20.18</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/Twisted-Veins-Premium-Ethernet-Supports/dp/B014EV0G3G" target="_blank">HDMI Cables</a></td>
<td style="text-align: center">$8.46</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.amazon.com/MillSO-3-5mm-Jack-Adapter-CTIA/dp/B071NDLCGC" target="_blank">Headset Combiner</a></td>
<td style="text-align: center">$7</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.newegg.com/steelseries-62352-rival-300-fallout-4-edition-wired/p/N82E16826249211" target="_blank">SteelSeries Rival 300 Fallout 4</a></td>
<td style="text-align: center">$0 (Pre-Owned)</td>
<td style="text-align: center">Gaming Mouse</td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.microsoft.com/en-us/education/products/windows" target="_blank">Windows 10 Education</a></td>
<td style="text-align: center">$0</td>
<td style="text-align: center"> </td>
</tr>
<tr>
<td style="text-align: center"><a href="https://www.g2a.com/en-us/microsoft-office-professional-2019-plus-1-pc-microsoft-key-global-i10000188863004" target="_blank">Microsoft Office Professional 2019 Plus</a></td>
<td style="text-align: center">$24.94</td>
<td style="text-align: center"> </td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: center"><strong>Total</strong></td>
<td style="text-align: center"><strong>$1818.26</strong></td>
<td style="text-align: center"> </td>
</tr>
</tfoot>
</table>
<ul>
<li><em>All prices are after any rebates and MA sales tax.</em></li>
</ul>
<h3 id="the-assembly">The Assembly</h3>
<p>Before putting all the parts in the case I recommend connecting all the parts on a bench and testing it out. This gives easy access to all the parts and if any one fails or is incompatible you can easily get it replaced.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/initial_testing.jpg" alt="Initial Testing" width="740px" />
<figcaption class="capt-center">Initial Testing</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/case_front.jpg" alt="Case Assembly - Front" width="740px" />
<figcaption class="capt-center">Case Assembly - Front</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-13-pc-build-after-12-years/case_back.jpg" alt="Case Assembly - Back" width="740px" />
<figcaption class="capt-center">Case Assembly - Back</figcaption>
</figure>Soumil HebleMy WorkstationJailbreaking My Kindle Paperwhite 32020-07-12T12:00:00+00:002020-07-12T12:00:00+00:00https://decryptronics.github.io/electronics/2020/07/12/jailbreaking-my-kindle-paperwhite-3<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_post_banner.jpg" alt="PC from the 2000's" width="700px" />
<figcaption class="capt-center"><a href="https://www.flickr.com/photos/matt_gibson/21693789403" target="_blank">Amazon Kindle Paperwhite</a> by <a href="https://www.flickr.com/photos/matt_gibson/" target="_blank">Matt Gibson</a> is licensed under <a href="https://creativecommons.org/licenses/by-nc/2.0/" target="_blank">CC BY-NC 2.0</a></figcaption>
</figure>
<p><a href="https://en.wikipedia.org/wiki/Amazon_Kindle#Kindle_Paperwhite_(third_generation)" target="_blank">Amazon Kindle Paperwhite 3</a> is an excellent book reader. Amazon makes one of the best and affordable eBook readers. E-ink displays have improved a lot over the years and reading on one of these devices is visually close to reading material books. Apart from the visual experience eBook readers are environmentally friendly and compact (You can easily read a few hundred books while carrying only a few grams of weight).</p>
<p><strong>This jailbreak is heavily based on <a href="https://www.mobileread.com/forums/member.php?u=266535" target="_blank">grant2</a> <a href="https://www.mobileread.com/forums/showthread.php?t=267541" target="_blank">post</a> on <a href="https://www.mobileread.com/" target="_blank">mobileread.com </a></strong></p>
<p><code class="language-plaintext highlighter-rouge">The last section of this article titled References might be helpful if you have a different model of Kindle.</code></p>
<h3 id="why-i-jailbroke-my-kindle">Why I Jailbroke my Kindle?</h3>
<p>These days I read more research papers and white papers than books. It’s easy to purchase eBooks from Amazon and read them but a lot of the literature I tend to read is in PDF. Even though Amazon offers a <a href="https://www.amazon.com/gp/sendtokindle/email" target="_blank">Mail to Kindle</a> service for PDF’s it does not render some aspects of PDFs properly like figures, tables, etc. Jailbreaking your Kindle gives you additional features like applying custom screensavers, loading custom fonts, installing apps for reading comic books better, support for popular eBook extensions like <a href="https://en.wikipedia.org/wiki/EPUB" target="_blank">EPUB</a> and <a href="https://en.wikipedia.org/wiki/Mobipocket" target="_blank">Mobipocket (Mobi)</a> and the most important of all is using <a href="https://github.com/koreader/koreader" target="_blank">KOreader</a> which handles PDF formatting better on Kindle.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_jb_intro.jpg" alt="Kindle with Front Panel Removed" width="600px" />
</figure>
<h3 id="my-kindle-configuration-before-jailbreak">My Kindle Configuration Before Jailbreak</h3>
<table>
<thead>
<tr>
<th style="text-align: center">Kindle PaperWhite 3 (2015) WiFi</th>
<th style="text-align: center"> </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">Serial Number</td>
<td style="text-align: center">G090 G1</td>
</tr>
<tr>
<td style="text-align: center">Firmware Version</td>
<td style="text-align: center">Kindle 5.12.4 (3602730042)</td>
</tr>
</tbody>
</table>
<h3 id="jailbreaking-requirements">Jailbreaking Requirements</h3>
<p>There are two methods to jailbreak your kindle:</p>
<ol>
<li>Software Jailbreak - <code class="language-plaintext highlighter-rouge">(Firmware Version >= 5.6.x)</code></li>
<li>Serial Jailbreak - <code class="language-plaintext highlighter-rouge">(Other Firmware Versions)</code></li>
</ol>
<p>Since my Kindle has the latest Firmware as of July 2020, I could only use the serial jailbreak method.</p>
<p>I am not going to explain how to solder or how to establish a serial connection with the USB to Serial converter. Please use Google or refer the following pages:</p>
<ul>
<li><a href="https://youtu.be/QKbJxytERvg" target="_blank">Soldering</a></li>
<li><a href="https://pbxbook.com/voip/sputty.html" target="_blank">Using Putty</a></li>
</ul>
<h4 id="tools-used">Tools Used</h4>
<p>This is the exact list of tools that I used. You can make do with less and also find alternatives that suit you.</p>
<ul>
<li><a href="https://www.ifixit.com/Store/Tools/Prying-and-Opening-Tool-Assortment/IF145-364?o=1" target="_blank">iFixit Prying Tools</a></li>
<li><a href="https://www.hakkousa.com/products/soldering/hakko-fx-888d-digital-soldering-station-10148.html" target="_blank">Soldering Equipment</a></li>
<li>30AWG Tinned Copper Wire</li>
<li>Kapton Tape</li>
<li>Electrical Tape</li>
<li><a href="https://www.sparkfun.com/products/12009" target="_blank">Sparkfun Bi-directional Logic Level Converter</a></li>
<li><a href="https://robotdyn.com/usb-ttl-serial-adapter-cp2102-5v-3-3v-usb-a.html" target="_blank">CP2102 USB to Serial Converter</a></li>
<li>Breadboard</li>
<li>Spare Jumper Cables</li>
<li>Linux/Windows PC</li>
<li><a href="https://hackaday.com/2017/08/20/dps5005-makes-digital-power-supply-a-snap/" target="_blank">A Variable DC-DC Power Supply</a></li>
</ul>
<h3 id="preparing-your-kindle-for-jailbreak">Preparing your Kindle for Jailbreak</h3>
<p><code class="language-plaintext highlighter-rouge">Backup</code> all your <code class="language-plaintext highlighter-rouge">Kindle content</code> and <code class="language-plaintext highlighter-rouge">Device Info</code> from the setting menu. Take note of your Firmware Version, Wi-Fi MAC, Serial#. Calibre is a great piece of software to manage your Kindle content, find book covers, and metadata among other things. <code class="language-plaintext highlighter-rouge">Factory Reset</code> your Kindle and make sure your Kindle is in <code class="language-plaintext highlighter-rouge">Airplane mode</code> and <code class="language-plaintext highlighter-rouge">all wireless connections are forgotten.</code></p>
<p>Power off your kindle by holding the button on the bottom for <code class="language-plaintext highlighter-rouge">10 seconds</code> and select <code class="language-plaintext highlighter-rouge">SCREEN OFF</code>.</p>
<h3 id="getting-access-to-kindles-serial-port">Getting Access to Kindle’s Serial Port</h3>
<blockquote>
<p style="color:red">DISCLAIMER: I am not an expert in jailbreaking Kindle, my experience is limited to online guides and tutorials. If your Kindle gets bricked <b>I AM NOT RESPONSIBLE</b>. Google for solutions or refer the Help/FAQ Section at the end of this article.</p>
</blockquote>
<p>Follow <a href="https://www.ifixit.com/" target="_blank">iFixit’s</a> Guide on <a href="https://www.ifixit.com/Guide/Kindle+Paperwhite+3+(7th+Generation)+Battery+Replacement/61550" target="_blank">Battery Replacement</a> up to <code class="language-plaintext highlighter-rouge">Step 5</code> to get access to the back of the PCB. Remove 3 screws and remove the battery for the next step.</p>
<h3 id="setting-up-a-serial-connection-between-kindle-and-your-pc">Setting Up a Serial Connection between Kindle and your PC</h3>
<p>As almost every tablet/cellular/multimedia device runs on some form of Linux, no surprise here, Kindle also runs on one and the hardware designers have a serial port exposed on the PCB for debugging and maintenance. You’ll need to <code class="language-plaintext highlighter-rouge">solder</code> some wires to the pads on the PCB to access the port.</p>
<p>Refer to the image below for the pads with which we can access the serial port. If you need access to a <code class="language-plaintext highlighter-rouge">1.8 V</code> supply use the <code class="language-plaintext highlighter-rouge">GND</code> pad and probe other pads to locate one.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_serial_port.jpg" alt="Kindle PW3 Serial Port PCB Pads" width="600px" />
<figcaption class="capt-center">Close-up of Serial Port in Kindle PW3</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_solder_closeup.jpg" alt="Kindle PW3 Serial Pads Soldered" width="600px" />
<figcaption class="capt-center">Kindle PW3 Serial Pads Soldered with Precision</figcaption>
</figure>
<p>Ther serial port on Kindle is 1.8V and the module I used is compatible with a <code class="language-plaintext highlighter-rouge">3.3V</code> serial port hence I used a Bi-directional Logic Level converter to make the USB to Serial converter work with Kindle. Instead of using the Kindle for a <code class="language-plaintext highlighter-rouge">1.8V</code> supply, I used a DC-DC variable power supply to power the logic converter. Below is a block diagram of the setup.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/setup_block_diagram.jpg" alt="Setup Block Diagram" width="600px" />
<figcaption class="capt-center">Setup Block Diagram</figcaption>
</figure>
<table>
<thead>
<tr>
<th style="text-align: center">USB to UART</th>
<th style="text-align: center">Kindle</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">TX</td>
<td style="text-align: center">RX</td>
</tr>
<tr>
<td style="text-align: center">RX</td>
<td style="text-align: center">TX</td>
</tr>
<tr>
<td style="text-align: center">GND</td>
<td style="text-align: center">GND</td>
</tr>
</tbody>
</table>
<p>You’ll need access to the screen for the next steps so pop in the battery you removed for soldering wires to the serial port.</p>
<h3 id="getting-root-access-to-your-kindle">Getting Root Access to Your Kindle</h3>
<p><strong>Overview</strong></p>
<ol>
<li>Getting Kindle’s Password</li>
<li>Setting Up Your COM Port</li>
<li>Getting Into Diagnostics Boot</li>
<li>Removing Password for <code class="language-plaintext highlighter-rouge">root</code> User</li>
<li>Jailbreak</li>
</ol>
<h4 id="getting-your-kindles-password">Getting your Kindle’s Password</h4>
<p>You should have Python installed on your system to generate the password to access Kindle as a <code class="language-plaintext highlighter-rouge">root</code> user. Run the following commands in Python to get your root password specific to your Kindle’s Serial Number. Do not forget to substitute your Kindle’s serial# in the command.</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">import</span> <span class="nn">hashlib</span>
<span class="k">print</span><span class="p">(</span><span class="s">"fiona%s"</span><span class="o">%</span><span class="n">hashlib</span><span class="p">.</span><span class="n">md5</span><span class="p">(</span><span class="s">"<your kindle serial number with no spaces and all capital letters></span><span class="se">\n</span><span class="s">"</span><span class="p">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">)).</span><span class="n">hexdigest</span><span class="p">()[</span><span class="mi">13</span><span class="p">:</span><span class="mi">16</span><span class="p">])</span> </code></pre></figure>
<p>Post running these commands you should get your root password. It should have the following format <code class="language-plaintext highlighter-rouge">fionaxxx</code>. The <code class="language-plaintext highlighter-rouge">xxx</code> will be three characters specific to your device.</p>
<h4 id="setting-up-your-com-port">Setting Up Your COM Port</h4>
<p>Use the following settings in PuTTy to connect to your Kindle.</p>
<table>
<tbody>
<tr>
<td>Speed (Baud Rate)</td>
<td>115200</td>
</tr>
<tr>
<td>Data Bits</td>
<td>8</td>
</tr>
<tr>
<td>Stop Bits</td>
<td>1</td>
</tr>
<tr>
<td>Parity</td>
<td>None</td>
</tr>
<tr>
<td>Flow Control</td>
<td>None</td>
</tr>
</tbody>
</table>
<h4 id="getting-into-diagnostics-boot">Getting Into Diagnostics Boot</h4>
<p>Turn on your Kindle and you should see some text on the serial terminal (PuTTy). When you see something hit any key to stop autoboot press any key to interrupt the process or better yet keep pressing any key after you see text appear. You should be left with a prompt something like this:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">uboot></code></pre></figure>
<p>Type the following command to boot into the diagnostics menu:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">uboot> bootm 0xE41000</code></pre></figure>
<p>You should see a menu on your Kindle’s screen. Refer to the two images below to gain access to the login prompt on PuTTy.</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">kindle login:</code></pre></figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_diag_1.jpg" alt="System Diagnostics Menu" width="600px" />
<figcaption class="capt-center">Screen 1: System Diagnostics Menu</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_diag_2.jpg" alt="Reboot or Disable Diags Menu" width="600px" />
<figcaption class="capt-center">Screen 2: Reboot or Disable Diags Menu</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_diag_3.jpg" alt="Kindle Screen After Login Prompt" width="600px" />
<figcaption class="capt-center">Screen 3: Kindle Screen After Login Prompt on PuTTy</figcaption>
</figure>
<p>Enter the following details to get the root prompt <code class="language-plaintext highlighter-rouge">[root@kindle root]#</code>. As Kindle is using linux you won’t see the password being typed on PuTTy:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">kindle login: root
password: fionaxxx <span class="o">(</span>The one you generated above using Python<span class="o">)</span> </code></pre></figure>
<h4 id="removing-password-for-root-user">Removing Password for root User</h4>
<p>This section removes the need for entering password for the main root account.</p>
<p>Mount the system partition to access the linux <code class="language-plaintext highlighter-rouge">passwd</code> file. Run the following commands:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">mkdir</span> /tmp/main
mount /dev/mmcblk0p1 /tmp/main
vi /tmp/main/etc/passwd </code></pre></figure>
<p>This will open the linux <code class="language-plaintext highlighter-rouge">passwd</code> file in vi editor. Make the following edits to this file. At the top of the file you should see</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">root:x:0:0:root:/tmp/root:/bin/sh</code></pre></figure>
<p>after it there might be some other lines. You need to remove the first <code class="language-plaintext highlighter-rouge">x</code> after <code class="language-plaintext highlighter-rouge">root</code> on the first line to get</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell">root::0:0:root:/tmp/root:/bin/sh</code></pre></figure>
<p>and save the file.</p>
<p><strong>Steps to Follow after <code class="language-plaintext highlighter-rouge">vi</code> is opened:</strong></p>
<ul>
<li>Move the cursor to the colon before the <code class="language-plaintext highlighter-rouge">x</code></li>
<li>Press <code class="language-plaintext highlighter-rouge">i</code> then the <code class="language-plaintext highlighter-rouge">Delete</code> Key</li>
<li>Press <code class="language-plaintext highlighter-rouge">Esc</code> Key</li>
<li>Press <code class="language-plaintext highlighter-rouge">:</code> Key then type <code class="language-plaintext highlighter-rouge">wq</code> and press <code class="language-plaintext highlighter-rouge">Enter</code> to save the file</li>
</ul>
<p>Type <code class="language-plaintext highlighter-rouge">reboot</code> on the prompt after saving the file and press <code class="language-plaintext highlighter-rouge">Enter</code>, you should see your Kindle reboot and see some text your Kindle as well as PuTTy.</p>
<h3 id="jailbreak">Jailbreak</h3>
<p><code class="language-plaintext highlighter-rouge">All the tools/files you require for following sections can be found at the</code> <a href="https://www.mobileread.com/forums/showthread.php?t=225030" target="_blank">Tool Snapshots Page</a> and look for the tools under the sections <strong>Packages targeting the Kindle 5 (Touch/PW1/PW2/KT2/KV/PW3/KOA/KT3/KOA2/PW4/KT4)</strong> and <strong>KUAL & KUAL extensions</strong>.</p>
<p>For this section you will need the <code class="language-plaintext highlighter-rouge">K5 JailBreak (5.0.x - 5.4.4.2)</code> tar.xz file.</p>
<ol>
<li>Unzip the tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the following files from <code class="language-plaintext highlighter-rouge">kindle-5.4-jailbreak</code> inside the extracted directory to Kindle’s root directory
<ul>
<li>bridge.conf</li>
<li>bridge.sh</li>
<li>developer.keystore</li>
<li>gandalf</li>
<li>jb.sh</li>
<li>json_simple-1.1.jar</li>
<li>Update_jb_$(cd mnt && cd us && sh jb.sh).bin</li>
</ul>
</li>
<li>Eject Kindle Drive</li>
</ol>
<p>Type the following commands on PuTTy:</p>
<figure class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">cd</span> /mnt/us
sh jb.sh</code></pre></figure>
<p>The jailbreak script will do its magic and you should see the word <code class="language-plaintext highlighter-rouge">JAILBREAK</code> at the bottom of your Kindle.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_jb.jpg" alt="Kindle Jailbreak Message" width="600px" />
<figcaption class="capt-center">Kindle Jailbreak Message</figcaption>
</figure>
<p>Reboot Kindle by typing the <code class="language-plaintext highlighter-rouge">reboot</code> command on PuTTy. If the jailbreak is a success you should see the following directories in your Kindle’s root directory.</p>
<ul>
<li>mkk</li>
<li>rp</li>
</ul>
<h3 id="jailbreak-hotfix">Jailbreak Hotfix</h3>
<blockquote>
<p>If you’ve just successfully ran any iteration of a Factory JailBreak, this is your next step - <a href="https://www.mobileread.com/forums/showpost.php?p=3004892&postcount=1597" target="_blank">JB Hotfix Page</a></p>
</blockquote>
<p>For this section you will need the <code class="language-plaintext highlighter-rouge">K5 JailBreak Hotfix</code> zip file.</p>
<ol>
<li>Unzip the tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the <code class="language-plaintext highlighter-rouge">Update_jailbreak_hotfix_1.16.N_install.bin</code> file from the extracted directory to Kindle’s root directory</li>
<li>Eject Kindle Drive</li>
<li>On your Kindle, Go To: Settings -> All Settings -> Device Options -> Advanced Options -> Update Your Kindle</li>
<li>This will execute the <code class="language-plaintext highlighter-rouge">.bin</code> you copied above and install the hotfix.</li>
</ol>
<h3 id="installing-mrpi-or-mobileread-package-installer">Installing MRPI or MobileRead Package Installer</h3>
<blockquote>
<p>This is a KUAL extension, that will plug into the Helper menu a single Install MR Packages button. - <a href="https://www.mobileread.com/forums/showthread.php?t=251143" target="_blank">MRPI Page</a></p>
</blockquote>
<p>I do not know what it does but from some forum post on <a href="www.mobileread.com" target="_blank">mobileread.com</a> said that this allows one to install KUAL which allows the running of 3rd Party apps and hence KOReader which was my aim.</p>
<p>For this section you will need the <code class="language-plaintext highlighter-rouge">MR Package Installer</code> tar.xz file.</p>
<ol>
<li>Unzip the tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the following directories from the extracted directory to Kindle’s root directory
<ul>
<li>extensions</li>
<li>mrpackages</li>
</ul>
</li>
</ol>
<h3 id="installing-kual">Installing KUAL</h3>
<blockquote>
<p>KUAL - Kindle Unified Application Launcher. This is a Launcher application, in which anybody can plug into to provide new buttons and menus through extensions. - <a href="https://www.mobileread.com/forums/showthread.php?t=203326" target="_blank">KUAL Page</a></p>
</blockquote>
<p>For this section you will need the <code class="language-plaintext highlighter-rouge">KUAL</code> and <code class="language-plaintext highlighter-rouge">Helper</code> tar.xz files.</p>
<ol>
<li>Unzip the <code class="language-plaintext highlighter-rouge">KUAL</code> tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the <code class="language-plaintext highlighter-rouge">Update_KUALBooklet_hotfix_v2.7.24_install.bin</code> file from the extracted directory to Kindle’s root directory</li>
<li>Eject Kindle Drive</li>
<li>On your Kindle, Go To: Settings -> All Settings -> Device Options -> Advanced Options -> Update Your Kindle</li>
<li>This will execute the <code class="language-plaintext highlighter-rouge">.bin</code> you copied above and install the hotfix.</li>
<li>You should see a book named <code class="language-plaintext highlighter-rouge">KUAL</code> in your Kindle Library.</li>
</ol>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_kual.jpg" alt="KUAL in Kindle Library" width="600px" />
<figcaption class="capt-center">KUAL in Kindle Library</figcaption>
</figure>
<ol>
<li>Unzip the <code class="language-plaintext highlighter-rouge">Helper</code> tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the contents of <code class="language-plaintext highlighter-rouge">extensions</code> directory from the extracted directory to the <code class="language-plaintext highlighter-rouge">extension</code> directory in Kindle’s root directory</li>
<li>Restart your Kindle</li>
</ol>
<h3 id="installing-koreader">Installing KOReader</h3>
<blockquote>
<p>KOReader is a document viewer primarily aimed at e-ink readers. - <a href="https://github.com/koreader/koreader" target="_blank">KOReader Github</a></p>
</blockquote>
<ol>
<li>Download <a href="https://github.com/koreader/koreader/releases/download/v2020.06/koreader-kindlepw2-v2020.06.zip" target="_blank">koreader-kindlepw2-v2020.06.zip</a> from <a href="https://github.com/koreader/koreader/releases" target="_blank">KOReader GitHub Download Page</a>. The release might change so keep that in mind but the file prefix will be <code class="language-plaintext highlighter-rouge">koreader-kindlepw2</code>.</li>
<li>Unzip the whole archive into the Kindle’s USB root directory</li>
<li>Restart your Kindle</li>
</ol>
<p>There’s an excellent <a href="https://github.com/koreader/koreader/wiki/Installation-on-Kindle-devices" target="_blank">tutorial on GitHub</a> to install KOReader, written by the developers.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_kual_menu.jpg" alt="KOReader in KUAL Menu" width="600px" />
<figcaption class="capt-center">KOReader in KUAL Menu</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_koreader_paper.jpg" alt="2 Column Research Paper Reflow in KOReader" width="600px" />
<figcaption class="capt-center">2 Column Research Paper Reflow in KOReader</figcaption>
</figure>
<h3 id="protecting-your-jailbreak-from-amazons-updates">Protecting Your Jailbreak from Amazon’s Updates</h3>
<p>I probably won’t connect my Kindle to Wi-Fi and manage documents using <a href="https://calibre-ebook.com/" target="_blank">Calibre</a>, but if you want to, make an empty directory named <code class="language-plaintext highlighter-rouge">update.bin.tmp.partial</code> in your Kindle’s root directory. This will confuse Kindle from updating automatically.</p>
<h3 id="installing-screensaver-hack-optional">Installing Screensaver Hack [Optional]</h3>
<p>If you want custom/personalized screensavers on your Kindle you can do so.</p>
<p>For this section you will need the <code class="language-plaintext highlighter-rouge">ScreenSavers Hack</code> and <code class="language-plaintext highlighter-rouge">Python 2.7 & Python 3.8</code> tar.xz files.</p>
<ol>
<li>Unzip the <code class="language-plaintext highlighter-rouge">ScreenSavers Hack</code> and <code class="language-plaintext highlighter-rouge">Python 2.7 & Python 3.8</code> tar.xz</li>
<li>Connect your Kindle to PC</li>
<li>Copy the <code class="language-plaintext highlighter-rouge">Update_python_0.15.N_install_pw2_kt2_kv_pw3_koa_kt3_koa2_pw4_kt4.bin</code> file from the extracted <code class="language-plaintext highlighter-rouge">Python</code> directory to the <code class="language-plaintext highlighter-rouge">mrpackages</code> directory in Kindle’s root directory.</li>
<li>Copy the <code class="language-plaintext highlighter-rouge">Update_linkss_0.25.N_install_pw2_kt2_kv_pw3_koa_kt3_koa2_pw4_kt4.bin</code> file from the extracted <code class="language-plaintext highlighter-rouge">ScreenSavers</code> directory to the <code class="language-plaintext highlighter-rouge">mrpackages</code> directory in Kindle’s root directory.</li>
<li>Eject Kindle Drive</li>
<li>Run KUAL -> Helper -> Install MR Packages</li>
</ol>
<p>You should see the Image below while Python is being installed. After the packages are installed your Kindle will reboot and you should see the second image below as your screensaver. Not getting the screensaver after hack? Check the README section in the <code class="language-plaintext highlighter-rouge">ScreenSavers</code> directory or the <code class="language-plaintext highlighter-rouge">references</code> section.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_screensaver_python.jpg" alt="Python Installing on Kindle" width="600px" />
<figcaption class="capt-center">Python Installing on Kindle</figcaption>
</figure>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_screensaver_success.jpg" alt="Kindle Screensaver Hack Successful" width="600px" />
<figcaption class="capt-center">Kindle Screensaver Hack Successful</figcaption>
</figure>
<p>There are several options that the screensaver hack provides refer the <code class="language-plaintext highlighter-rouge">README</code> file in the <code class="language-plaintext highlighter-rouge">ScreenSavers</code> directory. I’ll explain what mode I’m using:</p>
<blockquote>
<p>One the KV/PW3/KOA: PNG files, 1072x1448. Grayscale if possible, but color works too (you can even play with an alpha channel if you like). You <em>NEED</em> to follow these directives: non-PNG files will be discarded by the hack, and broken files or files in the wrong resolution will confuse the framework and trigger weird issues. - <code class="language-plaintext highlighter-rouge">ScreenSavers README File</code></p>
</blockquote>
<ol>
<li>Copy any of your PNG screensavers (compliant to the above specification) to the Kindle’s Root Directory/linkss/screensavers</li>
<li>On your Kindle, Go To KUAL -> Screen Savers -> Screen Savers Behavior -> Image Cycle (Default)</li>
<li>KUAL -> Screen Savers -> Screen Savers Tools -> Clear cover cache</li>
<li>KUAL -> Screen Savers -> Screen Savers Tools -> Clear personal info cache</li>
<li>KUAL -> Screen Savers -> Screen Savers Tools -> Restart framework now</li>
</ol>
<p>Your Kindle should restart the screensaver framework and the custom screensavers you added should be displayed on screen from now.</p>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-12-jailbreaking-my-kindle-paperwhite-3/kindle_my_screensaver.jpg" alt="KUAL in Kindle Library" width="600px" />
<figcaption class="capt-center">My Kindle's Screensaver</figcaption>
</figure>
<h3 id="helpfaq">Help/FAQ</h3>
<p><code class="language-plaintext highlighter-rouge">There are no issues with my jailbreak yet. I'll update this section if I find any.</code></p>
<h2 id="references">References</h2>
<ul>
<li>The <a href="https://www.mobileread.com/forums/showthread.php?t=267541" target="_blank">Main Reference</a> article for this hack</li>
<li>The <a href="https://www.mobileread.com/forums/showthread.php?p=3137590&postcount=1" target="_blank">Linux Specific Reference</a> article for this hack</li>
<li><a href="http://www.mobileread.mobi/forums/showthread.php?t=325971" target="_blank">Reference Post</a> for installing MRPI first before KUAL in newer firmwares</li>
<li><a href="https://www.mobileread.com/forums/showthread.php?t=225030" target="_blank">Reference Post</a> for the current Tool Snapshots</li>
</ul>Soumil HebleAmazon Kindle Paperwhite by Matt Gibson is licensed under CC BY-NC 2.0My Experiences with PC2020-07-02T12:00:00+00:002020-07-02T12:00:00+00:00https://decryptronics.github.io/personal/2020/07/02/my-experiences-with-pc<h2 id="the-good-ol-days">The Good Ol’ Days</h2>
<figure class="fig-center">
<img class="img-center" src="/media/posts/2020-07-02-my-experiences-with-pc/oldpc_flickr.jpg" alt="PC from the 2000's" width="400px" />
<figcaption class="capt-center"><a href="https://www.flickr.com/photos/sazfar/10792618" target="_blank">old pc</a> by <a href="https://www.flickr.com/photos/sazfar" target="_blank">Uncle Saiful</a> is licensed under <a href="https://creativecommons.org/licenses/by-nd/2.0/" target="_blank">CC BY-ND 2.0</a></figcaption>
</figure>
<h3 id="first-pc-experience">First PC Experience</h3>
<p>The first time I got my hands on a computer, more appropriately a PC was way back in 2001. My grandfather bought a brand new PC. The processor was an <code class="language-plaintext highlighter-rouge">Intel "Coppermine" Celeron</code>. The PC had a CRT monitor, a 56 Kbps dial-up internet, and an old-style CPU case in off white color. It had Windows 98 for an OS and my brother and I used to play <a href="https://en.wikipedia.org/wiki/Road_Rash_(video_game)" target="_blank">Road Rash</a>, <a href="https://en.wikipedia.org/wiki/Need_for_Speed_II" target="_blank">Need for Speed II</a> and online games on <a href="https://www.miniclip.com/games/en/" target="_blank">Miniclip</a>, and <a href="https://www.cartoonnetwork.com/games/" target="_blank">Cartoon Network</a>.</p>
<figure class="fig-right-float">
<img class="img-right-float" src="/media/posts/2020-07-02-my-experiences-with-pc/intelpentium4_flickr.jpg" alt="Intel Pentium 4" width="400px" />
<figcaption class="capt-right-float"><a href="https://www.flickr.com/photos/85638163@N00/4635655754/" target="_blank">Intel Pentium 4</a> by <a href="https://www.flickr.com/photos/85638163@N00/" target="_blank">Sh4rp_i</a> is licensed under <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a></figcaption>
</figure>
<h3 id="first-pc-at-home">First PC at Home</h3>
<p>Our school curriculum included computer science from middle school which taught us various parts of the PC, software like Microsoft Office (Word, Excel, PowerPoint, Access), MS Paint, Macromedia Flash, Visual Basic, and programming languages like Logo, C, and C++.</p>
<p>To help with our education my father bought a PC in 2003 and it had the <code class="language-plaintext highlighter-rouge">Intel "Northwood" Pentium 4</code>. It was similar to the PC I described above in terms of appearance and features. It ran Windows 98 as well.</p>
<p>Let me tell you the Internet service in India those days would test your patience. The dial-up service hijacked your phone lines when in use so you’d not be able to receive any calls or make any. The ISP in our region was <a href="https://en.wikipedia.org/wiki/Bharat_Sanchar_Nigam_Limited" target="_blank">BSNL</a> and the service was prepaid. You had to pay up to get a letter with the data top-up code. It was expensive and you had to keep track of how much data you used. It was about INR 800 or about $11 for a GB @ 56 Kbps. India and the world has come a long way in terms of Internet service offered then. The modem used signaling in audible range hence the <a href="https://www.youtube.com/watch?v=gsNaR6FRuO0" target="_blank">dial-up internet sounds</a>.</p>
<figure class="fig-left-float">
<img class="img-left-float" src="/media/posts/2020-07-02-my-experiences-with-pc/intelcore2duo_flickr.jpg" alt="Intel Core 2 Duo" width="400px" />
<figcaption class="capt-left-float"><a href="https://www.flickr.com/photos/wetwebwork/1106664852/" target="_blank">Intel Core 2 Duo</a> by <a href="https://www.flickr.com/photos/wetwebwork/" target="_blank">wetwebwork</a> is licensed under <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA 2.0</a></figcaption>
</figure>
<h2 id="my-first-pc-build">My First PC Build</h2>
<p>In 2008, our first PC was coming of age. It had slowed down considerably and was no longer able to run Windows XP smoothly and it definitely wouldn’t have been able to run Windows Vista or the then-upcoming Windows 7. So instead of hiring someone to upgrade the PC I hit up the internet, did some research, and proposed my father to lend me money for the parts and I’d build it myself.</p>
<p>I recall that I opted for <code class="language-plaintext highlighter-rouge">Intel "Conroe" Core 2 Duo</code> since it was moderately performant and was within the budget. Other peripherals and parts included an LGA775 compatible motherboard, a micro ATX case, and an optical DVD drive which was all the rage back then. In the process of building, I picked up several skills one of which was formatting a PC and installing the OS for which the technicians often charged INR 1600, about $20.</p>
<p>This PC served us for about 6 years until 2014. It was able to survive the replacement from a CRT monitor to an LCD, from an inkjet printer to a laser printer, and from dialup Internet to ADSL. Currently, I do not know what motherboard it has or processor since my father gets it serviced at a local shop but I do I last installed Windows 7 on it and it’s still in use.</p>Soumil HebleThe Good Ol’ DaysWelcome to deCryptronics!2020-07-01T12:00:00+00:002020-07-01T12:00:00+00:00https://decryptronics.github.io/personal/2020/07/01/welcome-to-decryptronics<div class="three-img-bar">
<ul>
<li><img src="/media/img/avatar/avatar_fun.png" alt="Funny Face" /></li>
<li><img src="/media/img/avatar/avatar_professional.png" alt="Serious Face" /></li>
<li><img src="/media/img/avatar/avatar_scene.png" alt="Casual Face" /></li>
</ul>
</div>
<h3 id="introduction"><strong>Introduction</strong></h3>
<p>Hi! My name is <code class="language-plaintext highlighter-rouge">Soumil</code>, <a href="https://soumilheble.github.io/" target="_blank">Soumil Heble</a>. Well, there’s a <a href="https://www.007.com/" target="_blank">007</a> reference for you. I’m a <code class="language-plaintext highlighter-rouge">Computer Engineer</code> by profession, as of 2020 I’m working as <code class="language-plaintext highlighter-rouge">Silicon Design Engineer 2</code> at <a href="https://www.amd.com/en" target="_blank">Advanced Micro Devices, Inc. (AMD)</a> in Boxborough, MA, USA. I work on supporting emulation efforts and verification of AMD’s flagship x86 Cores.</p>
<h3 id="whats-this-about"><strong>What’s this about?</strong></h3>
<p>This blog is about my <code class="language-plaintext highlighter-rouge">personal experiences</code> and projects in <code class="language-plaintext highlighter-rouge">hobby electronics</code> as well as sort of <code class="language-plaintext highlighter-rouge">open-source silicon design</code>, mostly ASIC/CPU design and verification.</p>
<h3 id="whats-with-the-blogs-name-and-the-logo"><strong>What’s with the Blog’s Name and the Logo?</strong></h3>
<p><code class="language-plaintext highlighter-rouge">deCryptronics</code> is a word blend or portmanteau of decrypt and electronics as this blog also aim’s at making electronics easy for readers. The logo is a composition of the letters <strong>D</strong> and <strong>C</strong> which are the initials of the blog’s name. To be honest this logo was designed by me in 2014 and I’m not very good at Adobe Illustrator. I might have someone professional redo this logo later if I feel like it. Until then its a two-tone block.</p>
<h3 id="my-failed-attempts-at-blogging"><strong>My Failed Attempts at Blogging</strong></h3>
<p>Since 2014, I wanted to write a blog but with several failed attempts I finally came around to writing one. The first few blogs were abandoned because of Wordpress’s painful <a href="https://en.wikipedia.org/wiki/Content_management_system" target="_blank">CMS</a> and lack of customization that irked my perfectionism. The rise of static website generators like <a href="https://jekyllrb.com/" target="_blank">Jekyll</a> makes it easy to create blogs and offer easy to understand working and customization. This blog is created using Jekyll using the <a href="https://jekyll.github.io/minima/" target="_blank">minima</a> theme. In a few hours, with some basic HTML and CSS experience, I was able to customize the theme to what you see now. I added a logo on the navbar, made it sticky so that when you scroll down the navbar is still visible, changed fonts, added personal images, and styled them as you can see above among other things.</p>
<p>Here’s a list of my failed attempts at blogging:</p>
<ol>
<li><a href="https://soumilheble.wordpress.com/" target="_blank">Wordpress Personal Portfolio</a></li>
<li><a href="https://electronstream.wordpress.com/" target="_blank">Electronstream</a></li>
<li><a href="https://decryptronics.wordpress.com/" target="_blank">deCryptronics on Wordpress</a></li>
</ol>Soumil HebleIntroduction Hi! My name is Soumil, Soumil Heble. Well, there’s a 007 reference for you. I’m a Computer Engineer by profession, as of 2020 I’m working as Silicon Design Engineer 2 at Advanced Micro Devices, Inc. (AMD) in Boxborough, MA, USA. I work on supporting emulation efforts and verification of AMD’s flagship x86 Cores.