<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: FixeQ</title>
    <description>The latest articles on DEV Community by FixeQ (@fixeq).</description>
    <link>https://dev.to/fixeq</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3210675%2Fd19c24ca-8c2d-4890-9eda-38b36069fbd5.jpg</url>
      <title>DEV Community: FixeQ</title>
      <link>https://dev.to/fixeq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fixeq"/>
    <language>en</language>
    <item>
      <title>My Hardware Journey: From ThinkPad Survival to ZBook Power-Up</title>
      <dc:creator>FixeQ</dc:creator>
      <pubDate>Thu, 07 Aug 2025 08:04:44 +0000</pubDate>
      <link>https://dev.to/fixeq/my-hardware-journey-from-thinkpad-survival-to-zbook-power-up-ajh</link>
      <guid>https://dev.to/fixeq/my-hardware-journey-from-thinkpad-survival-to-zbook-power-up-ajh</guid>
      <description>&lt;p&gt;Once upon a time, I had a loyal ThinkPad T470.&lt;br&gt;&lt;br&gt;
Specs?&lt;br&gt;&lt;br&gt;
💻 i5-6300U&lt;br&gt;&lt;br&gt;
🧠 16 GB RAM&lt;br&gt;&lt;br&gt;
💾 ADATA LEGEND 710 512GB on a M.2-to-SATA adapter (because native M.2 wasn’t a thing, and yes, no screw, classic ThinkPad moment).&lt;br&gt;&lt;br&gt;
Still, it worked - barely held together, but it did.  &lt;/p&gt;

&lt;p&gt;Then, after one of those nights, the ThinkPad decided it had enough.&lt;br&gt;&lt;br&gt;
No power, no signs of life. Just... silence.  &lt;/p&gt;




&lt;p&gt;Enter: a new hope.&lt;br&gt;&lt;br&gt;
🖥️ HP ZBook 15 G6&lt;br&gt;&lt;br&gt;
💪 i7-9850H&lt;br&gt;&lt;br&gt;
🧠 32 GB RAM&lt;br&gt;&lt;br&gt;
🎮 NVIDIA Quadro T2000 Max-Q&lt;br&gt;
⚡ WD BLACK 512GB NVMe&lt;br&gt;&lt;br&gt;
💸 1699 zł (~$400), bought via Allegro Smart from Malanet.  &lt;/p&gt;

&lt;p&gt;It arrived, it booted, everything looked good.&lt;br&gt;&lt;br&gt;
Until...  &lt;/p&gt;




&lt;p&gt;I tried installing Arch Linux (of course),&lt;br&gt;&lt;br&gt;
but the BIOS was locked down like a government server.&lt;br&gt;&lt;br&gt;
Secure Boot enabled, BIOS options greyed out, no way to disable anything.&lt;br&gt;&lt;br&gt;
And I had no chip flasher, no mood for soldering.  &lt;/p&gt;

&lt;p&gt;So I messaged Malanet.&lt;br&gt;&lt;br&gt;
They said:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Ship it back, we’ll unlock it for free. We’ll cover shipping both ways."  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;📦 I sent it.&lt;br&gt;&lt;br&gt;
2 days later - it returned.  &lt;/p&gt;




&lt;p&gt;But then...&lt;br&gt;&lt;br&gt;
🤡 No SSD.  &lt;/p&gt;

&lt;p&gt;The WD BLACK? Gone.&lt;br&gt;&lt;br&gt;
Just a sad, empty M.2 slot.  &lt;/p&gt;

&lt;p&gt;No big deal.&lt;br&gt;&lt;br&gt;
I grabbed the ADATA from the dead ThinkPad,&lt;br&gt;&lt;br&gt;
unscrewed a random screw from its motherboard (because yes, it fit),&lt;br&gt;&lt;br&gt;
slotted it into the ZBook, and installed Arch Linux like it was nothing.  &lt;/p&gt;

&lt;p&gt;Then I contacted Malanet:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hey, your SSD didn’t make it back."  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They replied:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Whoops, sending it now."  &lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;2 days later, InPost delivered again.&lt;br&gt;&lt;br&gt;
They used a regular small parcel instead of a mini one -&lt;br&gt;&lt;br&gt;
💸 InPost got that extra 5 zł (~1.20 USD) for no reason.  &lt;/p&gt;




