01 Why though
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:
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.
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.
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.
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.
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.
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.
Native USB with exposed D+ and D- pads on the board edge. Perfect for what came next.
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.
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.
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.
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.