asus-linux-drivers / asus-accel-tablet-mode-driver

Linux configurable driver for 2-in-1 Asus laptops. Driver detects change to tablet/laptop using accelerometer data and send appropriate events.
GNU General Public License v2.0
7 stars 2 forks source link

Not working for TM420IA-EC216T #6

Open vmario89 opened 2 months ago

vmario89 commented 2 months ago

Hi, thanks for providing that repo. I installed it properly but on my device it does not work with recent Kubuntu 40 LTS. I tried different things for hours and have no clue what to do. There seems to be no solution on the web, but a lot of threads of people who tried to solve.

Installation of this repo ok:

git clone https://github.com/asus-linux-drivers/asus-accel-tablet-mode-driver
cd asus-accel-tablet-mode-driver
./install.sh

Debugging says it does not find a sensor:

LOG=DEBUG sudo -E ./asus_fliplock.py "default"
2024-07-05 10:22:00,694 ERROR    Can't find accel sensor (code: 0)

modinfo says: modinfo amd_sfh

filename:       /lib/modules/6.8.0-36-generic/kernel/drivers/hid/amd-sfh-hid/amd_sfh.ko.zst
author:         Basavaraj Natikar <Basavaraj.Natikar@amd.com>
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:     3EE48BA1000B2E8ADCDBDD8
alias:          pci:v00001022d0000164Asv*sd*bc*sc*i*
alias:          pci:v00001022d000015E4sv*sd*bc*sc*i*
depends:        hid
retpoline:      Y
intree:         Y
name:           amd_sfh
vermagic:       6.8.0-36-generic SMP preempt mod_unload modversions 
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        6A:DF:2A:58:A0:7C:DC:84:51:A8:A1:47:65:C5:D3:08:29:3E:E8:67
sig_hashalgo:   sha512
signature:      C7:70:E2:68:72:4A:AF:47:07:AF:39:70:5E:92:48:61:70:05:ED:17:
                61:B4:45:35:99:6E:25:77:4D:67:A6:09:F3:24:A7:8E:E0:D3:FB:EA:
                34:80:8C:DE:48:C1:07:3E:D6:5F:A7:BB:38:66:39:10:2D:B2:72:24:
                CE:7D:AC:0A:E9:C5:F5:48:6F:F8:09:83:9D:9F:B3:4D:30:8A:AA:7D:
                A3:EF:58:F3:49:F4:EB:4B:CA:D8:23:81:2A:57:F5:F3:58:32:3A:32:
                77:75:AB:CE:15:7B:6A:71:44:A8:5E:DB:56:C0:23:98:44:21:4B:F2:
                50:5E:D0:76:BA:FE:67:76:C8:BE:A9:EA:03:F9:31:D0:EF:DE:55:F6:
                1F:5E:87:4A:00:18:03:34:9F:3A:91:E6:52:89:AB:0C:85:F0:B3:9B:
                8B:06:2C:9C:8F:03:60:46:4F:9C:A1:F1:BB:F3:18:02:DA:66:41:69:
                5E:F7:CA:70:81:A3:DE:D4:FE:82:7A:C9:B6:85:79:1B:22:59:3D:E6:
                28:4F:A2:87:37:86:28:F6:1E:8A:34:1E:D0:2C:B9:B2:6A:0A:DB:A0:
                56:60:2B:30:92:FE:86:D9:C3:2F:2D:55:13:93:6B:EF:20:2C:73:7D:
                E8:FB:41:8F:A3:97:0A:4A:D6:00:90:0A:4C:20:4F:B6:87:1E:C4:65:
                18:B0:FE:29:A8:67:0A:74:19:31:18:EC:93:4C:DE:26:3E:8D:B2:86:
                A8:1E:BE:EA:4B:50:6B:9F:70:B0:1A:67:D3:9C:39:0A:7E:2E:6B:A1:
                BF:53:1E:7F:15:A0:BA:16:6A:82:1D:22:DD:C7:E7:27:70:EB:A4:3D:
                6E:B9:C5:F7:35:18:B8:8B:F5:74:87:2E:D5:69:82:02:0A:8A:42:DE:
                F8:28:A9:93:2C:68:7C:11:0C:92:CC:09:3C:26:A6:80:9D:C9:90:80:
                34:D4:A8:52:8A:CE:B4:92:F7:4B:9F:04:A2:F2:F8:BB:AC:5C:7A:D9:
                8D:CD:D0:1D:64:D8:98:14:D3:F8:4A:D6:FD:F0:3E:85:49:A1:0B:C6:
                86:C4:4E:45:4D:5C:93:EF:C6:0B:07:1D:58:0E:7E:E4:9A:0C:84:38:
                03:05:48:46:08:E1:F1:55:C5:6D:A9:3E:E6:89:13:57:23:0A:44:38:
                D3:60:63:0F:1B:00:B0:A4:CB:56:BB:C2:3D:71:6D:10:A9:19:6C:E3:
                46:FE:91:1C:78:26:0E:0A:20:70:0E:DD:C1:9B:DA:33:1A:97:22:09:
                EB:08:2D:0C:27:31:6D:5B:88:A8:56:E5:5D:4D:24:02:31:99:82:DD:
                5B:A6:AA:23:65:B9:36:E1:57:E0:F7:57
