Skip to content

Pro 7/Laptop 3: Touchscreen support #22

Open

Description

@aleksfadini

Any chance that this could work on the new Surface Pro 7 as well?
Jakeday kernel battery/acpi does not work.

I tried to run "make" in /modules and got this:

`
make -C /lib/modules/"5.3.6-1-surface"/build M= modules
make[1]: *** /lib/modules/5.3.6-1-surface/build: No such file or directory. Stop.
make: *** [Makefile:29: all] Error 2

`

Activity

  1. qzed commented on Oct 25, 2019

    @qzed
    Member

    We've discussed the Laptop 3 on IRC. I think the Pro 7 should be fairly similar (meaning that we would need to write some sort of stub-driver which provides a battery interface and talks to the EC, luckily the last part is the same from the previous generations). Can you upload an acpidump (sudo acpidump > acpidump.out)?

    Regarding the make error: Have you installed a new kernel and did not reboot? What distro are you running? In any case, if it doesn't work with the surface-linux kernel, it will, at the moment, not work with the module either.

  2. aleksfadini commented on Oct 25, 2019

    @aleksfadini
    Author

    Hey man! I will post that as soon as I get home. It would mean a lot if you could implement the battery on the Surface Pro 7, it seems you are the only one who is doing this.
    To answer your question, I did use the surface-linux in the arch repo. I tried to compile from source as a desperate move :)
    Edit: I used your surface module on the surface pro 6 for a year and it changed my life, since the surface is great for coding apps and test them with touch in the same ecosystem in Linux. Big fan of your work, just sent you a donation brother

  3. aleksfadini commented on Oct 26, 2019

    @aleksfadini
    Author

    Here is my acpi-dump (had to add .txt to upload it to GH)
    acpidump.out.txt

  4. aleksfadini commented on Oct 26, 2019

    @aleksfadini
    Author

    On a side note, if you could include this patch for the surface linux kernel, you could easily fix the touchscreen as well (and maybe it is a similar situation for the surface book 3):

    -touchscreen (related to intel_lpss blacklist otherwise wont boot)

    Here is more info on touchscreen issue:

    First Boot
    To boot fully without the boot process hanging one must blacklist the 'intel_lpss_pci' module, which can be done on a live media installation by selecting the boot option you want and pressing 'e', navigating to the end of the boot options string, and adding 'modprobe.blacklist=intel_lpss_pci'. This should allow booting into the full OS and further installation to the internal SSD.
    
    Intel LPSS
    To fix the intel_lpss_module the patch from this paste must be applied to the kernel.
    
    https://pastebin.com/sqPv8ShP
    
    Remember to be cautious about running code or installing patches from third party sources if you do not know what it does.
    
    This patch should enable the system to boot without blacklisting the module, further enabling access to the touchscreen.
    

    from https://wiki.archlinux.org/index.php/Dell_XPS_13_2-in-1_(7390)

  5. self-assigned this
    on Oct 27, 2019
  6. changed the title [-]Surface Pro 7[/-] [+]Surface Pro 7: Battery status[/+] on Oct 27, 2019
  7. qzed commented on Oct 27, 2019

    @qzed
    Member

    Big fan of your work, just sent you a donation brother

    Thank you, this is much appreciated!

    I can't give you a concrete time-frame when the battery stuff will work, but I hope that it doesn't take too long. At the moment, my first priority is getting the keyboard to work on the Laptop 3, but I will work on battery status on both devices after that. In essence, all those things are fairly similar to the previous generations, it's just that some ACPI stuff has changed.

    If you know anything about ACPI: the battery definitions, including _BIX and _BST have been removed and it seems to rely solely on the EC requests. Those are the same as on previous generations, though, so I think the difficult part is done. Unfortunately I don't know much about the Linux battery subsystem and thus I don't have any idea how long this will take to implement. The keyboard should be simpler to implement as it seems that this is basically just a matter of different IDs.

    On a side note, if you could include this patch for the surface linux kernel, you could easily fix the touchscreen as well (and maybe it is a similar situation for the surface book 3):

    Thank you for the link. Could you try the patch (I could compile a kernel for you if you want me to)? Also do you know what type of touchscreen the device uses (e.g. I2C)?

  8. aleksfadini commented on Oct 27, 2019

    @aleksfadini
    Author

    I would definitely try a kernel if you were so kind to compile one. Maybe it could be surface-linux-pro7 or something like that, in your arch surface repo?

    I didn't know the keyboard of he sf laptop 3 doesn't work.
    With touchscreen and battery I would be basically done with what I need for my surface 7, the rest doesn't matter (camera suspend etc).

  9. qzed commented on Oct 27, 2019

    @qzed
    Member

    @aleksfadini I've compiled and uploaded a kernel with the patch: https://github.com/qzed/linux-surface/releases/tag/v5.3-testing.1

  10. aleksfadini commented on Oct 27, 2019

    @aleksfadini
    Author

    That is awesome! Will install them with sudo pacman -U and report back asap. Infinite thanks.

  11. aleksfadini commented on Oct 27, 2019

    @aleksfadini
    Author

    Can confirm, with the v5.3-testing.1 patched kernel the boot does not hang, so I could remove the kernel parameter:
    'modprobe.blacklist=intel_lpss_pci
    And still boot normally!
    Now I should be able to configure the touch screen. Looking into what commands to use for diagnostics and to figure out what type it is (I2C?)

    Thanks again!!

  12. aleksfadini commented on Oct 27, 2019

    @aleksfadini
    Author

    By the way, installinf the v5.3-testing.1 on arch with sudo pacman -U gives this error:

    `
    lding image from preset: /etc/mkinitcpio.d/linux-surface-dev.preset: 'default'
    15 -> -k /boot/vmlinuz-linux-surface-dev -c /etc/mkinitcpio.conf -g
    14 /boot/initramfs-linux-surface-dev.img
    13 ==> Starting build: 5.3.0-1-surface-dev
    12 -> Running build hook: [base]
    11 -> Running build hook: [udev]
    10 -> Running build hook: [autodetect]
    9 -> Running build hook: [modconf]
    8 -> Running build hook: [block]
    7 -> Running build hook: [filesystems]
    6 -> Running build hook: [keyboard]
    5 -> Running build hook: [fsck]
    4 ==> ERROR: module not found: 'surface_acpi'
    3 ==> Generating module dependencies
    2 ==> Creating gzip-compressed initcpio image:
    1 /boot/initramfs-linux-surface-dev.img
    17 ==> WARNING: errors were encountered during the build. The image may not be
    1 complete.
    2 ==> Building image from preset: /etc/mkinitcpio.d/linux-surface-dev.preset:
    3 'fallback'
    4 -> -k /boot/vmlinuz-linux-surface-dev -c /etc/mkinitcpio.conf -g
    5 /boot/initramfs-linux-surface-dev-fallback.img
    6 -S autodetect
    7 ==> Starting build: 5.3.0-1-surface-dev
    8 -> Running build hook: [base]
    9 -> Running build hook: [udev]
    10 -> Running build hook: [modconf]
    11 -> Running build hook: [block]
    12 ==> WARNING: Possibly missing firmware for module: aic94xx
    13 ==> WARNING: Possibly missing firmware for module: wd719x
    14 -> Running build hook: [filesystems]
    15 -> Running build hook: [keyboard]
    16 -> Running build hook: [fsck]
    17 ==> ERROR: module not found: 'surface_acpi'
    18 ==> Generating module dependencies
    19 ==> Creating gzip-compressed initcpio image:
    20 /boot/initramfs-linux-surface-dev-fallback.img
    21 ==> WARNING: errors were encountered during the build. The image may not be
    22 complete.
    23 error: command failed to execute correctly

    `

    However the kernel works fine!

    less /proc/bus/input/devices does not show a touch screen yet.

  13. qzed commented on Oct 28, 2019

    @qzed
    Member

    With regards to the error: It looks like you've installed surface_acpi via dkms in the past, but something may have gone wrong. You could try and play around with dkms to remove it.

  14. qzed commented on Oct 28, 2019

    @qzed
    Member

    Thanks for testing, I'll include the patch then.

  15. aleksfadini commented on Oct 28, 2019

    @aleksfadini
    Author

    With regards to the error: It looks like you've installed surface_acpi via dkms in the past, but something may have gone wrong. You could try and play around with dkms to remove it.

    Yes! that's correct. I tried things I didn't quite understand in the hope to get the battery going. Will work on it.

    Output of less /proc/bus/input/devices:
    `
    I: Bus=0019 Vendor=0000 Product=0005 Version=0000
    1 N: Name="Lid Switch"
    2 P: Phys=PNP0C0D/button/input0
    3 S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
    4 U: Uniq=
    5 H: Handlers=event0
    6 B: PROP=0
    7 B: EV=21
    8 B: SW=1
    9
    10 I: Bus=0019 Vendor=0000 Product=0006 Version=0000
    11 N: Name="Video Bus"
    12 P: Phys=LNXVIDEO/video/input0
    13 S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
    14 U: Uniq=
    15 H: Handlers=kbd event1
    16 B: PROP=0
    17 B: EV=3
    18 B: KEY=3e000b00000000 0 0 0
    19
    20 I: Bus=0003 Vendor=045e Product=09c0 Version=0111
    21 N: Name="Microsoft Surface Type Cover Keyboard"
    22 P: Phys=usb-0000:00:14.0-8/input0
    23 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/0003:045E:09C0.0001/input/input2
    24 U: Uniq=
    25 H: Handlers=sysrq kbd event2 leds
    26 B: PROP=0
    27 B: EV=120013
    28 B: KEY=1000000000007 ff800000000007ff febeffdff3cfffff fffffffffffffffe
    29 B: MSC=10
    30 B: LED=7
    31
    32 I: Bus=0003 Vendor=045e Product=09c0 Version=0111
    33 N: Name="Microsoft Surface Type Cover Consumer Control"
    34 P: Phys=usb-0000:00:14.0-8/input0
    35 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/0003:045E:09C0.0001/input/input4
    36 U: Uniq=
    37 H: Handlers=kbd event3
    38 B: PROP=0
    39 B: EV=1f
    40 B: KEY=3f000301ff 0 0 483ffff17aff32d bfd4444600000000 1 130ff38b17c000 677bfad9415fed 19ed68000004400 10000002
    41 B: REL=1040
    42 B: ABS=100000000
    43 B: MSC=10
    44
    45 I: Bus=0003 Vendor=045e Product=09c0 Version=0111
    46 N: Name="Microsoft Surface Type Cover Touchpad"
    47 P: Phys=usb-0000:00:14.0-8/input0
    48 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/0003:045E:09C0.0001/input/input6
    49 U: Uniq=
    50 H: Handlers=event4 mouse0
    51 B: PROP=5
    52 B: EV=1b
    53 B: KEY=e520 10000 0 0 0 0
    54 B: ABS=260800000000003
    55 B: MSC=20
    56
    57 I: Bus=0010 Vendor=001f Product=0001 Version=0100
    58 N: Name="PC Speaker"
    59 P: Phys=isa0061/input0
    60 S: Sysfs=/devices/platform/pcspkr/input/input21
    61 U: Uniq=
    62 H: Handlers=kbd event5
    63 B: PROP=0
    64 B: EV=40001
    65 B: SND=6
    66
    67 I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    68 N: Name="HDA Intel PCH Mic"
    69 P: Phys=ALSA
    70 S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input22
    71 U: Uniq=
    72 H: Handlers=event6
    73 B: PROP=0
    74 B: EV=21
    75 B: SW=10
    76
    77 I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    78 N: Name="HDA Intel PCH Headphone"
    79 P: Phys=ALSA
    80 S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input23
    81 U: Uniq=
    82 H: Handlers=event7
    83 B: PROP=0
    84 B: EV=21
    85 B: SW=4

    `

    Do you think the touchpad is still not being seen by the kernel? How do I find it if it is I2C?

    EDIT: I meant touchscreen, not touchpad

  16. 83 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions