ST-LSM6DSX-SHIFT13MI (v1.2)
Dieses Repositorium beinhaltet die Quelldaten des Pakets st-lsm6dsx-shift13mi_1.2-1_amd64.deb, welches auf allen Geräten vom Typ SHIFT13mi / SHIFTbook der Firma SHIFT die Funktionsfähigkeit vom Gyroskop wiederherstellt.
Mehr Hintergründe zu diesem Problem sind auf der Forumsseite zu finden.
Dieses Paket wird nur solange nötig sein, bis ein Kernel-Patch im Mainline-Kernel ankommt. Dies wird im Kernel 7.1 der Fall sein. Heißt, auf einem Gerät, welches Kernel 7.1 nutzt, wird das Programm unnötig und kann deinstalliert werden.
Um das Paket über meinen Server zu installieren:
-
GPG-Schlüssel importieren:
$ curl https://apt.twoexem.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/twoexem.gpg -
Apt-Quelle hinzufügen:
$ echo "deb [signed-by=/etc/apt/keyrings/twoexem.gpg] https://apt.twoexem.com stable main" | sudo tee /etc/apt/sources.list.d/twoexem.list -
Paket installieren:
# apt update # apt install st-lsm6dsx-shift13mi
Um das Paket selbst auf Ubuntu zu installieren:
-
Repo klonen:
$ git clone https://git.twoexem.com/twoexem/st-lsm6dsx-shift13mi/ cd st-lsm6dsx-shift13mi/ -
Das Paket erstellen:
$ dpkg-deb --build --root-owner-group st-lsm6dsx-shift13mi -
Das Paket installieren:
# apt install ./st-lsm6dsx-shift13mi.deb
Zum Deinstallieren:
# apt remove st-lsm6dsx-shift13mi
Um das Paket auf allen anderen Distros OHNE DKMS zu installieren:
Wichtig: Das Patch wird nach jedem Kernel-Update entfernt und muss neu installiert werden.
- Kernel-Quellen herunterladen. Die relevanten Dateien sind:
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c
-
Die Datei st_lsm6dsx_i2c.c bearbeiten. Nach Zeile 146 muss folgender Inhalt eingefügt werden:
{ "SMOCF00", ST_LSM6DSO_ID, }, -
Ein Makefile mit folgendem Inhalt erstellen:
obj-m += st_lsm6dsx.o st_lsm6dsx_i2c.o st_lsm6dsx-objs := st_lsm6dsx_core.o st_lsm6dsx_buffer.o st_lsm6dsx_shub.o all: make -C /usr/lib/modules/$(shell uname -r)/build M=$(PWD) modules install: zstd -f st_lsm6dsx_i2c.ko -o st_lsm6dsx_i2c.ko.zst cp st_lsm6dsx_i2c.ko.zst /usr/lib/modules/$(shell uname -r)/kernel/drivers/iio/imu/st_lsm6dsx/ depmod -A clean: make -C /usr/lib/modules/$(shell uname -r)/build M=$(PWD) clean -
Die geänderte Datei kompilieren:
$ make -
Das Paket installieren:
# make install -
Neue Datei /etc/udev/hwdb.d/10-sensor-shiftbook.hwdb erstellen und folgenden Inhalt einfügen:
sensor:modalias:acpi:SMOCF00:* ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1Wichtig: Das Leerzeichen vor der zweiten Zeile muss vorhanden sein.
-
Alle wichtigen Dienste neu starten:
# systemd-hwdb update # udevadm trigger # systemctl restart iio-sensor-proxy
Um das Paket auf allen anderen Distros MIT DKMS zu installieren:
-
Kernel-Quellen herunterladen. Die relevanten Dateien sind:
-
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
-
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c
-
Die Datei st_lsm6dsx_i2c.c bearbeiten. Nach Zeile 146 muss folgender Inhalt eingefügt werden:
{ "SMOCF00", ST_LSM6DSO_ID, }, -
Ein Makefile mit folgendem Inhalt erstellen:
obj-m += st_lsm6dsx.o st_lsm6dsx_i2c.o st_lsm6dsx-objs := st_lsm6dsx_core.o st_lsm6dsx_buffer.o st_lsm6dsx_shub.o -
Eine Datei namens dkms.conf erstellen:
PACKAGE_NAME="st-lsm6dsx-shift13mi" PACKAGE_VERSION="1.2" BUILT_MODULE_NAME[0]="st_lsm6dsx_i2c" BUILT_MODULE_LOCATION[0]="" DEST_MODULE_LOCATION[0]="/kernel/drivers/iio/imu/st_lsm6dsx/" AUTOINSTALL="yes" MAKE="make -C /usr/lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build" CLEAN="make -C /usr/lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean" -
Den Treiber kompilieren und installieren:
# dkms add st-lsm6dsx-shift13mi/1.2 # dkms build st-lsm6dsx-shift13mi/1.2 # dkms install st-lsm6dsx-shift13mi/1.2 -
Neue Datei /etc/udev/hwdb.d/10-sensor-shiftbook.hwdb erstellen und folgenden Inhalt einfügen:
sensor:modalias:acpi:SMOCF00:* ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1Wichtig: Das Leerzeichen vor der zweiten Zeile muss vorhanden sein.
-
Alle wichtigen Dienste neu starten:
# systemd-hwdb update # udevadm trigger # systemctl restart iio-sensor-proxy
Um den Treiber zu deinstallieren:
# dkms remove st-lsm6dsx-shift13mi/1.2
