Translation(s): none

DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware.

The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware.

If you need help to get Debian running on your hardware, please have a look at our user support channels where you may find specific channels (mailing list, IRC channel) dedicated to certain types of hardware.

Models covered
Framework 12th generation

Overall Status

Core Components

[ATTACH]

Boot Standard Kernel:

{OK}

LAN network card:

[-]

Detect hard drives:

{OK}

Secure boot:

{OK}

Extra Features

Fingerprint reader

{OK}

CPU Frequency Scaling

{OK}

Hibernation

{OK} {i} (tested only on bookworm with Linux 6.1.0-7; need SecureBoot off)

Sleep / Suspend

{OK} (tested only on bookworm with Linux 6.1.0-7)

Xorg

{OK}

- OpenGL

{OK}

- Resize-and-Rotate(randr)

{OK} (tested only on bookworm)

Switch to External Screen

{OK} (tested with HDMI expansion card, on bookworm)

Mouse

- Built-in (Touchpad)

{OK}

Wireless/Wifi

X-( {i} Works with the Linux 5.19 kernel from bookworm, not with 5.10 from bullseye

Webcam

{OK}

Keyboard's Hotkeys

[?]

Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Important Note

The kernel of Debian Bullseye, Linux 5.10, is too old for the AX210 wireless card. However, the system can be installed perfectly using the testing netinst image with firmware (firmware-testing-amd64-netinst.iso). Testing has Linux 5.19. Make sure you download the Debian image with firmware, the ?FrameWork (as pretty much all modern laptops) does not work without firmware blobs.

Configuration

Display

The ?FrameWork laptop comes with an Intel Xe Integrated GPU graphics chipset, automatically recognized and configured by the i915 module. The resolution is 2256 x 1504:

ema@pinolo:~$ xrandr | head -2
Screen 0: minimum 320 x 200, current 2256 x 1504, maximum 16384 x 16384
eDP-1 connected primary 2256x1504+0+0 (normal left inverted right x axis y axis) 285mm x 190mm
ema@pinolo:~$ glxinfo | head
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile, 
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
[...]

With such a high screen resolution it is very hard to read the small fonts in console. Edit /etc/default/console-setup and set FONTSIZE=32x16 to get a better font size. Also you may want to try out FONTFACE="Terminus". Grub fonts are also very hard to read, set GRUB_GFXMODE=1024x768 in /etc/default/grub and run update-grub as root to fix that. Reboot to see the changes.

Fonts are similarly hard to read under Xorg. This can be fixed by changing dpi and a few other settings under ~/.Xresources:

Xft.dpi: 140
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

The following ~/.xinitrc is an example of how to start the i3 window manager with the above settings applied:

xrdb -merge ~/.Xresources
exec i3

The kernel complains about missing firmware, namely adlp_dmc_ver2_16.bin and adlp_guc_70.1.1.bin (or the older version adlp_guc_69.0.3.bin):

[    2.001637] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc_ver2_16.bin (-2)
[    2.001652] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc_ver2_16.bin (-2)
[    2.001653] i915 0000:00:02.0: Direct firmware load for i915/adlp_dmc_ver2_16.bin failed with error -2
[    2.001655] i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/adlp_dmc_ver2_16.bin. Disabling runtime power management.
[    2.001657] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    2.012783] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.1.1.bin (-2)
[    2.012789] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.1.1.bin (-2)
[    2.012795] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_69.0.3.bin (-2)
[    2.012799] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_69.0.3.bin (-2)
[    2.012801] i915 0000:00:02.0: GuC firmware i915/adlp_guc_70.1.1.bin: fetch failed with error -2
[    2.012803] i915 0000:00:02.0: Please file a bug on drm/i915; see https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs for details.
[    2.012803] i915 0000:00:02.0: [drm] GuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    2.119813] i915 0000:00:02.0: [drm] GuC firmware i915/adlp_guc_70.1.1.bin version 0.0
[    2.119827] i915 0000:00:02.0: GuC initialization failed -2
[    2.119828] i915 0000:00:02.0: Enabling uc failed (-5)
[    2.119829] i915 0000:00:02.0: Failed to initialize GPU, declaring it wedged!

You can fetch the missing firmware files from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915, place them under /lib/firmware/i915/, and update your initramfs images with:

sudo wget -l 1 -np --no-directories --content-disposition --restrict-file-names=nocontrol -e robots=off -A .bin -r https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915 -P /lib/firmware/i915/
sudo update-initramfs -kall -u

The adlp_dmc_ver2_16.bin blob fixes the "Disabling runtime power management" error message:

