Recently, I got a new ThinkPad which took Lenovo over 2 month preparing for shipping. For the price, it worth waiting. This is the first Chromebook I’ve ever had, so I did quite a lot experiments with it.

Hardware

The model is C13 Yoga Chromebook (MORPHIUS) with AMD Athlon gold 3015c (Picasso) 4GB RAM and 32GB eMMc storage.

There are multiple variations in C13 models and mine is the lowest-end of them. It is the cheapest ThinkPad I’ve ever seen, even cheaper than my old one (Sandy Bridge, bought used on 2016).

The stylus pen is thinner and the touchscreen isn’t compatible with my old stylus pen although they feel very similar on hand.

Force Power-off

There are a few techniques from the official documents. I tried and none of them works for a serious freeze like kernel panic. Therefore, I physically disabled the built-in battery for convenience. Fortunately, it’s fairly easy to do without leaving a scratch or tearing up any label.

  • Hard and doesn’t work: press Refresh ⟳ together with the Power button for about five seconds, and at the same time detach the ac power adapter from the Chromebook
  • Works only for normal freeze: disconnect all power sources. Press and hold the power button for about seven seconds

Firmware

Disable CR50 hardware write protection and modify bootloader

I followed instructions from coolstar, pl-luk, and Mrchromebox to replace Tianocore with coreboot + SeaBIOS.

  1. Enter Recovery Mode with ESC + ⟳ + Power: press/hold ESC and Refresh, then press Power for ~1s
  2. CTRL+D to switch to Developer Mode and confirm
  3. CTRL+D again to wipe userdata for Developer Mode
  4. Connect WiFi and select Browse as a Guest
  5. Use CTRL+ALT+T in Chrome to Open the CCD
  6. Run shell in the Crosh shell to switch shell
  7. Run sudo crossystem dev_boot_altfw=1 and sudo crossystem dev_boot_usb=1 and sudo crossystem dev_boot_signed_only=0; sync to enable extra boot entries
  8. Run sudo flashrom --wp-disable and sudo flashrom --wp-range=0,0 to disable write protection
  9. Run MrChromebox’s script: cd; curl -LO mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
  10. Reboot and either select Select alternate bootloader → Tianocore/coreboot (CTRL+L)" or Boot from external Disk (CTRL+U) as needed

Linux on ThinkPad C13 Yoga

Tails

Thanks to folks from r/chrultrabook. I found adding iommu=pt to the Grab2 menu options fixed the booting problem for many Live CD distros. Here are more parameters maybe useful:

video=eDP-1:1920x1080-32@60 iommu=pt mem_encrypt=off amdgpu.ras_enable=0 amdgpu.audio=0

Depthboot

I’ve tried the prebuild EupneaOS image and didn’t like its flavor. Therefore, I followed Depthboot instructions to build from scratch.

  1. On a Linux machine, insert a USB drive and run git clone --depth=1 https://github.com/eupnea-linux/depthboot-builder; cd depthboot-builder; ./main.py inside a terminal
  2. Choose a flavor, select the USB drive to flash directly, for me its sdb, and it takes a few mins to finish
  3. Put the depthboot USB drive into the Chromebook and hit Ctrl+U (Boot from external disk) at the bootloader
  4. Boot into the newly created Linux and test everything out. In my case, only the sound card and suspend has issue
  5. Connect to internet, then open a terminal, update and run setup-audio to fix the sound card driver (acp3xalc5682m98357)
  6. run install-to-internal to start installation. It will use /dev/mmcblk1 which means wiping the entire 32GB eMMc/HDD without preserving Chrome OS partition
  7. When installation finishes, reboot and use Ctrl+D (Boot from internal disk) to boot into the new system

Depthboot created Linux distros runs pretty well on my C13. Suspend doesn’t suppose to work on this hardware and I don’t really need it. The sound card is far more problematic because acp3xalc5682m98357 (Maxim 98357a) is a tough one to work with.

Thanks to eupnea-audio-script. With kernel version 5.10.131, I was able to get the built-in speakers working but not for the headphone port. Here’s more test results:

  • Semi-functional sound card under Fedora 37, Pop!_OS 22.04 LTS and Ubuntu 22.10—speakers are fixed but not for the headphone port
  • Not working sound card under Ubuntu LTS 22.04 and Arch—the script didn’t fix anything

Workarounds are plenty, for example, using Bluetooth headphones or buying a cheap small USB sound card like C-Media ones that can plug n play.

