How hard could it be to add an extra USB port inside your laptop? As [Joshua Stein] shows, it can be decently hard, but you will have fun along the way. His journey involves a Thinkpad X1 Nano, and his tech setup means it’d be most comfortable for him to have a USB port inside its case, for a Logitech mouse’s USB receiver. It wasn’t smooth sailing all throughout, but the end result is no doubt beautifully executed.
M.2 B-key, A-key and E-key slots have USB 2.0 available on them – you’d think that’s perfect for such a receiver, and there’s even plug and play adapters for this on places like eBay. Unfortunately, none of these, as Lenovo implements wireless card whitelists to this day. Tinkering with the whitelist on [Joshua]’s laptop resulted in BIOS digital signature check failures, and the USB-connected fingerprint reader was ultimately chosen as the most viable path.
Initially, he’s tested the fingerprint reader with an FPC breakout, having the USB connection work – many a hacker would stop here, pulling a few bodge wires from the breakout. [Joshua], however, raised the bar, creating a flexible PCB that would pull the fingerprint connector signals to a spot in the case where the USB receiver could fit neatly, with a 5 V step-up on the board, too.
[Joshua] tops it off by showing a 3D-printed spacer that goes into now-vacant spot where the fingerprint reader used to be. This mod is not open-source as far as we can see, but it’s definitely an inspiration. Want to put even more USB devices inside your laptop? Perhaps a tiny USB hub would help, in line with the EEE PC mods that aimed to stuff the tiny laptop with the largest amount of USB devices possible.
Well done but hard to believe all these dongles are still necessary.
I could think of other reasons for an internal USB socket, but why not get a BlueTooth mouse?
It’s not the same thing. Also there are high polling rate wireless mice.
I’m surpised he didn’t check to see if the dongle was native 3.3v and bypass the internal regulator. Once its inside the laptop it won’t matter much will it?
The M570 trackball mouse from Logitech still uses the dongle unfortunately.
You can not use bluetooth mouse in Bios. Learn it the hardway with my bluetooth keyboard.
for real. instead of this hack, someone should get to the bottom of why bluetooth is so awful :)
Pretty much.. Bluetooth has almost perfect features, and mostly good functions with pairing and whatnot.
But they keep ruining it with godawful restrictions, for example that you don’t get to choose to use the mic on a headset AND high quality audio at the same time. If this was not the case, I cannot fathom that no producer is using it for a gaming headset.
My theory is that they are strict with this to maximize energy savings… Something that Bluetooth is genuinely great at. But it also misses the whole point, better with a shorter battery and actual function than not.
Same with a mouse, sure, polling more often WILL use more battery, but again if they would just have made this configurable then it would be great
So he broke the fingerprint reader to get a usb, rather than branching off the usb and leaving the fingerprint reader intact?
If you read the linked article, you’d see that 1) they don’t use the fingerprint reader and keep it disabled in the bios and 2) they run OpenBSD on this laptop and so the fingerprint reader is almost certainly dead weight anyway.
I’d bet there’s enough space in there to add a tiny 3,3V 2-port USB hub (chip) if he had wanted to keep the fingerprint reader.
Reminds me of an old article (a few on here) of people modding Dell and Asus Netbooks and somepeople replace the webcam with a USB port or solder in GPS or other USB Dongles.
I wish manufacturers would just do this already. Most laptops I’ve seen have dead space somewhere I them, and a USB dongle isn’t that big to have to hide. Even if it was just a standard size zif or ribbon connector configured for USB 2.0 that would be fine – you could order a ribbon + USB PCB from wherever and put it in yourself.
All these comments about “why not just find empty space in the laptop?”. I have a nano and you aren’t fitting anything extra in it, trust me. I run a hub velcroed to the back of the screen. I wish they made a proper docking station for this thing instead of a USB C hub that they call a dock. Unless they do??
Usb c has charging, display,usb and networking available.. in a single connection. What else are you missing?
I want the form factor of a docking station. I specifically said that. I’m not hung up over the protocol it uses. I want to be able to drop this into it and eject it out with a button (if you need details of how a station works).
While the hardware hack was clever, BIOS modding is a thing. But you can’t just hack at a UEFI image with a hex editor. Well, you can, but the image a PC uses will be based on the platform initialization spec and there are tools for working with these images instead of updating all the required data by hand in a hex editor.
I’d guess it was a bit much for Joshua, especially with an alternative in scope of his expertise but others who find themselves in a similar situation shouldn’t be discouraged. things like UEFITool (https://github.com/LongSoft/UEFITool) and UEFI-Editor (https://github.com/BoringBoredom/UEFI-Editor/blob/master/README.md) exist.
You can get the UEFI and many related specs without having to do anything more than find the right URL. For example, here is the platform initialization spec: https://uefi.org/sites/default/files/resources/PI_Spec_1_6.pdf
And there is a lot of code that implements large parts of these specs that is open source: https://github.com/tianocore/edk2/
Here is a header file in C that implements the header data structures mentioned in the firmware file system part of the PI spec: https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Pi/PiFirmwareFile.h
I picked that because what Joshua almost certainly ran into was his edits being flagged then IntegrityCheck.Checksum.Header was checked against the newly calculated checksum.