[    2.197119] i915 0000:00:02.0: firmware: direct-loading firmware i915/adlp_dmc_ver2_16.bin
[    2.199095] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc_ver2_16.bin (v2.16)

adlp_guc_70.1.1.bin fixes the remaining issues:

[    2.122822] i915 0000:00:02.0: firmware: direct-loading firmware i915/adlp_guc_70.1.1.bin
[    2.123003] i915 0000:00:02.0: firmware: direct-loading firmware i915/tgl_huc_7.9.3.bin
[    2.235827] i915 0000:00:02.0: [drm] GuC firmware i915/adlp_guc_70.1.1.bin version 70.1
[    2.235830] i915 0000:00:02.0: [drm] HuC firmware i915/tgl_huc_7.9.3.bin version 7.9
[    2.251941] i915 0000:00:02.0: [drm] HuC authenticated
[    2.252818] i915 0000:00:02.0: [drm] GuC submission enabled
[    2.252819] i915 0000:00:02.0: [drm] GuC SLPC enabled
[    2.253653] i915 0000:00:02.0: [drm] GuC RC: enabled
[    3.405058] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0

Note that if you're using the i3 window manager under X11 you will need to use a compositor for X11. The compton package provides one. You will also need to add the following to your i3 configuration:

exec --no-startup-id compton --backend glx --vsync opengl-swc --daemon

To see if GPU acceleration is working fine, you can try vainfo:

ema@pinolo:~$ vainfo | head
libva info: VA-API version 1.15.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_15
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.15 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.4.3 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD

You should then be able to play videos in Firefox and see the GPU at work with intel_gpu_top (from the package intel-gpu-tools).

Audio

The onboard Intel Corporation Alder Lake PCH-P High Definition Audio Controller is supported by the snd_hda_intel kernel module without any configuration needed.

Mouse

The touchpad works fine out of the box. Use the package xserver-xorg-input-libinput and the following xorg configuration snippet to get tapping with one finger for left-click behavior, tapping with two fingers for middle-click (for copy/paste):

# /etc/X11/xorg.conf.d/40-libinput.conf
Section "InputClass"
      Identifier "libinput touchpad catchall"
      MatchIsTouchpad "on"
      MatchDevicePath "/dev/input/event*"
      Driver "libinput"
      Option "Tapping" "on"
      Option "TappingButtonMap" "lmr"
EndSection

Fingerprint Reader

The reader is supported out of the box on Debian Bookworm. It is identified as follows by lsusb:

Bus 001 Device 004: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC

And the kernel has this to say:

[    2.960273] usb 1-9: new full-speed USB device number 4 using xhci_hcd
[    3.111373] usb 1-9: New USB device found, idVendor=27c6, idProduct=609c, bcdDevice= 1.00
[    3.111384] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.111388] usb 1-9: Product: Goodix USB2.0 MISC
[    3.111390] usb 1-9: Manufacturer: Goodix Technology Co., Ltd.
[    3.111393] usb 1-9: SerialNumber: UID4B491755_XXXX_MOC_B0

To use it:

$ sudo apt install fprintd libpam-fprintd
$ sudo fprintd-enroll $username

At this point you'll be asked to swipe the right index finger 5 times till you get a message like:

Enroll result: enroll-completed"

See results under /var/lib/fprint.

In order to get fingerprint-based authentication working in console, add the following line at the beginning of /etc/pam.d/common-auth:

auth sufficient pam_fprintd.so

After rebooting, the authentication prompt will then look like this:

Debian GNU/Linux bookworm/sid pinolo tty3

pinolo login: ema
Place your right index finger on the fingerprint reader

Power Management

WiFi

The WiFi chip works out of the box with a recent kernel. Notably, the 5.10 kernel on Bullseye is too old. Linux 5.19 from Bookwork works great. In order for the card to work, you'll need the firmware-iwlwifi package, which the Debian installer should automatically take care of installing for you.

Webcam

The camera is automatically recognized and configured on Debian Bookworm. The device can be switched off and on with the onboard hardware switch. This is the kernel output when turning the switch on:

Sep 27 09:48:06 pinolo kernel: usb 1-7: new high-speed USB device number 6 using xhci_hcd
Sep 27 09:48:06 pinolo kernel: usb 1-7: New USB device found, idVendor=0bda, idProduct=5634, bcdDevice= 0.21
Sep 27 09:48:06 pinolo kernel: usb 1-7: New USB device strings: Mfr=3, Product=1, SerialNumber=2
Sep 27 09:48:06 pinolo kernel: usb 1-7: Product: Laptop Camera
Sep 27 09:48:06 pinolo kernel: usb 1-7: Manufacturer: Generic
Sep 27 09:48:06 pinolo kernel: usb 1-7: SerialNumber: 200901010001
Sep 27 09:48:06 pinolo kernel: usb 1-7: Found UVC 1.00 device Laptop Camera (0bda:5634)
Sep 27 09:48:06 pinolo kernel: input: Laptop Camera: Laptop Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/input/input30