MATE Desktop Environment

Breath used to provide MATE as one of the desktop options. Depthboot added Pop!_OS which is very nice but removed my favorite DE from all distros.

MATE consumes much less resources while provides a decent UX/UI. Because of that, it’s superior than any other desktop options for my C13. Most important, GNOME 2 was my first daily driver linux desktop.

  1. Use Depthboot main.py script to create a cli(no desktop) version of fedora, ubuntu cli had minor booting issue
  2. Boot into the Dephboot drive on C13 and use nmtuiActive a connection to connect WiFi
  3. Run install-to-internal and sudo reboot. Boot into internal disk and log into fedora cli
  4. To install MATE, run sudo dnf -y group install "MATE-Desktop" or for less package sudo dnf -y install @mate-desktop. In case of installing as secondary DE, add --allowerasing to resolve conflicts
  5. Run echo "exec /usr/bin/mate-session" >> ~/.xinitrcand startx to launch MATE

Fix twice login problem

It happens to LightDM, so both MATE and Xfce can be affected. Run these lines to switch from lightdm to sddm

dnf install sddm
systemctl disable lightdm
systemctl enable sddm
reboot

Use setup-audio to fix the sound card. After reboot, go to Sound Preferences/PulseAudio switch Profile into Pro Audio. Xfce and MATE doesn’t support volume function keys by default, go to System Settings - Hardware - Keyboard - Layouts switch Keyboard model into Google - Chromebook to enable all function keys.

Remap missing keys with keyd

However, I switched it back to Generic - Generic 104-key PC since I need a normal keyboard experience for blogging, coding and SSH.

Install keyd

git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
modprobe uinput
chmod a+r+w /dev/uinput
sudo systemctl enable keyd && sudo systemctl start keyd

Keep uinput loaded after reboot for keyd

#Add self to the input and uinput groups
sudo usermod -aG input $USERNAME
sudo groupadd uinput
sudo usermod -aG uinput $USERNAME

#Create auto load files for uinput module
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="uinput"' | sudo tee /etc/udev/rules.d/90-uinput.rules
echo uinput | sudo tee /etc/modules-load.d/uinput.conf

Run sudo keyd -m to read key press; create config file sudo pluma /etc/keyd/default.conf and save it with desired code

[ids]

*

[main]
# Remaps Tools/Lock key to Del
f13 = delete
# Remaps Search/meta/magnifier to Caps Lock
leftmeta = capslock
# Remaps right Ctrl key to Win/Meta/Super/Mod4
#rightcontrol = leftmeta
# Recovers missing F11, F12, 
[control]
f9 = f11
f10 = f12


[main]
# Use left Alt as Fn/ISO_Level3_Shift key
[alt]
# Recovers Home/End, PgUp/PgDn, PrtScr
left = home
right = end
up = pageup
down = pagedown
f5 = sysrq
# Remaps Function keys
f6 = brightnessdown
f7 = brightnessup
f8 = mute
f9 = volumedown
f10 = volumeup

[main]
# Use right Alt as Fn/ISO_Level3_Shift key
[altgr]
# Recovers Home/End, PgUp/PgDn, PrtScr
left = home
right = end
up = pageup
down = pagedown
f5 = sysrq
# Remaps Function keys
f6 = brightnessdown
f7 = brightnessup
f8 = mute
f9 = volumedown
f10 = volumeup

# More examples: https://github.com/rvaiya/keyd/blob/master/docs/keyd.scdoc

Run sudo keyd reload to see result

My layout is based on coolstarorg’s chromebookremap.ahk by using both sides of ALT as the Fn key instead of Ctrl. It brings back all missing keys such as F11/F12, volume controls and the ability to Ctrl+Alt+Del. Now we can have a fully functional keyboard on a Chromebook.

Optimize Liunx

For my C13, I think the cost of timeshift is more than what I can get from it. I’d rather use traditional backup methods like clonezilla or simply tar occasionally. Always make backups before doing anything funny.

  1. Go to System Settings - Hardware - Keyboard Shortcuts or run dconf-editor to setup hotkeys. I rebind some combinations from Meta/Super to left Alt

  2. Change font rendering DPI from 96 to 130; Find some cohesive dark theme that follows ThinkPad’s design language; Disable mouse acceleration and touchpad;

    I modified this script to disable hires scrolling and mouse acceleration at same shot. sudo dnf install xinput first, save desired code in a .sh file, run chmod +x script.sh from terminal to ensure its permission and add it into System - Personal - Preferences - Startup Applications.

