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 <(pacman -Qq | sort)</span> <span class="hl opt"><(</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>