Marc's Public Blog - Linux Hacking


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Computers | Diving | Dreamstate | Edc | Electronics | Exercising | Festivals | Flying | Halloween | Hbot | Hiking | Linux | Linuxha | Monuments | Museums | Oshkosh | Outings | Public | Rc | Sciencemuseums | Solar | Tfsf | Trips



This page has a few of my blog entries about linux, but my main linux page is here
Picture of Linus

Here is a list of older linux event reports I made before my blog was started, then the rest are below
1996/11/18-21:Linux Pavillion Comdex Fall 1996 (photos only). I've been going since then to help at the linux pavillion.
1997/11/18-21: Linux Pavillion Comdex Fall 1997 (photos only)
1998/05/28-30: Linuxexpo 1998 (photos only)
1998/11/16-20: Linux Pavillion Comdex Fall 1998 (full report)
1998/11/11: Silicon Valley Tea Party (report with pictures)
1999/02/15: Windows Refund Day (report with pictures)
1999/03/20: SVLUG KTEH night (photos only)
1999/03/01-04: LinuxWorld Expo Winter 99 (complete report with many pictures)
1999/03/31: Mozilla Party one year anniversary (photos only)
1999/05/18-22: Linuxexpo 1999 (complete report with many pictures)
1999/06/07: June 99 Balug meeting with Linus
1999/08/09-12: LinuxWorld Expo Summer 99 (complete report with many pictures)
1999/11/15-19: Linux Business Show at Comdex Fall 1999 (full report with pictures)
2000/08/14-17: LinuxWorld Expo Summer 2000 (complete report with many pictures)
2001/01/17-20: Linux.conf.au/LCA 2001 (complete report with pictures)
2001/07/25-28: OLS 2001 (photos only)
2001/08/25: Linux 10th Anniversary (report with pictures)
2001/09/27-30: LinuxWorld Expo Summer 2001 report with pictures)
2001/11/05-10: ALS 2001 (photos only)
2002/06/26-29: OLS 2002 (photos only)
2003/01/20-25: LCA 2003 (photos only)
2003/07/23-26: OLS 2003 (photos only)
2004/01/12-17: LCA 2004 (photos only)
2004/07/21-24: OLS 2004 (photos only)
2005/04/18-23: LCA 2005 (photos only)
2006/01/24-28: LCA 2006 (photos only)
2007/01/17-21: LCA 2007 (photos only)

Here is a list of all the talks I've given:

And below are my blog posts:

Table of Content for linux:

More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024



2024/06/23 Linux on Dell XPS 9730
π 2024-06-23 01:01 in Computers, Linux

Intro

I had a forced upgrade from P73 to P17gen2 after my P73 suddenly died, and honestly I wasn't really impressed with the P17gen2, it was still huge, was not faster CPU wise, and did not run any longer on batteries despite going from Intel gen9 to gen11 (lenovo has no newer CPUs for 17" and 4K). This is where I looked into other options and found the Dell XPS 9730 as pretty much the only up to date gen13 laptop with 4K and 17" LCD.

Have a look at this page on Thinkpad P70 vs P73 vs P17

XPS 9730 is definitely smaller and more pixels than the P17gen
XPS 9730 is definitely smaller and more pixels than the P17gen

smaller footprint and lighter, sadly also a shit keyboard :(
smaller footprint and lighter, sadly also a shit keyboard :(

the text console is very small ;)
the text console is very small ;)

battery use is much better than lenovo
battery use is much better than lenovo

13th gen intol, 6 fast cores plus 8 low power cores
13th gen intol, 6 fast cores plus 8 low power cores

nice 3840x2400 native panel resolution
nice 3840x2400 native panel resolution

compared to lenovo, the laptop is not easy to open, but hopefully you only have to do it once to add/replace NVME M2 drives (M2 SATA is not supported)
compared to lenovo, the laptop is not easy to open, but hopefully you only have to do it once to add/replace NVME M2 drives (M2 SATA is not supported)