#!/bin/sh

device="TPPS/2 Elan TrackPoint"

if xinput list --id-only "${device}" > /dev/null 2>&1; then
    xinput --set-prop "${device}" 'libinput Accel Profile Enabled' 0, 1
    xinput --set-prop "${device}" 'libinput Accel Speed' 0
	xinput --set-prop "${device}" 'libinput Scrolling Pixel Distance' 40 #Fastest to slowest 10-50
	xinput --set-prop "${device}" 'libinput High Resolution Wheel Scroll Enabled' 0
    notify-send "Mouse settings applied"
else
    echo "Unable to find device ${device}" >&2
    exit 1
fi
  1. Disabe useless autostarts (most of them) from System - Personal - Startup Applications - Show hidden or by using Stacer with root privilege; Remove bloatware like flatpak and abrt bug report services from terminal
sudo dnf -y remove xdg-desktop-portal
sudo systemctl -t service | grep abrt
sudo systemctl stop abrt-journal-core.service
sudo systemctl disable abrt-journal-core.service
sudo systemctl stop abrt-oops.service
sudo systemctl disable abrt-oops.service
sudo systemctl stop abrt-xorg.service
sudo systemctl disable abrt-xorg.service
sudo systemctl stop abrtd.service
sudo systemctl disable abrtd.service

At this point, on idle the system’s memory/CPU usage should be like 700-800MB/1-2%. Under normal load surfing with 5-6 tabs while playing FreeTube with 720p video, memory/CPU is around 2.6GB-2.8GB/20-50%. No lag or freeze what so ever.

To be more efficient, use some not-so-memory-hungry web browsers such as midori, Pale Moon and Otter. Although it is totally fine to stick with LibreWolf or Firefox+Arkenfox running full loads of extensions.

Arkenfox the easy way

For applying Arkenfox on stock Firefox

  1. Go to about:support and open Profile Directory

  2. Close Firefox and backup the entire profile dir. Download the user.js and prefsCleaner.sh inside the profile dir along with prefs.js

  3. Run these lines and restart Firefox

cd /home/username/.mozilla/firefox/s0m3th1ng.default/
wget https://raw.githubusercontent.com/arkenfox/user.js/master/user.js https://raw.githubusercontent.com/arkenfox/user.js/master/prefsCleaner.sh
chmod +x prefsCleaner.sh user.js
./prefsCleaner.sh
  1. If need persistent log in, modify user.js with followings
user_pref("privacy.clearOnShutdown.cookies", false); 

user_pref("privacy.clearOnShutdown.offlineApps", false);

user_pref("browser.sessionstore.privacy_level", 0);

user_pref("browser.startup.page", 3);

user_pref("places.history.enabled", true);

user_pref("privacy.sanitize.sanitizeOnShutdown", false);

user_pref("network.cookie.lifetimePolicy", 2);

Windows on ThinkPad C13 Yoga

Although coolstar has C13 with AMD 3015ce in its guide, it is not for the lowest end variation. If I run the script, it would say “Detected eMMC” and “UEFI only supports NVMe SSDs currently”.

Without the bootloader files created by that script, I can’t pass the “ACPI_BIOS_ERROR” when booting up ANY version of Windows. Therefore, I decided to run the script code manually for the bootloader files.

Prepare the bootloader files

On the Chromebook, boot into Linux either from internal disk or USB. Save these cut-out code in a .sh file and run sudo ./newscript.sh in terminal

echo "Downloading OpenCore + rEFInd"
curl -L -O https://coolstar.org/chromebook/windows-rwl/opencore-refind-rwl-generic.tar.gz
mkdir -p /tmp/efi/efi/boot

echo_green "Installing OpenCore + rEFInd"
tar xf opencore-refind-rwl-generic.tar.gz -C /tmp/efi/efi/boot 
mv /tmp/efi/efi/boot/OC /tmp/efi/efi/OC
mv /tmp/efi/efi/boot/refind /tmp/efi/efi/refind

echo "Downloading Tools.."
curl -L -O https://coolstar.org/chromebook/windows-rwl/iasl.gz
curl -L -O https://coolstar.org/chromebook/windows-rwl/patch.gz

gzip -d iasl.gz
gzip -d patch.gz

