Framedock
September 2024
These are a series of small projects meant to eventually come together for a final project. In essence, I am planning to design a half-lapdock meant for portable PCs, gaming consoles, and Android phones with desktop environments. The final product will resemble a 15.6" laptop, complete with all relevant IO, allowing the ports of the laptop to be used seamlessly, integrated that with the PCB of a general-purpose dock hidden internal within the laptop shell.
Why? For me, none of the lapdocks available have 120hz and OLED, but I incidentally own a random laptop that in fact supports these both. Lapdocks (or really, any keyboard with IO) is a much sleeker solution for modular microcomputing compared to lugging around a separate dock, keyboard, and display. Here, two (and up to three) of these items can be combined while still maintaining modularity and portability. It's also a fun electrical engineering project that can help build reputation, but will also ultimately finalise my Legion Go and Samsung DeX workflow, as well as making it much easier to manage. I genuinely cannot wait until this project completes.
I will use this page to document how the project is going. My first concern regards to I/O, as that is the crux of the entire project. In essence, all that really needs to be done is to converting the available I/O into data the host device can read.
This effectively means to convert the keyboard output from the ribbon cable into usable USB serial data, since we obviously cannot simply plug the ribbon cable of an existing laptop's keyboard into our external host device.
Then converting incoming DisplayPort or HDMI data from the host device into eDP serial data for the laptop's internal display to play back. This should be doable by fitting an eDP controller board in the half lapdock. Video source is transmitted from the host device via DisplayPort over USB-C, fed to the eDP controller board, and output on the laptop display via that board. I may need a middleman to convert the DisplayPort data into data the controller board can read, potentially via a generic laptop dock.
Then simply wiring the IO of the internal dock to the physical ports of the half lapdock. This results in the shell of a laptop that works to massively extend the functionality of the connected device, like a phone, handheld PC, or gaming console like the Switch.
The only concerns I have are regarding the display lag and touch functionality, really... everything else should be... doable. Especially if we use Framework's items as a base.
Step 1: Keyboard > USB conversion[edit | edit source]
Using Framework's 13" laptop keyboard as a base, I can use their documentation from here to use one of their keyboards to cover the entire palmrest area. The relevant pins for the touchpad, keyboard, and fingerprint sensor are exposed on the ZIF connector, so it boils down to making a custom conversion PCB that supports that pinout or directly soldering the pins of a sliced input cover FPC to my mux controller. The fingerprint sensor may be the one I have to forego for this project.
Once I grab those inputs from the actual Framework part, this should help to connect those signals to the internal dock. The pipeline would go from the keyboard providing KSI/O > USB HID via controller board, data to the laptop over USB-C input to the laptop, effectively acting as if the connected source device was simply connected to a Bluetooth keyboard and trackpad.
The trackpad specifically would need its own controller board for the separated TP pins and probably needs its own USB port on the dock.
Step 2: Trackpad > USB conversion[edit | edit source]
If performed ideally, see step one.
Step 3: I/O extension[edit | edit source]
This one would be the most complicated as I don't have a plan yet at all. It would require me to adapt the protocol Framework uses to convert the inputs to USB-C.
Step 4 (optional): display extension[edit | edit source]
Notes to self: A 1080p+60 HDMI > eDP solution is what I need. The Framework uses a 40-pin eDP cable on the 13 model and the 16" model as well. So... eyeing this for the HDMI controller board that's internally placed. Then I'll just remove the actual HDMI port on the controller board and figure out a way to get the female HDMI port expansion module to work as a display input for everything including consoles, and boom, Framework External Display edition and Lapdock edition.
This is also one of those projects where it either immediately works or it doesn't, so I don't see a ton of bugs or troubleshooting, really...