Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>I Asked AI To Mod My VBIOS And It Choked At Step Four | TinyMemoryLM</title> | |
| <link rel="stylesheet" href="bluesheet.css"> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono&display=swap" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --blue-900: #000000; | |
| --blue-800: #0a0a0a; | |
| --blue-700: #111111; | |
| --blue-600: #1a1a1a; | |
| --blue-500: #333333; | |
| --blue-400: #555555; | |
| --blue-300: #777777; | |
| --blue-200: #888888; | |
| --blue-100: #aaaaaa; | |
| --white: #ffffff; | |
| --white-soft: #f5f5f5; | |
| --white-muted: #e0e0e0; | |
| --grid-line: rgba(255, 255, 255, 0.03); | |
| --grid-line-major: rgba(255, 255, 255, 0.06); | |
| --accent: #ededed; | |
| --accent-muted: #888888; | |
| --font-sans: 'Geist', -apple-system, BlinkMacSystemFont, sans-serif; | |
| --font-mono: 'Geist Mono', 'SF Mono', 'Fira Code', monospace; | |
| --container-max: 1100px; | |
| } | |
| * { box-sizing: border-box; margin: 0; padding: 0; } | |
| html { font-size: 16px; scroll-behavior: smooth; } | |
| body { font-family: var(--font-sans); background: var(--blue-900); color: var(--white-muted); line-height: 1.7; -webkit-font-smoothing: antialiased; } | |
| a { color: var(--white); text-decoration: none; transition: color 0.15s ease; } | |
| a:hover { color: var(--accent); } | |
| .container { max-width: var(--container-max); margin: 0 auto; padding: 0 24px; } | |
| nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(12px); border-bottom: 1px solid var(--blue-600); padding: 16px 0; } | |
| nav .container { display: flex; justify-content: space-between; align-items: center; } | |
| .nav-brand { font-size: 18px; font-weight: 600; color: var(--white); display: flex; align-items: center; gap: 8px; } | |
| .nav-brand span { color: var(--accent); } | |
| .nav-links { display: flex; gap: 32px; } | |
| .nav-links a { font-size: 14px; font-weight: 500; color: var(--blue-200); } | |
| .nav-links a:hover { color: var(--white); } | |
| .post { padding: 140px 0 80px; } | |
| .post-back { display: inline-block; color: var(--blue-200); font-size: 14px; margin-bottom: 32px; } | |
| .post-back:hover { color: var(--accent); } | |
| .post-back::before { content: '← '; } | |
| .post-meta { display: flex; gap: 12px; margin-bottom: 20px; } | |
| .post-date { font-size: 13px; color: var(--blue-200); font-family: var(--font-mono); } | |
| .post-tag { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--white); background: rgba(255, 255, 255, 0.08); padding: 4px 10px; border-radius: 4px; } | |
| .post h1 { font-size: 36px; font-weight: 700; color: var(--white); margin-bottom: 32px; line-height: 1.2; letter-spacing: -0.02em; } | |
| .post-body p { font-size: 17px; line-height: 1.8; margin-bottom: 24px; color: var(--blue-200); } | |
| .post-body p:first-of-type { font-size: 20px; color: var(--white-muted); } | |
| .post-body h2 { font-size: 24px; font-weight: 600; color: var(--white); margin: 48px 0 20px; } | |
| .post-body blockquote { border-left: 3px solid var(--accent); padding: 20px 24px; margin: 32px 0; background: var(--blue-800); border-radius: 0 8px 8px 0; } | |
| .post-body blockquote p { font-size: 16px; font-style: italic; color: var(--blue-200); margin: 0; } | |
| .post-body hr { border: none; height: 1px; background: var(--blue-600); margin: 48px 0; } | |
| .step-list { list-style: none; padding: 0; margin: 24px 0; } | |
| .step-list li { padding: 16px 20px; background: var(--blue-800); border: 1px solid var(--blue-600); border-radius: 8px; margin-bottom: 12px; font-size: 15px; color: var(--blue-200); display: flex; justify-content: space-between; align-items: center; } | |
| .step-list li .status { font-size: 12px; font-family: var(--font-mono); padding: 2px 8px; border-radius: 4px; } | |
| .step-list li .status.success { color: var(--accent); background: rgba(255, 255, 255, 0.06); } | |
| .step-list li .status.failed { color: #ff0000; background: rgba(255, 0, 0, 0.1); } | |
| .code-block { background: var(--blue-800); border: 1px solid var(--blue-600); border-radius: 8px; padding: 20px; margin: 24px 0; font-family: var(--font-mono); font-size: 13px; overflow-x: auto; } | |
| .code-block .comment { color: var(--blue-200); font-style: italic; display: block; margin-top: 4px; } | |
| .warning-box { background: var(--blue-800); border: 2px solid var(--accent); border-radius: 8px; padding: 20px; margin: 24px 0; } | |
| .warning-box h3 { color: var(--accent); font-size: 14px; margin-bottom: 12px; } | |
| .warning-box p { font-size: 14px; color: var(--blue-200); } | |
| .post-footer { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--blue-600); } | |
| .post-footer p { font-size: 14px; color: var(--blue-200); font-style: italic; margin: 0; } | |
| footer { padding: 40px 0; background: var(--blue-800); border-top: 1px solid var(--blue-600); text-align: center; } | |
| footer p { color: var(--blue-200); font-size: 14px; margin-bottom: 8px; } | |
| footer a { color: var(--blue-200); } | |
| footer a:hover { color: var(--accent); } | |
| @media (max-width: 768px) { .post h1 { font-size: 28px; } .nav-links { display: none; } } | |
| </style> | |
| </head> | |
| <body> | |
| <svg class="scribbles" viewBox="0 0 1440 900" preserveAspectRatio="xMidYMid slice"> | |
| <path d="M100,50 Q150,30 200,60 T300,40 T400,70" fill="none" stroke="white" stroke-width="1"/> | |
| <path d="M800,200 Q850,180 900,210 T1000,190 T1100,220" fill="none" stroke="white" stroke-width="0.8"/> | |
| <path d="M200,700 Q250,680 300,710 T400,690 T500,720" fill="none" stroke="white" stroke-width="0.6"/> | |
| <path d="M1200,400 Q1250,380 1300,410 T1400,390" fill="none" stroke="white" stroke-width="0.7"/> | |
| <path d="M50,400 Q100,380 150,420 T250,400" fill="none" stroke="white" stroke-width="0.5"/> | |
| <circle cx="350" cy="150" r="30" fill="none" stroke="white" stroke-width="0.6"/> | |
| <circle cx="1100" cy="600" r="25" fill="none" stroke="white" stroke-width="0.5"/> | |
| <path d="M600,100 L620,80 L640,100 L660,80" fill="none" stroke="white" stroke-width="0.7"/> | |
| <path d="M1300,750 Q1320,730 1340,760 T1380,740" fill="none" stroke="white" stroke-width="0.5"/> | |
| <path d="M100,800 Q120,780 140,810 T180,790 T220,820" fill="none" stroke="white" stroke-width="0.6"/> | |
| <path d="M700,500 Q720,480 740,510 T780,490 T820,520" fill="none" stroke="white" stroke-width="0.4"/> | |
| <path d="M400,300 C420,280 440,320 460,300 C480,280 500,320 520,300" fill="none" stroke="white" stroke-width="0.5"/> | |
| <path d="M900,700 C920,680 940,720 960,700 C980,680 1000,720 1020,700" fill="none" stroke="white" stroke-width="0.6"/> | |
| <path d="M150,250 Q170,230 190,260 Q210,240 230,270" fill="none" stroke="white" stroke-width="0.4"/> | |
| <path d="M1050,100 Q1070,80 1090,110 Q1110,90 1130,120" fill="none" stroke="white" stroke-width="0.5"/> | |
| <path d="M500,850 C520,830 540,860 560,840 C580,820 600,860 620,840" fill="none" stroke="white" stroke-width="0.4"/> | |
| <path d="M1350,50 Q1370,30 1390,60 T1430,40" fill="none" stroke="white" stroke-width="0.5"/> | |
| <path d="M30,600 Q50,580 70,610 T110,590" fill="none" stroke="white" stroke-width="0.4"/> | |
| </svg> | |
| <nav> | |
| <div class="container"> | |
| <a href="index.html" class="nav-brand"><span>/</span>TinyMemoryLM</a> | |
| <div class="nav-links"> | |
| <a href="index.html">Home</a> | |
| <a href="blog.html">Blog</a> | |
| <a href="status.html">Status</a> | |
| </div> | |
| </div> | |
| </nav> | |
| <main> | |
| <article class="post"> | |
| <div class="container"> | |
| <a href="blog.html" class="post-back">Back to Blog</a> | |
| <header> | |
| <div class="post-meta"> | |
| <span class="post-date">2026-03-21</span> | |
| <span class="post-tag">Hardware Fails</span> | |
| </div> | |
| <h1>I Asked AI To Mod My VBIOS And It Choked At Step Four</h1> | |
| </header> | |
| <div class="post-body"> | |
| <p>I have a RTX 5090 OC LC. It runs at 600W. I wanted 700W. Not because I need it. Not because it is safe. Because I can. Because the model said it could help. Because I have learned nothing from previous AI disappointments.</p> | |
| <p>The plan was simple. Four steps. Extract the VBIOS. Find the wattage limit. Modify it. Flash it back. How hard could it be? The answer is very hard. The AI failed at step four. It could not figure out how to get the InfoROM. It tried for an hour. It gave up. I am still at 600W.</p> | |
| <blockquote> | |
| <p>AI can write poetry. AI can debug code. AI cannot flash a VBIOS without having an existential crisis.</p> | |
| </blockquote> | |
| <h2>The Four Step Plan</h2> | |
| <p>Here is what we were trying to do. Here is where things went wrong. Here is my shame documented for the internet.</p> | |
| <ul class="step-list"> | |
| <li> | |
| <span>Step 1: Extract GPU VBIOS</span> | |
| <span class="status success">SUCCESS</span> | |
| </li> | |
| <li> | |
| <span>Step 2: Get max wattage location (~600W)</span> | |
| <span class="status success">SUCCESS</span> | |
| </li> | |
| <li> | |
| <span>Step 3: Modify to 700W max, 600W default</span> | |
| <span class="status success">SUCCESS</span> | |
| </li> | |
| <li> | |
| <span>Step 4: Re-install to current VBIOS active mode</span> | |
| <span class="status failed">FAILED</span> | |
| </li> | |
| </ul> | |
| <p>Three out of four. That is a passing grade in school. That is a failure in GPU modding. You do not get partial credit for almost bricking your graphics card.</p> | |
| <h2>Step One Went Fine</h2> | |
| <p>Extracting the VBIOS was easy. GPU-Z saved it. NVFlash backed it up. I had a file called 5090_vbios.rom and it was 512KB of pure potential. The AI told me this was normal. I believed it. I still believe it.</p> | |
| <div class="code-block"> | |
| <span class="comment"># Step 1: Extract VBIOS</span><br> | |
| nvflash --save backup.rom<br> | |
| <span class="comment"># Success. File exists. I am a hacker.</span> | |
| </div> | |
| <h2>Step Two Was Fine Too</h2> | |
| <p>Finding the wattage limit in the binary was harder. The AI suggested hex editors. It suggested searching for known patterns. It suggested looking at the power table structure. We found it. Around offset 0x3F20. The value read 600W.</p> | |
| <p>I felt powerful. I was editing my GPU at the binary level. I was one step away from godhood. I was about to learn humility.</p> | |
| <h2>Step Three Almost Killed Me</h2> | |
| <p>Modifying the wattage value seemed straightforward. Change 600 to 700. Save the file. Calculate the checksum. The AI helped with the checksum. It wrote a Python script. The script worked. The modified VBIOS was valid.</p> | |
| <div class="code-block"> | |
| <span class="comment"># Step 3: Modify wattage</span><br> | |
| Original: 0x258 (600W)<br> | |
| Modified: 0x2BC (700W)<br> | |
| Checksum: Recalculated<br> | |
| <span class="comment"># The file is ready. I am not.</span> | |
| </div> | |
| <p>I had a modified VBIOS. It was checksummed. It was validated. It was ready to flash. I was ready to have a heart attack.</p> | |
| <h2>Step Four Broke Everything</h2> | |
| <p>This is where the AI failed. This is where I learned that large language models are not actually large. They are just confident.</p> | |
| <p>To flash the VBIOS you need the InfoROM. The InfoROM tells NVFlash which VBIOS slot to write to. The AI did not know how to get this. It suggested commands that did not work. It suggested flags that did not exist. It suggested I try Linux. I am on Windows.</p> | |
| <div class="code-block"> | |
| <span class="comment"># Step 4: The failure</span><br> | |
| nvflash --getinfo<br> | |
| Error: InfoROM not found<br> | |
| <br> | |
| AI: Try nvflash -i<br> | |
| Error: Invalid flag<br> | |
| <br> | |
| AI: Try sudo nvflash<br> | |
| Me: I am on Windows<br> | |
| AI: ...<br> | |
| <span class="comment"># We have reached the end.</span> | |
| </div> | |
| <p>It tried for an hour. It suggested seven different commands. None of them worked. It eventually admitted it did not know. That is progress I guess. At least it stopped pretending.</p> | |
| <h2>The Safety Net</h2> | |
| <div class="warning-box"> | |
| <h3>⚠️ Will This Brick My GPU?</h3> | |
| <p>No. I have a dual-bios switch. If the flash fails I flip the switch. The backup VBIOS boots. I recover. I try again. Or I give up. Probably I give up.</p> | |
| <p>This is not advice. Do not do this. I am an idiot with money and too much time. You are probably smarter. Probably.</p> | |
| </div> | |
| <p>The dual-bios switch is why I attempted this. The worst case is I flip a switch and everything works again. The second worst case is I break both BIOS slots and need to hot flash with a programmer. I am not planning for the second worst case.</p> | |
| <h2>Why AI Failed</h2> | |
| <p>AI is trained on public data. VBIOS modding is not public. It is niche. It is dangerous. It is the kind of thing people do on forums with twenty posts and warnings everywhere. The training data does not have enough examples.</p> | |
| <p>Also flashing firmware is hardware specific. Every GPU has different structures. Every VBIOS version is different. What works for a 4090 might not work for a 5090. The AI does not know this until it is wrong.</p> | |
| <blockquote> | |
| <p>AI is great at common problems. VBIOS modding is not a common problem. It is a you should not be doing this problem.</p> | |
| </blockquote> | |
| <h2>What I Learned</h2> | |
| <p>I learned that AI cannot help with everything. I learned that hardware modding requires actual knowledge. I learned that 600W is probably enough for training tiny models. I learned that I will try again anyway.</p> | |
| <p>I also learned that the InfoROM issue is solvable. I just need to find the right NVFlash command. Or use a different tool. Or ask on a forum where people will judge me. All options are on the table.</p> | |
| <h2>Will I Try Again</h2> | |
| <p>Yes. Obviously yes. I wrote a blog post about this. I have committed to the bit. I cannot stop now. I will find the InfoROM. I will flash the VBIOS. I will run at 700W. My electricity bill will become a legal document.</p> | |
| <p>The training runs will be faster. The GPU will be hotter. The fans will be louder. I will be happier. This is what matters.</p> | |
| <h2>Final Thoughts</h2> | |
| <p>AI failed me at step four. I am not mad. It tried. It admitted defeat. That is more than most people would do. I will solve this myself. Or I will ask a human. Or I will accept 600W and live with my choices.</p> | |
| <p>Probably I will solve it. Probably I will write another blog post. Probably I will learn something dangerous and share it with the internet. This is my life now.</p> | |
| <hr> | |
| </div> | |
| <footer class="post-footer"> | |
| <p>Current status: Still at 600W. VBIOS modified but not flashed. InfoROM mystery unsolved. Dual-bios switch ready. Will try again soon.</p> | |
| </footer> | |
| </div> | |
| </article> | |
| </main> | |
| <footer> | |
| <div class="container"> | |
| <p>Built with curiosity over compute</p> | |
| <p>TinyMemoryLM by AILAY | 2026</p> | |
| </div> | |
| </footer> | |
| </body> | |
| </html> |