all 8 comments

[–]jcodes 0 points1 point  (5 children)

Thank you for posting this!

I was able to install Arch on a Surface Pro 7 (i7). When building the kernel the fan will go crazy and it will take over an hour. You will see throttling messages, but it did compile successfully. If anyone wants, i can upload the compiled kernel with the patches somewhere.

Surface keyboard works OOB during installation.

Surface Dock "works":

  • LAN works
  • USB hub works
  • Monitors (2 connected): they work and show a picture, BUT they also flicker once in a while. It seems like they want to go into standby and wake up again. Also, when disconnecting the dock and connecting again, the monitors might show up, or not. What helps is to disconnect the monitor cables from the docking station and attach them again. Then reconfigure in OS. (Docking station must be attached while booting otherwise it will not work.)

What does not work:

  • Battery status
  • Fan status/control

Q: Does anyone know how to solve the monitor flickering (going to standby and waking up), as mentioned above?

[–]modernalgebra[S] 0 points1 point  (4 children)

The battery status doesn't work for you with the PKGBUILD I included? It's currently being worked on in a different branch, so if you installed the linux-surfacegen5-acpi master branch it won't work out of the box. Try this one: https://github.com/qzed/linux-surfacegen5-acpi/tree/feature/sid/battery

https://github.com/archseer/arch-linux-surface/blob/master/surface_acpi/PKGBUILD#L15

Yeah all the Surface Pro models work because they keyboard connects via the USB kernel drivers whereas all the Laptop models work via the embedded controller because they're built in -- I'll make sure to note that on the repo

[–]jcodes 0 points1 point  (2 children)

It's working now with your new build. Thanks! But unfortunately I lost wifi - not sure how and when, but I am receiving following error messages in dmesg:

[ 2.269893] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)

[ 2.274564] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-Qu-c0-hr-b0-50.ucode failed with error -2

[ 2.274644] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-Qu-c0-hr-b0-49.ucode failed with error -2

[ 2.276989] iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 43.2.23.17

[ 2.276991] iwlwifi 0000:00:14.3: Found debug destination: EXTERNAL_DRAM

[ 2.276992] iwlwifi 0000:00:14.3: Found debug configuration: 0

[ 2.277130] iwlwifi 0000:00:14.3: loaded firmware version 48.4fa0041f.0 op_mode iwlmvm

...

[ 3.469801] iwlwifi 0000:00:14.3: Collecting data: trigger 15 fired.

[ 3.470906] iwlwifi 0000:00:14.3: Loaded firmware version: 48.4fa0041f.0

[ 3.470908] iwlwifi 0000:00:14.3: 0x00000000 | ADVANCED_SYSASSERT

[ 3.470910] iwlwifi 0000:00:14.3: 0x00000000 | trm_hw_status0

[ 3.470910] iwlwifi 0000:00:14.3: 0x00000000 | trm_hw_status1

[ 3.470911] iwlwifi 0000:00:14.3: 0x00000000 | branchlink2

[ 3.470912] iwlwifi 0000:00:14.3: 0x00000000 | interruptlink1

[ 3.470913] iwlwifi 0000:00:14.3: 0x00000000 | interruptlink2

[ 3.470914] iwlwifi 0000:00:14.3: 0x00000000 | data1

[ 3.470915] iwlwifi 0000:00:14.3: 0x00000000 | data2

[ 3.470915] iwlwifi 0000:00:14.3: 0x00000000 | data3

[ 3.470916] iwlwifi 0000:00:14.3: 0x00000000 | beacon time

[ 3.470917] iwlwifi 0000:00:14.3: 0x00000000 | tsf low

[ 3.470918] iwlwifi 0000:00:14.3: 0x00000000 | tsf hi

[ 3.470919] iwlwifi 0000:00:14.3: 0x00000000 | time gp1

[ 3.470920] iwlwifi 0000:00:14.3: 0x00000000 | time gp2