The things I don't like about this laptop however:

  • no trackpoint. I'm sorry trackpoint is so much more reliable and efficient when you know how to use it. The trackpoint only is why I go back to my thinkpad when I'm not travelling and need lightweight and long battery life
  • the keyboard layout sucks. Why trying to save keys on a 17" laptop? Why no Pg Down/Pg Up without Fn? Why no direct home and end? and OMG sysrq does not work :( Seriously, Dell, what were you thinking? Why such a crappy small laptop keyboard on your biggest keyboard? The other reason I go back to the thinkpad is because of the proper keyboard.
  • Linux config files

    You can get them here

    Missing hardware ports

    Somehow Dell decided it was worth removing the USB-A ports, that sucks, I really wanted at least one or two. Anyway, you can use USB-C to USB-A adapters, but now you're carrying dongles taped ton your laptop :-
    They do provide a dongle that outputs 1x USB-A (works but dongle is too big for that), and 1x HDMI. That latter one is actually the cool one, because it just worked on linux. Getting HDMI out on lenovo with their stupid nvidia chip in the way has been a complete pain, but HDMI over USB-C actually just worked!

    Hardware support

    A recent kernel is important with the right build options to get support for the touchpad, the touchscreen, and sound

    modprobe dell_laptop

    merlin:~# lsmod | grep ^dell dell_rbu 20480 0 dell_laptop 32768 0 dell_wmi 28672 1 dell_laptop dell_smbios 32768 2 dell_wmi,dell_laptop dell_wmi_sysman 53248 0 dell_wmi_descriptor 20480 2 dell_wmi,dell_smbios dell_wmi_ddv 24576 0

    Need this in kernel build: Dell X86 Platform Specific Device Drivers

    Dell X86 Platform Specific Device Drivers (X86_PLATFORM_DRIVERS_DELL) [N/y/?] (NEW) y Alienware Special feature control (ALIENWARE_WMI) [M/n/?] (NEW) m Dell Systems Management Base Driver (DCDBAS) [M/n/y/?] (NEW) m Dell Laptop Extras (DELL_LAPTOP) [M/n/?] (NEW) m BIOS update support for DELL systems via sysfs (DELL_RBU) [M/n/y/?] (NEW) m Dell Airplane Mode Switch driver (DELL_RBTN) [M/n/?] (NEW) m Dell SMBIOS driver (DELL_SMBIOS) [M/n/?] (NEW) m Dell SMBIOS driver WMI backend (DELL_SMBIOS_WMI) [Y/n/?] (NEW) m Dell Latitude freefall driver (ACPI SMO88XX) (DELL_SMO8800) [M/n/y/?] (NEW) y Dell WMI notifications (DELL_WMI) [M/n/?] (NEW) y Dell WMI Hardware Privacy Support (DELL_WMI_PRIVACY) [N/y/?] (NEW) y WMI Hotkeys for Dell All-In-One series (DELL_WMI_AIO) [M/n/?] (NEW) y Dell WMI sensors Support (DELL_WMI_DDV) [M/n/?] (NEW) m External LED on Dell Business Netbooks (DELL_WMI_LED) [M/n/?] (NEW) m Dell WMI-based Systems management driver (DELL_WMI_SYSMAN) [M/n/?] (NEW) m

    Touchpad

    https://forums.gentoo.org/viewtopic-t-1026576-start-0.html <<< kernel modules for touchpad
    Have a look for USB HID SUPPORT and turn on raw HID SUPPORT there.
    merlin:~# lsmod | grep -i HID
    hid_sensor_als         16384  0
    hid_sensor_trigger     20480  2 hid_sensor_als
    industrialio_triggered_buffer    12288  1 hid_sensor_trigger
    industrialio          131072  4 industrialio_triggered_buffer,hid_sensor_trigger,kfifo_buf,hid_sensor_als
    hid_sensor_iio_common    20480  2 hid_sensor_trigger,hid_sensor_als
    intel_hid              32768  0
    sparse_keymap          16384  2 intel_hid,dell_wmi
    hid_multitouch         32768  0
    usbhid                 69632  0
    hid_sensor_custom      28672  0
    hid_sensor_hub         28672  4 hid_sensor_trigger,hid_sensor_iio_common,hid_sensor_als,hid_sensor_custom
    intel_ishtp_hid        28672  0
    hid_generic            12288  0
    usbcore               389120  5 xhci_hcd,usbhid,uvcvideo,btusb,xhci_pci
    intel_ishtp            73728  2 intel_ishtp_hid,intel_ish_ipc
    i2c_hid_acpi           12288  0
    i2c_hid                36864  1 i2c_hid_acpi
    hid                   167936  6 i2c_hid,usbhid,hid_multitouch,hid_sensor_hub,intel_ishtp_hid,hid_generic
    

    screen touch works

    touchpad: merlin:~$ xinput Unable to connect to X server merlin:~$ DISPLAY=:0 xinput | Virtual core pointer id=2 [master pointer (3)] | | Virtual core XTEST pointer id=4 [slave pointer (2)] | | ELAN2097:00 04F3:2A15 id=10 [slave pointer (2)] | | VEN_06CB:00 06CB:CE7E Mouse id=11 [slave pointer (2)] | | VEN_06CB:00 06CB:CE7E Touchpad id=12 [slave pointer (2)] | | PS/2 Generic Mouse id=19 [slave pointer (2)] | Virtual core keyboard id=3 [master keyboard (2)] | Virtual core XTEST keyboard id=5 [slave keyboard (3)] | Video Bus id=6 [slave keyboard (3)] | Video Bus id=7 [slave keyboard (3)] | Power Button id=8 [slave keyboard (3)] | Sleep Button id=9 [slave keyboard (3)] | sof-soundwire Headset Jack id=13 [slave keyboard (3)] | Intel HID events id=14 [slave keyboard (3)] | Intel HID 5 button array id=15 [slave keyboard (3)] | Dell Privacy Driver id=16 [slave keyboard (3)] | Dell WMI hotkeys id=17 [slave keyboard (3)] | AT Translated Set 2 keyboard id=18 [slave keyboard (3)]

    Other touchpad notes, including upgrading your firmware if it's too old and setup an ACPI hotkey to turn the touchpad back on with Fn+F3 if it gets turned off by mistake

    https://ubuntuforums.org/archive/index.php/t-2392658.html So, the two touchpads (you can get the id easily with dmesg | grep -i touchpad): ELAN 04F3:311C <-- this is the one with issues Synaptics 06CB:CE7E => I have the right one but if not lastest firmware fixes things: https://bugzilla.kernel.org/show_bug.cgi?id=214597

    https://www.dell.com/support/kbdoc/en-us/000150104/precision-xps-ubuntu-general-touchpad-mouse-issue-fix

    Added a hotkey to re-enablet touchpad if it gets turned off by mistake by syndaemon merlin:/etc/acpi# grep . touchpad-local.sh events/dell-f* touchpad-local.sh:#!/bin/bash touchpad-local.sh:su - merlin -c "DISPLAY=:0 synclient TouchpadOff=0" events/dell-f4-cdplay-sleep-local:event=button/volumeup VOLUP 00000080 00000000 events/dell-f4-cdplay-sleep-local:action=/etc/acpi/touchpad-local.sh

    Fan control needed for CPU

    Fan control is also required to allow CPUs to work faster, or they will be temperature throttled.

    merlin:~# smbios-thermal-ctl -g -------------------------------------------------------------------

    Current Thermal Modes: Performance

    Current Active Acoustic Controller (AAC) Mode: AAC mode Disabled

    Current Active Acoustic Controller (AAC) Mode: Global (AAC enable/disable applies to all supported USTT modes)

    Current Fan Failure Mode: Helper function to Get current Thermal Mode settings

    by default, CPUs are throttled down for temperature, install throttled to control fans which in turn allow CPUs to run harder: apt install thermald merlin:~# systemctl start thermald merlin:~# psg thermald root 45398 0.0 0.0 287000 10240 ? Ssl 04:09 0:00 /usr/sbin/thermald --systemd --dbus-enable --adaptive

    Sound

    Sound is fairly tricky, it worked in Ubuntu 23, nothing less than that and not so much on Debian.

    This firmware module is crutial and missing on debian: merlin:/# dpkg -S iwlwifi-so-a0-gf-a0-83.ucode linux-firmware: /lib/firmware/iwlwifi-so-a0-gf-a0-83.ucode.zst



    /etc/pipewire/microphone.conf

    # https://wiki.archlinux.org/title/PipeWire
    # this works for pipewire-media-session but not wireplumber (that uses lua)
    context.objects = [
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.source
                node.name              = "microphone"
                node.description       = "Undetected Microphone"
                media.class            = "Audio/Source"
    # arecord -l
                api.alsa.path          = "hw:1,7"
            }
        }
    ]
    

    merlin:~# dmesg | grep snd [ 84.237700] snd_hda_intel 0000:00:1f.3: vgaarb: pci_notify [ 84.242752] snd_hda_intel 0000:00:1f.3: runtime IRQ mapping not provided by arch [ 84.242780] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100 [ 84.247195] snd_hda_intel 0000:00:1f.3: SoundWire enabled on CannonLake+ platform, using SOF driver [ 84.247203] snd_hda_intel 0000:00:1f.3: vgaarb: pci_notify

    merlin:~# dmesg | grep firmware [ 2.924714] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.19) [ 2.949985] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.5.1 [ 2.949993] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3 [ 83.756991] systemd[1]: systemd-pcrmachine.service - TPM2 PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f). [ 84.624266] iwlwifi 0000:00:14.3: loaded firmware version 83.e8f84e98.0 so-a0-gf-a0-83.ucode op_mode iwlmvm [ 85.611677] Bluetooth: hci0: Minimum firmware build 1 week 10 2014 [ 85.641830] Bluetooth: hci0: Found device firmware: intel/ibt-0040-0041.sfi [ 87.312791] Bluetooth: hci0: Waiting for firmware download to complete



    https://thesofproject.github.io/latest/getting_started/intel_debug/suggestions.html#run-alsa-info
    

    No sound on speakers on dell 9730 (But works on wired headphones and bluetooth) #4758: https://github.com/thesofproject/linux/issues/4758#issuecomment-1874578163

    apt-get install -t bullseye-backports firmware-sof-signed thermald intel-microcode amd64-microcode firmware-realtek firmware-iwlwifi

    apt-get install -t unstable firmware-sof-signed alsa-ucm-conf

    Without alsa-ucm.conf (not always installed on debian), this crutial file was missing: merlin:~# cat /usr/share/alsa/ucm2/sof-soundwire/rt1316-2.conf # Use case Configuration for sof-soundwire card

    SectionDevice."Speaker" { Comment "Speaker"

    If.lrswitch { Condition { Type ControlExists Control "name='rt1316-1 DAC L Switch'" } True { EnableSequence [ cset "name='rt1316-1 RX Channel Select' L,L" cset "name='rt1316-2 RX Channel Select' R,R" cset "name='rt1316-1 DAC L Switch' 1" cset "name='rt1316-1 DAC R Switch' 1" cset "name='rt1316-2 DAC L Switch' 1" cset "name='rt1316-2 DAC R Switch' 1" cset "name='Speaker Switch' on" ]

    merlin:~$ inxi -aA Audio: Device-1: Intel vendor: Dell driver: sof-audio-pci-intel-tgl alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 0000:00:1f.3 chip-ID: 8086:51ca class-ID: 0401 API: ALSA v: k6.6.9-amd64-volpre-sysrq-20240101 status: kernel-api with: aoss type: oss-emulator tools: alsamixer,amixer Server-1: PipeWire v: 0.3.65 status: active (process) with: 1: pipewire-pulse status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl

    merlin:~$ wpctl status PipeWire 'pipewire-0' [0.3.65, merlin@merlin.svh.merlins.org, cookie:3437972412] `- Clients: 31. pipewire [0.3.65, merlin@merlin.svh.merlins.org, pid:3849] 33. WirePlumber [0.3.65, merlin@merlin.svh.merlins.org, pid:3847] 34. WirePlumber [export] [0.3.65, merlin@merlin.svh.merlins.org, pid:3847] 81. Efl Volume Control [0.3.65, merlin@merlin.svh.merlins.org, pid:32317] 95. enlightenment [0.3.65, merlin@merlin.svh.merlins.org, pid:32317] 102. wpctl [0.3.65, merlin@merlin.svh.merlins.org, pid:41767]

    Audio |- Devices: | 44. sof-soundwire [alsa] | |- Sinks: | 53. sof-soundwire HDMI / DisplayPort 3 Output [vol: 1.00] | 54. sof-soundwire HDMI / DisplayPort 2 Output [vol: 1.00] | 55. sof-soundwire HDMI / DisplayPort 1 Output [vol: 1.00] | 56. sof-soundwire Headphones [vol: 1.00] | * 57. sof-soundwire Speaker [vol: 0.50] | |- Sink endpoints: | |- Sources: | 58. sof-soundwire Headset Microphone [vol: 1.03] | * 59. sof-soundwire SoundWire microphones [vol: 0.48] |

    Configs

    If that helps, a few config files ( You also can get them here )

    This config file is very important if you want to configure the touchpad to emulate 3 buttons at the bottom of the bad (left/middle/right)
    /etc/X11/xorg.conf.d/70-synaptics.conf

    # https://wiki.archlinux.org/title/Touchpad_Synaptics#Configuration
    # https://www.dell.com/support/kbdoc/en-us/000150104/precision-xps-ubuntu-general-touchpad-mouse-issue-fix
    

    Section "InputClass" Identifier "touchpad" Driver "synaptics" MatchIsTouchpad "on" #Option "TapButton1" "1" #Option "TapButton2" "3" #Option "TapButton3" "2" #Option "VertEdgeScroll" "on" #Option "VertTwoFingerScroll" "on" #Option "HorizEdgeScroll" "on" #Option "HorizTwoFingerScroll" "on" #Option "CircularScrolling" "on" #Option "CircScrollTrigger" "2" #Option "EmulateTwoFingerMinZ" "40" #Option "EmulateTwoFingerMinW" "8" #Option "CoastingSpeed" "0" #Option "FingerLow" "30" #Option "FingerHigh" "50" #Option "MaxTapTime" "125" #Option "SendEventsMode" "disabled-on-external-mouse" #Option "Tapping" "True" Option "AccelProfile" "adaptive" Option "AccelSpeed" "0.3" #Option "TappingDrag" "True" #Option "HorizontalScrolling" "True" #Option "ScrollMethod" "edge" # https://wiki.archlinux.org/title/Touchpad_Synaptics # left 40% middle 25% (40% to 65%) right 35% (from 65% to 0=inf) # buttons go from 90% down to 0=inf Option "SoftButtonAreas" "66% 0 90% 0 40% 65% 90% 0" EndSection

    lmsensors if the right kernel build options are set

    merlin:~# sensors
    coretemp-isa-0000
    Adapter: ISA adapter
    Package id 0:  +62.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 0:        +58.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 4:        +57.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 8:        +60.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 12:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 16:       +58.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 20:       +52.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 24:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 25:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 26:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 27:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 28:       +59.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 29:       +58.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 30:       +58.0°C  (high = +100.0°C, crit = +100.0°C)
    Core 31:       +58.0°C  (high = +100.0°C, crit = +100.0°C)
    

    dell_ddv-virtual-0 Adapter: Virtual device CPU Fan: 2866 RPM Video Fan: 2857 RPM CPU: +61.0°C (low = +0.0°C, high = +0.0°C) NB: +52.0°C (low = +0.0°C, high = +0.0°C) Other: +56.0°C (low = +0.0°C, high = +0.0°C) Other: +51.0°C (low = +0.0°C, high = +0.0°C) Other: +53.0°C (low = +0.0°C, high = +0.0°C) Ambient: +28.0°C (low = +0.0°C, high = +0.0°C) Other: +49.0°C (low = +0.0°C, high = +0.0°C) Unknown: +26.0°C (low = +0.0°C, high = +0.0°C) Video: +53.0°C (low = +0.0°C, high = +0.0°C)

    ubuntu 6.5.0-14 kernel: merlin:/lib/modules# sensors ucsi_source_psy_USBC000:002-isa-0000 Adapter: ISA adapter in0: 5.00 V (min = +5.00 V, max = +5.00 V) curr1: 0.00 A (max = +0.00 A)

    iwlwifi_1-virtual-0 Adapter: Virtual device temp1: +39.0°C

    ucsi_source_psy_USBC000:004-isa-0000 Adapter: ISA adapter in0: 5.00 V (min = +5.00 V, max = +5.00 V) curr1: 0.00 A (max = +3.00 A)

    coretemp-isa-0000 Adapter: ISA adapter Package id 0: +51.0°C (high = +100.0°C, crit = +100.0°C) Core 0: +44.0°C (high = +100.0°C, crit = +100.0°C) Core 4: +43.0°C (high = +100.0°C, crit = +100.0°C) Core 8: +46.0°C (high = +100.0°C, crit = +100.0°C) Core 12: +41.0°C (high = +100.0°C, crit = +100.0°C) Core 16: +41.0°C (high = +100.0°C, crit = +100.0°C) Core 20: +45.0°C (high = +100.0°C, crit = +100.0°C) Core 24: +47.0°C (high = +100.0°C, crit = +100.0°C) Core 25: +47.0°C (high = +100.0°C, crit = +100.0°C) Core 26: +47.0°C (high = +100.0°C, crit = +100.0°C) Core 27: +47.0°C (high = +100.0°C, crit = +100.0°C) Core 28: +48.0°C (high = +100.0°C, crit = +100.0°C) Core 29: +48.0°C (high = +100.0°C, crit = +100.0°C) Core 30: +48.0°C (high = +100.0°C, crit = +100.0°C) Core 31: +48.0°C (high = +100.0°C, crit = +100.0°C)

    nvme-pci-e200 Adapter: PCI adapter Composite: +30.9°C (low = -40.1°C, high = +119.8°C) (crit = +129.8°C) Sensor 1: +40.9°C (low = -40.1°C, high = +139.8°C) Sensor 2: +30.9°C (low = -40.1°C, high = +119.8°C)

    ucsi_source_psy_USBC000:003-isa-0000 Adapter: ISA adapter in0: 5.00 V (min = +5.00 V, max = +5.00 V) curr1: 0.00 A (max = +0.00 A)

    ucsi_source_psy_USBC000:001-isa-0000 Adapter: ISA adapter in0: 18.00 V (min = +0.00 V, max = +20.00 V) curr1: 6.50 A (max = +6.50 A)

    dell_ddv-virtual-0 Adapter: Virtual device CPU Fan: 1221 RPM Video Fan: 1206 RPM CPU: +53.0°C (low = +0.0°C, high = +0.0°C) NB: +43.0°C (low = +0.0°C, high = +0.0°C) Other: +47.0°C (low = +0.0°C, high = +0.0°C) Other: +42.0°C (low = +0.0°C, high = +0.0°C) Other: +45.0°C (low = +0.0°C, high = +0.0°C) Ambient: +31.0°C (low = +0.0°C, high = +0.0°C) Other: +42.0°C (low = +0.0°C, high = +0.0°C) Unknown: +27.0°C (low = +0.0°C, high = +0.0°C) Video: +36.0°C (low = +0.0°C, high = +0.0°C)

    nvme-pci-e100 Adapter: PCI adapter Composite: +31.9°C (low = -5.2°C, high = +89.8°C) (crit = +93.8°C)

    BAT0-acpi-0 Adapter: ACPI interface in0: 13.13 V curr1: 1000.00 uA

    See more images for Linux on Dell XPS 9730
    2024/06/24 Linux on Lenovo P17gen2
    π 2024-06-24 01:01 in Computers, Linux
    I had a forced upgrade from P73 to P17gen2 after my P73 suddenly died, and the upgrade wasn't as seamless as I was hoping for. First, the new laptop did not support SATA M2 anymore, and removed the 2.5" Sata drive slot despite the huge laptop size, so I had to get new drives (all 3 had to be M2 NVME).

    I have to admit now that while I've been using debian since 1997 and I'm not super interested in switching again to ubuntu, especially when I already did once, and they honestly sucked and let me down enough that I went back to debian. But in this case, debian didn't support sound right this new laptop, especially sound input (microphone), and it took several days of work painstakenly diffing the latest ubuntu 23 that worked, and debian that did not. Eventually got debian to work though.

    P73 (after it died) next to P17gen2
    P73 (after it died) next to P17gen2

    Intro

    You should look at these pages first:
  • My Linux on Thinkpad P70 page has most of the info you need and that is still valid for P73 and P17gen2
  • this explains Upgrading from Sata SSD, to M2 Sata, to M2 NVME on P70
  • How to get the P70 to charge from slimtip adapters it doesn't like
  • By then Lenovo messed up P73 power further and it refused to even use an 20V power unless I built special trickery, so this page helps with getting around power limitations
  • And definitely read this page on Thinkpad P70 vs P73 vs P17
  • Note that as per the last page linked above, I do not recommend getting a P17 if you already have a P73. I found nothing really better in the P17gen2 despite it being 2 years newer. Quite disappointing.

    Power

    That's the biggest issue on this laptop, battery use is way too high, even under windows, and Lenovo could not be bothered to make it work with USB-PD, unlike Dell who did a fine job of that.

    The page with workaround again, but it's very sad I still had to do this for P17 :(

  • By then Lenovo messed up P73 power further and it refused to even use an 20V power unless I built special trickery, so this page helps with getting around power limitations
  • If you want a laptop with a proper power system and 2x the battery life while being also faster, try the Dell XPS 9730 (see review)

    Configs

    If that helps, a few config files ( You also can get them here )

    /etc/pipewire/microphone.conf

    # https://wiki.archlinux.org/title/PipeWire
    context.objects = [
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.source
                node.name              = "microphone"
                node.description       = "Lenovo P17 DMIC16kHz"
                media.class            = "Audio/Source"
    # arecord -l
                api.alsa.path          = "hw:0,7"
            }
        }
    ]

    /etc/modprobe.d/thinkpad..conf

    alias char-major-10-170 thinkpad
    alias /dev/thinkpad thinkpad
    alias /dev/thinkpad/thinkpad thinkpad
    alias /dev/thinkpad/smapi smapi
    alias /dev/thinkpad/superio superio
    alias /dev/thinkpad/rtcmosram rtcmosram
    

    # See http://www.thinkwiki.org/wiki/How_to_get_special_keys_to_work options thinkpad_acpi hotkey=0xff8c7ffb experimental=1 fan_control=1

    options thinkpad enable_smapi=1 enable_superio=1 enable_rtcmosram=1 enable_thinkpadpm=1 #http://www.thinkwiki.org/wiki/Tp_smapi options thinkpad_ec force_io=1 # Invert X and Y: https://wiki.archlinux.org/index.php/HDAPS options hdaps invert=1

    options usbcore autosuspend=1

    # http://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt # http://ubuntuforums.org/showthread.php?t=1316634 options snd-hda-intel probe_mask=1 model=thinkpad

    #options iwlwifi 11n_disable=2

    # To prevent applications from using ALSA's OSS emulation and bypassing # PulseAudio (thereby preventing other applications from playing sound), # make sure the module snd_pcm_oss is not being loaded at boot # https://wiki.archlinux.org/index.php/PulseAudio#ALSA blacklist snd_pcm_oss blacklist snd_mixer_oss

    blacklist dvb_usb_rtl28xxu #blacklist snd_hda_codec_hdmi

    # slows down boot blacklist mei_wdt

    # irq 48: nobody cared (try booting with the "irqpoll" option) # [<00000000c1127e5c>] tis_int_handler [tpm_tis_core] blacklist tpm_tis_core

    Sound

    Sounds got complicated, took me a while to understand how sound now works (so changed so many times), and debug it:
    pipewire replaces pulseaudio https://wiki.archlinux.org/title/PipeWire
    helvum is graphical interface, it's pretty but not sure it's useful
    qpwgraph is the same as helvum
    pulseaudio still needed to talk to it.
    

    Check out the linux kernel config options in here if that helps.

    sauron:~$ pactl info Server String: /run/user/500/pulse/native Library Protocol Version: 35 Server Protocol Version: 35 Is Local: yes Client Index: 557 Tile Size: 65472 User Name: merlin Host Name: sauron.svh.merlins.org Server Name: PulseAudio (on PipeWire 0.3.65) Server Version: 15.0.0 Default Sample Specification: float32le 2ch 48000Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.stereo-fallback Default Source: alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.stereo-fallback.monitor Cookie: 1ece:0308

    sauron:/etc/modprobe.d# inxi -aA Audio: Device-1: Intel Tiger Lake-H HD Audio vendor: Lenovo driver: sof-audio-pci-intel-tgl alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3 chip-ID: 8086:43c8 class-ID: 0401 Device-2: NVIDIA GA104 High Definition Audio vendor: Lenovo driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:228b class-ID: 0403 API: ALSA v: k6.6.8-amd64-volpre-sysrq-20231218 status: kernel-api with: aoss type: oss-emulator tools: alsamixer,amixer Server-1: PipeWire v: 0.3.65 status: n/a (root, process) with: 1: pipewire-pulse status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl

    ====================== microphone not working ====================== https://forum.endeavouros.com/t/pipewire-pipewire-media-session-vs-wireplumber/20705 wireplumber is new and inevitable, it uses LUA and different config files

    https://wiki.archlinux.org/title/PipeWire /usr/share/wireplumber/main.lua.d/50-alsa-config.lua -- ["api.alsa.use-acp"] = true, => yeah, this kind of works but prevents headphones from working later

    default output is Tiger Lake HD Audio Controller microphone is HD Autdio Controller DMIC 16Khz

    Instead of fixing in wireplugger, fix in pipewire which was not super documented:

    Tried again with /etc/pipewire/microphone.conf after ln -s /usr/share/pipewire /etc/pipewire ---------------------------------------------------------------------------- merlin:/etc/pipewire$ ls -l /etc/pipewire lrwxrwxrwx 1 root root 19 Dec 25 03:37 /etc/pipewire -> /usr/share/pipewire merlin:/etc/pipewire$ cat microphone.conf # https://wiki.archlinux.org/title/PipeWire context.objects = [ { factory = adapter args = { factory.name = api.alsa.pcm.source node.name = "microphone" node.description = "Lenovo P17 DMIC16kHz" media.class = "Audio/Source" # arecord -l api.alsa.path = "hw:0,7" } } ] ----------------------------------------------------------------------------

    then restart: killall pipewire pipewire-pulse (which gets auto restarted)

    changes Audio |- Devices: | 44. GA104 High Definition Audio Controller [alsa] | 45. Tiger Lake-H HD Audio Controller [alsa] | |- Sinks: | * 54. Tiger Lake-H HD Audio Controller Stereo [vol: 0.71] | |- Sink endpoints: | |- Sources: | 55. Tiger Lake-H HD Audio Controller Stereo [vol: 0.61]

    to Audio |- Devices: | 45. Tiger Lake-H HD Audio Controller [alsa:pcm] | 51. GA104 High Definition Audio Controller [alsa:pcm] | |- Sinks: | * 33. Tiger Lake-H HD Audio Controller [vol: 0.89] | 37. GA104 High Definition Audio Controller (HDMI 1) [vol: 1.00] | 38. GA104 High Definition Audio Controller (HDMI 3) [vol: 1.00] | 39. GA104 High Definition Audio Controller (HDMI 2) [vol: 1.00] | 40. GA104 High Definition Audio Controller (HDMI 0) [vol: 1.00] | 363. Tiger Lake-H HD Audio Controller (HDA Analog Deep Buffer (*)) [vol: 1.00] | 366. Tiger Lake-H HD Audio Controller (HDMI3 (*)) [vol: 1.00] | 377. Tiger Lake-H HD Audio Controller (HDMI2 (*)) [vol: 1.00] | 378. Tiger Lake-H HD Audio Controller (HDMI1 (*)) [vol: 1.00] | |- Sink endpoints: | |- Sources: | 364. Tiger Lake-H HD Audio Controller (DMIC16kHz (*)) [vol: 0.61] | 365. Tiger Lake-H HD Audio Controller (DMIC (*)) [vol: 1.00] | * 411. Tiger Lake-H HD Audio Controller [vol: 0.55]

    ubuntu had this instead: Audio Chip: Realtek ALC287 |- Devices: | 44. Tiger Lake-H HD Audio Controller [alsa] | 45. GA104 High Definition Audio Controller [alsa] | |- Sinks: | 46. Tiger Lake-H HD Audio Controller HDMI / DisplayPort 3 Output [vol: 1.00] | 47. Tiger Lake-H HD Audio Controller HDMI / DisplayPort 2 Output [vol: 1.00] | 48. Tiger Lake-H HD Audio Controller HDMI / DisplayPort 1 Output [vol: 1.00] | * 49. Tiger Lake-H HD Audio Controller Speaker + Headphones [vol: 0.40] | |- Sink endpoints: | |- Sources: | 50. Tiger Lake-H HD Audio Controller Headphones Stereo Microphone [vol: 1.00] | * 51. Tiger Lake-H HD Audio Controller Digital Microphone [vol: 1.00]

    sauron:~# lsmod | grep snd snd_seq_dummy 12288 0 snd_hrtimer 12288 1 snd_hda_codec_hdmi 90112 1 snd_hda_codec_realtek 196608 1 snd_hda_codec_generic 110592 1 snd_hda_codec_realtek snd_soc_dmic 12288 1 snd_sof_pci_intel_tgl 12288 2 snd_sof_intel_hda_common 208896 1 snd_sof_pci_intel_tgl snd_sof_intel_hda 24576 1 snd_sof_intel_hda_common snd_sof_pci 24576 2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl snd_sof_xtensa_dsp 12288 1 snd_sof_intel_hda_common snd_soc_hdac_hda 24576 1 snd_sof_intel_hda_common snd_soc_acpi_intel_match 98304 2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_sof_intel_hda_common snd_hda_intel 57344 0 soundwire_intel 69632 1 snd_sof_intel_hda_common snd_sof_intel_hda_mlink 40960 2 soundwire_intel,snd_sof_intel_hda_common snd_sof_probes 24576 0 snd_sof 352256 4 snd_sof_pci,snd_sof_intel_hda_common,snd_sof_probes,snd_sof_intel_hda snd_sof_utils 16384 1 snd_sof snd_intel_dspcfg 36864 3 snd_hda_intel,snd_sof,snd_sof_intel_hda_common snd_intel_sdw_acpi 16384 2 snd_sof_intel_hda_common,snd_intel_dspcfg snd_soc_skl_hda_dsp 24576 4 snd_soc_intel_hda_dsp_common 16384 1 snd_soc_skl_hda_dsp snd_hda_codec 217088 8 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek, snd_soc_intel_hda_dsp_common,snd_soc_hdac_hda,snd_sof_intel_hda,snd_soc_skl_hda_dsp snd_hwdep 20480 1 snd_hda_codec snd_soc_hdac_hdmi 45056 1 snd_soc_skl_hda_dsp snd_hda_ext_core 40960 5 snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_ hda_mlink,snd_sof_intel_hda snd_hda_core 147456 11 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core, snd_hda_codec,snd_hda_codec_realtek,snd_soc_intel_hda_dsp_common,snd_sof_intel_hda_common,snd_soc_hdac_hdmi, snd_soc_hdac_hda,snd_sof_intel_hda snd_soc_core 421888 8 soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi, snd_soc_hdac_hda,snd_sof_probes,snd_soc_dmic,snd_soc_skl_hda_dsp snd_compress 28672 2 snd_soc_core,snd_sof_probes snd_pcm_dmaengine 16384 1 snd_soc_core snd_pcm 192512 13 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,soundwire_intel,snd_sof, snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_compress,snd_soc_core,snd_sof_utils,snd_hda_core,snd_pcm_dmaengine snd_seq_midi 20480 0 snd_seq_midi_event 16384 1 snd_seq_midi snd_seq 106496 9 snd_seq_midi,snd_seq_midi_event,snd_seq_dummy snd_timer 53248 3 snd_seq,snd_hrtimer,snd_pcm snd_rawmidi 53248 1 snd_seq_midi snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi snd_ctl_led 24576 0 snd 155648 26 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep, snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_timer,snd_soc_hdac_hdmi,snd_compress,thinkpad_acpi, snd_soc_core,snd_pcm,snd_rawmidi soundcore 16384 2 snd_ctl_led,snd ledtrig_audio 12288 3 snd_ctl_led,snd_hda_codec_generic,thinkpad_acpi ac97_bus 12288 1 snd_soc_core sauron:~# dmesg | grep snd [ 30.162413] snd_hda_intel 0000:00:1f.3: vgaarb: pci_notify [ 30.162418] snd_hda_intel 0000:00:1f.3: runtime IRQ mapping not provided by arch [ 30.162422] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100 [ 30.162441] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver [ 30.162444] snd_hda_intel 0000:00:1f.3: vgaarb: pci_notify [ 30.838258] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC287: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker [ 30.853017] snd_hda_codec_realtek ehdaudio0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) [ 30.871445] snd_hda_codec_realtek ehdaudio0D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0) [ 30.892281] snd_hda_codec_realtek ehdaudio0D0: mono: mono_out=0x0 [ 30.892292] snd_hda_codec_realtek ehdaudio0D0: inputs: [ 30.892342] snd_hda_codec_realtek ehdaudio0D0: Mic=0x19 [ 30.969586] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten [ 30.977231] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten sauron:~# dmesg | grep firmware [ 2.855848] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/tgl_dmc_ver2_12.bin (v2.12) [ 2.881616] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1 [ 2.881621] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3 [ 3.942915] psmouse serio2: trackpoint: Elan TrackPoint firmware: 0x12, buttons: 3/3 [ 29.602566] systemd[1]: systemd-pcrmachine.service - TPM2 PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f). [ 30.386592] iwlwifi 0000:09:00.0: loaded firmware version 83.e8f84e98.0 ty-a0-gf-a0-83.ucode op_mode iwlmvm [ 469.044883] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1 [ 469.044897] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3 [ 621.435387] iwlwifi 0000:09:00.0: loaded firmware version 83.e8f84e98.0 ty-a0-gf-a0-83.ucode op_mode iwlmvm [ 3319.317148] Bluetooth: hci0: Minimum firmware build 1 week 10 2014 [ 3319.325256] Bluetooth: hci0: Found device firmware: intel/ibt-0041-0041.sfi [ 3320.667073] Bluetooth: hci0: Waiting for firmware download to complete [50195.773603] usb 3-7: device firmware changed [74491.611751] Bluetooth: hci0: Minimum firmware build 1 week 10 2014 [74491.620036] Bluetooth: hci0: Found device firmware: intel/ibt-0041-0041.sfi [74492.962244] Bluetooth: hci0: Waiting for firmware download to complete [86582.232349] iwlwifi 0000:09:00.0: loaded firmware version 83.e8f84e98.0 ty-a0-gf-a0-83.ucode op_mode iwlmvm [87048.949201] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1 [87048.949215] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3 [88544.085573] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1 [88544.085590] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3 [88711.577697] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1 [88711.577711] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3 [88712.922837] Bluetooth: hci0: Minimum firmware build 1 week 10 2014

    See more images for Linux on Lenovo P17gen2

    More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024

    Contact Email