diff options
| author | Milan Misic <twoexem@gmail.com> | 2026-03-26 17:04:31 +0100 |
|---|---|---|
| committer | Milan Misic <twoexem@gmail.com> | 2026-03-26 17:04:31 +0100 |
| commit | 3d23a75f9d6b5713fc35a7672b4855baf7ced820 (patch) | |
| tree | 275878123718f39091ad4bb98b1ec415a916d572 | |
| parent | 1100c261144e6b1b18edc329fae53fb9d0ece8c2 (diff) | |
Added README.md
| -rw-r--r-- | README.md | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..897d096 --- /dev/null +++ b/README.md @@ -0,0 +1,152 @@ +# ST-LSM6DSX-SHIFT13MI (v1.2) + +Dieses Repositorium beinhaltet die Quelldaten des Pakets [st-lsm6dsx-shift13mi_1.2-1_amd64.deb](https://apt.twoexem.com/pool/main/s/st-lsm6dsx-shift13mi/), 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](https://forum.shiftphones.com/threads/reparatur-des-lagesensors-unter-linux-fur-die-automatische-bildschirmorientierung.7817/) zu finden. + +Dieses Paket wird nur solange nötig sein, bis ein Kernel-Patch im Mainline-Kernel ankommt. + +## Um das Paket über meinen Server zu installieren: + +1. GPG-Schlüssel importieren: + + $ curl https://apt.twoexem.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/twoexem.gpg + +2. 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 + +3. Paket installieren: + + # apt update + # apt install st-lsm6dsx-shift13mi + +## Um das Paket selbst auf Ubuntu zu installieren: + +1. Repo klonen: + + $ git clone https://git.twoexem.com/twoexem/st-lsm6dsx-shift13mi/ + cd st-lsm6dsx-shift13mi/ + +2. Das Paket erstellen: + + $ dpkg-deb --build --root-owner-group st-lsm6dsx-shift13mi + +3. 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. + +1. Kernel-Quellen herunterladen. Die relevanten Dateien sind: + + 1. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c + 2. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h + 3. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c + 4. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c + 5. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c + +2. Die Datei st_lsm6dsx_i2c.c bearbeiten. Nach Zeile 146 muss folgender Inhalt eingefügt werden: + + { "SMOCF00", ST_LSM6DSO_ID, }, + +3. 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 + +4. Die geänderte Datei kompilieren: + + $ make + +5. Das Paket installieren: + + # make install + +6. 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, 1 + + #### Wichtig: Das Leerzeichen vor der zweiten Zeile muss vorhanden sein. + +7. 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: + +1. Kernel-Quellen herunterladen. Die relevanten Dateien sind: + + 1. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c + 2. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h + 3. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c + 4. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c + 5. drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c + +2. Die Datei st_lsm6dsx_i2c.c bearbeiten. Nach Zeile 146 muss folgender Inhalt eingefügt werden: + + { "SMOCF00", ST_LSM6DSO_ID, }, + +3. 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 + +4. 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" + +5. 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 + +6. 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, 1 + + #### Wichtig: Das Leerzeichen vor der zweiten Zeile muss vorhanden sein. + +7. 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
\ No newline at end of file |
