Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Reference designs and documentation for the Input Module system in the Framework Laptop 16

Notifications You must be signed in to change notification settings

FrameworkComputer/InputModules

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
83 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Framework Laptop 16 Input Modules

InputModules

This repository includes mechanical and electrical documentation for the Input Module system in the Framework Laptop 16. Input Modules are hot-swappable USB 2.0-interfaced devices that enable deep customization of the input system on the Framework Laptop 16. It's also possible to use these as standalone USB 2.0 devices with a simple adapter for development purposes.

Input Modules come in three sizes, each of which has the same electrical interface:

  1. Keyboard-sized modules (283.16mm wide)
  2. Numpad-sized modules (67.85mm wide)
  3. Half-sized modules (33.825mm wide)

For reference firmware for different types of modules, check out these additional repositories:

License

Input Modules © 2023-2026 by Framework Computer Inc is licensed under CC BY 4.0. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/

Firmware and Software

Keyboards

All keyboards (ANSI, ISO, Numpad, Macropad) run QMK firmware. Find the latest binary releases and source code in our FrameworkComputer/qmk_firmware repository.

To configure keybindings, use our hosted VIA fork, which has the right configurations built in at https://keyboard.frame.work. Or the qmk_hid native Python or Rust software GUI and console applications.

HALs for RTOS or baremetal environments:

IS31FL3743 LED Controller Drivers:

LED Matrix

Official firmware that ships with the modules is available in source and binary at FrameworkComputer/inputmodule-rs. That same repository also contains a Rust commandline utility and Python scripts to control the matrix.

HALs for RTOS or baremetal environments:

IS31FL3741 LED Controller Drivers:

Third party applications that interact with the official firmware:

Third party firmware projects that run on the official hardware:

CircuitPython

CircuitPython can run on all modules.

Sample Code:

Libraries:

Mechanical

In the Mechanical folder, we have 2D drawings of the different Input Module sizes. Note that there are two version of each:

  1. A version with full mechanical structure with a separate interface PCB and brackets. This is what our production modules are based on.
  2. A simplified version that allows the PCB to be used as the mechanical structure of the module, making it much cheaper and easier to make. Note that to make the PCB attach securely in the system, you'll need to solder SMT nuts like Keystone 24929 or to adhere a steel plate to attract to the magnets in the system.

Electrical

In the Electrical folder, we have a reference version of a minimal RP2040-based Input Module, made in KiCAD.

Pinout

Pin Function Note
1 GND
2 VCC_5V 5V, power supply from the system.
3 USB_DN USB D-
4 BOARD_ID Pull to GND through BOARD_ID resistor defined below
5 USB_DP USB D+
6 SLEEP# 3.3V if the host is in S0. 0V if the host is in S0ix, S3, S4, S5
7 GND
8 VCC_3V3 3.3V, power supply from the system.

Viewed from top:

image

Module Type Detection

Embedded Controller firmware detects location, type and size of modules by measuring the value of a pull down resistor on each connector. This detection is only used for diagnostics and power sequencing (see below). USB functionality is enabled on any connector no matter the module type or presence.

ID Row Module Type Size Module Pulldown Resistor
0 Short NA
1 Reserved 10000
2 Reserved 18000
3 Reserved 27000
4 Reserved 39000
5 Reserved 56000
6 Top Generic Full Width Full 68000
7 Reserved 82000
8 Top Generic A size A 120000
9 Top Generic B size B 150000
10 Top Generic C size C 180000
11 Top Numpad/Macropad B 270000
12 Top Keyboard A 330000
13 Bottom Touchpad B 560000
14 Reserved 820000
15 Both Not installed NA

The LED matrix and plastic spacers are both "Generic C size".

Power

Each Input Module supports up to 500mA on the 5V rail and 100mA on the 3.3V rail when active.

The Framework Laptop 16 has a protection scheme in place to prevent Input Modules from powering on unless the input deck is fully populated. Module detection is done using the BOARD_ID pin. It is possible to override this setting on the system through BIOS settings, but at the risk of shorting the system or modules.

System firmware expects that pogo connector where the module presents the board ID, is at the very left of the module. It uses this assumption to calculate size and position of modules and detect if the input deck is fully populated and all pogo pins are covered.

The following top-row combinations are accepted by firmware:

Conn 1 Conn 2 Conn 3 Conn 4 Conn 5
Full
Full
Full
Full
Full
A B
A C C
C A C
B A
C C A

SLEEP# pin behavior

Platform BIOS SLEEP#
AMD Ryzen 7040 Series 3.XX Lid and Suspend
AMD Ryzen 7040 Series 4.XX Lid state
AMD AI 300 Series Any Lid state

On the first generation Framework 16 with BIOS 3.XX the SLEEP# pin is low whenever the system is in S0ix (suspend) state or the lid is closed.

On the 2nd gen or 1st gen with BIOS 4.XX the SLEEP# pin is only low if the lid is closed. This change was made because the keyboard and touchpad firmware couldn't decide between

When SLEEP# is low or USB is in Selective Suspend mode, modules should drop below 500uA on each rail. This will typically occur when the system enters an S0ix state. In S3/S4/S5 or when the laptop lid is closed, the power rails will typically be off.

F2 on boot > Setup Utility > Advanced > Force Power for Input Modules:

  • Force Off: Power always off
  • Require Modules (default): Power on only if all modules are present
  • Force On: Power always on

In the case of Force On, there is a risk of damage when the pins are exposed and come into contact with conductive material.

Touchpad Module

This section describes the Touchpad Module connection on the system side, including the pin define and the pin map of the connector. There are three connectors for the touchpad, to allow moving it around. They are all shorted together on the same I2C bus with the same interrupt lines.

Pins on the connector have ESD protection to meet IEC 61000-4-2 Level 4 protection.

Pin Function Note
1 GND
2 VCC_5V 5V, power supply from the system.
3 I2C_SCL I2C Serial Clock Line
4 BOARD_ID Pull to GND through BOARD_ID resistor defined below
5 I2C_SDA I2C Serial Data Line
6 TP_INT_1 Secondary interrupt for touchpad future features
7 VCC_3V3 3.3V, power supply from the system.
8 TP_INT_0 Main interrupt for touchpad

image

Touchpad Module layout requirements

The contacts on the Touchpad should be designed so that the ground pins engage first when the Touchpad is sliding in. Pin 7 should be 0.5mm longer than the other pins to ensure it engages first.

The below picture for pads is shown in perspective. The view angle is on top of the PCB.

Around the signal pads there should be a ground fill keepout to prevent the pogo connectors from shorting the pads to ground or other signals when sliding in if the solder mask is scraped away.

image

Touchpad I2C Protocol

The I2C bus from the touchpad is connected to the CPU for HID over I2C and implements the Precision Touchpad Protocol.

It's also connected to the EC. This is used when booting without a touchpad. If the Windows driver tries to connect to an I2C device but finds it does not respond, it will disable that device. So we make the EC pretend to be the touchpad and send the same HID report descriptor as the touchpad would.

One Key Module

See One Key Module.

About

Reference designs and documentation for the Input Module system in the Framework Laptop 16

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.