rm -rf /usr/local/bin/iasl /usr/local/bin/patch
mkdir -p /usr/local/bin
mv iasl /usr/local/bin/
mv patch /usr/local/bin
chmod +x /usr/local/bin/iasl
chmod +x /usr/local/bin/patch

echo "Dumping System ACPI tables"
mkdir -p /tmp/fwpatch
cat /sys/firmware/acpi/tables/DSDT > /tmp/fwpatch/dsdt.aml

if grep -q COREBOOT /sys/firmware/acpi/tables/SSDT1; then
    echo "Found COREBOOT SSDT1"
    cat /sys/firmware/acpi/tables/SSDT1 > /tmp/fwpatch/ssdt.aml
fi

if grep -q COREBOOT /sys/firmware/acpi/tables/SSDT2; then
    echo "Found COREBOOT SSDT2"
    cat /sys/firmware/acpi/tables/SSDT2 > /tmp/fwpatch/ssdt.aml
fi

echo "Disassembling ACPI tables"
iasl -d /tmp/fwpatch/dsdt.aml /tmp/fwpatch/ssdt.aml

echo "Downloading Patches"
curl -L -O https://coolstar.org/chromebook/windows-rwl/acpipatches.tar.gz
tar xf acpipatches.tar.gz -C /tmp/fwpatch

if $(true); then
    echo "Applying Patches"

    pushd /tmp/fwpatch #Enter Firmware patch stage

    echo "Applying DSDT Patch (Zen2 Chrome EC BSOD Fix)"
    patch -s -F 3 -i patches/zen2-crec-fix.patch dsdt.dsl

    echo "Applying DSDT Patch (Zen2 GPIO Fix)"
    patch -s -F 3 -i patches/zen2-gpio.patch dsdt.dsl

    echo "Applying DSDT Patch (Zen2 UART Fix)"
    patch -s -F 3 -i patches/zen2-uart.patch dsdt.dsl

    echo "Applying DSDT Patch (Zen2 Remove MISC)"
    patch -s -F 3 -i patches/zen2-nomisc.patch dsdt.dsl

    echo "Applying DSDT Patch (Zen2 Remove AAHB)"
    patch -s -F 3 -i patches/zen2-noaahb.patch dsdt.dsl
    
    if grep -q GOOG0002 dsdt.dsl; then
        echo "Applying DSDT Patch (Zen2 Keyboard Backlight)"
        patch -s -F 3 -i patches/zen2-kblt-scope.patch dsdt.dsl
    fi

    if grep -q GOOG0015 dsdt.dsl; then
        echo "Applying DSDT Patch (Morphius No Trackpoint)"
        patch -s -F 7 -i patches/morphius-no-trackpoint.patch dsdt.dsl
    fi

    if grep -q GOOG0006 dsdt.dsl; then
        echo "Applying DSDT Patch (Zen2 Tablet Mode)"
        patch -s -F 5 -i patches/zen2-tabletmode.patch dsdt.dsl
    fi

    if grep -q DPTC ssdt.dsl; then
        echo "Applying SSDT Patch (Syntax Fix)"
        patch -s -F 3 -i patches/morphius-syntax-fix.patch ssdt.dsl
    fi

    if grep -q RTD2141B ssdt.dsl; then
        echo "Applying SSDT Patch (Remove MST HUB)"
        patch -s -F 3 -i patches/nomst.patch ssdt.dsl
    fi

    if grep -q AMDI5682 ssdt.dsl; then
        echo "Applying SSDT Patch (Remove AMDI5682)"
        patch -s -F 5 -i patches/zen2-nomach.patch ssdt.dsl
    fi

    if grep -q AMDI1015 ssdt.dsl; then
        echo "Applying SSDT Patch (Remove AMDI1015)"
        patch -s -F 5 -i patches/zen2-nomach1015.patch ssdt.dsl
    fi

    if grep -q "Fingerprint Reader" ssdt.dsl; then
        echo "Applying SSDT Patch (Fingerprint Fix)"
        patch -s -F 3 -i patches/fingerprintfix.patch ssdt.dsl
    fi

    if grep -q ELAN0000 ssdt.dsl; then
        if [ "$isElanPad" = true ]; then
            echo "Applying SSDT Patch (Elan Touchpad)"
            patch -s -F 3 -i patches/elantp.patch ssdt.dsl
        else
            echo "Applying SSDT Patch (No Elan Touchpad)"
            patch -s -F 3 -i patches/noelantp.patch ssdt.dsl
        fi
    fi

    if grep -q "Synaptics Touchpad" ssdt.dsl; then
        if [ "$isSynapticsPad" = true ]; then
            echo "Applying SSDT Patch (Synaptics Touchpad)"
            patch -s -F 3 -i patches/synatp.patch ssdt.dsl
        else
            echo "Applying SSDT Patch (No Synaptics Touchpad)"
            patch -s -F 3 -i patches/nosynatp.patch ssdt.dsl
        fi
    fi

    if grep -q RAYD0001 ssdt.dsl; then
        if [ "$isRaydiumTouch" = true ]; then
            echoerr "Warning: Raydium Touchscreen is currently unsupported"
        fi
        echo "Applying SSDT Patch (No Raydium Touchscreen)"
        patch -s -F 3 -i patches/noraydiumts.patch ssdt.dsl
    fi

    if grep -q ELAN0001 ssdt.dsl; then
        if [ "$isElanTouch" = true ]; then
            echo "Applying SSDT Patch (Elan Touchscreen)"
            patch -s -F 3 -i patches/elants.patch ssdt.dsl
        else
            echo "Applying SSDT Patch (No Elan Touchscreen)"
            patch -s -F 3 -i patches/noelants.patch ssdt.dsl
        fi
    fi

    if grep -q ELAN9008 ssdt.dsl; then
        if [ "$isElanHIDTouch" = true ]; then
            echo "No Patch required (Elan HID Touchscreen)"
        else
            echo "Applying SSDT Patch (No Elan HID Touchscreen)"
            patch -s -F 6 -i patches/noelan9008ts.patch ssdt.dsl
        fi
    fi

    if grep -q GTCH7503 ssdt.dsl; then
        if [ "$isG2Touch" = true ]; then
            echo "No Patch required (G2 Touchscreen)"
        else
            echo "Applying SSDT Patch (No G2 Touchscreen)"
            patch -s -F 3 -i patches/nog2touch.patch ssdt.dsl
        fi
    fi

    if grep -q GDIX0000 ssdt.dsl; then
        if [ "$isGdixTouch" = true ]; then
            echo "No Patch required (GDIX Touchscreen)"
        else
            echo "Applying SSDT Patch (No GDIX Touchscreen)"
            patch -s -F 3 -i patches/nogdixts.patch ssdt.dsl
        fi
    fi

    if grep -q 10EC1015 ssdt.dsl; then
        echo "Applying SSDT Patch (Vilboz Duplicate I2C)"
        patch -s -F 5 -i patches/vilboz-nodupi2c.patch ssdt.dsl
        sed -i 's/TUN1/TUN0/g' ssdt.dsl
    fi

    popd
