Lenovo ThinkPad T480 BIOS Password Unlock

DISCLAIMER
This manual consists of a list of tasks that I go through to unlock a ThinkPad T480 BIOS. I am a tech and crypto enthusiast, and I firmly believe in the right to service our equipment. I am sharing my personal know-how with the general public. All instructions have worked successfully on my own equipment, and I am sharing them with the best intentions that they will work for you.
Having said that, I do not take responsibility if any damages occur to your equipment while following these instructions. Hardware modifications, flashing SPI chips, and working with EEPROMs carry inherent risks. By proceeding, you acknowledge that you are doing so entirely at your own risk. I will not be held liable for bricked motherboards, data loss, hardware damage, or any other issues that may arise from using this guide. Ensure you back up all data and original firmware before making any modifications.

Required Hardware Configuration

Primary functional components selected from the CH341A hardware suite
Image above: CH341A Programmer kit
Optional USB Voltage meter
Image above: Optional USB Voltage meter
Making the job easier:
Using a USB extension cable (usb male/female cable) running from the Linux Workstation to the hardware CH341A programmer optimizes the installation procedure. The connection between the SOIC8 Clip ad the BIOS chip is delicate, and typically takes multiple attempts to get the connectino correct; utilizing an extension cable reduces mechanical wear on the Linux workstation ports and makes the job easier because you will be plugging the CH341A Programmer in and out of the USB port many times (20+) so it is easier to plug from cable than from USB port on Linux machine.
CRITICAL HARDWARE PRECAUTION: Never connect the CH341A programmer to active USB power while adjusting the physical connection of the SOIC8 clip on the motherboard IC. Doing so risks transient voltage bridging and potential destruction of the motherboard circuitry. Always DISCONNECT Programmer from USB, then clip or unclip the SOIC8 from BIOS chip, then plug programmer back into USB.
Terminology:

Programmer Configuration

Mechanical assembly of the hardware suite components is simple. Ensure accurate orientation of the peripheral PCB interface board (the green board) and the associated operational voltage selector jumper:

Close-up detailing the pin topography and yellow jumper configuration matrix
Image above: CH341A Programmer disassembled, showing pinout and jumper configuration
Assembled CH341A inline interface setup configured with data link extensions
Image above: Assembled CH341A Programmer with cable to Clip
Assembled CH341A ready for action, view from top
Image above: Assembled CH341A Programmer ready for action, view from top

Todo list of unlocking the BIOS

The system deployment and verification sequence is broken down into eight structured execution phases:

  1. Connect the CH341A to the BIOS chip on the motherboard.
  2. Check that the BIOS Chip is identified correctly and readable by CH341A (must register as a 16MB chip).
  3. Backup your Bios (Very important).
  4. Patch the backup to generate a patched firmware binary file using the automated script.
  5. Flash the T480 BIOS with the Patched BIOS
  6. Restart the T480 and initiate injection of patched code into BIOS
  7. Flash the T480 with the original BIOS backup
  8. Reboot the T480 and verify unlocked BIOS

Step 1/8: Connect the CH341A to the BIOS chip on the motherboard

Install the required libraries and hardware interface tools:


        cd ~ 
        sudo apt-get install python3 
        sudo apt install flashrom
        mkdir -p ~/T480_i7_bios/lenovo_autopatcher
        cd ~/T480_i7_bios/lenovo_autopatcher 

        wget https://oziway.tv/media/lenovo_autopatcher_0.2.zip 
        unzip lenovo_autopatcher_0.2.zip 
        chmod +x tools/UEFIReplace
    

Please note that autopatcher has been placed into the current directory but it has been downloaded from github - just in case it disappears from there

Original location was https://github.com/lilianalillyy/t470s-uefi-unlock/raw/refs/heads/main/lenovo_autopatcher_0.2.zip

Identify the BIOS chip located next to the DDR4 SODIMM sockets. On specific hardware motherboard revisions, this package is explicitly marked as component U49, while alternative revisions may omit BIOS chip number.

Location of the BIOS chip next to memory bank
Image above: location of the BIOS chip next to memory bank
BIOS closeup with no numbering on the board
Image above: closeup of the BIOS chip with no numbering on the board
BIOS closeup of another version of a motherboard with the WinbondBIOS chip labelled as U49
Image above: closeup of the BIOS chip with the number U49 on the board

Align the Pin 1 indicator (indicated by the RED conductor line) on the ribbon cable assembly with the physical micro-dimple/dot recessed onto the primary corner of the BIOS chip.

