clearlinux / distribution

Placeholder repository to allow filing of general bugs/issues/etc against the Clear Linux OS for Intel Architecture linux distribution
518 stars 27 forks source link

Enable Surface Pro Devices (IPTS/i915/i2C/Marvell) #844

Open surface4linux opened 5 years ago

surface4linux commented 5 years ago

I would like to request Clear Linux add support for Surface Pro (business class touch devices) including the display/pen/stylus without user modification after installation.

The current live usb runs stunningly well, but lacks the display and input device support.

My current surface pro 4 device runs a patched kernel (antergos) and would like additional alternatives to that operating system.

Clear seems to be a 'clear' choice for these devices....

miguelinux commented 5 years ago

Can you help us to know the output of the lsmod command, please

miguelinux commented 5 years ago

lsmod in your working distro (antergos).

surface4linux commented 5 years ago
[surface@surface ~]$ lsmod
Module                  Size  Used by
isofs                  45056  1
rfcomm                 86016  16
fuse                  118784  3
bnep                   24576  2
btusb                  53248  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
btintel                24576  1 btusb
bluetooth             638976  41 btrtl,btintel,btbcm,bnep,btusb,rfcomm
sd_mod                 61440  4
ecdh_generic           24576  1 bluetooth
input_leds             16384  0
led_class              16384  1 input_leds
usbhid                 57344  0
snd_hda_codec_hdmi     57344  1
uas                    28672  0
cdc_ether              16384  0
usbnet                 49152  1 cdc_ether
r8152                  65536  0
mii                    16384  2 usbnet,r8152
usb_storage            69632  3 uas
snd_hda_codec_realtek   110592  1
snd_hda_codec_generic    86016  1 snd_hda_codec_realtek
mousedev               24576  0
joydev                 24576  0
intel_rapl             24576  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
kvm_intel             233472  0
kvm                   737280  1 kvm_intel
hid_multitouch         24576  0
intel_ipts             32768  0
hid_sensor_accel_3d    16384  0
hid_sensor_als         16384  0
hid_sensor_rotation    16384  0
hid_sensor_gyro_3d     16384  0
hid_sensor_trigger     16384  8 hid_sensor_gyro_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_rotation
industrialio_triggered_buffer    16384  4 hid_sensor_gyro_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_rotation
kfifo_buf              16384  1 industrialio_triggered_buffer
hid_sensor_iio_common    16384  5 hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_rotation
industrialio           81920  7 industrialio_triggered_buffer,hid_sensor_gyro_3d,hid_sensor_trigger,kfifo_buf,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_rotation
snd_soc_skl           118784  0
snd_soc_skl_ipc        73728  1 snd_soc_skl
snd_soc_sst_ipc        16384  1 snd_soc_skl_ipc
hid_sensor_hub         20480  6 hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_iio_common,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_rotation
hid_generic            16384  0
snd_soc_sst_dsp        36864  1 snd_soc_skl_ipc
mwifiex_pcie           40960  0
i915                 2080768  24 intel_ipts
snd_hda_ext_core       28672  1 snd_soc_skl
snd_soc_acpi           16384  1 snd_soc_skl
snd_soc_core          270336  1 snd_soc_skl
mwifiex               331776  1 mwifiex_pcie
irqbypass              16384  1 kvm
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
pcbc                   16384  0
i2c_algo_bit           16384  1 i915
nls_iso8859_1          16384  2
snd_compress           24576  1 snd_soc_core
ac97_bus               16384  1 snd_soc_core
snd_pcm_dmaengine      16384  1 snd_soc_core
drm_kms_helper        200704  1 i915
nls_cp437              20480  2
snd_hda_intel          45056  6
vfat                   24576  2
aesni_intel           200704  0
snd_hda_codec         151552  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
fat                    81920  1 vfat
cfg80211              782336  1 mwifiex
mac_hid                16384  0
aes_x86_64             20480  1 aesni_intel
crypto_simd            16384  1 aesni_intel
ipu3_cio2              36864  0
cryptd                 28672  3 crypto_simd,ghash_clmulni_intel,aesni_intel
glue_helper            16384  1 aesni_intel
snd_hda_core           94208  7 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_soc_skl
intel_cstate           16384  0
snd_hwdep              16384  1 snd_hda_codec
v4l2_fwnode            20480  1 ipu3_cio2
intel_uncore          135168  0
drm                   479232  8 drm_kms_helper,i915
videobuf2_dma_sg       16384  1 ipu3_cio2
intel_rapl_perf        16384  0
snd_pcm               131072  9 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_core,snd_soc_skl,snd_hda_core,snd_pcm_dmaengine
videobuf2_memops       16384  1 videobuf2_dma_sg
videobuf2_v4l2         28672  1 ipu3_cio2
videobuf2_common       53248  2 ipu3_cio2,videobuf2_v4l2
snd_timer              36864  2 snd_pcm
i2c_hid                24576  0
videodev              212992  4 v4l2_fwnode,ipu3_cio2,videobuf2_v4l2,videobuf2_common
intel_gtt              24576  1 i915
pcspkr                 16384  0
mei_me                 45056  1
agpgart                49152  2 intel_gtt,drm
hid                   139264  6 i2c_hid,usbhid,hid_multitouch,hid_sensor_hub,intel_ipts,hid_generic
rfkill                 28672  6 bluetooth,cfg80211
snd                    98304  20 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm
idma64                 20480  0
mei                   106496  3 intel_ipts,mei_me
media                  45056  2 videodev,ipu3_cio2
syscopyarea            16384  1 drm_kms_helper
soundcore              16384  1 snd
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
evdev                  20480  15
fb_sys_fops            16384  1 drm_kms_helper
intel_lpss_pci         20480  0
intel_pch_thermal      16384  0
intel_lpss             16384  1 intel_lpss_pci
battery                24576  0
soc_button_array       16384  0
ac                     16384  0
surfacepro3_button     16384  0
pcc_cpufreq            16384  0
xt_hl                  16384  22
ip6t_rt                16384  3
nf_conntrack_ipv6      16384  7
nf_defrag_ipv6         20480  1 nf_conntrack_ipv6
nf_log_ipv4            16384  1
nf_log_common          16384  1 nf_log_ipv4
ipt_REJECT             16384  1
nf_reject_ipv4         16384  1 ipt_REJECT
xt_LOG                 16384  1
xt_limit               16384  2
xt_addrtype            16384  4
xt_tcpudp              16384  18
nf_conntrack_ipv4      16384  7
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4
xt_conntrack           16384  14
ip6table_filter        16384  1
ip6_tables             32768  53 ip6table_filter
nf_conntrack_netbios_ns    16384  0
nf_conntrack_broadcast    16384  1 nf_conntrack_netbios_ns
nf_nat_ftp             16384  0
nf_nat                 36864  1 nf_nat_ftp
nf_conntrack_ftp       20480  1 nf_nat_ftp
nf_conntrack          155648  8 xt_conntrack,nf_conntrack_ipv6,nf_conntrack_ipv4,nf_nat,nf_nat_ftp,nf_conntrack_netbios_ns,nf_conntrack_broadcast,nf_conntrack_ftp
libcrc32c              16384  2 nf_conntrack,nf_nat
iptable_filter         16384  1
coretemp               16384  0
msr                    16384  0
sg                     40960  0
scsi_mod              258048  4 sd_mod,usb_storage,uas,sg
crypto_user            16384  0
ip_tables              28672  9 iptable_filter
x_tables               45056  12 ip6table_filter,xt_conntrack,iptable_filter,xt_LOG,xt_tcpudp,xt_addrtype,ip6t_rt,ip6_tables,ipt_REJECT,ip_tables,xt_limit,xt_hl
ext4                  737280  1
crc32c_generic         16384  0
crc16                  16384  2 bluetooth,ext4
mbcache                16384  1 ext4
jbd2                  126976  1 ext4
fscrypto               32768  1 ext4
xhci_pci               16384  0
xhci_hcd              266240  1 xhci_pci
usbcore               294912  9 xhci_hcd,usbnet,usbhid,usb_storage,btusb,xhci_pci,cdc_ether,uas,r8152
crc32c_intel           24576  3
usb_common             16384  1 usbcore
surface4linux commented 5 years ago

