STMicroelectronics LSM303DLH

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:STMicroelectronics LSM303DLH)

The LSM303DLH is a 3-axis accelerometer and magnetometer.

Note: As of kernel 3.13, it looks like this device is already recognized by the vanilla kernel. As an example, this bash script, autostarted in the background, will perform automatic screen (and touchscreen) rotation for a Dell Inspiron 7347 convertible. This is just a working example, a proper method would also make use of the integrated gyroscope for faster reaction times.

Driver

The official driver available is available at a cached version of the manufacturer's website[dead link 2020-04-03 ⓘ]. The driver is open source an it was released under the GNU General Public License (v2). It compiles fine, and the accelerometer module can be loaded without problems:

# dmesg
...
[  124.908804] lsm303dlh_acc_sysfs accelerometer driver: init
[  124.908876] i2c-core: driver [lsm303dlh_acc_sysfs] using legacy suspend method
[  124.908885] i2c-core: driver [lsm303dlh_acc_sysfs] using legacy resume method

The following error occurs when loading the magnetometer module:

# dmesg
...
[ 2546.530196] lsm303dlh_mag_sysfs: Unknown symbol input_allocate_polled_device (err 0)
[ 2546.530271] lsm303dlh_mag_sysfs: Unknown symbol input_free_polled_device (err 0)
[ 2546.530425] lsm303dlh_mag_sysfs: Unknown symbol input_register_polled_device (err 0)
[ 2546.530550] lsm303dlh_mag_sysfs: Unknown symbol input_unregister_polled_device (err 0)

Accelerometer

Instantiate the device

Run the following command to instantiate the device:

# echo lsm303dlh_acc_sysfs 25 > /sys/bus/i2c/devices/i2c-2/new_device

Although, it seems to be a problem with the driver.

# dmesg
...
[  833.274769] lsm303dlh_acc_sysfs: probe start.
[  833.274781] lsm303dlh_acc_sysfs 2-0019: platform data is NULL. exiting.
[  833.274790] lsm303dlh_acc_sysfs: Driver Init failed
[  833.274813] i2c i2c-2: new_device: Instantiated device lsm303dlh_acc_sysfs at 0x19

Enabling the device

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:STMicroelectronics LSM303DLH)

Reading the output of the device

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:STMicroelectronics LSM303DLH)

See also

  • Older version of the driver at lore.kernel.org.
  • Luke Ross' website.
  • yoga-laptop, an utility for Lenovo Ideapad Yoga laptops with information and scripts that can be adapted for devices with this accelerometer (Lenovo Thinkpad Yoga, Dell Inspiron 7347, ...)