fi

echo "Compiling ACPI tables"
mv /tmp/fwpatch/dsdt.dsl /tmp/fwpatch/dsdt-modified.dsl
mv /tmp/fwpatch/ssdt.dsl /tmp/fwpatch/ssdt1-modified.dsl
iasl -ve /tmp/fwpatch/dsdt-modified.dsl
iasl -ve /tmp/fwpatch/ssdt1-modified.dsl

echo "Installing patched tables"
mv /tmp/fwpatch/dsdt-modified.aml /tmp/efi/efi/OC/ACPI/
mv /tmp/fwpatch/ssdt1-modified.aml /tmp/efi/efi/OC/ACPI/

#echo "Unmounting EFI partition"
#umount /tmp/efi

echo_green "Cleaning Up..."
rm -rf opencore-refind-rwl-generic.tar.gz iasl.gz patch.gz acpipatches.tar.gz
rm -rf /usr/local/bin/iasl /usr/local/bin/patch /tmp/fwpatch

Copy the output file from /tmp/efi to a USB drive for later use. The file structure of the bootloader directory should look like this:

├── EFI
│   ├── boot
│   │   ├── BOOTx64.efi	20.0 KiB (20,484)
│   ├── OC
│   │   ├── ACPI
│   │   │   ├── dsdt-modified.aml	16.1 KiB (16,466)
│   │   │   └── ssdt1-modified.aml	8.7 KiB (8,881)
│   │   ├── config.plist
│   │   ├── Drivers
│   │   │   └── AcpiPatcher.efi	24.0 KiB (24,576)
│   │   └── OpenCore.efi
│   ├── refind
│   │   ├── icons
│   │   ├── refind.conf
│   │   ├── refind_x64.efi
│   │   ├── themes