System Summary

lspci

$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Device [8086:4621] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:4626] (rev 0c)
00:04.0 Signal processing controller [1180]: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant [8086:461d] (rev 02)
00:06.0 PCI bridge [0604]: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 [8086:464d] (rev 02)
00:07.0 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 [8086:466e] (rev 02)
00:07.1 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 [8086:463f] (rev 02)
00:07.2 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 [8086:462f] (rev 02)
00:07.3 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 [8086:461f] (rev 02)
00:08.0 System peripheral [0880]: Intel Corporation 12th Gen Core Processor Gaussian & Neural Accelerator [8086:464f] (rev 02)
00:0a.0 Signal processing controller [1180]: Intel Corporation Platform Monitoring Technology [8086:467d] (rev 01)
00:0d.0 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller [8086:461e] (rev 02)
00:0d.2 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0 [8086:463e] (rev 02)
00:0d.3 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #1 [8086:466d] (rev 02)
00:14.0 USB controller [0c03]: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller [8086:51ed] (rev 01)
00:14.2 RAM memory [0500]: Intel Corporation Alder Lake PCH Shared SRAM [8086:51ef] (rev 01)
00:15.0 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 [8086:51e8] (rev 01)
00:15.1 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1 [8086:51e9] (rev 01)
00:15.3 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #3 [8086:51eb] (rev 01)
00:16.0 Communication controller [0780]: Intel Corporation Alder Lake PCH HECI Controller [8086:51e0] (rev 01)
00:16.3 Serial controller [0700]: Intel Corporation Device [8086:51e3] (rev 01)
00:1d.0 PCI bridge [0604]: Intel Corporation Device [8086:51b0] (rev 01)
00:1f.0 ISA bridge [0601]: Intel Corporation Alder Lake PCH eSPI Controller [8086:5182] (rev 01)
00:1f.3 Audio device [0403]: Intel Corporation Alder Lake PCH-P High Definition Audio Controller [8086:51c8] (rev 01)
00:1f.4 SMBus [0c05]: Intel Corporation Alder Lake PCH-P SMBus Host Controller [8086:51a3] (rev 01)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Alder Lake-P PCH SPI Controller [8086:51a4] (rev 01)
01:00.0 Non-Volatile memory controller [0108]: Sandisk Corp WD Black SN750 / PC SN730 NVMe SSD [15b7:5006]
a6:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz [8086:2725] (rev 1a)

lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
Bus 001 Device 006: ID 0bda:5634 Realtek Semiconductor Corp. Laptop Camera
Bus 001 Device 002: ID 32ac:0003 Framework DisplayPort Expansion Card
Bus 001 Device 004: ID 8087:0032 Intel Corp. AX210 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ sudo lsusb -v 2>/dev/null | grep -E '\<(^Bus|iProduct|bDeviceClass|bDeviceProtocol)'
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         3 
  iProduct                2 xHCI Host Controller
Bus 001 Device 003: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
  bDeviceClass          239 Miscellaneous Device
  bDeviceProtocol         0 
  iProduct                2 Goodix USB2.0 MISC
Bus 001 Device 006: ID 0bda:5634 Realtek Semiconductor Corp. Laptop Camera
  bDeviceClass          239 Miscellaneous Device
  bDeviceProtocol         1 Interface Association
  iProduct                1 Laptop Camera
Bus 001 Device 002: ID 32ac:0003 Framework DisplayPort Expansion Card
  bDeviceClass            0 
  bDeviceProtocol         0 
  iProduct                2 DisplayPort Expansion Card
Bus 001 Device 004: ID 8087:0032 Intel Corp. AX210 Bluetooth
  bDeviceClass          224 Wireless
  bDeviceProtocol         1 Bluetooth
  iProduct                0 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         1 Single TT
  iProduct                2 xHCI Host Controller
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         3 
  iProduct                2 xHCI Host Controller
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         1 Single TT
  iProduct                2 xHCI Host Controller

USB Host controllers entries (without OHCI, UHCI, EHCI) are removed too.

Resources

Attachments

Some configuration files and sample outputs.

Other reports

Credits


CategoryLaptopComputer