前言

今天给一台平板电脑安装了ubuntu系统,旋转了一番屏幕,发现屏幕在各个方向都按逆时针旋转了90度。

经过一番搜索,发现可以通过修改ACCEL_MOUNT_MATRIX来实现屏幕的翻转。

虽然最后依旧没能解决问题,但是估计关键点就在这了。

参考文档

点击查看

点击查看

具体操作

获取型号

执行命令查看传感器设备信息,得到设备型号。

# /dev/iio\:deviceXX,XX要按实际情况修改。
udevadm info /dev/iio\:device0

之前执行的命令得到以下结果,经过与文档的对比,发现SMO8500为本机的重力传感器型号。

P: /devices/pci0000:00/INT3432:00/i2c-0/i2c-SMO8500:00/iio:device0
N: iio:device0
E: ACCEL_MOUNT_MATRIX=0, 1, -1; 1, 0, -1; 0, 0, -1
E: DEVNAME=/dev/iio:device0
E: DEVPATH=/devices/pci0000:00/INT3432:00/i2c-0/i2c-SMO8500:00/iio:device0
E: DEVTYPE=iio_device
E: IIO_SENSOR_PROXY_TYPE=iio-buffer-accel
E: MAJOR=242
E: MINOR=0
E: SUBSYSTEM=iio
E: SYSTEMD_WANTS=iio-sensor-proxy.service
E: TAGS=:systemd:
E: USEC_INITIALIZED=34719832

设置规则

创建文件**/etc/udev/hwdb.d/61-sensor-local.hwdb**,写入自定义规则:

sensor:modalias:acpi:SMO8500*:dmi:*:*
 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1

执行以下命令更新硬件数据库:

systemd-hwdb update
# 更新后重启生效。
reboot

结果

最后横屏方向正常了,但是竖屏就无法显示了,经过n轮测试都无法解决问题,放弃了。