I didn’t show files under icons, themes, vars, and tools since they are not important for the task.

Prepare the Windows To Go USB Drive

Unfortunately, internal eMMc and SD card are not possible to boot up EFI for Windows. It has to be running on a USB drive.

  1. Download .iso image and Rufus on a Windows 10 machine
  2. Plug in a decent USB drive or portable SSD, Open Rufus, select the correct device and .iso image
  3. Choose Windows To Go under Image option and hit Start
  4. When WTG installation finishes, use what ever tool to access the EFI partition on the WTG drive. I use BOOTICE made by pauly, Physical disk - Destination Disk - WTG USB Drive (xxGB) - Parts Manage highlight the partition with NO NAME, ESP, FAT32, 2048, 260.0 MB and Assign Drive Letter - X: - OK
  5. Copy the bootloader files we’ve prepared to the EFI partition just mounted. When merging the efi folders, it would prompt for replacing BOOTx64.efi and yes for that. Now there are Boot,Microsoft,OC,refind inside EFI\
  6. Eject the WTG drive from Windows machine and plug it into the Chromebook. Power on and Select alternate bootloader → Tianocore/coreboot (CTRL+L)" to boot into rEFInd
  7. When the rEFInd menu shows up, enter Boot Microsoft EFI boot from EFI System Partition and wait for the initialization. “ACPI_BIOS_ERROR” no longer interrupting and when the system reboots just repeat booting into the WTG drive
  8. Plug in a USB mouse may be helpful when interaction begins. It’s recommend to setup Windows without internet

Windows Post-Installation

Coolstar guide also provides a full set of drivers for ThinkPad C13. Sound card may works with both speaker and headphone depending on which Windows is installed.

After tested a couple of versions of Windows10/11, I couldn’t get the touchscreen, touchpad and trackpoint working on any of them. This ruins my intention of using Windows on C13. Although at this point, it is able to play games with USB gaming gears.

I still want to share some opinion on Windows since it’s not limited on a single hardware.

To test out different Windows versions running on a new device, Microsoft-Activation-Scripts can make things easier.

For me, LTSC 2021 (21H2) is the sweet spot between up-to-date and RAM efficiency among all current versions.

Here is the final result:

en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso

	Defualt
	RAM	Avaliable 2771MB 30%
	C:\ 17GB Used

	After OOSU10/Windows10Debloater & privacy.sexy
	RAM	Avaliable 3088MB 24%
	C:\ 9.5GB Used

tiny10 21H2 x64 2209.iso

	Defualt
	RAM	Avaliable 3088MB 24%
	C:\ 8GB Used

	After OOSU10/Windows10Debloater & privacy.sexy & Debloat-Windows-10
	RAM	Avaliable 3196MB 21%
	C:\ 8.2GB Used

Although the mod version, tiny10 is generally not being trusted. It shows how much more we can get by modifying the image than post-install scripts.

Also, when considering privacy, people tend to think using Windows 10 is a joke. It’s half true.

Using OOSU10/Windows10Debloater can make things less worse. Additionally, using privacy.sexy can make it better. If we need to go further, Debloat-Windows-10 has a whole set of useful scripts to run or customize, for example, my favorite disable-services.ps1.

Even not for privacy enhancement, just for better resource efficiency. These post-install scripts are worth to have—by reducing background CPU/Network/Disk activity, RAM/Storage consumption.

Yes, if use the aggressive rule set, it will break things up—until you notice it. Even if it really bothers you, most of the time it is reversible.

For more security enhancement, BitLocker/VeraCrypt and Windows-Optimize-Harden-Debloat are recommended.

henrypp’s simplewall + hostsmgr is a good alternative to Windows Firewall + SmartScreen which doesn’t cut off all those crazy traffic with Microsoft and its affiliate servers.

hostsmgr generates a huge host file for blocking those unnecessary traffic as much as possible but it conflicts with DNS client service (dnscache). StevenBlack’s script solves the problem or by simply switching to NextDNS which is a modern alternative to the old hosts file methods.

For machines with 4GB of RAM and 32GB of storage in the modern days, we may need some cleanup methods from the old days but not with those outdated tools.

Also made by henrypp, memreduct can save a lot of memory that eating up by poorly made software. Use it wisely will definitely optimize the system performance. For storage, with bleachbit and WinDirStat would be enough to keep C13 running for years.