Hardware Mod

ThinkPad LX470
Backlit Keyboard Retrofit

Adding a feature Lenovo never shipped. Reverse engineering the backlight system and shoving a microcontroller where a smart card reader used to be.

reverse engineering RP2350 board repair magnet wire in progress

01 Why though

📷
Photo needed
Photo of the L470 on your desk, ideally in a dim/dark setting. Sets the mood and shows why you actually need the backlight.
The L470. Great laptop. No backlight.

I code a lot at night. Like, unreasonably late at night. 1 AM seems to be when my brain decides to cooperate, so a backlit keyboard is not really a luxury at this point.

The ThinkPad L470 is a solid machine. Cheap, repairable, good bones. But Lenovo drew a clear line between their budget L-series and the premium T/X/P lineup: no backlit keyboard, on any SKU, not even as a configurable option.

The project started simple. New 72Wh battery, upgraded Wi-Fi card, more RAM, the usual refurbishment stuff. Then the backlight idea crept in. Fifteen euros for a compatible backlit keyboard swap, how hard could it be.

Very hard, as it turns out. But in an interesting way.

02 How the backlight system actually works

Before touching anything I needed to understand what signals were involved. I started with the T470 schematics, which was a mistake. Spent a few days on those before realising they were not accurate for my board. Eventually found what I needed in the T450s schematics, which shares the same keyboard backlight architecture.

There are two dedicated lines for the keyboard backlight. Both live on the trackpoint flex cable, not the keyboard flex, which is the first place you would look:

KBD_BL_DTCT

Pulled high through a 100kΩ resistor. A detect line. When a backlit keyboard is physically installed, it pulls this line in a way the EC picks up. That signal toggles BIOS QuestionID 0x7A, which is what makes the backlight setting appear in the firmware menu at all. Without it, the option just does not show up.

KBD_BL_PWM

Pulled low through a 100kΩ resistor, with a 220pF decoupling cap. A PWM signal line, not a power source. The weak pull and small cap make it obvious: this is a logic-level control signal driving the LED driver, not something that sources current directly.

📷
Photo needed
Small cropped excerpt from the T450s schematics showing KBD_BL_DTCT and KBD_BL_PWM with their pull resistors and decoupling cap. Just the relevant nets, nothing more.
T450s schematic excerpt showing the two backlight control lines. Referenced for architecture, not specific to the L470.

Armed with that, I pulled up the boardview and schematics for the L470. Both lines are marked NC. Opened the laptop to confirm. Nothing there. Lenovo did not even bother populating the pads.

📷
Photo needed
Macro shot of the trackpoint flex or main board area where KBD_BL_DTCT and KBD_BL_PWM pads would sit. Annotate with circles or arrows in post to show the empty/NC locations.
Both backlight lines are NC on the L470. No populated components, no routed traces going anywhere useful.

Option 1 (OEM-style via BIOS modding and unused pads) was technically still on the table, but with nothing routed it was going to be a mess. Time for Option 2: just add a microcontroller.

03 The microcontroller saga

Three candidates. Two dead ends.

01
ESP32-C3 Supermini

Had one laying around. The plan was to hide it under the keyboard, drive the PWM line directly, and let the host control brightness over BLE. Clean on paper. This specific unit has a defective RF stack though. Made a new antenna from scratch, quarter-wavelength wire, properly measured. Did not fix it. The radio is just dead.

Dead
02
CH32V006

Same MCU as Hydrogen V1. Has capacitive touch built in, so the idea was a hidden pad under the palmrest. No devboards available, so I deadbugged a TSSOP20 directly onto a PCIe adapter to test it. Got it running. Could not get the touchkeys to cooperate. Shelved.

Shelved
03
RP2350 Plus

Native USB with exposed D+ and D- pads on the board edge. Perfect for what came next.

Current
📷
Photo needed
Photo of the CH32V006 TSSOP20 deadbugged on the PCIe adapter. This is a great cursed-hardware moment, include it.
CH32V006 TSSOP20 deadbugged on a PCIe adapter. It worked, just not well enough.

04 The USB internal header approach

While going through the boardview I noticed something useful: the L470 has two internal USB headers sitting completely unused on most configurations. One for the fingerprint sensor, one for the smart card reader. Both are unpopulated on my unit.

📷
Photo needed
Boardview screenshot or annotated board photo showing the two internal USB headers. Highlight the smart card reader one specifically.
L470 internal USB headers. The smart card reader one is the target.

The smart card reader slot is a full physical bay accessible from outside the laptop. That is where the RP2350 Plus lives. The USB port connector gets removed from the header, D+ and D- get wired directly to the MCU with magnet wire. Clean internal USB device, no external trace of anything going on.

The RP2350 Plus itself is mounted directly inside the bay with magnet wires soldered straight to the board. No headers, no brackets, no 3D printed cradle (printer is in pieces). Just the board and the wires.

RP2350 Plus (inside smart card slot) | +-- USB D+/D- ---- magnet wire ---- internal USB header (smart card) | +-- PWM pin ---- magnet wire ---- KBD_BL_PWM (trackpoint flex) | +-- GPIO pin ---- magnet wire ---- KSI7 (keyboard matrix, space row) | +-- GPIO pin ---- magnet wire ---- Fn key line (dedicated signal) | +-- GPIO pin ---- held high at boot ---- KBD_BL_DTCT (tells BIOS a backlit KB is present)

05 OEM-like controls via keyboard matrix

This is the part I am most happy about. On proper ThinkPads with a backlit keyboard, you press Fn+Space to cycle through brightness levels. That is the behaviour I wanted, not a software toggle or a dedicated physical button.

The Fn key has its own dedicated signal line on the board, separate from the standard keyboard matrix scan. After mapping a bit of the matrix, KSI7 is the row that covers the Space key.

The RP2350 monitors both lines. Fn held and Space pressed, it steps the PWM duty cycle up. Exactly like the OEM experience, except Lenovo had nothing to do with it.

KBD_BL_DTCT still needs to be asserted at boot for the BIOS to recognise a backlit keyboard. The plan is a GPIO held in the right state from the moment the MCU powers on, before the OS even starts.

06 Where things stand

The reverse engineering side is done. Signals identified, routing planned, physical location confirmed. What is left is the actual installation and firmware: USB HID enumeration, PWM output, matrix scanning for Fn+Space, and the DTCT line at boot.

More updates once the magnet wire comes out.

Project status: in progress / last updated May 2026