答案1
我的 Ubuntu 安装上运行着一个相当不错的 Surface Pro 4 内核。
破败不堪
有效的方法:
- 无线网络/蓝牙
- 多点触摸
- 笔
- 键盘盖上的触控板
什么有点作用:
- 休眠 - 恢复后没有触摸或笔
不可以做的:
- 暂停(请参阅下面有关省电的说明)
- 冻结(挂起/睡眠模式更耗电,且无法可靠运行)
- 打字盖
我还没尝试过的:
- 摄像机
大概的概念
这个内核的总体思路是采用 Hyungwoo Yang 在https://github.com/ipts-linux-org/ipts-linux-new/wiki并将它们应用到 Ubuntu 4.9rc3 内核。以下是获取内核的步骤。编译过程使用 Surface 4 的所有核心大约需要 45 分钟。克隆内核存储库大约需要 1.5 GB 的磁盘空间。
生成内核的步骤
安装 Ubuntu 16.10 yakkety。为此,您将需要一个可以处理 ubuntu live-USB 和键盘/鼠标的 USB 集线器。
使用 USB 键盘启动 Linux。
准备 Ubuntu 4.9rc3 内核。
从 ipts-linux-new 内核创建一个支持触摸/笔的补丁。
在另一个目录中克隆内核(需要~1.5GB 的空间):
git clone https://github.com/ipts-linux-org/ipts-linux-new.git
创建补丁:
git diff 0c183d92b20b5c84ca655b45ef57b3318b83eb9e > /path/to/ipts-linux-new_patch.txt
将 ipts-linux-new 补丁应用到 v4.9rc3
`cd /path/to/v4.9rc3` `patch -p1 < /path/to/ipts-linux-new_patch.txt` `git add .` `git commit -m 'Patch for Surface Pro 4 taken from ipts-linux-new.'`
编译内核并制作 ubuntu .deb 包(复制自Ubuntu 内核编译)
cd /path/to/v4.9rc3
初始化 debian 文件:
fakeroot debian/rules clean
配置您将要构建的内核:
fakeroot debian/rules editconfigs
- 仅对 amd64 问题回答是。这将显示“menuconfig”curses 界面。激活以下两个选项:
- 设备驱动程序 -> NVM 快速锁定设备 (y)
- 设备驱动程序 -> 杂项设备 -> Intel Precise Touch & Stylus (m)
- 仅对 amd64 问题回答是。这将显示“menuconfig”curses 界面。激活以下两个选项:
在“/path/to/v4.9rc3/debian.master/rules.d/amd64.mk”中注释或删除“do_zfs = true”
通过编辑“/path/to/v4.9rc3/debian.master/changelog”重命名内核
编译内核(使用比处理器更多的线程来使其更快)
`fakeroot debian/rules clean` #necessary, but I don't know why `DEB_BUILD_OPTIONS=parallel=5 fakeroot debian/rules binary-headers binary-generic binary-perarch`
应该在 v4.9rc3 旁边的目录中创建四个新的 .debs。使用以下命令安装 .debs:
`sudo dpkg -i linux-image-* linux-headers-4.9.0-040900rc3*`
将驱动程序文件从 Windows 复制到 Linux:
将驱动程序文件从“\Windows\INF\PreciseTouch\Intel”复制到 Linux 目录“/lib/firmware/intel/ipts”。应该至少有 4 个文件,其名称类似于以下内容:
- iaPreciseTouchDescriptor.bin
- SurfaceTouchServicingSFTConfigMSHW0078.bin
- SurfaceTouchServicingDescriptorMSHW0078.bin
- SurfaceTouchServicingKernelSKLMSHW0078.bin
创建这些文件的符号链接:
cd /lib/firmware/intel/ipts
ln -s iaPreciseTouchDescriptor.bin intel_desc.bin
ln -s SurfaceTouchServicingSFTConfigMSHW0078.bin config.bin
ln -s SurfaceTouchServicingDescriptorMSHW0078.bin vendor_desc.bin
ln -s SurfaceTouchServicingKernelSKLMSHW0078.bin vendor_kernel.bin
您现在应该可以启动新内核了。如果链接在正确的位置,那么触摸和手写笔就可以正常工作。
节电注意事项
缺少暂停功能是一个主要缺点。这是由于 Microsoft 的“连接待机”失败造成的:https://lwn.net/Articles/580451/。冻结会消耗更多电量(消耗电量的速度可能是电脑开机时的一半),而且似乎不太可靠。休眠状态下可以成功保持状态,但不幸的是,恢复后触摸和手写笔功能不起作用。
答案2
我用了Reddit 上的本指南
遇到了 fridgecow 内核冻结的问题,无法正常重启或关闭,只会冻结并且 Ubuntu 标志什么也不做。
我使用了 cantenna(6a 和 7a),除了无法从睡眠状态唤醒且音量按钮不工作外,其他都运行良好。
下载这个文件(修补后的内核)
cd
到它所在的目录(例如cd Downloads
)并安装软件包
sudo dpkg -i './linux-headers-4.4.0-rc8touchkernel+_1_amd64.deb'
sudo dpkg -i './linux-image-4.4.0-rc8touchkernel+_1_amd64.deb'
安装 Windows 分区(您可以从这里如果您删除了 Windows 分区或找不到它们),然后将文件复制到您的 Ubuntu 根目录(您可能需要根据 Windows 分区的挂载点调整路径:
sudo mkdir /itouch
cp /media/$USER/Windows/Windows/INF/PreciseTouch/Intel/* /itouch
现在为文件创建符号链接,以便驱动程序可以找到它们
sudo ln -sf /itouch/SurfaceTouchServicingKernelSKLMSHW0078.bin /itouch/vendor_kernel_skl.bin
sudo ln -sf /itouch/SurfaceTouchServicingSFTConfigMSHW0078.bin /itouch/integ_sft_cfg_skl.bin
sudo ln -sf /itouch/SurfaceTouchServicingDescriptorMSHW0078.bin /itouch/vendor_descriptor.bin
sudo ln -sf /itouch/iaPreciseTouchDescriptor.bin /itouch/integ_descriptor.bin
然后您需要确保您可以选择启动此内核或者通过配置 GRUB 将其设置为默认启动。
答案3
在 SP4 上,触摸算法在 GPU 上运行,因此传统驱动程序不起作用
以下是 github 链接: https://github.com/ipts-linux-org/ipts-linux/wiki
触摸屏、Surface Pro 笔...
IPTS 代表:英特尔精准触摸和触控笔。
在这个 github repo 中有一个带有触摸屏驱动程序的特定内核。
抱歉,我选择了特定的内核,但补丁必须适用于 4.4 之后的任何内核。
答案4
我正在使用 Ubuntu 16.10 SP4 进行打字/鼠标操作,为了到达这里我做了以下操作:
使用 USB 集线器加载 Ubuntu 以获得键盘/鼠标支持
sudo apt-get install
以下两个包:ukuu
(简单!)更新至最新 RC 内核(4.10-rc8)。现在支持磁性 SP4 键盘/鼠标(感谢内核人员!)。唯一的小问题:无线,所以去谷歌搜索并修补它。grub-customizer
选择 Win10/Ubuntu/Mint。
Ubuntu 的运行没有任何问题,我选择了 16.10 yakkety,因为我不喜欢 16.04 xenial 在屏幕 UL 上的最小/最大/关闭,而且从来没有找到解决这个问题的简单方法。
Linux MINT 也启动了键盘支持(将内核升级到 4.10-rc8 后),但不支持鼠标触摸板。