You are not logged in.
I uploaded a modified version of the stable kernel package with added experimental drivers for the AMD Sensor Fusion Hub (SFH) to the AUR.
Currently, on my convertible (HP ENVY x360 13-ag0005ng), it does not yet detect any sensors. However, the kernel patches are still under development by AMD and have not yet been merged into the mainline kernel.
Hence the AUR package for anybody interested in testing the new drivers.
Update 2020-02-27
Package has been updated to Linux 5.5.6-arch1 with 4th revision of AMD's patch.
Update 2020-03-03
Package has been updated to Linux 5.5.7-arch1.
Update 2020-03-25
I wrote a patch to make the new drivers work on HP ENVY x360 13-ag000x series convertibles.
You can manually add it to the PKGBUILD, if necessary.
A patch to enable all sensors iff none are marked as enabled is now included per default.
Update 2020-04-13
Migrated to refactored patch series by myself. The driver is now implementing the hid_ll_driver API more cleanly and redundant code has been removed.
As a side-effect you no longer need to boot with amd_iommu=off. The driver now works with IOMMU.
The module parameters force_*= have been replaced by sensor_mask=<int>.
This is due to possible future extensions, since on my Laptop (model, see above), I discovered additional sensors (possibly acceleromerters) during the reverse-engineering of the PCI device.
Update 2020-04-18
As of today, there is a DKMS version of the driver in the AUR.
I will keep the kernel package in the AUR for the time being. However I am not certain whether I will keep updating it with future kernel releases or disown or event request do delete it.
Please consider migrating to the more lightweight DKMS driver.
Update 2020-04-21
Today my deletion request on linux-sfh was accepted.
Please migrate to amd-sfh-hid-dkms.
Last edited by schard (2020-04-21 07:38:36)
Offline
Having used the patched kernel package, also on an HP ENVY x360 13m-ag0xxx, i can also confirm it not working. Not sure if i'm doing something wrong, but i can't figure out how to get sensor info from it.
Offline
For the first time I have some anwers from sensor but its not working and i get this message from monitor-sensor.
[peni@PeniLap ~]$ monitor-sensor
Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== Has accelerometer (orientation: undefined)
=== No ambient light sensor
Offline
Its working now.
Using linux-sfh from aur and adding amd_iommu=off to kernel line got rotation working.
HP Envy 13-ar000nn / Ryzen 5 3500u.
Offline
@levat
Glad to hear that.
If you find the time, I would be very thankful, if you could provide the output of
cat /proc/cmdline
and
dmesg
in this thread: https://bbs.archlinux.org/viewtopic.php?id=252815
It may help me and others narrow down, why it's not yet working for us.
Thank you.
Offline
@levat
Glad to hear that.
If you find the time, I would be very thankful, if you could provide the output ofcat /proc/cmdline
and
dmesg
in this thread: https://bbs.archlinux.org/viewtopic.php?id=252815
It may help me and others narrow down, why it's not yet working for us.
Thank you.
Did as you asked.
Offline
Update 2020-03-27 linux-sfh-5.5.13.arch1-2
I updated the custom patch to use a kernel parameter to forcibly enable all HID devices rather than force-enabling them if none are marked active.
If you previously did not get any HID devices with the vanilla patch, but with the custom patch enabled, create the file /etc/modprobe.d/amd-sfh.conf with the following content:
options amd_mp2_pcie assume_all_active=1
Update 2020-03-27 linux-sfh-5.5.13.arch1-3
I updated the kernel parameters:
parm: activestatus_override:Override the activestatus value reported by PCI device. (int)
parm: force_accel:Force enabling of accelerometer. (bool)
parm: force_gyro:Force enabling of gyroscope. (bool)
parm: force_magno:Force enabling of magnetometer. (bool)
parm: force_als:Force enabling of ambient light sensor. (bool)
So you may need to replace
options amd_mp2_pcie assume_all_active=1
with
options amd_mp2_pcie force_accel=1
Last edited by schard (2020-03-27 14:45:40)
Offline
For those who hesitate to compile the complete kernel, it might be possible to compile only the new module for the currently running kernel like this. This is only possible because the patches contain the complete code of the amd-sfh-hid modules.
$ mkcd /tmp/sfh
$ curl -o v4-2-4.patch https://patchwork.kernel.org/patch/11407747/raw/
$ curl -o v4-3-4.patch https://patchwork.kernel.org/patch/11407749/raw/
$ curl -o v4-4-4.patch https://patchwork.kernel.org/patch/11407753/raw/
$ curl -o sfh-fix.patch "https://gist.githubusercontent.com/conqp/e8a0793406fbe7c9714f01f3078ea33a/raw/0f11de9caa936428921e887b6ff3cba1e22ca499/amd-sfh.patch"
$ git apply --exclude drivers/hid/Kconfig --exclude drivers/hid/Makefile v4-2-4.patch v4-3-4.patch v4-4-4.patch sfh-fix.patch
$ cd drivers/hid/amd-sfh-hid
$ ln -sf ../amd_mp2_pcie.h hid_descriptor/
$ make -C /lib/modules/`uname -r`/build M=$PWD CONFIG_AMD_SFH_HID=m
$ sudo make -C /lib/modules/`uname -r`/build M=$PWD CONFIG_AMD_SFH_HID=m INSTALL_MOD_DIR=extramodules modules_install
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
@progandy
Thanks for the hint. Based on it, I just attempted to create a dkms package to replace the kernel package.
But the shipped Makefile does not support dkms now and writing my own seems to be a lot of extra work.
Offline
Over the last weeks I refactored the patch series. The current linux-sfh package is no longer using the original AMD patch series v4 from patchwork.kernel.org, but my refactored patch series.
If ypu previously used the force_*=1 params: They have been replaced by sensor_mask=<mask>.
If you e.g. used force_accel=1, you need to replace it with sensor_mask=0x1.
Last edited by schard (2020-04-13 03:25:09)
Offline
With 5.11 there's now an in-tree module, but it unfortunately doesn't work. I suspect it's pretty much the same issue in that some HP laptops don't correctly report which sensors they have, which we used to be able to get around with the sensor_mask.
The upstream module however has no such feature it seems:
$ modinfo amd_sfh
filename: /lib/modules/5.11.1-arch1-1/kernel/drivers/hid/amd-sfh-hid/amd_sfh.ko.xz
author: Sandeep Singh <Sandeep.singh@amd.com>
author: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
license: Dual BSD/GPL
description: AMD(R) PCIe MP2 Communication Driver
srcversion: CA72DE5F8C86954F49D4343
alias: pci:v00001022d000015E4sv*sd*bc*sc*i*
depends:
retpoline: Y
intree: Y
name: amd_sfh
vermagic: 5.11.1-arch1-1 SMP preempt mod_unload
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 58:74:DE:6D:D1:EC:2E:14:C4:CF:FD:9D:77:14:1C:B0:E6:5D:84:65
sig_hashalgo: sha512
signature: <sig>
As a consequence iio-sensor-proxy never shows up either, and if you try to start it you just get:
$ monitor-sensor
Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
** (process:2530): WARNING **: 19:06:36.162: Failed to claim accelerometer: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.69 was not provided by any .service files
Or I'm misunderstanding something.
Offline