<?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: kavin.dev</title>
    <description>The latest articles on DEV Community by kavin.dev (@kavindotdev).</description>
    <link>https://dev.to/kavindotdev</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%2F3907684%2Fb272f1ce-d013-475f-8f26-ab1ca61c6dd1.jpg</url>
      <title>DEV Community: kavin.dev</title>
      <link>https://dev.to/kavindotdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kavindotdev"/>
    <language>en</language>
    <item>
      <title>Understanding React Rendering Flow</title>
      <dc:creator>kavin.dev</dc:creator>
      <pubDate>Wed, 27 May 2026 03:20:07 +0000</pubDate>
      <link>https://dev.to/kavindotdev/understanding-react-rendering-flow-1fl1</link>
      <guid>https://dev.to/kavindotdev/understanding-react-rendering-flow-1fl1</guid>
      <description>&lt;p&gt;⚛️&lt;/p&gt;

&lt;p&gt;If you're learning React, one of the most important concepts is understanding &lt;strong&gt;what happens internally when a component renders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At first, React can feel magical.&lt;/p&gt;

&lt;p&gt;You write JSX… and somehow the UI updates automatically.&lt;/p&gt;

&lt;p&gt;But behind the scenes, React follows a very systematic rendering flow.&lt;/p&gt;

&lt;p&gt;Let’s break it down step-by-step 👇&lt;/p&gt;




&lt;h1&gt;
  
  
  React Rendering Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer Writes Components
        ↓
Components Return JSX
        ↓
JSX Converts into React Elements
        ↓
React Creates Virtual DOM
        ↓
React Compares Old &amp;amp; New Virtual DOM
        ↓
Updates Only Changed Parts in Real DOM
        ↓
Browser Displays Updated UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  1 Developer Creates Components
&lt;/h1&gt;

&lt;p&gt;In React, UI is built using &lt;strong&gt;components&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A component is simply a JavaScript function that returns UI.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello Captain&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Components make applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusable&lt;/li&gt;
&lt;li&gt;Organized&lt;/li&gt;
&lt;li&gt;Scalable&lt;/li&gt;
&lt;li&gt;Easier to maintain&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2 Components Return JSX
&lt;/h1&gt;

&lt;p&gt;Inside components, we usually return JSX.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSX looks like HTML, but it’s actually JavaScript syntax.&lt;/p&gt;

&lt;p&gt;Browsers cannot understand JSX directly.&lt;/p&gt;

&lt;p&gt;So React transforms it internally before rendering.&lt;/p&gt;




&lt;h1&gt;
  
  
  3 JSX Converts into React Elements
&lt;/h1&gt;

&lt;p&gt;React converts JSX into plain JavaScript objects called &lt;strong&gt;React Elements&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;becomes something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These objects describe what the UI should look like.&lt;/p&gt;




&lt;h1&gt;
  
  
  React Element Structure
&lt;/h1&gt;

&lt;p&gt;A React Element mainly contains:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HTML tag or component&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;props&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Properties/data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;children&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nested content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;key&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unique ID for lists&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  4 React Creates the Virtual DOM
&lt;/h1&gt;

&lt;p&gt;Using React Elements, React builds a &lt;strong&gt;Virtual DOM&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Virtual DOM?
&lt;/h2&gt;

&lt;p&gt;A lightweight JavaScript representation of the Real DOM stored in memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Virtual DOM = Fast in-memory copy of UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of directly manipulating the browser DOM every time something changes, React first updates the Virtual DOM.&lt;/p&gt;

&lt;p&gt;This makes rendering much faster and more efficient.&lt;/p&gt;




&lt;h1&gt;
  
  
  5 React Performs Diffing (Reconciliation)
&lt;/h1&gt;

&lt;p&gt;Whenever state or props change:&lt;/p&gt;

&lt;p&gt;React creates a &lt;strong&gt;new Virtual DOM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then React compares:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Old Virtual DOM
vs
New Virtual DOM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This comparison process is called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Diffing / Reconciliation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React tries to identify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"What exactly changed?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of rebuilding the entire page.&lt;/p&gt;




&lt;h1&gt;
  
  
  6 React Updates the Real DOM
&lt;/h1&gt;

&lt;p&gt;After finding the differences:&lt;/p&gt;