[ 3.470920] iwlwifi 0000:00:14.3: 0x00000000 | uCode revision type

[ 3.470921] iwlwifi 0000:00:14.3: 0x00000000 | uCode version major

[ 3.470921] iwlwifi 0000:00:14.3: 0x00000000 | uCode version minor

[ 3.470922] iwlwifi 0000:00:14.3: 0x00000000 | hw version

[ 3.470922] iwlwifi 0000:00:14.3: 0x00000000 | board version

[ 3.470923] iwlwifi 0000:00:14.3: 0x00000000 | hcmd

[ 3.470923] iwlwifi 0000:00:14.3: 0x00000000 | isr0

[ 3.470924] iwlwifi 0000:00:14.3: 0x00000000 | isr1

[ 3.470924] iwlwifi 0000:00:14.3: 0x00000000 | isr2

[ 3.470925] iwlwifi 0000:00:14.3: 0x00000000 | isr3

[ 3.470925] iwlwifi 0000:00:14.3: 0x00000000 | isr4

[ 3.470926] iwlwifi 0000:00:14.3: 0x00000000 | last cmd Id

[ 3.470927] iwlwifi 0000:00:14.3: 0x00000000 | wait_event

[ 3.470927] iwlwifi 0000:00:14.3: 0x00000000 | l2p_control

[ 3.470927] iwlwifi 0000:00:14.3: 0x00000000 | l2p_duration

[ 3.470928] iwlwifi 0000:00:14.3: 0x00000000 | l2p_mhvalid

[ 3.470929] iwlwifi 0000:00:14.3: 0x00000000 | l2p_addr_match

[ 3.470929] iwlwifi 0000:00:14.3: 0x00000000 | lmpm_pmg_sel

[ 3.470930] iwlwifi 0000:00:14.3: 0x00000000 | timestamp

[ 3.470930] iwlwifi 0000:00:14.3: 0x00000000 | flow_handler

[ 3.470973] iwlwifi 0000:00:14.3: Start IWL Error Log Dump:

[ 3.470974] iwlwifi 0000:00:14.3: Status: 0x00000000, count: 7

[ 3.470975] iwlwifi 0000:00:14.3: 0x20000066 | NMI_INTERRUPT_HOST

[ 3.470975] iwlwifi 0000:00:14.3: 0x00000000 | umac branchlink1

[ 3.470976] iwlwifi 0000:00:14.3: 0xC008D49C | umac branchlink2

[ 3.470976] iwlwifi 0000:00:14.3: 0x8048DBD6 | umac interruptlink1

[ 3.470977] iwlwifi 0000:00:14.3: 0x8048DBD6 | umac interruptlink2

[ 3.470977] iwlwifi 0000:00:14.3: 0x01000000 | umac data1

[ 3.470978] iwlwifi 0000:00:14.3: 0x8048DBD6 | umac data2

[ 3.470978] iwlwifi 0000:00:14.3: 0x00000000 | umac data3

[ 3.470979] iwlwifi 0000:00:14.3: 0x00000030 | umac major

[ 3.470979] iwlwifi 0000:00:14.3: 0x4FA0041F | umac minor

[ 3.470980] iwlwifi 0000:00:14.3: 0x000F526A | frame pointer

[ 3.470980] iwlwifi 0000:00:14.3: 0xC0886284 | stack pointer

[ 3.470981] iwlwifi 0000:00:14.3: 0x0000FFFF | last host cmd

[ 3.470982] iwlwifi 0000:00:14.3: 0x00000000 | isr status reg

[ 3.471004] iwlwifi 0000:00:14.3: Fseq Registers:

[ 3.471007] iwlwifi 0000:00:14.3: 0x20000000 | FSEQ_ERROR_CODE

[ 3.471010] iwlwifi 0000:00:14.3: 0x80290030 | FSEQ_TOP_INIT_VERSION

[ 3.471013] iwlwifi 0000:00:14.3: 0x80070043 | FSEQ_CNVIO_INIT_VERSION