SOIC8 clip securely seated on the BIOS chip with accurate Pin 1 to dot alignment
Image above: SOIC8 clip securely seated on the BIOS chip with accurate Pin 1 to dot alignment

Disconnect the VOLTAGEMETER from the USB port, its not going to be needed anymore

Disconnect the VOLTAGEMETER from the USB port
Image above: Disconnect the VOLTAGEMETER from the USB port

Connect the CH341A to the WORKSTATION USB, the power LED on the CH341A will turn on (red color) . Note that this indicates active subsystem voltage, not correct connection to the BIOS yet. We will now query the host subsystem bus controller to verify basic hardware registration:

Connect the CH341A to the WORKSTATION
Image above: Connect the CH341A to the WORKSTATION USB Port (or more precisely to the USB extension cable that is connected to the WORKSTATION USB Port)
Red LED on the CH341A indicates active voltage supply to the CH341A
Image above: Red LED on the CH341A indicates active voltage supply to the CH341A Programmer, not necessarily correct chip connection

Step 2/8: Check that the BIOS Chip is identified correctly and readable by CH341A (must register as a 16MB chip)

Lets check the connection from CH341A to the BIOS, we must test the connection on the WORKSTATION:

Check USB devices connected to WORKSTATION


        commands to type: >
        -------------------
        cd ~/T480_i7_bios/lenovo_autopatcher
        lsusb 

        ----------------
        Expected output:
        ----------------
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
        Bus 001 Device 004: ID 1a86:5512 QinHeng Electronics CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
    

Check connection to BIOS chip (from the CH341A)

Execute a connection check to verify that the CLIP is correctly seated on the BIOS chip


        sudo flashrom -p ch341a_spi
    

In most cases, this will NOT work on the first run, you will have to repeat the procedure of 1/ disconnecting CH341A from USB, 2/ unplugging the CLIP from BIOS chip, 3/ carefully plugging CLIP again, and 4/ reconnect CH341A to WORKSTATION USB. You will have to do this many times. It usually takes me 20 times

The most probably output will be:


        No EEPROM/flash device found.
        Note: flashrom can never write if the flash chip isn't found automatically.
    
REMEMBER: you must disconnect the CH341A programmer from USB, then disconnect the CLIP, then reconnect the CLIP, and then reconnect CH341A to USB. Never connect/disconnect CLIP from BIOS while CH341A is connected to USB power.

Possible output can also be :


        cb_in: error: LIBUSB_TRANSFER_TIMED_OUT 
        ch341a_spi_spi_send_command: Failed to read 3 bytes 
        cb_out: error: LIBUSB_TRANSFER_TIMED_OUT

        cb_in: error: LIBUSB_TRANSFER_TIMED_OUT 
        ch341a_spi_spi_send_command: Failed to read 3 bytes 
        cb_out: error: LIBUSB_TRANSFER_TIMED_OUT

        cb_in: error: LIBUSB_TRANSFER_TIMED_OUT 
        ch341a_spi_spi_send_command: Failed to write 36 bytes 
        cb_out: error: LIBUSB_TRANSFER_TIMED_OUT

        ...
        ch341a_spi_spi_send_command: Failed to write 38 bytes 
        ch341a_spi_spi_send_command: failed to submit OUT transfer: LIBUSB_ERROR_NO_DEVICE 
        ch341a_spi_spi_send_command: Failed to write 39 bytes 
        ch341a_spi_spi_send_command: failed to submit OUT transfer: LIBUSB_ERROR_NO_DEVICE 
    
        No EEPROM/flash device found.
    
CHECK CLIP CONNECTION: Verify that the interior metal teeth of the SOIC8 clip map cleanly onto the horizontal legs of the BIOS chip. The contacts must not slide underneath or wedge between adjacent legs, otherwise overcurrent loops will disable the adapter. If required, purge conflicting native kernel modules using sudo rmmod ch341 or pass full verbose parameters into the application engine: sudo flashrom -p ch341a_spi -V.
Correctly seated CLIP on BIOS chip
Image above: It might be easier to try to flush the edges of the CLIP with the BIOS chip.

Connections is OK After many attempts (it takes me more than 20 attempts), you will receive this output


        commands to type: >
        -------------------
        sudo flashrom -p ch341a_spi 

        ----------------
        Expected output:
        ----------------

        flashrom 1.4.0 on Linux 6.12.90+deb13.1-amd64 (x86_64) 
        flashrom is free software, get the source code at https://flashrom.org 
  
        Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi. 
        No operations were specified.
    

Step 3/8: Backup your BIOS (Very important).