&lt;p&gt;While installing it, I discovered something magical:&lt;br&gt;&lt;br&gt;
💡 "WAIT… there’s a second M.2 slot?!"  &lt;/p&gt;

&lt;p&gt;Boom.&lt;br&gt;&lt;br&gt;
✨ DUAL SSD MODE ACTIVATED ✨&lt;br&gt;&lt;br&gt;
ADATA for Arch Linux.&lt;br&gt;&lt;br&gt;
WD BLACK for whatever else I want.&lt;br&gt;&lt;br&gt;
And yes, the ThinkPad screw is still holding strong.  &lt;/p&gt;




&lt;p&gt;Big thanks to &lt;a href="https://www.malanet.pl" rel="noopener noreferrer"&gt;Malanet&lt;/a&gt; for BIOS unlock + SSD fix.&lt;br&gt;&lt;br&gt;
Shoutout to &lt;a href="https://inpost.pl" rel="noopener noreferrer"&gt;InPost&lt;/a&gt; for delivering my packages without crashing them lol.&lt;br&gt;&lt;br&gt;
And eternal respect to the ThinkPad screw, still doing its job in a completely different machine.&lt;/p&gt;

</description>
      <category>archlinux</category>
      <category>secureboot</category>
      <category>hp</category>
      <category>thinkpad</category>
    </item>
    <item>
      <title>My adventure with Samsung Galaxy A26 5G</title>
      <dc:creator>FixeQ</dc:creator>
      <pubDate>Mon, 26 May 2025 15:35:21 +0000</pubDate>
      <link>https://dev.to/fixeq/my-adventure-with-samsung-galaxy-a26-5g-4bhc</link>
      <guid>https://dev.to/fixeq/my-adventure-with-samsung-galaxy-a26-5g-4bhc</guid>
      <description>&lt;h3&gt;
  
  
  Chapter 1: The Broken Motorola Edge 50 Fusion
&lt;/h3&gt;

&lt;p&gt;I had been using my Motorola Edge 50 Fusion for a while with a modified kernel and an unlocked bootloader. One day, out of the blue, the bootloader &lt;strong&gt;relocked itself&lt;/strong&gt;, and the system failed &lt;strong&gt;integrity checks&lt;/strong&gt;. I tried to unlock the bootloader again, but I couldn't—OEM unlocking had also &lt;strong&gt;disabled itself automatically&lt;/strong&gt;, and the toggle was no longer accessible.&lt;/p&gt;

&lt;p&gt;I reached out to Motorola support, but all they offered was an ADB-based workaround—hardly a solution for EDL mode recovery this solution was useless because I couldn't even turn on the system lol&lt;/p&gt;

&lt;p&gt;I decided to send the phone to the official service center. The shipping cost me 16 PLN (about $4). After inspection, they wanted to replace the motherboard for &lt;strong&gt;1013 PLN&lt;/strong&gt; (around &lt;strong&gt;$250&lt;/strong&gt;). I declined and asked for the device to be returned. They did send it back, but I still had to pay a &lt;strong&gt;116 PLN&lt;/strong&gt; (about &lt;strong&gt;$28&lt;/strong&gt;) "service fee" just to get my phone back.&lt;/p&gt;

&lt;p&gt;Frustrated but undeterred, I decided it was time for a new challenge. I bought the Samsung Galaxy A26 5G (SM-A266B), eager to see if I could push it even further: root it while preserving &lt;strong&gt;STRONG Integrity&lt;/strong&gt; and keeping &lt;strong&gt;OTA updates&lt;/strong&gt; functional.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chapter 2: Unrooted Beginnings
&lt;/h3&gt;

&lt;p&gt;For the first few days, I used the A26 just like a stock device—no root, no modifications. I familiarized myself with One UI 7 on Android 15 and made sure everything ran smoothly. Meanwhile, the countdown to root day was ticking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chapter 3: Upstream Contribution
&lt;/h3&gt;