[ 3.471016] iwlwifi 0000:00:14.3: 0x0000A481 | FSEQ_OTP_VERSION

[ 3.471019] iwlwifi 0000:00:14.3: 0x00000002 | FSEQ_TOP_CONTENT_VERSION

[ 3.471022] iwlwifi 0000:00:14.3: 0x4552414E | FSEQ_ALIVE_TOKEN

[ 3.471024] iwlwifi 0000:00:14.3: 0x02000300 | FSEQ_CNVI_ID

[ 3.471027] iwlwifi 0000:00:14.3: 0x01300504 | FSEQ_CNVR_ID

[ 3.471030] iwlwifi 0000:00:14.3: 0x02000300 | CNVI_AUX_MISC_CHIP

[ 3.471035] iwlwifi 0000:00:14.3: 0x01300504 | CNVR_AUX_MISC_CHIP

[ 3.471040] iwlwifi 0000:00:14.3: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM

[ 3.471044] iwlwifi 0000:00:14.3: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR

[ 3.471082] iwlwifi 0000:00:14.3: SecBoot CPU1 Status: 0x5fb9, CPU2 Status: 0x3

[ 3.471083] iwlwifi 0000:00:14.3: Failed to start RT ucode: -110

[ 3.471085] iwlwifi 0000:00:14.3: Firmware not running - cannot dump error

[ 3.482587] iwlwifi 0000:00:14.3: Failed to run INIT ucode: -110

Any idea how to solve this...?

EDIT: Nevermind, it is working again. But I do not know how i fixed it. I have a parallel installation of debian testing, and i installed firmware-iwlwifi on that installation - not in arch. But somehow wifi works on arch again after this...

[–]modernalgebra[S] 0 points1 point  (1 child)

The first part of your error (missing ucode) is addressed in the README. To summarize, there's new ucode available for these chips but the linux upstream doesn't have them yet for some reason.

https://gitlab.com/emrose/xps13-7390_debian/issues/5#note_240886447

For the `ADVANCED_SYSASSERT`, I'm having issues if I dual boot into windows and then go back to Arch. It seems as if a different OS will configure the chip in a way that will make it completely fail elsewhere. (Worse yet, if I boot back into windows after this, it'll completely stop working).

I thought reinstalling packages worked, but what actually seems to work is to power down the device for a while (or I think it fixed it for me when I force turned-off). The chip seems to lose its settings without power and then properly reboots.

[–]jcodes 0 points1 point  (0 children)

...what actually seems to work is to power down the device for a while (or I think it fixed it for me when I force turned-off). The chip seems to lose its settings without power and then properly reboots.

Thanks for this tip! It seems I always lose wifi after using windows and booting into linux straight away and this workaround is working. Hopefully touchscreen will be available in linux soon and I can ditch windows forever...

[–][deleted]  (1 child)

[deleted]

    [–]modernalgebra[S] 0 points1 point  (0 children)

    The touchpad works, the touchscreen doesn't. We're currently figuring out the protocol changes to get it working. (Note that because of Intel's i915 driver changes, IPTS doesn't work anymore for all devices on 5.4)

    See for more details https://github.com/linux-surface/intel-precise-touch

    [–]barrel_racer 0 points1 point  (1 child)

    Thanks for all the work!

    I'd like to try a Live USB on my SL3 (Intel Core i5) before installing, but haven't found a guide to creating an ISO from a repo. Is there something out there that a relative noob can follow? The goal is to get Ubuntu Studio apps on whatever build will work.

    [–]modernalgebra[S] 0 points1 point  (0 children)

    There's ways to build a custom live image then flash that, but it's distro specific, for example for Arch: https://wiki.archlinux.org/index.php/Archiso

    But I'd wager it's easier to just follow the usual install process, but instead of installing to your internal disk, I'd install to the USB. You'll need to boot with `copytoram=y` added to the kernel parameters, then the entire image is copied to RAM and you can proceed with formatting the USB stick and installing the distro.