[surface@surface ~]$ ./clear-linux-check-config.sh host Checking if host is capable of running Clear Linux* OS

SUCCESS: 64-bit CPU (lm) SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3) SUCCESS: Streaming SIMD Extensions v4.1 (sse4_1) SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2) SUCCESS: Advanced Encryption Standard instruction set (aes) SUCCESS: Carry-less Multiplication extensions (pclmulqdq) SUCCESS: EFI firmware

surface4linux commented 5 years ago

[surface@surface ~]$ lspci 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (rev 09) 00:02.0 VGA compatible controller: Intel Corporation Iris Graphics 540 (rev 0a) 00:05.0 Multimedia controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit (rev 01) 00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model 00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21) 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21) 00:14.3 Multimedia controller: Intel Corporation Device 9d32 (rev 01) 00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21) 00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21) 00:15.2 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 (rev 21) 00:15.3 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 (rev 21) 00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21) 00:16.4 Communication controller: Intel Corporation Device 9d3e (rev 21) 00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1) 00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1) 00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21) 00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21) 00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21) 01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM951/PM951 (rev 01) 02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless

puneetse commented 5 years ago

It appears there was an effort to enable IPTS on Linux here: https://github.com/ipts-linux-org/ipts-linux-new (but maybe abandoned?) and a set of community maintained platform patches+firmware here: https://github.com/jakeday/linux-surface .