&lt;p&gt;React updates only the changed parts in the Real DOM.&lt;/p&gt;

&lt;p&gt;This selective updating is why React apps feel fast and responsive.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better performance&lt;/li&gt;
&lt;li&gt;Efficient updates&lt;/li&gt;
&lt;li&gt;Smooth UI interactions&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  7 Browser Paints the Updated UI
&lt;/h1&gt;

&lt;p&gt;Finally, the browser renders the updated UI on the screen.&lt;/p&gt;

&lt;p&gt;Important point:&lt;/p&gt;

&lt;p&gt;React manages updates,&lt;br&gt;
but the &lt;strong&gt;browser actually displays the UI&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why React Is Fast
&lt;/h1&gt;

&lt;p&gt;React improves performance because it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses Virtual DOM&lt;/li&gt;
&lt;li&gt;Updates only changed elements&lt;/li&gt;
&lt;li&gt;Avoids unnecessary DOM operations&lt;/li&gt;
&lt;li&gt;Efficiently re-renders components&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Understanding React’s rendering flow helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write better components&lt;/li&gt;
&lt;li&gt;Optimize performance&lt;/li&gt;
&lt;li&gt;Debug rendering issues&lt;/li&gt;
&lt;li&gt;Understand hooks and state updates more deeply&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you understand this internal workflow, React becomes much easier to reason about.&lt;/p&gt;




&lt;h2&gt;
  
  
  What helped you understand React rendering for the first time?
&lt;/h2&gt;

&lt;p&gt;Drop your thoughts below &lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>reactjsdevelopment</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Install NVIDIA Drivers on Fedora 44</title>
      <dc:creator>kavin.dev</dc:creator>
      <pubDate>Thu, 07 May 2026 03:53:34 +0000</pubDate>
      <link>https://dev.to/kavindotdev/how-to-install-nvidia-drivers-on-fedora-44-1b9a</link>
      <guid>https://dev.to/kavindotdev/how-to-install-nvidia-drivers-on-fedora-44-1b9a</guid>
      <description>&lt;p&gt;This guide covers the &lt;strong&gt;RPM Fusion method&lt;/strong&gt; — the recommended and most maintainable way to install NVIDIA proprietary drivers on Fedora. No manual &lt;code&gt;.run&lt;/code&gt; installers, no broken &lt;code&gt;dnf&lt;/code&gt; states.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you start, make sure your system is fully up to date&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf upgrade &lt;span class="nt"&gt;--refresh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot if there were kernel updates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 1 — Enable RPM Fusion Repositories
&lt;/h2&gt;

&lt;p&gt;Fedora doesn't ship proprietary drivers by default. RPM Fusion fills that gap. You need both the &lt;strong&gt;free&lt;/strong&gt; and &lt;strong&gt;nonfree&lt;/strong&gt; repos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="si"&gt;$(&lt;/span&gt;rpm &lt;span class="nt"&gt;-E&lt;/span&gt; %fedora&lt;span class="si"&gt;)&lt;/span&gt;.noarch.rpm &lt;span class="se"&gt;\&lt;/span&gt;
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="si"&gt;$(&lt;/span&gt;rpm &lt;span class="nt"&gt;-E&lt;/span&gt; %fedora&lt;span class="si"&gt;)&lt;/span&gt;.noarch.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;## Step 2 — Install the NVIDIA Driver&lt;/p&gt;

&lt;p&gt;Install the &lt;code&gt;akmod-nvidia&lt;/code&gt; package. The &lt;code&gt;akmod&lt;/code&gt; (automatic kernel module) system automatically rebuilds the driver whenever your kernel updates — saving you from the classic "driver broke after update" headache.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;akmod-nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;Optional *&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;If you need &lt;strong&gt;CUDA support&lt;/strong&gt; (for ML, video encoding, etc.), add this too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;xorg-x11-drv-nvidia-cuda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3 — Wait for the Kernel Module to Build
&lt;/h2&gt;

&lt;p&gt;This is the step most guides skip over — and it's important.&lt;/p&gt;

