site

files for beauhilton.com
git clone https://git.beauhilton.com/site.git
Log | Files | Refs

index.html (8712B)


      1 <!DOCTYPE html>
      2 <html lang="en">
      3  <head>
      4   <link rel="stylesheet" href="/style.css" type="text/css">
      5   <meta charset="utf-8">
      6   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      7   <meta name="viewport" content="width=device-width, initial-scale=1.0">
      8   <link rel="stylesheet" type="text/css" href="/style.css">
      9   <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🏕️</text></svg>">
     10   <title></title>
     11  </head>
     12  <body>
     13   <div id="page-wrapper">
     14    <div id="header" role="banner">
     15     <header class="banner">
     16      <div id="banner-text">
     17       <span class="banner-title"><a href="/">beauhilton</a></span>
     18      </div>
     19     </header>
     20     <nav>
     21      <a href="/about">about</a>
     22 <a href="/now">now</a>
     23 <a href="/thanks">thanks</a>
     24 <a class="nav-active" href="/posts">posts</a>
     25 <a href="https://notes.beauhilton.com">notes</a>
     26 <a href="https://talks.beauhilton.com">talks</a>
     27 <a href="https://git.beauhilton.com">git</a>
     28 <a href="/contact">contact</a>
     29 <a href="/atom.xml">rss</a>
     30     </nav>
     31    </div>
     32    <main>
     33     <h1>
     34      Pixel 6 DIY screen replacement, with fingerprint reader calibration
     35 using Linux
     36     </h1>
     37     <p>
     38      <time id="post-date">2023-09-19</time>
     39     </p>
     40     <p id="post-excerpt">
     41      The internet, up to now, says you need Windows or MacOS to calibrate the Pixel's fingerprint reader after installing a new screen and digitizer.
     42 The internet, up to now, was wrong.
     43     </p>
     44     <h2>
     45      Physical install
     46     </h2>
     47     <p>
     48      My wife’s Pixel 6’s screen stopped working. Phone seemed to be ok
     49 otherwise.
     50     </p>
     51     <p>
     52      We looked at the cost of replacing the phone vs repairing the
     53 screen.
     54     </p>
     55     <p>
     56      A similarly capable phone would cost quite a bit more than the
     57 replacement screen kit, which was ~$130 from <a href="https://www.ifixit.com/products/google-pixel-6-screen-genuine">iFixit</a>.
     58     </p>
     59     <p>
     60      So we bought the replacement screen, watched a few videos on YouTube,
     61 and were off to the races.
     62     </p>
     63     <p>
     64      The tear-down and physical installation were easy. Kudos to Google
     65 for making the Pixels easy to work on. I won’t give much detail here:
     66 just use the videos, whichever ones have a bunch of views.
     67     </p>
     68     <p>
     69      I did waste the included screen adhesive on the first go-around,
     70 because I didn’t realize that the broken screen I removed had been
     71 separated from its frame (so the old frame was still installed and I
     72 installed the adhesive to the its top, rather than in the phone casing
     73 where it belongs, and found out when the phone wouldn’t click back
     74 together with the new screen). It was about $10, including shipping, for
     75 a second adhesive (also iFixit). Fit like a glove.
     76     </p>
     77     <p>
     78      Total $140, and Verizon sent us a free new Pixel 7 anyway (long
     79 story), so now my wife has the 7 and I upgraded from my old Pixel 2XL to
     80 this refurb’d 6. Dang, what an upgrade. Even though the Pixel 6 is
     81 widely considered the dud of the group, I’m loving it.
     82     </p>
     83     <h2>
     84      Fingerprint reader calibration is needed
     85     </h2>
     86     <p>
     87      After it was all installed and working well, the next hurdle was
     88 recalibrating the fingerprint reader. The fingerprint reader is part of
     89 the new screen, and needs calibrated, or it will not even attempt to
     90 work (seems more an “activation” than a “calibration,” no?).
     91     </p>
     92     <p>
     93      The website Google provides for calibration is <a href="https://pixelrepair.withgoogle.com/udfps">https://pixelrepair.withgoogle.com/udfps</a>.
     94 If you look around the internet for troubleshooting related to this
     95 tool, you’ll see a number of old posts recounting various problems, most
     96 of which seem to have been ironed out by this writing.
     97     </p>
     98     <p>
     99      However, the one problem I couldn’t find a fix or happy update for
    100 was how to use that website if you’re not running Windows or MacOS.
    101     </p>
    102     <p>
    103      <a href="https://www.reddit.com/r/GooglePixel/comments/xq82ri/pixel_6_fingerprint_calibration/">This
    104 Redditor couldn’t get it working on Linux or Windows, bad luck?</a>.
    105     </p>
    106     <p>
    107      <a href="https://issuetracker.google.com/issues/217589152?pli=1">Anon
    108 is very angry at Google for not supporting Linux for the calibration
    109 (ctrl-F “linux” to find)</a>.
    110     </p>
    111     <p>
    112      We no longer have anything but Linux/OpenBSD systems in the house
    113 (while I love FOSS and feel glee in this, it is not entirely on purpose,
    114 and I don’t hate Windows or MacOS - my wife’s MBP met an early demise at
    115 the thrown milk cup of a boisterous toddler, or I would have tried that
    116 machine first to avoid the possible headache of ironing out a solution
    117 for Linux for a [hopefully] one-time computing event.).
    118     </p>
    119     <p>
    120      The udfps website was finding my phone, but refusing to go further. I
    121 was in fastboot. Browser didn’t matter (tried OG google-chrome-stable,
    122 vivaldi-stable, firefox). USB-A vs USB-C computer-side connection didn’t
    123 matter (some folks mentioned needing USB-A, so I tried). Activating
    124 Android developer mode didn’t help, and activating USB debugging within
    125 the developer options didn’t either.
    126     </p>
    127     <p>
    128      I saw some posts talking about installing USB drivers to get udfps to
    129 work for Windows machines, so decided to poke around and see if maybe it
    130 was a driver issue on Linux as well.
    131     </p>
    132     <p>
    133      It (probably) was.
    134     </p>
    135     <h2>
    136      Android build tools to the rescue
    137     </h2>
    138     <p>
    139      On Arch Linux (these tools are widely available, distro doesn’t
    140 matter, this is just what I used):
    141     </p>
    142     <pre tabindex="0"><code class="language-sh"><span class="hl slc"># enable multilib - see link below</span>
    143 paru <span class="hl slc"># make sure things are up to date generally</span>
    144 paru <span class="hl kwb">-S</span> android<span class="hl kwb">-tools</span> android<span class="hl kwb">-sdk-build-tools</span> <span class="hl slc"># includes adb and other goodies</span>
    145 reboot
    146 </code></pre>
    147     <p>
    148      Re multilib - not sure if this is strictly needed - see <a href="https://wiki.archlinux.org/title/android#Android_Emulator">https://wiki.archlinux.org/title/android#Android_Emulator</a>.
    149     </p>
    150     <p>
    151      After grabbing the Android build tools listed above and rebooting,
    152 the website found my phone and ran the calibration software without a
    153 hitch. The website didn’t seem to work prior to rebooting, and I’m a
    154 lazy cretin/wizened ol’ wannabe sysadmin, so fancy a reboot to fix all
    155 of life’s woes.
    156     </p>
    157     <p>
    158      The phone does need at least one reboot to activate the calibration
    159 and enable the fingerprint reader, but the calibration software tells
    160 you that, no secret magic here.
    161     </p>
    162     <p>
    163      I don’t recall if I used vivaldi-stable or google-chrome-stable to
    164 run udfps, but I think it was the prior (I bet any Chromium-based
    165 browser would work, provided the right system tools are in place).
    166     </p>
    167     <p>
    168      I also can’t remember if I used USB-A to USB-C or dual-sided USB-C,
    169 but I think it was the dual USB-C.
    170     </p>
    171     <p>
    172      I do think developer mode and USB debugging active on the phone are
    173 required, but I’m not completely certain.
    174     </p>
    175     <p>
    176      I did this all on a Thinkpad T14s.
    177     </p>
    178     <p>
    179      In any case, fingerprint unlock is a go!
    180     </p>
    181     <p>
    182      Almost too easy.
    183     </p>
    184     <h2>
    185      Manual clean up - what, you think this is NixOS?
    186     </h2>
    187     <p>
    188      You probably won’t need these tools again, at least not for a long
    189 while, so:
    190     </p>
    191     <pre tabindex="0"><code class="language-sh">paru <span class="hl kwb">-R</span> android<span class="hl kwb">-tools</span> android<span class="hl kwb">-sdk-build-tools</span> <span class="hl slc"># about 156MiB, not much, but it's the principle of the thing</span>
    192 sudo pacman <span class="hl kwb">-R</span> <span class="hl kwd">$(comm -12 &lt;(pacman -Qq | sort)</span> <span class="hl opt">&lt;(</span>pacman <span class="hl kwb">-Slq</span> multilib <span class="hl opt">|</span> <span class="hl kwc">sort</span><span class="hl opt">))</span> <span class="hl slc"># undo the multilib stuff</span>
    193 sudo <span class="hl kwc">sed</span> <span class="hl kwb">-i</span> <span class="hl sng">'s/\[multilib\]/\#\[multilib\]/'</span> <span class="hl opt">/</span>etc<span class="hl opt">/</span>pacman.conf <span class="hl slc"># undo more of the multilib stuff</span>
    194 paru <span class="hl slc"># finish undoing the multilib stuff</span>
    195 </code></pre>
    196     <h2>
    197      Next steps
    198     </h2>
    199     <h3>
    200      ? 🦒 ?
    201     </h3>
    202     <p>
    203      idk, maybe.
    204     </p>
    205    </main>
    206    <div id="footnotes"></div>
    207    <footer></footer>
    208   </div>
    209  </body>
    210 </html>