<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Macuyler&#39;s Blog</title>
    <link>https://blog.macuyler.com/</link>
    <description>A blog with articles about technology and programming.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>dev@macuyler.com (Macuyler Dunn)</managingEditor>
    <webMaster>dev@macuyler.com (Macuyler Dunn)</webMaster>
    <lastBuildDate>Fri, 10 Feb 2023 23:05:02 -0500</lastBuildDate><atom:link href="https://blog.macuyler.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A FOSS Christmas</title>
      <link>https://blog.macuyler.com/2023-12-20-a-foss-christmas/</link>
      <pubDate>Wed, 20 Dec 2023 16:16:08 -0500</pubDate>
      <author>dev@macuyler.com (Macuyler Dunn)</author>
      <guid>https://blog.macuyler.com/2023-12-20-a-foss-christmas/</guid>
      <description>&lt;h2 id=&#34;paying-for-free-software&#34;&gt;Paying for free software?&lt;/h2&gt;
&lt;p&gt;This year I&amp;rsquo;m going to donate $5 to each of my top 10 favorite FOSS projects
from this year. I have greatly benefited from each of these projects for a
while now, but I haven&amp;rsquo;t ever shown my support. Donating some cash seems like
the least I can do, considering how much I appreciate their work. &amp;lsquo;Tis the
season anyways, right? $50 total, averages out to $4 a month—which is
$2.99/mo less than &lt;em&gt;Netflix&lt;/em&gt;, btw—and I have absolutely received more than
$4 worth of value from these projects every single month! If you have $50 to
spare, and you used a lot of open source software this year, I encourage you to
come up with your own list and do the same.&lt;/p&gt;
&lt;h2 id=&#34;my-list&#34;&gt;My List&lt;/h2&gt;
&lt;h3 id=&#34;1-syncthing&#34;&gt;1. Syncthing&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://syncthing.net/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/syncthing/&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://syncthing.net/donations/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Syncthing is a continuous file synchronization program. It synchronizes files
between two or more computers in real time, safely protected from prying
eyes. Your data is your data alone and you deserve to choose where it is
stored, whether it is shared with some third party, and how it’s transmitted
over the internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Syncthing has been a game changer for me! It gives you all of the convenience
of syncing files to the cloud, without any of your files ever actually being
stored on someone else&amp;rsquo;s computer. Syncthing can transfer files over your local
network making speeds extremely fast. It also has the option to send files
through relay nodes, allowing you to sync files from anywhere you have an
internet connection. I was able to switch to Syncthing for all of my photo and
video syncing needs. This allowed me to stop using &lt;em&gt;Google Photos&lt;/em&gt; entirely,
and store all of my photos locally on my own devices. Syncthing also alleviated
my need for cloud based password managers, and makes for a pretty sweet
&lt;a href=&#34;https://en.wikipedia.org/wiki/AirDrop&#34;&gt;AirDrop&lt;/a&gt; alternative in a pinch.&lt;/p&gt;
&lt;h3 id=&#34;2-keepassxc&#34;&gt;2. KeePassXC&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://keepassxc.org/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/keepassxreboot/keepassxc&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://keepassxc.org/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cross-platform Password Manager&lt;/strong&gt; - Let KeePassXC safely store your
passwords and auto-fill them into your favorite apps, so you can forget all
about them.  We do the heavy lifting in a no-nonsense, ad-free, tracker-free,
and cloud-free manner. Free and open source.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;𝄞 &lt;code&gt;Do you hear what I hear? LastPass! LastPass! They&#39;ve had another breach! All of your passwords were just leaked...&lt;/code&gt; 𝄇&lt;/p&gt;
&lt;p&gt;After switching to KeePass I have never looked back. It is just a simple,
textbook implementation of a reliable password manager. Sure, it doesn&amp;rsquo;t
auto-fill your credentials into every text input on the web, but it does have
some basic auto-fill functionality. Either way, isn&amp;rsquo;t auto-fill kind of counter
productive anyways? The point is for &lt;strong&gt;your&lt;/strong&gt; passwords, stored on &lt;strong&gt;your&lt;/strong&gt;
device, to be accessible by &lt;strong&gt;you&lt;/strong&gt;, not your browser. It is a simple model but
there really isn&amp;rsquo;t anything wrong with it, as long as you&amp;rsquo;re proficient at
using keyboard shortcuts like &lt;code&gt;Ctrl-C&lt;/code&gt; and &lt;code&gt;Ctrl-V&lt;/code&gt;. One major KeePass feature,
that I think is criminally underrated, is the fact that you can make a bunch of
separate databases for your passwords. Each new database can have its own
unique master password, and can be stored on the devices that need it. I
personally have one database for each device that I use, and it only contains
the passwords that I &lt;strong&gt;need&lt;/strong&gt; for that device. So if any of my devices were to
ever be compromised, only a small set of my (encrypted) passwords would be
affected.&lt;/p&gt;
&lt;h3 id=&#34;3-xorg&#34;&gt;3. X.org&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://x.org/wiki/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gitlab.freedesktop.org/xorg&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.org/wiki/SponsorshipPage/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The X.Org project provides an open source implementation of the X Window
System. The development work is being done in conjunction with the
&lt;a href=&#34;https://www.freedesktop.org/wiki/&#34;&gt;freedesktop.org&lt;/a&gt; community.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As someone who exclusively uses a Linux desktop for both work and personal
computing, this one is a no-brainer. The &lt;a href=&#34;https://en.wikipedia.org/wiki/X_Window_System&#34;&gt;X Window
System&lt;/a&gt; is the backbone for a
lot of Linux desktop environments, and has been for decades. It is the software
that allows your computer to render graphical user interfaces, contained inside
application &amp;ldquo;windows&amp;rdquo;, that you can open and drag around. Without this
windowing system, and systems like it, us users would be relegated to a text
based computing experience.&lt;/p&gt;
&lt;p&gt;P.S. People keep adding surprise emojis into their CLI tools. So I also wanted
to give a shout out for adding &lt;a href=&#34;https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/12&#34;&gt;emjoi
support&lt;/a&gt; to
&lt;a href=&#34;https://gitlab.freedesktop.org/xorg/lib/libxft&#34;&gt;libXft&lt;/a&gt;! Even though, this was
technically added in summer 2022, I got to learn about it by
way of troubleshooting because Ubuntu 22.04 only ships version
&lt;a href=&#34;https://packages.ubuntu.com/search?suite=jammy&amp;amp;searchon=names&amp;amp;keywords=libxft-dev&#34;&gt;&lt;code&gt;2.3.4-1&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;4-sucklessorg&#34;&gt;4. suckless.org&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://suckless.org/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.suckless.org/&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://suckless.org/donations/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;software that sucks less&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Keeping with the theme of Linux desktop tools, I have been using suckless tools
for the better part of a year now. I appreciate the idea of minimal software
that is designed to fulfill a single purpose and nothing more. Small, readable
code bases are an ideal that all developers strive for, and the suckless team
has managed to achieve that goal while delivering reliable and effective tools.
I use &lt;a href=&#34;https://st.suckless.org/&#34;&gt;st&lt;/a&gt; and
&lt;a href=&#34;https://tools.suckless.org/dmenu/&#34;&gt;dmenu&lt;/a&gt; on a daily basis, and they always
get the job done without any issues. There are never any updates that need
downloaded, settings that need changed, restarts that are required, or
unexpected changes that get in the way. If I ever find myself wanting more
functionality, their expansive list of community patches come to the rescue.&lt;/p&gt;
&lt;h3 id=&#34;5-tmux&#34;&gt;5. tmux&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tmux/tmux/wiki&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tmux/tmux&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://liberapay.com/tmux&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;tmux is a terminal multiplexer. It lets you switch easily between several
programs in one terminal, detach them (they keep running in the background)
and reattach them to a different terminal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As far as my digital life is concerned, I basically spend all day every day, in
tmux. A decent tmux + &lt;a href=&#34;https://www.vim.org/&#34;&gt;Vim&lt;/a&gt; setup is all you need to be a
happy developer. I can&amp;rsquo;t emphasize enough how much easier my life is now that
I&amp;rsquo;m not aggressively three-finger swiping across my track pad to switch between
projects. After you get used to the keyboard shortcuts, it becomes effortless
to make anything you want appear on your screen. It seriously is as close as
humans have come, and may ever come, to controlling reality with our minds.&lt;/p&gt;
&lt;h3 id=&#34;6-ale-asynchronous-lint-engine&#34;&gt;6. ALE: Asynchronous Lint Engine&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://denseanalysis.org/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/dense-analysis/ale&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://denseanalysis.org/sponsors/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;ALE (Asynchronous Lint Engine) is a plugin providing linting (syntax checking
and semantic errors) in NeoVim 0.6.0+ and Vim 8.0+ while you edit your text
files, and acts as a Vim &lt;a href=&#34;https://langserver.org/&#34;&gt;Language Server Protocol&lt;/a&gt;
client.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Speaking of Vim! I couldn&amp;rsquo;t have switched away from &lt;em&gt;VS Code&lt;/em&gt; full time
without ALE. As far as ESlint/Prettier wrappers go, for Vim, there is nothing
better. It has excellent support for LSPs, and I am proud to say that it has
been the only intellisense type plugin in my
&lt;a href=&#34;https://gitlab.com/macuyler/config/-/blob/af9d449346a65fd15dd5d69f5d197033b7af08c2/dotfiles/_common/vimrc#L79&#34;&gt;vimrc&lt;/a&gt;
for a while now. There is nothing more that I could ask for from this tool. I
plan to use it for the remainder of my tenure as a
non-&lt;a href=&#34;https://neovim.io/&#34;&gt;Neovim&lt;/a&gt; user.&lt;/p&gt;
&lt;h3 id=&#34;7-zathura&#34;&gt;7. Zathura&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://pwmt.org/projects/zathura/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.pwmt.org/pwmt/zathura&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pwmt.org/help/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;zathura is a highly customizable and functional document viewer. It provides
a minimalistic and space saving interface as well as an easy usage that
mainly focuses on keyboard interaction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This one is a relatively new find for me. But it is so cool that it definitely
needs a spot on the list. The flagship feature, from where I&amp;rsquo;m sitting, is the
support for Vim-like keybindings. This makes switching back and forth between
reading a PDF and editing text a breeze. It also allows me to read documents
without needing to use a mouse to scroll, which is sweet! I really appreciate
the minimal interface. Believe it or not, I don&amp;rsquo;t love having to close a bunch
of side bars and menus every time I open a PDF. Zathura just shows me the
document on a black background and some helpful context, like the file name
and page number, in a minimal status bar at the bottom.&lt;/p&gt;
&lt;h3 id=&#34;8-grapheneos&#34;&gt;8. GrapheneOS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://grapheneos.org/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/GrapheneOS&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grapheneos.org/donate&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The private and secure mobile operating system with Android app
compatibility. Developed as a non-profit open source project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A year after installing GrapheneOS on my phone, I wouldn&amp;rsquo;t ever consider going
back to the default Android version. I have been at war with my phone for
almost two years now, I dream of a day where I am free to smash the thing, but
that is a story for another time. In the war against my phone, GrapheneOS has
been an invaluable asset. Not requiring &lt;a href=&#34;https://en.wikipedia.org/wiki/Google_Play_Services&#34;&gt;Google Play
Services&lt;/a&gt; out of the box
means that you can just use the phone without logging into some online account
(what a novel concept). Using sand boxed &lt;em&gt;Google Play Services&lt;/em&gt; inside of a
work profile means that I can still get &lt;em&gt;Slack&lt;/em&gt; notifications without the
previous point being moot. There are just enough default apps to make the
system usable in the real world. Where this project really shines is when
switching between socially acceptable levels of digital abstinence and being a
complete digital hermit. I have my main profile that basically just has phone,
calendar, maps, and a 2FA app. Then there is the &amp;ldquo;Junk&amp;rdquo; profile, which
basically has everything else including the likes of Facebook Messenger
(gross). I just spend 90% of my time living in the main profile, and I&amp;rsquo;m able
to sleep at night.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pro tip: not carrying your phone in your pocket around the house also helps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;9-organic-maps&#34;&gt;9. Organic Maps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://organicmaps.app/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/organicmaps/organicmaps&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://organicmaps.app/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Organic Maps&lt;/strong&gt; is a free Android &amp;amp; iOS offline maps app for travelers,
tourists, hikers, and cyclists based on top of crowd-sourced
&lt;strong&gt;&lt;a href=&#34;https://www.openstreetmap.org/about&#34;&gt;OpenStreetMap&lt;/a&gt;&lt;/strong&gt; data. It is a
privacy-focused, open-source
&lt;a href=&#34;https://en.wikipedia.org/wiki/Fork_%28software_development%29&#34;&gt;fork&lt;/a&gt; of
&lt;strong&gt;Maps.me&lt;/strong&gt; app (previously known as
&lt;strong&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Maps.me&#34;&gt;MapsWithMe&lt;/a&gt;&lt;/strong&gt;), maintained by the
same people who created &lt;strong&gt;MapsWithMe&lt;/strong&gt; in 2011.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This one took a while to get used to. It made me realize the reason that
&lt;em&gt;Google Maps&lt;/em&gt; took off, wasn&amp;rsquo;t because the maps were spectacular, but because
it had really tight integration with the power of &lt;em&gt;Google Search&lt;/em&gt;. That becomes
really apparent when all of a sudden that power is no longer there at all. That
being said, you do eventually get used to it. You just need to figure out a
workflow that suits your needs. Most of the time, I don&amp;rsquo;t end up going to too
many unexpected places while I&amp;rsquo;m out and about. So before I leave if I can
plan my trip, possibly by looking at &lt;em&gt;Google Maps&lt;/em&gt; on the web, then I am
totally fine. Once you have a destination, the navigation experience itself is
wonderful. Offline navigation is a much better approach than online navigation
while driving a car. Say good bye to those awkward delays, after you miss a
turn, while your phone &amp;ldquo;re-routes&amp;rdquo; you. When &lt;em&gt;Google Maps&lt;/em&gt; does this, it is
making a network request to Google&amp;rsquo;s servers saying, &amp;ldquo;I am lost, please help,&amp;rdquo;
then it gets the results back and everything is fine again. But depending on
how good your cell service is, you may never get those results back, and then
what are you even supposed to do? Organic Maps handles routing locally on your
device, so no matter how bad your cell service is, you can navigate
effortlessly. The downside to this is, your phone pales in comparison to the
speed of Google&amp;rsquo;s servers once you take the network delay out of the picture.
So your the initial routing process, depending on how old your phone is and how
far you are traveling, can take a while. I was very impressed by this app once
I had used it for a bit, and it is my default for navigating to new places
around town.&lt;/p&gt;
&lt;h3 id=&#34;10-f-droid&#34;&gt;10. F-Droid&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://f-droid.org/&#34;&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gitlab.com/fdroid&#34;&gt;Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://f-droid.org/en/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;F-Droid is an installable catalogue of FOSS (Free and Open Source Software)
applications for the Android platform. The client makes it easy to browse,
install, and keep track of updates on your device.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To round out the list, I decided on F-Droid. This is a fun Android app store
that packages open source applications and makes it easy to install them and
keep them up to date. Not only is this a great way to find cool new FOSS apps,
but it is also a great alternative to the &lt;em&gt;Google Play Store&lt;/em&gt; if you don&amp;rsquo;t want
to log into a Google account on your phone. I have never had problems with this
app, you just install it on your phone, and it works. Simple, reliable, and
effective. Thank you F-Droid!&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;honorable-mentions&#34;&gt;Honorable Mentions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://aurorastore.org/&#34;&gt;Aurora Store&lt;/a&gt;: Anonymous &lt;em&gt;Google Play Store&lt;/em&gt;
alternative. [&lt;a href=&#34;https://aurorastore.org/donate/&#34;&gt;Donate&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://calyxos.org/&#34;&gt;CalyxOS&lt;/a&gt;: My previous phone OS, with many features
that I miss dearly. [&lt;a href=&#34;https://members.calyxinstitute.org/donate&#34;&gt;Donate&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.davx5.com/&#34;&gt;DAVx5&lt;/a&gt;: Android calendar and contact syncing.
[&lt;a href=&#34;https://www.davx5.com/donate&#34;&gt;Donate&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://polybar.github.io/&#34;&gt;Polybar&lt;/a&gt;: Linux desktop status bar.
[&lt;a href=&#34;https://opencollective.com/polybar&#34;&gt;Donate&lt;/a&gt;]&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;These are my favorite FOSS projects from this year, and I donated $5 to each of
them! If you have used a bunch of open source software this year, please
consider making your own list and giving back.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Syncthing - &lt;a href=&#34;https://syncthing.net/donations/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KeePassXC - &lt;a href=&#34;https://keepassxc.org/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;X.org - &lt;a href=&#34;https://x.org/wiki/SponsorshipPage/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;suckless.org - &lt;a href=&#34;https://suckless.org/donations/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;tmux - &lt;a href=&#34;https://liberapay.com/tmux&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ALE - &lt;a href=&#34;https://denseanalysis.org/sponsors/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zathura - &lt;a href=&#34;https://pwmt.org/help/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GrapheneOS - &lt;a href=&#34;https://grapheneos.org/donate&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Organic Maps - &lt;a href=&#34;https://organicmaps.app/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;F-Droid - &lt;a href=&#34;https://f-droid.org/en/donate/&#34;&gt;Donate&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Un-bricking my ThinkPad Yoga 11e Chromebook</title>
      <link>https://blog.macuyler.com/2022-04-03-glimmer/</link>
      <pubDate>Sat, 11 Feb 2023 16:05:54 -0500</pubDate>
      <author>dev@macuyler.com (Macuyler Dunn)</author>
      <guid>https://blog.macuyler.com/2022-04-03-glimmer/</guid>
      <description>&lt;h2 id=&#34;backstory&#34;&gt;Backstory&lt;/h2&gt;
&lt;p&gt;After having some success installing Linux on a battery-less
&lt;a href=&#34;https://google.fandom.com/wiki/Cr-48&#34;&gt;CR48 Chromebook&lt;/a&gt; I
decided it was time to get something slightly faster, with a battery.
Eventually I found a &lt;a href=&#34;https://a.co/d/9KufB9v&#34;&gt;ThinkPad Yoga 11e&lt;/a&gt; on Amazon for
$60! So I ordered it and waited patiently for it to arrive. The day it showed
up I got to work flashing the firmware so I could install Linux on it.&lt;/p&gt;
&lt;p&gt;I found an awesome
&lt;a href=&#34;https://gist.github.com/amonks/c089600bae9419013f3f9e801154d4e2&#34;&gt;tutorial&lt;/a&gt;
online and followed along closely. After entering &lt;em&gt;developer mode&lt;/em&gt;, tearing the
whole laptop apart, and removing the &lt;em&gt;write-protect&lt;/em&gt; screw, I was ready to
flash the firmware. I reassembled the whole machine, booted it up, launched a
&lt;em&gt;crosh&lt;/em&gt; and then &lt;em&gt;bash&lt;/em&gt; shell, and ran the &lt;em&gt;MrChromebox.tech&lt;/em&gt;
&lt;a href=&#34;https://mrchromebox.tech/#fwscript&#34;&gt;firmware-util&lt;/a&gt; script.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/fwutil.png&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/fwutil.png&#34; alt=&#34;fwutil example&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;I hesitated at first, not being entirely sure which option to select. After a
quick Google search and a glance at the first result, I decided to select
option 1: &lt;strong&gt;Install/Update RW_LEGACY Firmware&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;oops&#34;&gt;Oops&lt;/h2&gt;
&lt;p&gt;The install went great, it had a nice progress read out and a success message
at the end! I felt completely confident that I had nailed it. But of course, I
did not. I installed the legacy BIOS option, but my laptop uses UEFI not BIOS
(&lt;a href=&#34;https://www.easeus.com/partition-manager-software/uefi-vs-bios.html&#34;&gt;learn more&lt;/a&gt;).
This effectively bricked my machine. Immediately after rebooting I was met with
a horrifying black screen. I didn&amp;rsquo;t even have the faint glow of the LCD back
light to comfort me. I tried, in vain, for about an hour to boot off a USB, get
into the BIOS, or even just get the LED in the ThinkPad logo to light up on the
back. With my efforts bearing no results, I eventually gave up. Distraught and
grieving over the $60 I had wasted in less than 2 hours, I walked away.&lt;/p&gt;
&lt;p&gt;About a week later, still with the bitter taste of defeat, I decided to see if
I could fix it. After all, the hardware was fine, I had just written an
incompatible firmware to some flash storage chip on the motherboard somewhere.
So I set out searching for anyone who had gotten themselves into a similar
situation. One day I came across
&lt;a href=&#34;https://www.partsnotincluded.com/flashing-the-bios-to-fix-a-bricked-lenovo-laptop/&#34;&gt;Flashing the BIOS to Fix a &amp;ldquo;Bricked&amp;rdquo; Lenovo Laptop&lt;/a&gt;
by &lt;a href=&#34;https://www.partsnotincluded.com/about/&#34;&gt;Dave Madison&lt;/a&gt; offering a solution
to my exact problem. Suddenly there was a light at the end of the tunnel. A
potential solution that had an excellent chance of working. And I was ready to
redeem myself from this rookie mistake!&lt;/p&gt;
&lt;h2 id=&#34;redemption&#34;&gt;Redemption&lt;/h2&gt;
&lt;p&gt;The first challenge I needed to overcome was finding and downloading the
correct firmware. After no results searching directly for the firmware, I
decided to go back to where it all started, the &lt;em&gt;firmware-util&lt;/em&gt; script. After a
quick look at the
&lt;a href=&#34;https://github.com/MrChromebox/scripts/blob/master/firmware-util.sh&#34;&gt;code&lt;/a&gt; on
GitHub I noticed that there was a huge list of firmware
&lt;a href=&#34;https://github.com/MrChromebox/scripts/blob/master/sources.sh&#34;&gt;sources&lt;/a&gt;. A
quick search for the code name &lt;em&gt;glimmer&lt;/em&gt;, and I found
&lt;a href=&#34;https://github.com/MrChromebox/scripts/blob/24c242711d82c32443907f538d0fc3c715bca263/cbmodels.json#L83&#34;&gt;the firmware&lt;/a&gt;
that I was supposed to have installed.&lt;/p&gt;
&lt;p&gt;So with the correct firmware in hand, all that was left to do was flash it to
the laptop. In the &lt;em&gt;Parts Not Included&lt;/em&gt; article they used a $22
&lt;a href=&#34;https://a.co/d/7VlKlc5&#34;&gt;Arduino Nano&lt;/a&gt; with a $7
&lt;a href=&#34;https://a.co/d/8pWP8gh&#34;&gt;Serial Converter&lt;/a&gt; to connect to a $7
&lt;a href=&#34;https://a.co/d/cqpeg1p&#34;&gt;SOIC8 Clip&lt;/a&gt; which would then connect to the flash chip
on the motherboard. Then they compiled
&lt;a href=&#34;https://www.flashrom.org/Flashrom&#34;&gt;flashrom&lt;/a&gt; for their Arudino, and used that
to flash the correct firmware onto the chip. Paying $36 to rescue a $60 laptop
wasn&amp;rsquo;t ideal, so I bought the $7 SOIC8 clip and about $7 worth of &lt;a href=&#34;https://a.co/d/ekUqHcF&#34;&gt;jumper
cables&lt;/a&gt; figuring I&amp;rsquo;d make due with a Raspberry Pi I had
laying around.&lt;/p&gt;
&lt;p&gt;Turns out, running &lt;em&gt;flashrom&lt;/em&gt; on a Raspberry Pi is a common use case. So
common, in fact, that there is a whole
&lt;a href=&#34;https://www.flashrom.org/RaspberryPi&#34;&gt;wiki page&lt;/a&gt; for it. The pin-out on that
page, along with the corresponding pin-out for my Raspberry Pi, was enough for
me to come up with the following wiring to get the SOIC clip hooked up.&lt;/p&gt;
&lt;h3 id=&#34;wiring-key&#34;&gt;Wiring Key&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pin&lt;/th&gt;
&lt;th&gt;ABBR&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Color&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CS&lt;/td&gt;
&lt;td&gt;Chip Select&lt;/td&gt;
&lt;td&gt;Orange&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;SO&lt;/td&gt;
&lt;td&gt;Serial Out&lt;/td&gt;
&lt;td&gt;Yellow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;WP#&lt;/td&gt;
&lt;td&gt;Write Protection&lt;/td&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;GND&lt;/td&gt;
&lt;td&gt;Ground&lt;/td&gt;
&lt;td&gt;Brown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;SI&lt;/td&gt;
&lt;td&gt;Serial In&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;CLK&lt;/td&gt;
&lt;td&gt;Clock&lt;/td&gt;
&lt;td&gt;Blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;HOLD&lt;/td&gt;
&lt;td&gt;Hold&lt;/td&gt;
&lt;td&gt;Purple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;VCC&lt;/td&gt;
&lt;td&gt;3.3V Power&lt;/td&gt;
&lt;td&gt;Grey&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;raspberry-pi&#34;&gt;Raspberry Pi&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I used a Pi 3B, but it seems most models have similar pin-outs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPIO&lt;/th&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;th&gt;C&lt;/th&gt;
&lt;th&gt;D&lt;/th&gt;
&lt;th&gt;E&lt;/th&gt;
&lt;th&gt;F&lt;/th&gt;
&lt;th&gt;G&lt;/th&gt;
&lt;th&gt;H&lt;/th&gt;
&lt;th&gt;I&lt;/th&gt;
&lt;th&gt;J&lt;/th&gt;
&lt;th&gt;K&lt;/th&gt;
&lt;th&gt;L&lt;/th&gt;
&lt;th&gt;M&lt;/th&gt;
&lt;th&gt;N&lt;/th&gt;
&lt;th&gt;O&lt;/th&gt;
&lt;th&gt;P&lt;/th&gt;
&lt;th&gt;Q&lt;/th&gt;
&lt;th&gt;R&lt;/th&gt;
&lt;th&gt;S&lt;/th&gt;
&lt;th&gt;T&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Outer&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inner&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/rpi3b-zoomed-pinout.jpeg&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/rpi3b-zoomed-pinout.jpeg&#34; alt=&#34;Raspberry Pi 3B pin-out zoomed image&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/rpi3b-full-pinout.jpeg&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/rpi3b-full-pinout.jpeg&#34; alt=&#34;Raspberry Pi 3B pin-out full image&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;h3 id=&#34;soic-clip&#34;&gt;SOIC Clip&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Any side can be top or bottom. You just need to know which side goes where
when you clip it to the flash chip.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SOIC Pins&lt;/th&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;th&gt;C&lt;/th&gt;
&lt;th&gt;D&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Top&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bottom&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;end-result&#34;&gt;End Result&lt;/h3&gt;
&lt;p&gt;After I got all of that hooked up I had something that looked like an alien
weapon, and I loved everything about it!&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/soic-flasher.png&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/soic-flasher.png&#34; alt=&#34;Finished SOIC flasher&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;h2 id=&#34;resurrection&#34;&gt;Resurrection&lt;/h2&gt;
&lt;p&gt;With the proper firmware downloaded, and the SOIC clip wired up, the next thing
to do was take the laptop apart again. Lenovo has a pretty in-depth
&lt;a href=&#34;https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/11e_chromebook_yoga_11e_chromebook_hmm_en_sp40a26992_01.pdf&#34;&gt;hardware manual&lt;/a&gt;,
without which I would have had a much harder time figuring out what I was
looking for. After taking the entire lower half of the laptop apart I was able
to remove the motherboard. I tore off a black plastic sheet, that I hoped
wasn&amp;rsquo;t too important, and located the flash chip where the BIOS is stored.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/flash-chip.png&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/flash-chip.png&#34; alt=&#34;MOBO with flash chip&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;After a few attempts I was able to clip the SOIC flasher onto the chip &amp;ndash; which
is surprisingly difficult to do correctly &amp;ndash; so then I just needed to flash the
new firmware!&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/flashing2.png&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/flashing2.png&#34; alt=&#34;Flasher hooked to chip&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;I ended up writing a &lt;a href=&#34;https://github.com/macuyler/glimmer&#34;&gt;series of scripts&lt;/a&gt;
to handle the flashing using &lt;em&gt;flashrom&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Test the serial connection:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# Reference: https://www.flashrom.org/RaspberryPi&lt;/span&gt;

/usr/sbin/flashrom &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-p linux_spi:dev&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/spidev0.0,spispeed&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Backup the current firmware:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# Reference: https://www.flashrom.org/RaspberryPi&lt;/span&gt;

CHIP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;W25Q64.W&amp;#34;&lt;/span&gt;

/usr/sbin/flashrom &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-p linux_spi:dev&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/spidev0.0,spispeed&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-c $CHIP &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-r ./roms/backup.rom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Write the new firmware:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# Reference: https://www.flashrom.org/RaspberryPi&lt;/span&gt;

CHIP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;W25Q64.W&amp;#34;&lt;/span&gt;
ROM&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./roms/coreboot_tiano-glimmer-mrchromebox_20210725.rom&amp;#34;&lt;/span&gt;

/usr/sbin/flashrom &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-p linux_spi:dev&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/spidev0.0,spispeed&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-c $CHIP &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-w $ROM
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify that the firmware on the chip matches your local copy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# Reference: https://www.flashrom.org/RaspberryPi&lt;/span&gt;

CHIP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;W25Q64.W&amp;#34;&lt;/span&gt;

/usr/sbin/flashrom &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-p linux_spi:dev&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/spidev0.0,spispeed&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-c $CHIP &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;	-r ./roms/verify.rom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a painstakingly slow flashing process, it was all done. I quickly put the
laptop back together and booted it up. Eureka!&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
    &lt;a target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; href=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/success.png&#34;&gt;
        &lt;img src=&#34;https://blog.macuyler.com/images/2022-04-03-glimmer/success.png&#34; alt=&#34;Success&#34;&gt;
    &lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After un-bricking the laptop, I was able to install several Linux distributions
on it and it is still going strong to this day. I have been impressed by how
good the battery life is, because it is using such a low powered chip. Bricking
and then un-bricking this laptop was a great learning experience that I&amp;rsquo;m glad
I had. This was by far the most complicated and in-depth hardware hack I have
accomplished to date, and I hope it stays that way for the foreseeable future.&lt;/p&gt;
&lt;p&gt;If you or a loved one are suffering from a bricked laptop, I hope this post has
been helpful and I wish you the best of luck on your road to recovery.&lt;/p&gt;
&lt;h2 id=&#34;shopping&#34;&gt;Shopping&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://a.co/d/9KufB9v&#34;&gt;Lenovo ThinkPad Yoga 11e on Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://a.co/d/ekUqHcF&#34;&gt;Jumper cables on Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://a.co/d/cqpeg1p&#34;&gt;SOIC8 clip on Amazon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/macuyler/glimmer&#34;&gt;Glimmer flashrom scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/amonks/c089600bae9419013f3f9e801154d4e2&#34;&gt;Install arch on a Lenovo Yoga 11e Chromebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.partsnotincluded.com/flashing-the-bios-to-fix-a-bricked-lenovo-laptop/&#34;&gt;Flashing BIOS to Fix a &amp;ldquo;Bricked&amp;rdquo; Lenovo Laptop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mrchromebox.tech/#fwscript&#34;&gt;MrChromebox.tech fwscript details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/MrChromebox/scripts/search?q=glimmer&#34;&gt;MrChromebox GitHub search for glimmer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chromium.googlesource.com/chromiumos/platform/ec/+/firmware-glimmer-5216.198.B&#34;&gt;Glimmer firmware source code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.flashrom.org/RaspberryPi&#34;&gt;Raspberry Pi Flashrom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://elinux.org/RPi_Low-level_peripherals#General_Purpose_Input.2FOutput_.28GPIO.29&#34;&gt;Raspberry Pi Pin-out&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/11e_chromebook_yoga_11e_chromebook_hmm_en_sp40a26992_01.pdf&#34;&gt;ThinkPad Yoga 11e Chromebook Hardware Maintenance Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>