surface4linux commented 5 years ago

My Enhancement Request states:

"I would like to request Clear Linux add support for Surface Pro (business class touch devices) including the display/pen/stylus without user modification after installation."

Was I unclear about upstream support and not community. - especially since i915 is specifically Intel if I'm not mistaken.

If so - I am re-iterating upstream support from distribution.
ahkok commented 5 years ago

@surface4linux the clearlinux team doesn't do upstream enabling of hardware. If there are specific kernel configs or freely distributable firmwares that need adding or changes in the kernel, @miguelinux can do so. The more specific your request is, the easier it will be.

Just because Intel made i915 chips doesn't mean that Hardware Vendors haven't done evil things to it, or that it will ever work well with Linux. That is almost entirely out of our hands from the Clear Linux team - we likely can't ever fix issues with it.

This is not the right place to ask for upstream development. Sorry.

surface4linux commented 5 years ago

Since I have been asked to be specific - Can the Clear Linux Team accommodate this?

"I would like to request Clear Linux add support for Surface Pro (business class touch devices) including the display/pen/stylus without user modification after installation."

While I currently run this device with the patches mentioned by @puneetse - it seems unlikely the distribution will support it.

Please confirm.

(aren't there other i915 distribution issues anyway?)

bryteise commented 5 years ago

@surface4linux currently I'm not going to add non-upstream patches to support specific hardware vendors' configurations. My thinking is the same for the non-upstream udev rules and systemd configurations. I'm also not willing to add the firmware without a good chain of trust and known license set.

surface4linux commented 5 years ago

Would you like me to close this request - or is there any value left here to consider? part of my request for this to be included from distribution is to maintain a higher level of trust as well.

Realize I am not trying to make it more difficult for anyone either.

Thanks

bryteise commented 5 years ago

This can be closed now. We would definitely enable the driver and other components that we can ship once they are enabled upstream. You are fine, we are just working through the unfortunate case of hardware that doesn't have great Linux support.

ahkok commented 5 years ago

https://github.com/ipts-linux-org/ipts-linux-new/commit/4cf74d212e474bf67aeb221814066d1559794e49

ipts_fw_config.bin

To close this issue, we should at minimum determine whether this firmware is going to go upstream (so that we get it automatically). Also, perhaps @chivakker knows if above i915 patch is staged for upstream and for which kernel (we can also ask the author).

ahkok commented 5 years ago

(aren't there other i915 distribution issues anyway?)

always :)

Also:

This is not the right place to ask for upstream development. Sorry.

We try our best to do what we can - sometimes we can solve issues by working with other folks at Intel to resolve issues. However, this isn't always possible.

surface4linux commented 5 years ago

We try our best to do what we can - sometimes we can solve issues by working with other folks at Intel to resolve issues. However, this isn't always possible.

Thanks - and this is why I placed this here. I was truly impressed by the live usb's responsiveness, and then disappointed I would have to continue to rely on someone other than distribution authors to get input devices (pen and touchscreen) working.

That said - I dont even want to mention the camera's the surface has - including IR :(

That's the shame of all this. I consider mainstream Operating Systems to be heavily bloated (thus Linux) and anything other than open source potentially dangerous.

Potential for this line of devices is great, but not without knowing as @ahkok has pointed out

Just because Intel made i915 chips doesn't mean that Hardware Vendors haven't done evil things to it, or that it will ever work well with Linux.

Just a shame the industry sees customers as the product and the devices proprietary, rather than customers having freedom over their devices.

Regardless - my device can act as a test bed as needed - and thanks for your consideration on this

surface4linux commented 5 years ago

@ahkok @chivakker - is there a determination about patches upstream and a status or should i assume this will get closed/ignored without resolution.

Perhaps I should consider the hardware to be problematic for running opensource

greysonofusa commented 1 year ago

Expanded device support is here https://github.com/linux-surface/linux-surface.git

Has anyone tried to modify CL Kernel and get this working? I am going to try with a surface pro 8 but before I do I need to know it's worth wiping windows off my surface completely.

jinyuzu99 commented 8 months ago

clear linux now didn't even detect surface keyboard, trackpad. while ipts is another big problem.