parm:           sensor_mask:override the detected sensors mask (int)

lsmod says the sensor is not used (0)

lsmod | grep amd_sfh
amd_sfh                61440  0
hid                   184320  11 i2c_hid,usbhid,hid_multitouch,hid_generic,amd_sfh,hid_logitech_dj,hid_logitech_hidpp

checking the sensor output returns infinite waiting state

monitor-sensor
Waiting for iio-sensor-proxy to appear

udevadm output does not recognize:

udevadm info --export-db | grep accel
udevadm info --export-db | grep iio

sensor-proxy says:

sudo /usr/libexec/iio-sensor-proxy -v -r
** (iio-sensor-proxy:7038): DEBUG: 10:25:19.470: Starting iio-sensor-proxy version 3.5
(iio-sensor-proxy:7038): GLib-GIO-DEBUG: 10:25:19.471: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
** (iio-sensor-proxy:7038): DEBUG: 10:25:19.486: No sensors or missing kernel drivers for the sensors

dmesg says:

dmesg | grep '0000:03:00.7'
[    0.297152] pci 0000:03:00.7: [1022:15e4] type 00 class 0x118000 PCIe Endpoint
[    0.297165] pci 0000:03:00.7: BAR 2 [mem 0xfe300000-0xfe3fffff]
[    0.297174] pci 0000:03:00.7: BAR 5 [mem 0xfe7cc000-0xfe7cdfff]
[    0.297180] pci 0000:03:00.7: enabling Extended Tags
[    0.341050] pci 0000:03:00.7: Adding to iommu group 4
[    0.656815] pcie_mp2_amd 0000:03:00.7: enabling device (0000 -> 0002)
[    2.257338] pcie_mp2_amd 0000:03:00.7: Failed to discover, sensors not enabled is 0
[    2.257355] pcie_mp2_amd: probe of 0000:03:00.7 failed with error -95
lspci -k
03:00.7 Signal processing controller: Advanced Micro Devices, Inc. [AMD] Sensor Fusion Hub
        Subsystem: Advanced Micro Devices, Inc. [AMD] Sensor Fusion Hub
        Kernel modules: amd_sfh

Messing around with kernel parameters in grub did not change the behaviour:

vim  /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="[...] amd_iommu=off"
GRUB_CMDLINE_LINUX_DEFAULT="[...] amd_iommu=fullflush"
update-grub

references:

is there any idea how to get that running?

Talung commented 1 month ago

I am getting same issue with Asus Vivobook Flip TN3402Y (Ryzen 7 7730U) chip. Tried all the tests you have with same results. I am running linux and an NVME card off the USB C port, until I get it working the way I want, so am switching between, windows and ubuntu 24.04.

But still no solution that I can find.

EDIT: Ok, some interesting thing.. I booted up on windows removed the "fast start" option, rebooted twice, then into linux and now monitor-sensor is actually giving me the orientation of the accelerometer!

EDIT AGAIN!: I spoke too soon... installed the accel-tablet mode driver, rebooted and its gone.