<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Han Zhang on Medium]]></title>
        <description><![CDATA[Stories by Han Zhang on Medium]]></description>
        <link>https://medium.com/@zhanghan177?source=rss-ffd65137418c------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*V_h3f0w5wucGFsqocyitcQ.png</url>
            <title>Stories by Han Zhang on Medium</title>
            <link>https://medium.com/@zhanghan177?source=rss-ffd65137418c------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 15 May 2026 16:11:25 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@zhanghan177/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Google Fi Activation T120 Error]]></title>
            <link>https://medium.com/@zhanghan177/google-fi-activation-t120-error-295e4c77028a?source=rss-ffd65137418c------2</link>
            <guid isPermaLink="false">https://medium.com/p/295e4c77028a</guid>
            <category><![CDATA[google-fi]]></category>
            <category><![CDATA[google-pixel]]></category>
            <dc:creator><![CDATA[Han Zhang]]></dc:creator>
            <pubDate>Sun, 14 Jul 2019 03:59:13 GMT</pubDate>
            <atom:updated>2019-07-14T03:59:13.385Z</atom:updated>
            <content:encoded><![CDATA[<p>TL;DR: Make sure you have SIM Manager (previously eSIM Manager) app installed from Play Store and enabled.</p><p>When I tried to activate Google Fi services on my Pixel, I always encountered the error code T120. I contacted technical support from Google, but their suggestions didn’t solve my issue. Here are a few of the steps I tried but <strong>did not work</strong>:</p><ul><li>Delete the local storage and cache of the Google Fi app.</li><li>Remove my old SIM card from the phone.</li><li>Restart the phone and relaunch the Google Fi app for activation.</li></ul><p>After googling a bit, it strikes me that I’m trying to activate the eSIM function on my phone. I looked for the corresponding SIM card settings wondering how my phone manages between SIM and eSIM. When I searched “eSIM” keyword in the <strong>Settings</strong> app, I found an interesting option named “eSIM Manager”. When I clicked it, it is currently disabled. I must have disabled and removed a ton of system default apps when I first set up my phone.</p><h3>Solution</h3><p>So I re-enabled the “eSIM Manager” app, and went to the Play store to update it. After the update, it seems the app has been upgraded to “SIM Manager”.</p><p>With SIM Manager installed, I restarted the phone and take out the physical SIM card just to be safe. Then I retried the activation process in Google Fi app. All of a sudden, it works!</p><h3>Some link I found useful:</h3><iframe src="https://cdn.embedly.com/widgets/media.html?type=text%2Fhtml&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;schema=reddit&amp;url=https%3A//www.reddit.com/r/ProjectFi/comments/aoly68/google_fi_and_esim/&amp;image=" width="600" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/a0e8a8d881cbecf7c4d05b90072077ba/href">https://medium.com/media/a0e8a8d881cbecf7c4d05b90072077ba/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=295e4c77028a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Server Boots into Black Screen after Upgrading to Ubuntu 18.04]]></title>
            <link>https://medium.com/@zhanghan177/server-boots-into-black-screen-after-upgrading-to-ubuntu-18-04-1b9f3a87ee60?source=rss-ffd65137418c------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b9f3a87ee60</guid>
            <category><![CDATA[ubuntu-server]]></category>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[system-administration]]></category>
            <category><![CDATA[ubuntu]]></category>
            <dc:creator><![CDATA[Han Zhang]]></dc:creator>
            <pubDate>Sat, 21 Jul 2018 05:12:52 GMT</pubDate>
            <atom:updated>2018-07-21T05:12:52.827Z</atom:updated>
            <content:encoded><![CDATA[<p>Recently I upgraded a few servers from Ubuntu 16.04 LTS to the latest version of 18.04 LTS. However, I ran into a strange issue that the system will always boot into black screen immediately after the grub menu screen. I spent quite some time digging around, and finally solved this display issue caused by <em>(spoiler alert)</em> deprecated hardware and missing drivers.</p><h4>The Black Screen</h4><p>After booting up the system, the furthest stage I could get was the grub menu, which is the screen that let me choose if I want to boot the normal Ubuntu or boot into recovery mode. Soon after the selection screen, all I could get from the display was pitch black, no matter how many times I tried.</p><p>Clearly it wasn’t a hardware failure, because it worked fine with just 16.04 prior to the upgrade. The OS installation should also be okay, since I could boot up normally all the way up to grab menu selection screen. In addition, I tried SSH into the server when it was up and running with black display. It worked. The server behave normally from a remote shell’s point of view. So in conclusion, there must be something wrong with the graphic card and it’s most likely a software issue.</p><h4>Find out the Hardware</h4><p>These servers were already there before I joined the lab. So I know practically nothing about their configurations. Had I known I would lose visual to the servers once I upgrade them, I would definitely take a note about their hardware specification before I begin the process. But how should I expect things like this would happen?</p><p>Luckily, I could still connect to the servers over network. By SSH into the server, I was able to get a better sense on why the problem happened. I checked the graphic card on the server and got the surprising result:</p><pre>$ lspci | grep VGA<br>0b:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. G200eR2 (rev 01)</pre><p>I don’t know too much about Matrox and their graphic cards. Some Googling around lands me on their legacy driver download page and it looks like their driver support stops at 2006. :(</p><p>I don’t want to waste too much time looking for up-to-date drivers any more because it is clear at this point that legacy hardware and outdated drivers are the root cause for the black screen.</p><h4>Solution — Hot Fix</h4><p>The black screen upon boot issue is well addressed in this <a href="https://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it/162076#162076">Ask Ubuntu post</a>.</p><p>Upon booting up, you have to stop the default grub menu selection from happening. When you see the grub menu selection screen, you can press “up”/”down” arrow to stop the timer (buy some time to read instruction carefully), or directly press “e” to edit grub menu entry.</p><p>Once you are in the grub menu editing screen, you can change the line starting with linux. This line specifies location for linux kernel image and options for booting up the kernel. I added nomodeset right after the ro flag. So the line looks like</p><pre>linux /boot/vmlinuz-xxx-generic &lt;blah_blah_blah&gt; ro nomodeset &lt;other_flags&gt;</pre><p>Remember the name of the grub menu entry you just edited, because you need to select the right one the next time you select from the grub menu. Now after you made the modification, press Ctrl+X or F10 to reboot. After the reboot and inside the grub menu selection screen, select the entry you just inserted nomodeset into. Now the system should boot up normally and eventually you get a visual on the screen asking you to login to the system! Although the display may or may not look a little bit funky due to display driver mismatch.</p><h4>Solution — Permanent Fix</h4><p>The quick fix would set nomodeset flag for the corresponding menu entry <em>once</em> (note: not sure if the flag would still be there when you reboot) and let you in. The original post ask you to install the right video driver to solve the problem once for all. However, what if the graphic card is so out-of-date and not supported anymore? I don&#39;t want to change the menu entry each time I want to have a visual from the server, although this might work just fine because these servers are going to machine room and we could SSH into them.</p><p>In order to get <strong>modified</strong> grub menu the default option each time the system boot up, I looked into ways to change grub menu in a persistent manner. The solution is also pretty simple. We need to edit the file at /etc/grub.d/10_linux. There is a function linux_entry() which looks like this</p><pre># /etc/grub.d/10_linux<br>linux_entry() <br>{<br>  os=&quot;$1&quot;<br>  version=&quot;$2&quot;<br>  type=&quot;$3&quot;<br>  args=&quot;$4&quot;<br><br>...<br>}</pre><p>If you look further down the code, the variable ${args} is used as boot options for linux kernel, and it&#39;s positioned right after the ro flag. Therefore, we can simply add another option flag in this variable to enable nomodeset persistently. The new file should look like this:</p><pre># /etc/grub.d/10_linux<br>linux_entry() <br>{<br>  os=&quot;$1&quot;<br>  version=&quot;$2&quot;<br>  type=&quot;$3&quot;<br>  args=&quot;$4&quot;<br>  args=”nomodeset $args”<br>...<br>}</pre><p>After saving the changes, run</p><pre>$ sudo update-grub</pre><p>Then you should have an up-to-date <strong>modified</strong> version of grub menu! Try reboot the system and see if it can boot into a nomodeset version of kernel by default. It works for me.</p><h4>Resources &amp; References</h4><p>Below are some links I found super useful while I was fixing this issue. It turns out this is a more common problem than I had thought. However, I want to share steps I took just in case someone else is also looking for setting the nomodeset a persistent solution instead of installing the video drivers.</p><p>(Note: some of them are linked in the post already)</p><ul><li><a href="https://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it/162076#162076">My computer boots to a black screen, what options do I have to fix it?</a></li><li><a href="https://www.howtogeek.com/196655/how-to-configure-the-grub2-boot-loaders-settings/">How to Configure the GRUB2 Boot Loader&#39;s Settings</a></li><li><a href="https://askubuntu.com/questions/81660/how-can-i-edit-my-grub-bootloader-entries-hide-rename-remove-preferably-doi">How can I edit my Grub bootloader entries (Hide, Rename, Remove)? Preferably doing it manually, and not with a program</a></li><li><a href="https://stackoverflow.com/questions/4181703/how-to-concatenate-string-variables-in-bash">How to concatenate string variables in Bash</a></li><li><a href="https://askubuntu.com/questions/207175/what-does-nomodeset-do">What does `nomodeset` do</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b9f3a87ee60" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>