Files
sxmo-utils/scripts/deviceprofiles
Martin 8f16045a20 added deviceprofile for fairphone 4
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-06-18 19:23:05 -07:00
..
2023-02-23 17:11:50 -06:00

Device profile

A device profile is a shell script that is loaded early in sxmo startup, and is intended to be used for defining device-specific attributes that sxmo will use at run time.

While it is technically possible to put any valid shell commands/logic in the device profile, it is recommended to only use environment variables to keep the script's execution time at a minimum and to keep things simple.

File name

To define a device profile, you need to first obtain the device name. This can be found in /proc/device-tree/compatible.

The compatible file is a null terminated array, sxmo uses the first item as the name of the device. For example, the poco f1 is a 3 button touch device and tr '\0' '\n' < /proc/device-tree/compatible returns:

xiaomi,beryllium
qcom,sdm845

As such, sxmo-utils/configs/default_hooks/xiaomi,beryllium is a symlink to sxmo-utils/configs/default_hooks/three_button_touchscreen. Finally, the device profile variables (explained in the following secion) is defined in:

sxmo-utils/scripts/deviceprofiles/sxmo_deviceprofile_xiaomi,beryllium.sh

Further reading:

Device profile variables used by sxmo

Supported variables used by sxmo are:

export SXMO_MODEM_GPIO_KEY_RI | If the modem driver handle a gpio, sxmo have to know it to disable the events from this input source.

SXMO_ROTATION_POLL_TIME | Polling time for rotate in seconds (decimals allowed e.g. .1) [default: 1]

SXMO_ROTATION_GRAVITY | Override gravity for calculating rotation [default: 500]

SXMO_ROTATION_THRESHOLD | Threshold for detecting rotation [default: 60]

SXMO_MIN_BRIGHTNESS | Minimum brightness level [default: 5]

SXMO_DISABLE_LEDS | Disable leds (1 or 0) [default: 0]

SXMO_LED_WHITE_TYPE | LED device type, i.e., the part after the colon in the path: /sys/class/leds/<color>:<type> [default: status]

SXMO_LED_BLUE_TYPE | LED device type, i.e., the part after the colon in the path: /sys/class/leds/<color>:<type> [default: status]

SXMO_LED_RED_TYPE | LED device type, i.e., the part after the colon in the path: /sys/class/leds/<color>:<type> [default: status]

SXMO_LED_GREEN_TYPE | LED device type, i.e., the part after the colon in the path: /sys/class/leds/<color>:<type> [default: status]

SXMO_SWAY_SCALE | Screen scale for hidpi screens. Can be fractional [SWAY-ONLY].

SXMO_SPEAKER | Audio device name for the main speaker [default: Speaker]

SXMO_EARPIECE | Audio device name for the earpiece speaker [default: Earpiece]

SXMO_HEADPHONE | Audio device name for the headphones [default: Headphone]

SXMO_ALSA_CONTROL_NAME | Alsa audio control name [default: 0]

SXMO_TOUCHSCREEN_ID | ID (from xinput) for the touchscreen device [DWM-ONLY] [default: 10]

SXMO_STYLUS_ID | ID (from xinput) for the stylus device [DWM-ONLY] [default: 10]

SXMO_LISGD_THRESHOLD | Threshold for detecting touches [default: 125]

SXMO_LISGD_THRESHOLD_PRESSED | Threshold for detecting long presses [default: 60]

SXMO_LISGD_INPUT_DEVICE | Input device [default: /dev/input/touchscreen]

SXMO_VOLUME_BUTTON | Volume button "Identifier" from swaymsg -t get_inputs command. If the volume up identifier ($VOL_UP_ID) is different from the volume down identifier ($VOL_DOWN_ID), set $SXMO_VOLUME_BUTTON="$VOL_UP_ID $VOL_DOWN_ID". See the sxmo-utils/scripts/deviceprofiles/sxmo_deviceprofile_xiaomi,beryllium.sh file.

SXMO_POWER_BUTTON | Power button "Identifier" from swaymsg -t get_inputs command.

SXMO_MONITOR | Display "Output" from swaymsg -t get_outputs. Should be the same as the output from the xrandr command when running dwm.

General / Misc.

SXMO_WIFI_MODULE | The wifi kernel module used when switching scan intervals

SXMO_RTW_SCAN_INTERVAL | Does the wifi kernel module offer a rtw_scan_interval_thr interface ? [default: 0]

SXMO_SYS_FILES | String of files for sxmo_setpermissions.sh to make +rw (see sxmo_setpermissions.sh)

SXMO_VIBRATE_DEV | Path to vibration device (see sxmo_vibrate.c and clickclack.c) [default: /dev/input/by-path/platform-vibrator-event]