&lt;p&gt;After installation, the kernel module needs to compile. &lt;strong&gt;Do not reboot immediately.&lt;/strong&gt; Wait for the build to complete:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;akmods &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dracut &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify the module is built by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;modinfo &lt;span class="nt"&gt;-F&lt;/span&gt; version nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see a version number like &lt;code&gt;570.xx.xx&lt;/code&gt; in the output. If you see an error instead, &lt;strong&gt;do not reboot yet&lt;/strong&gt; — something went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Reboot
&lt;/h2&gt;

&lt;p&gt;Once the module is confirmed built:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After rebooting, verify the driver is active:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see your GPU listed with the driver version and memory usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;The RPM Fusion + &lt;code&gt;akmod-nvidia&lt;/code&gt; approach is the most reliable way to run NVIDIA drivers on Fedora. It survives kernel updates, works across Fedora versions, and doesn't require babysitting &lt;code&gt;.run&lt;/code&gt; scripts.&lt;/p&gt;

&lt;p&gt;Got questions or a specific GPU edge case? Drop them in the comments below. 🐧&lt;/p&gt;

</description>
      <category>linux</category>
      <category>nvidia</category>
      <category>nividagpu</category>
      <category>fedora44</category>
    </item>
    <item>
      <title>How To Install ROG Control Center on Fedora 44,43 Based Distros (asusctl Guide)</title>
      <dc:creator>kavin.dev</dc:creator>
      <pubDate>Fri, 01 May 2026 15:08:43 +0000</pubDate>
      <link>https://dev.to/kavindotdev/how-to-install-rog-control-center-on-fedora-4443-based-distros-asusctl-guide-2e43</link>
      <guid>https://dev.to/kavindotdev/how-to-install-rog-control-center-on-fedora-4443-based-distros-asusctl-guide-2e43</guid>
      <description>&lt;p&gt;If you're running an Asus ROG/TUF laptop on Fedora 42,43,44, you've probably noticed there's no official Armoury Crate for Linux. But don't worry, the open source &lt;code&gt;asusctl.&lt;/code&gt; suite has you covered with fan control, performance profiles, GPU switching, and RGB lighting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Enable the COPR Repository
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;sudo dnf copr enable lukenukem/asus-linux&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo dnf update --refresh&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install asusctl and supergfxctl
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;sudo dnf install asusctl supergfxctl rog-control-center&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo dnf update --refresh&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Enable Services
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo systemctl enable --now asusd.service&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo systemctl enable supergfxd.service&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  step 4: Verify Kernel Modules
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;lsmod |  grep asus
&lt;/code&gt;You should see modules like &lt;code&gt;asus_nb_wmi&lt;/code&gt;, &lt;code&gt;asus_armoury&lt;/code&gt;, 
&lt;code&gt;asus_wmi&lt;/code&gt;, and &lt;code&gt;hid_asus&lt;/code&gt; listed.
&lt;code&gt;
## Step 5: Launch ROG Control Center
&lt;/code&gt;rog-control-center`&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or find it in your application menu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  asusd.service fails to start?
&lt;/h3&gt;

&lt;p&gt;Run it manually to see the raw error:&lt;br&gt;
&lt;code&gt;sudo asusd&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  "Asus kernel isn't loaded" warning?
&lt;/h3&gt;

&lt;p&gt;Ignore it — it's safe and cosmetic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Profile switching not working?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;asusctl profile --list&lt;/code&gt;&lt;br&gt;
&lt;code&gt;asusctl profile -P Balanced&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Can Control
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fan Curves&lt;/li&gt;
&lt;li&gt;Performance Profiles (silent, Balanced, Turbo)&lt;/li&gt;
&lt;li&gt;GPU switching (Integrated / Hybrid / Dedicated)&lt;/li&gt;
&lt;li&gt;Keyboard RGB lighting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fli7s46d8ng4xgoi7g2xf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fli7s46d8ng4xgoi7g2xf.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifm3gco8eavgufwst82l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifm3gco8eavgufwst82l.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvnpetakce3k33g8u7x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvnpetakce3k33g8u7x1.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;No Windows VM needed anymore! The &lt;code&gt;asusctl&lt;/code&gt; project is actively &lt;br&gt;
maintained and gets better with every update. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://asus-linux.org" rel="noopener noreferrer"&gt;asus-linux.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/asus-linux/asusctl" rel="noopener noreferrer"&gt;asusctl GitLab&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>asus</category>
      <category>rog</category>
      <category>fedora</category>
    </item>
  </channel>
</rss>