DO NOT DISCONNECT THE CLIP DURING THIS STEP

BE CAREFUL NOT TO BUMP THE CLIP WITH YOUR HAND SO THAT IT GETS DISCONNECTED

Read BIOS and backup to 2 files

Once a stable connection is established between CH341A and BIOS, isolate the hardware from vibration (dont bump the T480 or the CLIP with your hand). Perform two sequential firmware read passes into distinct BIOS backup files, then analyze their cryptographic hash values to guarantee error-free bitstream extraction:

We are going to do 2 backups and compare them simnoply because without the backup you might brick your T480


        commands to type: >
        -------------------
        cd ~/T480_i7_bios/lenovo_autopatcher
        sudo flashrom -p ch341a_spi -r T480_i7_file1.bin 
        sudo flashrom -p ch341a_spi -r T480_i7_file2.bin 

        ls -lh T480_i7_file1.bin T480_i7_file2.bin 
   
        ----------------
        Expected output:
        ----------------
        -rw-r--r-- 1 root root 16M Jun  1 16:07 T480_i7_file1.bin 
        -rw-r--r-- 1 root root 16M Jun  1 16:09 T480_i7_file2.bin 


        commands to type: >
        -------------------    
        md5sum T480_i7_file1.bin T480_i7_file2.bin

        ----------------
        Expected output:
        ----------------
        4af80c35b618687cafe2e7228e256640  T480_i7_file1.bin 
        4af80c35b618687cafe2e7228e256640  T480_i7_file2.bin 

    

Make working copy of one of the backup files so we can use it as source for the patch script, thjis way we will NOT tuoch the original backups - yes, they are SO important


        commands to type: >
        -------------------
        cd ~/T480_i7_bios/lenovo_autopatcher
        cp T480_i7_file1.bin T480_i7_backup.bin 
    

Step 4/8: Patch the backup to generate a patched firmware binary file using the automated script

DO NOT DISCONNECT THE CLIP DURING THIS STEP

BE CAREFUL NOT TO BUMP THE CLIP WITH YOUR HAND SO THAT IT GETS DISCONNECTED

The autopatch script will output structural validation logs tracing the driver injection status:


        commands to type: >
        -------------------
        cd ~/T480_i7_bios/lenovo_autopatcher
        python3 patch/autopatch.py T480_i7_backup.bin 


        ----------------
        Expected output:
        ----------------
        
        Using UEFIReplace to inject 2 DXE drivers... 
        [1/2] BootOption (GUID e0746c42-d3f9-4f8b-b211-1410957b9ff5) 
        [2/2] LenovoTranslateService (GUID 826bcf56-bac4-43f4-8ea1-8cdf0a121abd) 
  
        Looking for volumes to patch... 
        [1/1] NVRAM_EfiSystemNvDataFvGuid (checksum 2609h): 
        Found volume at offset 800000h (checksum 2609h) 
        Replacing volume. 
  
        Done. 
        PATCH FILE: T480_i7_backup_PATCHED.bin
    

Step 5/8: Flash the T480 BIOS with the Patched BIOS

DO NOT DISCONNECT THE CLIP DURING THIS STEP

BE CAREFUL NOT TO BUMP THE CLIP WITH YOUR HAND SO THAT IT GETS DISCONNECTED

We should have all the files necessary now to flash the T480


        commands to type: >
        -------------------
        cd ~/T480_i7_bios/lenovo_autopatcher$ 
        ls -1 

        ----------------
        Expected output:
        ----------------
        autopatch 
        autopatch.cmd 
        patch 
        T480_i7_backup.bin 
        T480_i7_backup_PATCHED.bin 
        T480_i7_file1.bin 
        T480_i7_file2.bin 
        tools 
    

To ensure total data write synchronization and overwrite secure sectors cleanly, issue a hardware block erase sequence (-E) to the memory module, followed immediately by the flash write operation:


        commands to type: >
        -------------------
        sudo flashrom -p ch341a_spi -E 

        ----------------
        Expected output:
        ----------------
        flashrom 1.4.0 on Linux 6.12.90+deb13.1-amd64 (x86_64) 
        flashrom is free software, get the source code at https://flashrom.org 
        Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi. 
        Erase/write done from 0 to ffffff 

        commands to type: >
        -------------------
        sudo flashrom -p ch341a_spi -w ~/T480_i7_bios/lenovo_autopatcher/T480_i7_backup_PATCHED.bin  

        ----------------
        Expected output:
        ----------------
        flashrom 1.4.0 on Linux 6.12.90+deb13.1-amd64 (x86_64) 
        flashrom is free software, get the source code at https://flashrom.org 
        Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi. 
        Reading old flash chip contents... done. 
        Erase/write done from 0 to ffffff 
        Verifying flash... VERIFIED. 


    