&lt;p&gt;Roughly a month after buying the phone, I noticed that many Samsung users on One UI 7 relied on kernel version 5.15.153, yet support wasn’t available in WildKernels/GKI_KernelSU_SUSFS. So, I submitted a pull request:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/WildKernels/GKI_KernelSU_SUSFS/pull/117" rel="noopener noreferrer"&gt;&lt;strong&gt;Add build for 5.15.153 kernel version&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many Samsung users on OneUI 7 rely on kernel version 5.15.153. Adding this version ensures better compatibility and support for devices using the latest Samsung firmware.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few days later, maintainer &lt;strong&gt;TheWildJames&lt;/strong&gt; accepted and merged my change. Now, GKI_KernelSU_SUSFS had out-of-the-box support for &lt;code&gt;5.15.153&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chapter 4: Rooting the A26 5G
&lt;/h3&gt;

&lt;p&gt;Armed with KernelSU-Next and SuSFS, I set out to root my phone. I used the following modules and tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;susfs4ksu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PlayIntegrityFix&lt;/code&gt; [INJECT]&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TrickyStore&lt;/code&gt; + &lt;code&gt;TrickyAddon&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BetterKnownInstalled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;LSPosed&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KnoxPatch&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;KnoxPatchEnhancer&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I based my method on the classic gist by &lt;strong&gt;rafareborn&lt;/strong&gt; (&lt;a href="https://gist.github.com/rafareborn/4531390f14e9821a8fd88976f6180252" rel="noopener noreferrer"&gt;gist.github.com/rafareborn/4531390f14e9821a8fd88976f6180252&lt;/a&gt;), integrating KnoxPatch to hide root from Samsung services.&lt;/p&gt;

&lt;p&gt;To configure TrickyStore, I used its Web UI by simply clicking buttons—no manual editing needed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tap the &lt;code&gt;≡&lt;/code&gt; (hamburger menu)&lt;/li&gt;
&lt;li&gt;Press &lt;strong&gt;Mark all&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Uncheck unnecessary items&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Set critical key&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Chapter 5: Achieving STRONG Integrity &amp;amp; OTA
&lt;/h3&gt;

&lt;p&gt;After reboot, SafetyNet and Play Integrity both returned &lt;strong&gt;MEETS_STRONG_INTEGRITY&lt;/strong&gt;. Samsung OTA updates still worked, thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No modifications to &lt;code&gt;/system&lt;/code&gt; (SuSFS overrides)&lt;/li&gt;
&lt;li&gt;A patched &lt;code&gt;boot.img&lt;/code&gt; built from KSU sources, preserving signatures&lt;/li&gt;
&lt;li&gt;Restored or repatched &lt;code&gt;vbmeta&lt;/code&gt; to satisfy dm-verity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still, I recommend manual OTA flashes to stay in absolute control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chapter 6: Manual OTA Updates
&lt;/h3&gt;

&lt;p&gt;Here’s my streamlined manual update process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download&lt;/strong&gt; the full firmware package from SamFW.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flash&lt;/strong&gt; everything in Odin &lt;em&gt;except&lt;/em&gt; for the AP file.&lt;/li&gt;
&lt;li&gt;For AP:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Rename &lt;code&gt;.tar.md5&lt;/code&gt; to &lt;code&gt;.tar&lt;/code&gt; and extract contents.&lt;/li&gt;
&lt;li&gt;Remove &lt;code&gt;boot.img.lz4&lt;/code&gt; and add it from &lt;a href="https://github.com/WildKernels/GKI_KernelSU_SUSFS/releases" rel="noopener noreferrer"&gt;WildKernels/GKI_KernelSU_SUSFS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Extract &lt;code&gt;vbmeta.img.lz4&lt;/code&gt;, patch &lt;code&gt;vbmeta.img&lt;/code&gt;, then discard original.&lt;/li&gt;
&lt;li&gt;Optionally delete &lt;code&gt;userdata.img&lt;/code&gt; to preserve user data.

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Repack&lt;/strong&gt; modified files into a &lt;code&gt;.tar&lt;/code&gt; archive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flash&lt;/strong&gt; the repacked AP via Odin alongside the rest.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This method keeps root intact, preserves STRONG Integrity, and avoids OTA errors.&lt;/p&gt;

</description>
      <category>android</category>
      <category>mobile</category>
      <category>androiddev</category>
    </item>
  </channel>
</rss>
