Adding an internal RFID/NFC reader to my Laptop

I thought it might be interesting to document my adventures in modifying my laptop to include a RFID/NFC reader. If you want to do this, I take no responsibility for any damage and you will void the warranty of your device.

Ultimately, I want to use any key / implant on my laptop like I would on my phone, i.e. wireless (although having a transdermal USB interface implanted would be wild, I prefer the conservative option). However, my trusty Lenovo Y50-70 does not have an included NFC reader, and I don’t feel like carrying a USB dongle around.

So, I decided to modify the Laptops internal hardware accordingly, since I already wanted to upgrade the storage.

Essentially, this is what I did:

  • Remove the 2.5’’ drive
  • Remove the sub woofer speaker
  • Add a SATA-to-M.2 SATA bridge where the speaker used to be
  • Remove the plastic shell of a NFC reader and solder a USB cable connection to its PCB
  • Add a bare NFC reader PCB where the 2.5’’ drive used to be
  • Remove the internal NGFF WiFi card from the PCI-E M.2 slot
  • Install a NGFF 2xUSB2.0 breakout card into the M.2 slot
  • Solder a USB cable connection to a dedicated WiFi card, removing its USB-A plug
  • Use the USB breakout card to power both the NFC reader and the new WiFi card
  • Add physical power switches to both devices for privacy and power conservation
  • Install new dual-band WiFi antennas behind the LCD
  • Add thermal pads between the NFC PCB and the case
  • Add thermal pads and a piece of aluminium to the M.2 SSD
  • Clone and resize the OS installation to the new SSD

And this is the hardware I used (not sponsored or anything, just fyi):

I chose this reader because I know it works with my software and hardware and also because of its slim height. Originally, I planned to install it between the existing 2.5’’ drive and the laptop shell, but the reader was not able to read anything with the drive behind it due to drive EMI or reflective self-interference.

The NFC reader generated quite a bit of heat, which is dissipated using thermal pads into the case of the laptop. However I turn it off when I don’t use it to converse power using the small switch.

Also, buying the WiFi card proved to be quite a challenge because of Covid-disrupted markets. Two distributors straight up canceled my order, and in the end I had to settle for a module without Bluetooth. Ideally, I would have wanted to buy something like Bluetooth and WiFi Modules Archives - Bluetooth and WiFi Modules and Adapters - LM Technologies . The module I used has no mainline Linux driver, but the community one works without issues.

I was concerned that my UEFI would refuse to boot because I installed a non-whitelisted PCI-E module in the PCI-E slot (thanks Lenovo for your stupid policies), but luckily the card only uses the USB channels already existing in the slot and not the PCI-E lanes. However just for fun I dumped the BIOS flash using a SOP-8 ISP clamp, decompiled the firmware using UEFITool and radare2, modified the assembly code to skip the whitelist check and then recompiled the UEFI image. I did not flash it back though because it already worked.

After booting and powering both devices using the switches, Linux recognizes them and the hub correctly:
lsusb

Here are some images of the build process.

NFC reader PCB with shell removed and USB cable attached:

NFC reader in the 2.5’’ drive space, sub woofer still in place:

The NGFF USB breakout PCB:

Hardware power switches, internal view:

Hardware power switches, external view:

New WiFi module connected to the antennae behind the LCD, also the aluminium heatsink on top of the M.2 SSD:

Temporary SMA antenna I used (where the Kensington lock used to be) while the PCB antennae were out for delivery, also overall view:

The case above the NFC reader is made of plastic, which is convenient. It is located in front of the keyboard, to the right of the touchpad. I drilled a small hole to allow the status LED to shine through and filled it with clear epoxy.

All in all, I am happy with this modification. I was not as straight forward as I would have wished, but it did work. The range of the reader is sufficient to read devices which directly contact the laptop case, but not much more. In the future, I might upgrade to a Proxmark or something else.

In long term, I would buy a laptop which has an (empty) 2.5’’ drive bay in addition to a storage M.2 slot, and ideally an internal USB header or LTE module (that I can remove). Or just one with a NFC reader already integrated - however most of them don’t support smartcards.

9 Likes

That’s great!

You thought correctly my friend :+1:

2 Likes

So, quick update. I was not satisfied with the rage that reader arrangement gave me, so I constructed an repeating antenna with the help of @Satur9 . It increases the interaction range about 3cm. I used a 10pF capacitor and this calculator I wrote: Google Colab .

The antenna is thin enough to not interfere with the laptop lid when it is closed, so I’ll just glue it to the palm rest using some tape. Edit: I stuck it in the inside between laptop shell and the reader instead. Coupling still works fine.

7 Likes