Step 6/8: Restart the T480 and initiate injection of patched code into BIOS

  1. Unclamp the CLIP from the BIOS Chip.
  2. Turn the laptop over. Verify a single memory stick is isnerted (disk and batteries are not required for this step).
  3. Connect the primary external USB-C power and press the power switch.
  4. IMPORTANT: Instantly press the F1 hotkey. Omitting this will cause the laptop to execute standard boot loops, resulting in a persistent hang at the Lenovo splash logo.
  5. Admin password padlock logo
    Image above: Admin password padlock logo
  6. When a security padlock graphic surfaces alongside an administrative manager icon, type any arbitrary numeric credential sequence (e.g., 1234) and press Enter.
  7. Admin password padlock logo, type 1234
    Image above: Admin password padlock logo, type 1234
  8. Upon receiving the PRESS ANY KEY... , press Enter
  9. Press any key
    Image above: Press any key
  10. Upon receiving the ENTER KEY: , leave the field blank—press Enter directly.
  11. Press ENTER
    Image above: Press ENTER
  12. Press the Spacebar when prompted, then press the Spacebar a final time to confirm initialization parameters.
  13. Press ENTER
    Image above: Press SPACE
    Press ENTER
    Image above: Press SPACE
  14. The system will drop out to a black shell terminal screen displaying a TPM certificate modification notice, confirming that the operational security states have been cleared.
  15. Press ENTER
    Image above: SECURITY PASSWORD CLEARED
  16. Hold the hardware power toggle button for 10–15 seconds to kill system power rails. Disconnect the USB-C power, disconnect the CMOS coin battery, and leave the laptop unpowered for approximately 10 minutes.
  17. CMOS Battery
    CMOS Battery unplugged

Step 7/8: Flash the T480 with the original BIOS backup

Turn the laptop over again with its internals facing up, reconnect the CLIP to BIOS, check logic connections with a connection probe command, and rewrite your original, clean factory firmware backup file:

Here again this will take many attempts, you will have to disconnect the CH341A from USB, unplug the CLIP from BIOS, carefully plug again, and reconnect CH341A to USB until you get a stable connection again. Remember that you must disconnect the CH341A programmer from USB, then disconnect the CLIP, then reconnect the CLIP, and then reconnect CH341A to USB. Never connect/disconnect CLIP from BIOS while CH341A is connected to USB power.


        commands to type: >
        -------------------
        sudo flashrom -p ch341a_spi -E 
        sudo flashrom -p ch341a_spi -w ~/T480_i7_bios/lenovo_autopatcher/T480_i7_backup.bin

        ----------------
        Expected output:
        ----------------            
        Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi. 
        Reading old flash chip contents... done. 
        Erase/write done from 0 to ffffff 
        Verifying flash... VERIFIED.
    

Disconnect the CH341A from WORKSTATION USB, disconnect the CLIP from BIOS

Step 8/8: Reboot the T480 and verify unlocked BIOS

plug in the CMOS battery

Turn the laptop over and connect USBC power

Upon initial system boot, the T480 will report minor temporary hardware error sequences like CMOS Time is not set due to the total power off phase (without CMOS battery). Press F1 to enter the main configuration platform. The restriction bits have been successfully cleared, giving you full administrative control over your ThinkPad T480 environment!

Completely unlocked and operational administrative ThinkPad configuration workspace
Image Above: Security section is now oen, no password - same as Date/Time and boot options
Completely unlocked and operational administrative ThinkPad configuration workspace
Image above: datetime is wrong, we can change it now
Completely unlocked and operational administrative ThinkPad configuration workspace
Image above: Save BIOS settings and exit - we have FINISHED

BIOS - Load Factory Defaults

You might want to load factory defaults of the laptop after the reboot especially if it was used in a corporate environment. Those corporate laptops have strange settings which sometimes cause them to misbehave with a different OS. I personally do not use Windows (and all of those laptops were Windows machines before) therefore I always CLEAN the Bios before setting the laptop up

I then turn off SECURE BOOT because I do not need this in Linux

For all you LINUX fans, I am sure you know how to clean up the Boot Manager List under linux (this is stored in your laptop NVRAM) , if needed I will create another article dedicated to this.

Enjoy your unlocked T480 and remember - you have every right to unlock and fix your own equipment !

Notes:
Interesting links:
Support this page