https://wiki.postmarketos.org/api.php?action=feedcontributions&user=JulianGro&feedformat=atompostmarketOS - User contributions [en]2024-03-29T15:17:35ZUser contributionsMediaWiki 1.39.6https://wiki.postmarketos.org/index.php?title=LEDs&diff=53764LEDs2023-12-13T23:09:03Z<p>JulianGro: Fix grammar mistake</p>
<hr />
<div>== Triggers ==<br />
{{note|Triggers are typically locked to "pattern" by feedbackd's [https://source.puri.sm/Librem5/feedbackd/-/blob/main/debian/feedbackd.udev#L10-11 udev rule]}}<br />
<br />
There are two types of triggers: simple and complex.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/leds/leds-class.rst</ref> Simple triggers are provided by other subsystems. Complex triggers need to be enabled in kernel configs. For a list of complex triggers, see [[LEDs#List of kernel LED triggers]].<br />
<br />
Both trigger types are merged together in the trigger file. To see the available triggers, cat the trigger file, e.g. <code>cat /sys/class/leds/tm2-touchkey/trigger</code>. The active trigger is shown in brackets.<br />
<br />
<pre><br />
[none] usb-gadget usb-host rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer heartbeat cpu cpu0 cpu1 cpu2 cpu3 default-on panic mmc1 mmc0 rfkill0 rt5033-battery-charging-or-full rt5033-battery-charging rt5033-battery-full rt5033-battery-charging-blink-full-solid bluetooth-power hci0-power rfkill1 phy0rx phy0tx phy0assoc phy0radio rfkill2<br />
</pre><br />
<br />
To assign a trigger, echo the trigger name to the trigger file, e.g. <code>echo heartbeat | sudo tee /sys/class/leds/tm2-touchkey/trigger</code><br />
<br />
When rebooting, the trigger is lost again. To make it permanent, it needs to be set by an udev rule. If you're not sure about the udev matching and assignment keys, you can look them up by e.g. <code>udevadm info --attribute-walk /sys/class/leds/tm2-touchkey</code>. To set up the udev rule, do something like:<br />
<br />
* <code>sudo vi /etc/udev/rules.d/30-tm2-touchkey-leds.rules</code> (new file)<br />
:<pre>ACTION=="add", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", ATTR{trigger}="heartbeat"</pre><br />
<br />
Most of the complex triggers are tristate in the kernel configs, they can be compiled as a module. The configs can be checked by e.g. <code>cat /boot/config | grep LEDS*_TRIGGER</code>. (The asterisk after the S includes LED trigger that are missing the S like LED_TRIGGER_PHY.)<br />
<br />
If a trigger is set as a module, let's say for example <code>CONFIG_LEDS_TRIGGER_HEARTBEAT=m</code>, the module needs to be loaded by:<br />
<source lang="shell-session"><br />
# modprobe ledtrig-heartbeat<br />
</source><br />
<br />
before it becomes available in the trigger list. To use it permanently by an udev rule like described above, the module needs to be added to <code>/etc/modules</code>.<br />
<br />
=== List of kernel LED triggers ===<br />
<br />
For more information on a specific trigger, see the referenced links.<br />
<br />
; drivers/leds/trigger/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/leds/trigger/Kconfig</ref><br />
: CONFIG_LEDS_TRIGGER_TIMER <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TIMER.html</ref><br />
: CONFIG_LEDS_TRIGGER_ONESHOT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_ONESHOT.html</ref><br />
: CONFIG_LEDS_TRIGGER_DISK <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_DISK.html</ref><br />
: CONFIG_LEDS_TRIGGER_MTD <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_MTD.html</ref><br />
: CONFIG_LEDS_TRIGGER_HEARTBEAT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_HEARTBEAT.html</ref><br />
: CONFIG_LEDS_TRIGGER_BACKLIGHT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_BACKLIGHT.html</ref><br />
: CONFIG_LEDS_TRIGGER_CPU <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_CPU.html</ref><br />
: CONFIG_LEDS_TRIGGER_ACTIVITY <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_ACTIVITY.html</ref><br />
: CONFIG_LEDS_TRIGGER_GPIO <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_GPIO.html</ref><br />
: CONFIG_LEDS_TRIGGER_DEFAULT_ON <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_DEFAULT_ON.html</ref><br />
: CONFIG_LEDS_TRIGGER_TRANSIENT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TRANSIENT.html</ref><br />
: CONFIG_LEDS_TRIGGER_CAMERA <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_CAMERA.html</ref><br />
: CONFIG_LEDS_TRIGGER_PANIC <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_PANIC.html</ref><br />
: CONFIG_LEDS_TRIGGER_NETDEV <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_NETDEV.html</ref><br />
: CONFIG_LEDS_TRIGGER_PATTERN <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_PATTERN.html</ref><br />
: CONFIG_LEDS_TRIGGER_AUDIO <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_AUDIO.html</ref><br />
: CONFIG_LEDS_TRIGGER_TTY <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TTY.html</ref><br />
<br />
; drivers/usb/core/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/core/Kconfig</ref><br />
: CONFIG_USB_LEDS_TRIGGER_USBPORT <ref>https://cateee.net/lkddb/web-lkddb/USB_LEDS_TRIGGER_USBPORT.html</ref><br />
<br />
; drivers/net/phy/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/phy/Kconfig</ref><br />
: CONFIG_LED_TRIGGER_PHY <ref>https://cateee.net/lkddb/web-lkddb/LED_TRIGGER_PHY.html</ref> (note the "missing" S in LED)<br />
<br />
; net/netfilter/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/net/netfilter/Kconfig</ref><br />
: CONFIG_NETFILTER_XT_TARGET_LED <ref>https://cateee.net/lkddb/web-lkddb/NETFILTER_XT_TARGET_LED.html</ref><br />
<br />
== ULED driver ==<br />
The kernel documentation mentions an ULED driver.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/leds/uleds.rst.</ref> Including this into a userspace program written in C creates a node in <code>/dev/uleds</code>, which can be accessed by the program. There is an example at tools/leds/uledmon.c.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/leds/uledmon.c</ref><br />
<br />
== Access via sysfs ==<br />
LEDs are available in <code>/sys/class/leds</code>. They can be turned on/off by echoing a value to brightness. However, root access is required. The range of brightness can be checked by e.g. <code>cat /sys/class/leds/tm2-touchkey/max_brightness</code>. In the example tm2-touchkey LED, the max_brightnes is 1, so for this LED it's just on or off. Changing the brightness of a LED with sudo can be done like e.g.<br />
<br />
<code>echo 1 | sudo tee /sys/class/leds/tm2-touchkey/brightness</code><br />
<br />
or:<br />
<br />
<code>sudo /bin/sh -c 'echo 1 > /sys/class/leds/tm2-touchkey/brightness'</code><br />
<br />
=== visudo ===<br />
To use the commands in shell scripts without typing the password, the command(s) can be added to the sudoers file, e.g.:<br />
<br />
<code>sudo visudo</code><br />
<br />
add:<br />
<br />
<pre><br />
## Allow user to access tm2-touchkey leds withouth password<br />
user ALL=NOPASSWD: /usr/bin/tee /sys/class/leds/tm2-touchkey/brightness<br />
</pre><br />
<br />
The command <code>echo 1 | sudo tee /sys/class/leds/tm2-touchkey/brightness</code> now works without password prompt.<br />
<br />
=== Changing permissions in sysfs ===<br />
Alternatively, to change the LED brightness without sudo, permissions in sysfs can be changed. This seems to be rather unconventional. A project modifying game controllers suggests the follwing approach to change permission on all LEDs<ref>https://approxeng.github.io/approxeng.input/sys.html#version-2-6-1-2-6-2</ref>:<br />
<br />
<pre><br />
# Assign any new nodes in the 'leds' subsystem (nodes in /sys/class/leds) to the group 'leds' to write without root<br />
# Create a new group 'leds' before this will do anything!<br />
SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
SUBSYSTEM=="leds", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
</pre><br />
<br />
This changes the owning group from <code>root</code> to <code>leds</code> and transcribes the permission from user (root) to group (leds). It needs to be done on action "add" as well as on action "change" because when the kernel performes changes, the group permissions would be overwritten to <code>root</code> again.<br />
<br />
Based on this approach, for the tm2-tochkey leds udev rules were implemented to file /lib/udev/rules.d/20-tm2-touchkey-leds.rules after stable release v21.06 that look like this:<br />
<br />
<pre><br />
# allow users in group "input" to control the tm2-touchkey leds<br />
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", RUN+="/bin/chgrp -R input /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
ACTION=="change", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R input /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
</pre><br />
<br />
This permission change is limited to <code>tm2-touchkey</code>. And the permissions are changed to group <code>input</code> (postmarketOS users are usually already member of group <code>input</code>). Additionally, the order of the udev rule keys were put in a different order (has no technical effect).<br />
<br />
It's not fully clear if <code>ENV{TRIGGER}!="none"</code> in the last line is required. A comment on unix.stackexchange.com says it would be needed for kernel older than 4.9.<ref>https://unix.stackexchange.com/questions/20125/how-can-i-change-the-permissions-in-sys-to-alter-the-state-of-a-led-light-using/202870#202870</ref><br />
<br />
However, with these udev rules in place, an unpriviliged user that's member of the group <code>input</code> can now turn on the tm2-touchkey leds by simply <code>echo 1 > /sys/class/leds/tm2-touchkey/brightness</code> without sudo. That's especially helpful for usage in shell scripts.<br />
<br />
== Sync with backlight ==<br />
<br />
See [[LEDs:Sync with backlight]].<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Hardware]]</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=LEDs&diff=53763LEDs2023-12-13T23:07:27Z<p>JulianGro: Add note mentioning that triggers may be locked by feedbackd</p>
<hr />
<div>== Triggers ==<br />
{{note|Triggers is typically locked to "pattern" by feedbackd's [https://source.puri.sm/Librem5/feedbackd/-/blob/main/debian/feedbackd.udev#L10-11 udev rule]}}<br />
<br />
There are two types of triggers: simple and complex.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/leds/leds-class.rst</ref> Simple triggers are provided by other subsystems. Complex triggers need to be enabled in kernel configs. For a list of complex triggers, see [[LEDs#List of kernel LED triggers]].<br />
<br />
Both trigger types are merged together in the trigger file. To see the available triggers, cat the trigger file, e.g. <code>cat /sys/class/leds/tm2-touchkey/trigger</code>. The active trigger is shown in brackets.<br />
<br />
<pre><br />
[none] usb-gadget usb-host rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer heartbeat cpu cpu0 cpu1 cpu2 cpu3 default-on panic mmc1 mmc0 rfkill0 rt5033-battery-charging-or-full rt5033-battery-charging rt5033-battery-full rt5033-battery-charging-blink-full-solid bluetooth-power hci0-power rfkill1 phy0rx phy0tx phy0assoc phy0radio rfkill2<br />
</pre><br />
<br />
To assign a trigger, echo the trigger name to the trigger file, e.g. <code>echo heartbeat | sudo tee /sys/class/leds/tm2-touchkey/trigger</code><br />
<br />
When rebooting, the trigger is lost again. To make it permanent, it needs to be set by an udev rule. If you're not sure about the udev matching and assignment keys, you can look them up by e.g. <code>udevadm info --attribute-walk /sys/class/leds/tm2-touchkey</code>. To set up the udev rule, do something like:<br />
<br />
* <code>sudo vi /etc/udev/rules.d/30-tm2-touchkey-leds.rules</code> (new file)<br />
:<pre>ACTION=="add", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", ATTR{trigger}="heartbeat"</pre><br />
<br />
Most of the complex triggers are tristate in the kernel configs, they can be compiled as a module. The configs can be checked by e.g. <code>cat /boot/config | grep LEDS*_TRIGGER</code>. (The asterisk after the S includes LED trigger that are missing the S like LED_TRIGGER_PHY.)<br />
<br />
If a trigger is set as a module, let's say for example <code>CONFIG_LEDS_TRIGGER_HEARTBEAT=m</code>, the module needs to be loaded by:<br />
<source lang="shell-session"><br />
# modprobe ledtrig-heartbeat<br />
</source><br />
<br />
before it becomes available in the trigger list. To use it permanently by an udev rule like described above, the module needs to be added to <code>/etc/modules</code>.<br />
<br />
=== List of kernel LED triggers ===<br />
<br />
For more information on a specific trigger, see the referenced links.<br />
<br />
; drivers/leds/trigger/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/leds/trigger/Kconfig</ref><br />
: CONFIG_LEDS_TRIGGER_TIMER <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TIMER.html</ref><br />
: CONFIG_LEDS_TRIGGER_ONESHOT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_ONESHOT.html</ref><br />
: CONFIG_LEDS_TRIGGER_DISK <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_DISK.html</ref><br />
: CONFIG_LEDS_TRIGGER_MTD <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_MTD.html</ref><br />
: CONFIG_LEDS_TRIGGER_HEARTBEAT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_HEARTBEAT.html</ref><br />
: CONFIG_LEDS_TRIGGER_BACKLIGHT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_BACKLIGHT.html</ref><br />
: CONFIG_LEDS_TRIGGER_CPU <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_CPU.html</ref><br />
: CONFIG_LEDS_TRIGGER_ACTIVITY <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_ACTIVITY.html</ref><br />
: CONFIG_LEDS_TRIGGER_GPIO <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_GPIO.html</ref><br />
: CONFIG_LEDS_TRIGGER_DEFAULT_ON <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_DEFAULT_ON.html</ref><br />
: CONFIG_LEDS_TRIGGER_TRANSIENT <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TRANSIENT.html</ref><br />
: CONFIG_LEDS_TRIGGER_CAMERA <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_CAMERA.html</ref><br />
: CONFIG_LEDS_TRIGGER_PANIC <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_PANIC.html</ref><br />
: CONFIG_LEDS_TRIGGER_NETDEV <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_NETDEV.html</ref><br />
: CONFIG_LEDS_TRIGGER_PATTERN <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_PATTERN.html</ref><br />
: CONFIG_LEDS_TRIGGER_AUDIO <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_AUDIO.html</ref><br />
: CONFIG_LEDS_TRIGGER_TTY <ref>https://cateee.net/lkddb/web-lkddb/LEDS_TRIGGER_TTY.html</ref><br />
<br />
; drivers/usb/core/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/core/Kconfig</ref><br />
: CONFIG_USB_LEDS_TRIGGER_USBPORT <ref>https://cateee.net/lkddb/web-lkddb/USB_LEDS_TRIGGER_USBPORT.html</ref><br />
<br />
; drivers/net/phy/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/phy/Kconfig</ref><br />
: CONFIG_LED_TRIGGER_PHY <ref>https://cateee.net/lkddb/web-lkddb/LED_TRIGGER_PHY.html</ref> (note the "missing" S in LED)<br />
<br />
; net/netfilter/Kconfig <ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/net/netfilter/Kconfig</ref><br />
: CONFIG_NETFILTER_XT_TARGET_LED <ref>https://cateee.net/lkddb/web-lkddb/NETFILTER_XT_TARGET_LED.html</ref><br />
<br />
== ULED driver ==<br />
The kernel documentation mentions an ULED driver.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/leds/uleds.rst.</ref> Including this into a userspace program written in C creates a node in <code>/dev/uleds</code>, which can be accessed by the program. There is an example at tools/leds/uledmon.c.<ref>https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/leds/uledmon.c</ref><br />
<br />
== Access via sysfs ==<br />
LEDs are available in <code>/sys/class/leds</code>. They can be turned on/off by echoing a value to brightness. However, root access is required. The range of brightness can be checked by e.g. <code>cat /sys/class/leds/tm2-touchkey/max_brightness</code>. In the example tm2-touchkey LED, the max_brightnes is 1, so for this LED it's just on or off. Changing the brightness of a LED with sudo can be done like e.g.<br />
<br />
<code>echo 1 | sudo tee /sys/class/leds/tm2-touchkey/brightness</code><br />
<br />
or:<br />
<br />
<code>sudo /bin/sh -c 'echo 1 > /sys/class/leds/tm2-touchkey/brightness'</code><br />
<br />
=== visudo ===<br />
To use the commands in shell scripts without typing the password, the command(s) can be added to the sudoers file, e.g.:<br />
<br />
<code>sudo visudo</code><br />
<br />
add:<br />
<br />
<pre><br />
## Allow user to access tm2-touchkey leds withouth password<br />
user ALL=NOPASSWD: /usr/bin/tee /sys/class/leds/tm2-touchkey/brightness<br />
</pre><br />
<br />
The command <code>echo 1 | sudo tee /sys/class/leds/tm2-touchkey/brightness</code> now works without password prompt.<br />
<br />
=== Changing permissions in sysfs ===<br />
Alternatively, to change the LED brightness without sudo, permissions in sysfs can be changed. This seems to be rather unconventional. A project modifying game controllers suggests the follwing approach to change permission on all LEDs<ref>https://approxeng.github.io/approxeng.input/sys.html#version-2-6-1-2-6-2</ref>:<br />
<br />
<pre><br />
# Assign any new nodes in the 'leds' subsystem (nodes in /sys/class/leds) to the group 'leds' to write without root<br />
# Create a new group 'leds' before this will do anything!<br />
SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
SUBSYSTEM=="leds", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
</pre><br />
<br />
This changes the owning group from <code>root</code> to <code>leds</code> and transcribes the permission from user (root) to group (leds). It needs to be done on action "add" as well as on action "change" because when the kernel performes changes, the group permissions would be overwritten to <code>root</code> again.<br />
<br />
Based on this approach, for the tm2-tochkey leds udev rules were implemented to file /lib/udev/rules.d/20-tm2-touchkey-leds.rules after stable release v21.06 that look like this:<br />
<br />
<pre><br />
# allow users in group "input" to control the tm2-touchkey leds<br />
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", RUN+="/bin/chgrp -R input /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
ACTION=="change", SUBSYSTEM=="leds", KERNEL=="tm2-touchkey", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R input /sys%p", RUN+="/bin/chmod -R g=u /sys%p"<br />
</pre><br />
<br />
This permission change is limited to <code>tm2-touchkey</code>. And the permissions are changed to group <code>input</code> (postmarketOS users are usually already member of group <code>input</code>). Additionally, the order of the udev rule keys were put in a different order (has no technical effect).<br />
<br />
It's not fully clear if <code>ENV{TRIGGER}!="none"</code> in the last line is required. A comment on unix.stackexchange.com says it would be needed for kernel older than 4.9.<ref>https://unix.stackexchange.com/questions/20125/how-can-i-change-the-permissions-in-sys-to-alter-the-state-of-a-led-light-using/202870#202870</ref><br />
<br />
However, with these udev rules in place, an unpriviliged user that's member of the group <code>input</code> can now turn on the tm2-touchkey leds by simply <code>echo 1 > /sys/class/leds/tm2-touchkey/brightness</code> without sudo. That's especially helpful for usage in shell scripts.<br />
<br />
== Sync with backlight ==<br />
<br />
See [[LEDs:Sync with backlight]].<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Hardware]]</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Troubleshooting:HID_buttons&diff=53737Troubleshooting:HID buttons2023-12-13T13:22:19Z<p>JulianGro: Add note mentioning that triggerhappy has been replaced by HKDM</p>
<hr />
<div>Phones may have some buttons. Those buttons can be configured to execute specific command when pressed.<br />
<br />
== Getting input device information using udevadm ==<br />
<br />
Make sure that buttons are recognized as eventX inside <code>/dev/input</code> directory<br />
<br />
To make sure that the input buttons are recognized, run the following command:<br />
<br />
<syntaxhighlight lang='shell-session'>$ udevadm info -a /dev/input/event0 </syntaxhighlight><br />
<br />
The command will print udev properties which can be used to assign udev rules, for example tagging specified device as touchscreen.<br />
<br />
Note that HID input device doesn't trigger udev event, so the following command can't be used to detect key-presses from HID input device.<br />
<br />
<code># udevadm monitor </code><br />
<br />
== Getting input device events using evtest ==<br />
<br />
evtest can be used to detect events sent by input devices. To use it, install evtest package.<br />
<br />
<code> # apk add evtest </code><br />
<br />
Launch evtest to troubleshoot the input device<br />
<br />
<code> # evtest /dev/input/event0 </code><br />
<br />
The information obtained from evtest can be used as reference to configure triggerhappy or creating acpi.map for busybox acpid<br />
<br />
== Using triggerhappy to handle HID input events ==<br />
{{note|Triggerhappy has been replaced with [https://gitlab.com/postmarketOS/hkdm HKDM]}}<br />
<br />
=== Installation ===<br />
Triggerhappy can be used to handle HID input device. After postmarketOS is installed, add it with:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ apk add triggerhappy<br />
</syntaxhighlight><br />
<br />
If you did not install it yet, you can also request it to be added to the installation in <code>pmbootstrap init</code> or by using the <code>--add</code> parameter for the install action:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ pmbootstrap install --add=triggerhappy<br />
</syntaxhighlight><br />
<br />
=== Usage ===<br />
Run thd on the device to find what is sent:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo thd --dump /dev/input/event*<br />
</syntaxhighlight><br />
<br />
With <code>thd --dump</code> running, touch the touchscreen and press the available buttons. There will be information related to the input device printed on the ssh session. <br />
<br />
<pre><br />
EV_ABS ABS_MT_TRACKING_ID 16 /dev/input/event0<br />
# ABS_MT_TRACKING_ID 16 command<br />
EV_ABS ABS_MT_TRACKING_ID 0 /dev/input/event0<br />
# ABS_MT_TRACKING_ID 0 command<br />
EV_ABS ABS_MT_POSITION_X 312 /dev/input/event0<br />
# ABS_MT_POSITION_X 312 command<br />
EV_ABS ABS_MT_POSITION_Y 1013 /dev/input/event0<br />
# ABS_MT_POSITION_Y 1013 command<br />
EV_ABS ABS_MT_TOUCH_MAJOR 123 /dev/input/event0<br />
# ABS_MT_TOUCH_MAJOR 123 command<br />
EV_ABS ABS_MT_WIDTH_MAJOR 144 /dev/input/event0<br />
# ABS_MT_WIDTH_MAJOR 144 command<br />
EV_KEY KEY_POWER 1 /dev/input/event1<br />
# KEY_POWER 1 command<br />
EV_KEY KEY_POWER 0 /dev/input/event1<br />
# KEY_POWER 0 command<br />
EV_KEY KEY_VOLUMEDOWN 1 /dev/input/event1<br />
# KEY_VOLUMEDOWN 1 command<br />
EV_KEY KEY_VOLUMEDOWN 0 /dev/input/event1<br />
# KEY_VOLUMEDOWN 0 command<br />
EV_KEY KEY_VOLUMEUP 1 /dev/input/event2<br />
# KEY_VOLUMEUP 1 command<br />
EV_KEY KEY_VOLUMEUP 0 /dev/input/event2<br />
# KEY_VOLUMEUP 0 command<br />
</pre><br />
<br />
The information can be used to create a triggerhappy configuration, for example assigning a command when the home touch button is pressed.<br />
<br />
Example <code>/etc/triggerhappy/triggers.d/buttons.conf</code>:<br />
<pre><br />
KEY_POWER 1 poweroff<br />
KEY_VOLUMEDOWN+KEY_POWER 1 reboot<br />
#ABS_MT_POSITION_Y@ 1344 @home<br />
#ABS_MT_POSITION_X@home 360 logger "Home button is pressed"<br />
#ABS_MT_POSITION_Y@home 1344 @<br />
</pre><br />
<br />
The triggerhappy service needs to be enabled to listen HID button keypresses:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# rc-update add triggerhappy default<br />
</syntaxhighlight><br />
<br />
== Using busybox acpid ==<br />
<br />
Some device buttons can trigger acpi events. Busybox acpid can be used to handle these events, for example nokia n900.<br />
<br />
For this to work, an acpi.map is needed. Look at [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-nokia-n900 device-nokia-n900] for more information.<br />
<br />
== See also ==<br />
* [https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/1211#note_85244691 Difference between busybox acpid and triggerhappy]<br />
* [https://cgit.freedesktop.org/evtest/tree/ evtest source code]<br />
* [https://github.com/wertarbyte/triggerhappy triggerhappy source code]<br />
* [https://git.busybox.net/busybox/tree/util-linux/acpid.c busybox acpid source code]<br />
<br />
[[Category:Troubleshooting|HID buttons]]</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=53685User:JulianGro2023-12-12T18:35:38Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|Lenovo_IdeaPad_Duet_Chromebook_(google-krane)|128 GB version, main device used for school, USI-pen}}<br />
{{Owns device|PINE64_PineTab_2_(pine64-pinetab2)|8 GB version, auxiliary device used for school}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|multiple different devices; one with serial output}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Troubleshooting:HID_buttons&diff=53667Troubleshooting:HID buttons2023-12-11T19:33:43Z<p>JulianGro: Update Nokia N900 link in "Using busybox acpid"</p>
<hr />
<div>Phones may have some buttons. Those buttons can be configured to execute specific command when pressed.<br />
<br />
== Getting input device information using udevadm ==<br />
<br />
Make sure that buttons are recognized as eventX inside <code>/dev/input</code> directory<br />
<br />
To make sure that the input buttons are recognized, run the following command:<br />
<br />
<syntaxhighlight lang='shell-session'>$ udevadm info -a /dev/input/event0 </syntaxhighlight><br />
<br />
The command will print udev properties which can be used to assign udev rules, for example tagging specified device as touchscreen.<br />
<br />
Note that HID input device doesn't trigger udev event, so the following command can't be used to detect key-presses from HID input device.<br />
<br />
<code># udevadm monitor </code><br />
<br />
== Getting input device events using evtest ==<br />
<br />
evtest can be used to detect events sent by input devices. To use it, install evtest package.<br />
<br />
<code> # apk add evtest </code><br />
<br />
Launch evtest to troubleshoot the input device<br />
<br />
<code> # evtest /dev/input/event0 </code><br />
<br />
The information obtained from evtest can be used as reference to configure triggerhappy or creating acpi.map for busybox acpid<br />
<br />
== Using triggerhappy to handle HID input events ==<br />
=== Installation ===<br />
Triggerhappy can be used to handle HID input device. After postmarketOS is installed, add it with:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ apk add triggerhappy<br />
</syntaxhighlight><br />
<br />
If you did not install it yet, you can also request it to be added to the installation in <code>pmbootstrap init</code> or by using the <code>--add</code> parameter for the install action:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ pmbootstrap install --add=triggerhappy<br />
</syntaxhighlight><br />
<br />
=== Usage ===<br />
Run thd on the device to find what is sent:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo thd --dump /dev/input/event*<br />
</syntaxhighlight><br />
<br />
With <code>thd --dump</code> running, touch the touchscreen and press the available buttons. There will be information related to the input device printed on the ssh session. <br />
<br />
<pre><br />
EV_ABS ABS_MT_TRACKING_ID 16 /dev/input/event0<br />
# ABS_MT_TRACKING_ID 16 command<br />
EV_ABS ABS_MT_TRACKING_ID 0 /dev/input/event0<br />
# ABS_MT_TRACKING_ID 0 command<br />
EV_ABS ABS_MT_POSITION_X 312 /dev/input/event0<br />
# ABS_MT_POSITION_X 312 command<br />
EV_ABS ABS_MT_POSITION_Y 1013 /dev/input/event0<br />
# ABS_MT_POSITION_Y 1013 command<br />
EV_ABS ABS_MT_TOUCH_MAJOR 123 /dev/input/event0<br />
# ABS_MT_TOUCH_MAJOR 123 command<br />
EV_ABS ABS_MT_WIDTH_MAJOR 144 /dev/input/event0<br />
# ABS_MT_WIDTH_MAJOR 144 command<br />
EV_KEY KEY_POWER 1 /dev/input/event1<br />
# KEY_POWER 1 command<br />
EV_KEY KEY_POWER 0 /dev/input/event1<br />
# KEY_POWER 0 command<br />
EV_KEY KEY_VOLUMEDOWN 1 /dev/input/event1<br />
# KEY_VOLUMEDOWN 1 command<br />
EV_KEY KEY_VOLUMEDOWN 0 /dev/input/event1<br />
# KEY_VOLUMEDOWN 0 command<br />
EV_KEY KEY_VOLUMEUP 1 /dev/input/event2<br />
# KEY_VOLUMEUP 1 command<br />
EV_KEY KEY_VOLUMEUP 0 /dev/input/event2<br />
# KEY_VOLUMEUP 0 command<br />
</pre><br />
<br />
The information can be used to create a triggerhappy configuration, for example assigning a command when the home touch button is pressed.<br />
<br />
Example <code>/etc/triggerhappy/triggers.d/buttons.conf</code>:<br />
<pre><br />
KEY_POWER 1 poweroff<br />
KEY_VOLUMEDOWN+KEY_POWER 1 reboot<br />
#ABS_MT_POSITION_Y@ 1344 @home<br />
#ABS_MT_POSITION_X@home 360 logger "Home button is pressed"<br />
#ABS_MT_POSITION_Y@home 1344 @<br />
</pre><br />
<br />
The triggerhappy service needs to be enabled to listen HID button keypresses:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# rc-update add triggerhappy default<br />
</syntaxhighlight><br />
<br />
== Using busybox acpid ==<br />
<br />
Some device buttons can trigger acpi events. Busybox acpid can be used to handle these events, for example nokia n900.<br />
<br />
For this to work, an acpi.map is needed. Look at [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-nokia-n900 device-nokia-n900] for more information.<br />
<br />
== See also ==<br />
* [https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/1211#note_85244691 Difference between busybox acpid and triggerhappy]<br />
* [https://cgit.freedesktop.org/evtest/tree/ evtest source code]<br />
* [https://github.com/wertarbyte/triggerhappy triggerhappy source code]<br />
* [https://git.busybox.net/busybox/tree/util-linux/acpid.c busybox acpid source code]<br />
<br />
[[Category:Troubleshooting|HID buttons]]</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Xiaomi_Redmi_2_(xiaomi-wt88047)&diff=52811Xiaomi Redmi 2 (xiaomi-wt88047)2023-11-18T17:12:06Z<p>JulianGro: Remove manually added device owner</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = Xiaomi<br />
| name = Redmi 2<br />
| codename = xiaomi-wt88047<br />
| image = File:Xiaomi_wt88047_plamo.png<br />
| imagecaption = Xiaomi Redmi 2 Prime running Plasma Mobile<br />
| releaseyear = 2015<br />
| category = community<br />
| originalsoftware = Android (MIUI)<br />
| originalversion = 4.4.4 (MIUI 6.0)<br />
| chipset = Qualcomm Snapdragon 410 (MSM8916)<br />
| cpu = Quad-core 1.2 GHz Cortex-A53<br />
| gpu = Adreno 306<br />
| storage = 8 GB / 16 GB<br />
| display = 720 x 1280<br />
| memory = 1 GB / 2 GB<br />
| architecture = aarch64<br />
| whet_dhry = 918.9<br />
| type = handset<br />
| status_usbnet = Y<br />
| status_flashing = Y<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = Y<br />
| status_xwayland = Y<br />
| status_fde = Y<br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_accel = Y<br />
| status_audio = Y<br />
| status_bluetooth = Y<br />
| status_camera = N<br />
| status_cameraflash = Y<br />
| status_gps = Y<br />
| status_mobiledata = Y <br />
| status_sms = Y<br />
| status_calls = Y<br />
| status_otg = Y<br />
| status_light = Y<br />
| status_fossbootloader = Y<br />
| status_nfc = -<br />
| status_irtx = -<br />
| booting = yes<br />
}}{{Based on SoC|Qualcomm Snapdragon 410/412/415 (MSM8916/MSM8916V2/MSM8929)|Snapdragon 410}}<br />
<br />
== Contributors ==<br />
* sylvieon<br />
* [[User:Minecrell]] (mainline port)<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
{{410common issue waking the screen in xorg}}<br />
== How to enter flash mode ==<br />
* '''Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons.<br />
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}.<br />
* '''lk2nd Recovery''': Power on the device. After it vibrates, hold {{Button|Volume Up}}.<br />
<br />
== Installation ==<br />
# Make sure you have latest firmware flashed. Follow the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] until (including) ''Updating firmware''.<br />
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd]. Although Xiaomi already provides a Fastboot interface, lk2nd contains various quirks for booting mainline.<br />
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]]. (Flash from lk2nd Fastboot, not the stock Fastboot.)<br />
<br />
<br />
==How to check which panel,camera your have in your redmi 2 that running miui 9?==<br />
<br />
1. Go to {{button|Setting}}<br />
<br />
2. Go to {{button|About Phone}}<br />
<br />
3. Spam {{button|Kernel Version}} by tapping it a lot of time<br />
<br />
4. Click {{button|Device View}}<br />
<br />
== Partition layout ==<br />
<br />
<pre>Disk /dev/mmcblk0: 7.28 GiB, 7818182656 bytes, 15269888 sectors<br />
Units: sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disklabel type: gpt<br />
<br />
Device Start End Sectors Name <br />
/dev/mmcblk0p1 131072 262143 131072 modem <br />
/dev/mmcblk0p2 262144 263167 1024 sbl1 <br />
/dev/mmcblk0p3 263168 264191 1024 sbl1bak <br />
/dev/mmcblk0p4 264192 266239 2048 aboot <br />
/dev/mmcblk0p5 266240 268287 2048 abootbak<br />
/dev/mmcblk0p6 268288 269311 1024 rpm <br />
/dev/mmcblk0p7 269312 270335 1024 rpmbak <br />
/dev/mmcblk0p8 270336 271359 1024 tz <br />
/dev/mmcblk0p9 271360 272383 1024 tzbak <br />
/dev/mmcblk0p10 272384 273407 1024 hyp <br />
/dev/mmcblk0p11 273408 274431 1024 hypbak <br />
/dev/mmcblk0p12 274432 276479 2048 pad <br />
/dev/mmcblk0p13 276480 279551 3072 modemst1<br />
/dev/mmcblk0p14 279552 282623 3072 modemst2<br />
/dev/mmcblk0p15 282624 284671 2048 misc <br />
/dev/mmcblk0p16 284672 284673 2 fsc <br />
/dev/mmcblk0p17 284674 284689 16 ssd <br />
/dev/mmcblk0p18 284690 305169 20480 splash <br />
/dev/mmcblk0p19 393216 393279 64 DDR <br />
/dev/mmcblk0p20 393280 396351 3072 fsg <br />
/dev/mmcblk0p21 396352 396383 32 sec <br />
/dev/mmcblk0p22 396384 461919 65536 boot <br />
/dev/mmcblk0p23 461920 2559071 2097152 system <br />
/dev/mmcblk0p24 2559072 3214431 655360 cache <br />
/dev/mmcblk0p25 3214432 3279967 65536 persist <br />
/dev/mmcblk0p26 3279968 3345503 65536 recovery<br />
/dev/mmcblk0p27 3407872 3408895 1024 keystore<br />
/dev/mmcblk0p28 3408896 3408959 64 config <br />
/dev/mmcblk0p29 3408960 3540031 131072 oem <br />
/dev/mmcblk0p30 3670016 15269854 11599839 userdata</pre><br />
<br />
== Ambient Light ==<br />
<br />
<br />
Tested only on 2014817.<br />
<br />
<br />
<source lang="shell-session"><br />
# Activate LED and set the brightness to 50 (Max Brightness : 100)<br />
echo 50 > /sys/class/leds/$COLOR/brightness<br />
# Deactivate LED<br />
echo 0 > /sys/class/leds/$COLOR/brightness<br />
</source><br />
<br />
Color :<br />
<br />
{| class="wikitable"<br />
! Color<br />
! LED<br />
|-<br />
| blue:indicator<br />
| Blue indicator light<br />
|-<br />
| red:indicator<br />
| Red indicator light<br />
|-<br />
| green:indicator<br />
| Green indicator light<br />
|-<br />
| white:flash<br />
| Camera flash<br />
|-<br />
| mmc1::<br />
| Phone crasher (It will crash your phone if you try to turn it on) <br />
|-<br />
| mmc0::<br />
| Phone crasher (It will crash your phone if you try to turn it on)<br />
|}<br />
<br />
==UART==<br />
<br />
Voltage:1.7v,baud rate : 115200<br />
<gallery><br />
File:UART WT88047.jpeg|frame|left|UART Location<br />
</gallery><br />
<br />
<br />
== Camera ==<br />
Last checked in kernel 5.13<br />
{| class="wikitable"<br />
! Manufacturer<br />
! Originally supported<br />
! Megapixel<br />
! Known used<br />
! Mainlined<br />
! Working<br />
|-<br />
| OmniVision<br />
| ov13850<br />
| 13.0 MP<br />
| yes<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov13853_q13853a<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l2<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8_qtech<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8_sunny<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8858<br />
| 8.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_a11<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_a11_sunny<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_q8v18a<br />
| 8.0 MP<br />
| yes<br />
| driver ov8865?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov8865_qtech<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_sunny<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3h7_8916<br />
| 8.0 MP<br />
| n<br />
| no<br />
| -<br />
|-<br />
| Sony<br />
| imx219_q8n13a<br />
| 8.0 MP<br />
| yes<br />
| driver imx219?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov5670_86001<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_a11<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_a11_sunny<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b<br />
| 5.0 MP<br />
| yes<br />
| driver 5670?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_lenplus<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_qtech<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_sunny<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| Samsung<br />
| s5k5e8<br />
| 5.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| GalaxyCore<br />
| gc2355_8916<br />
| 2.0 MP<br />
| yes<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov2680<br />
| 2.0 MP<br />
| no<br />
| yes<br />
| -<br />
|-<br />
| OmniVision<br />
| ov2680_5987fhq<br />
| 2.0 MP<br />
| yes<br />
| driver ov2680?<br />
| untested<br />
|-<br />
| SuperPix<br />
| sp2508<br />
| 2.0 MP<br />
| no<br />
| no<br />
| -<br />
|}<br />
<br />
<br />
== See also ==<br />
* [[Xiaomi_Redmi_2A_(lte26007)]]<br />
* [[Xiaomi_Redmi_2_(xiaomi-wt88047)/Custom_Partitioning]]<br />
* [https://codeberg.org/exxxxkc/Xiaomi_Redmi_2_Schematic/src/branch/master/Xiaomi%20Redmi%202%20Schematic.pdf Xiaomi Redmi 2 Schematic]<br />
* {{MR|62|pmaports}} Initial merge request<br />
* {{MR|1604|pmaports}} Mainline merge request<br />
* {{Device package|xiaomi-wt88047|community}}<br />
* [https://github.com/joelselvaraj/U-Boot-Redmi2-WT88047 uboot]</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:Luoyan&diff=52810User:Luoyan2023-11-18T17:10:42Z<p>JulianGro: Properly add device which was manually added to Xiaomi Redmi 2 (xiaomi-wt88047) page.</p>
<hr />
<div>{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt88047 1+8}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=50595User:JulianGro2023-10-28T20:16:30Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|Lenovo_IdeaPad_Duet_Chromebook_(google-krane)|128 GB version, main device used for school, USI-pen}}<br />
{{Owns device|PINE64_PineTab_2_(pine64-pinetab2)|8 GB version, auxiliary device used for school}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2 GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=PINE64_PineTab_2_(pine64-pinetab2)&diff=47001PINE64 PineTab 2 (pine64-pinetab2)2023-07-28T11:56:44Z<p>JulianGro: Add the current draft merge request.</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = PINE64<br />
| name = PineTab 2<br />
| codename = pine64-pinetab2<br />
| image = File:CHANGE_ME_TO_DEVICE_CODENAME.jpg<br />
| imagecaption = CHANGE_ME<br />
| releaseyear = 2023<br />
| category = testing<br />
| originalsoftware = DanctNIX's fork of Arch Linux ARM<br />
| originalversion = 20230527<br />
| pmoskernel = 6.3.10<br />
| chipset = Rockchip RK3566<br />
| cpu = ARM Cortex-A55<br />
| gpu = Mali G-52<br />
| display = 800x1280 IPS LCD<br />
| storage = 64 GB / 128 GB<br />
| memory = 4 GB / 8 GB<br />
| architecture = aarch64<br />
| type = tablet<br />
| whet_dhry = 0.0 <!-- see Unixbench page on wiki --><br />
<!-- Features --><br />
<!-- the following status_* questions should be answered with Y for yes, P for partial, N for no, - for N/A or unavailable, or left blank for untested or unknown --><br />
| status_usbnet = <br />
| status_flashing = -<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = <br />
| status_xwayland = Y<br />
| status_fde = <br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_audio = Y<br />
| status_bluetooth = <br />
| status_camera = <br />
| status_gps = -<br />
| status_mobiledata = -<br />
| status_sms = -<br />
| status_calls = -<br />
| status_otg = <br />
| status_nfc = -<br />
<!-- Sensors --><br />
| status_accel = Y<br />
| status_magnet = -<br />
| status_light = -<br />
| status_proximity = -<br />
| status_hall = -<br />
| status_barometer = -<br />
| status_powersensor = Y<br />
<!-- Misc --><br />
| status_cameraflash = Y<br />
| status_keyboard = Y<br />
| status_touchpad = Y<br />
| status_usba = -<br />
| status_hdmidp = <!-- Video and audio output with HDMI or DisplayPort works --><br />
| status_irtx = -<br />
| status_irrx = -<br />
| status_stylus = -<br />
| status_haptics = -<br />
| status_ethernet = -<br />
| status_fossbootloader = Y<br />
| status_uboot = Y<br />
| status_uboot_primary = Y<br />
| status_uboot_mainline = Y<br />
| status_uboot_internalstorage = Y<br />
| status_uboot_sd = Y<br />
| status_uboot_usbhost =<br />
| status_uboot_usbperipheral =<br />
| status_uboot_screen =<br />
| status_uboot_keyboard =<br />
| status_uboot_buttons =<br />
| booting = yes <!-- The device is booting at all, can be yes/no *IMPORTANT* --><br />
| status = <!-- Text displayed in the "not booting" table on the Devices page , e.g "kernel compiles, doesn't boot" --><br />
}}<br />
<br />
== Contributors ==<br />
* Danct12<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
== How to enter flash mode ==<br />
The device boot priority is SPI -> EMMC -> SD. Pine64 ships a debug board with the tablet which has a switch to disable EMMC and SPI, forcing the device to boot from SD.<br />
<br />
This adapter needs to be plugged to the bottom port (the charging port).<br />
<br />
== Installation ==<br />
Use [[pmbootstrap]] to build your own installation image.<br />
<br />
<source lang="shell-session"><br />
$ pmbootstrap init<br />
$ pmbootstrap install --fde<br />
</source><br />
<br />
Now you can use Jumpdrive to flash to eMMC or to an SD card directly using:<br />
<br />
<source lang="shell-session"><br />
$ pmbootstrap install --sdcard=/dev/CARD<br />
</source><br />
<br />
== See also ==<br />
<!--<br />
Link to related GitLab issues or merge requests like the following (replace CHANGEME with the ID, e.g. 1234):<br />
* {{MR|CHANGEME|pmaports}} Initial merge request<br />
* {{issue|CHANGEME|pmaports}} Some related issue<br />
You can also add normal web links:<br />
* [https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100 Replicant wiki page]<br />
--><br />
* {{MR|4208|pmaports}} Initial draft<br />
<!--<br />
If you manage to get your device packages merged, uncomment links below and change DEVICE_CODENAME with the actual one.<br />
* {{Device package|DEVICE_CODENAME}}<br />
* {{Kernel package|DEVICE_CODENAME}}<br />
--></div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=46999User:JulianGro2023-07-28T11:42:39Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|PINE64_PineTab_2_(pine64-pinetab2)|8GB version}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=46998User:JulianGro2023-07-28T11:42:22Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|Pine64_PineTab2_(pine64-pinetab2)|8GB version}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=46997User:JulianGro2023-07-28T11:41:50Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|Pine64_PineTab2_(pine64-pinetab2)| 8GB version}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=32244User:JulianGro2022-11-02T21:59:59Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)| }}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=32025User:JulianGro2022-10-28T11:47:19Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Sony Xperia XZ1 Compact (sony-lilac)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@juliangro:overte.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Sony_Xperia_XZ1_Compact_(sony-lilac)|Currently waiting for screen replacement. Camera is damaged.}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)| }}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=25381User:JulianGro2022-01-31T00:38:43Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@motofckr9k:matrix.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|two wt86047 2GB, one for edge and one for stable}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)|Damaged on arrival (has trouble starting)}}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=24397User:JulianGro2021-12-24T23:20:00Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@motofckr9k:matrix.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)|Damaged on arrival (has trouble starting)}}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Nokia_Lumia_630_(nokia-moneypenny)| dual SIM, working condition, not used for anything, stock Windows Phone 8.1}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=24396User:JulianGro2021-12-24T23:04:34Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@motofckr9k:matrix.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)|Damaged on arrival (has trouble starting)}}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_Galaxy_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei_IDEOS_X3_U8510_(unknown)|working condition, not used for anything, stock Android}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=24395User:JulianGro2021-12-24T23:03:42Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
{{User Matrix|@motofckr9k:matrix.org}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)|Damaged on arrival (has trouble starting)}}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}<br />
{{Owns device|Samsung_S6_Edge_(samsung-zeroltexx)|working condition, not used for anything, stock Android}}<br />
{{Owns device|Huawei IDEOS X3 (U8510)_(unknown)|working condition, not used for anything, stock Android}}<br />
<br />
If you are interested in a device I am not using, feel free to contact me on Matrix and we can probably arrange something.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Qualcomm_Snapdragon_410/412_(MSM8916)&diff=20543Qualcomm Snapdragon 410/412 (MSM8916)2021-07-08T11:56:07Z<p>JulianGro: /* CPU */ Add working branch in case someone wants to take a look.</p>
<hr />
<div>{{Infobox soc<br />
| name = MSM8916<br />
| image = File:Qualcomm_MSM8916.jpg<br />
| imagecaption = MSM8916 in ceramic BGA package<br />
| manufacturer = Qualcomm<br />
| arch = aarch64<br />
| cpu = 4x 1.2/1.4 GHz ARM Cortex-A53<br />
| gpu = Adreno 306<br />
| year = 2014<br />
| process = 28<br />
| mainline = yes<br />
| status_cpu = Y<br />
| status_uart = Y<br />
| status_storage = Y<br />
| status_usb = Y<br />
| status_display = Y<br />
| status_gpu = Y<br />
| status_pinctrl = Y<br />
| status_i2c = Y<br />
| status_audio = Y<br />
| status_video = Y<br />
| status_thermal = Y<br />
| status_wifi = Y<br />
| status_bluetooth =Y<br />
| status_modem = Y<br />
| status_gps = Y<br />
| status_camera = P<br />
|<br />
| <!-- Please ignore these for now, they are not used --><br />
| clock = v4.1-rc1 (ioommu, gpu, sound: v4.4-rc1)<br />
| pinctrl = v4.0-rc1<br />
| serial = v4.1-rc1<br />
| gpu_something = Adreno A306 (v4.2-rc1 / v4.14-rc1)<br />
| sdhci = v4.3-rc1<br />
| usb_device = v4.3-rc1<br />
| usb_host = v4.3-rc1<br />
| usb_otg = v4.3-rc1<br />
| sound = v4.2-rc1<br />
| audio_codec = v4.10-rc1<br />
| pmic = pm8916 (v4.5-rc1)<br />
| cpuidle = PSCI* (v4.8-rc1)<br />
| display_conroller-mipi = v4.9-rc1<br />
| wifi = wcnss (v4.11-rc1)<br />
| bluetooth = wcnss (v4.11-rc1)<br />
| iommu = v4.14-rc1<br />
| video_accel = venus (v4.14-rc1)<br />
| cpufreq = v4.17-rc1<br />
| cam_controller = v5.0-rc1*<br />
}}<br />
<br />
[https://www.qualcomm.com/products/snapdragon-processors-410 MSM8916]/[https://www.qualcomm.com/products/apq8016e APQ8016] (or Snapdragon 410) is Qualcomm SoC released in 2014, with great mainline support orginally added for the [https://www.96boards.org/product/dragonboard410c/ Dragonboard 410c]. There is a slightly higher clocked variant (CPU cores up to 1.4 GHz) available as Snapdragon 412.<br />
<br />
<br />
== Devices ==<br />
=== MSM8916 (Snapdragon 410) ===<br />
{{#cargo_query:<br />
tables=Devices<br />
|fields=CONCAT( '[[', _pageName, '|',Manufacturer,' ',Name,']]' )=Device,Codename,StatusMainline=Mainline,Category<br />
|order by=Devices.Manufacturer, Devices.Name<br />
|format=table<br />
|limit=9999<br />
|where=Booting and Devices.chipset='Qualcomm MSM8916 Snapdragon 410'<br />
|more results text=<br />
}}<br />
=== APQ8016 (Snapdragon 410, WiFi-only) ===<br />
{{#cargo_query:<br />
tables=Devices<br />
|fields=CONCAT( '[[', _pageName, '|',Manufacturer,' ',Name,']]' )=Device,Codename,StatusMainline=Mainline,Category<br />
|order by=Devices.Manufacturer, Devices.Name<br />
|format=table<br />
|limit=9999<br />
|where=Booting and Devices.chipset='Qualcomm APQ8016 Snapdragon 410'<br />
|more results text=<br />
}}<br />
=== MSM8916v2 (Snapdragon 412) ===<br />
{{#cargo_query:<br />
tables=Devices<br />
|fields=CONCAT( '[[', _pageName, '|',Manufacturer,' ',Name,']]' )=Device,Codename,StatusMainline=Mainline,Category<br />
|order by=Devices.Manufacturer, Devices.Name<br />
|format=table<br />
|limit=9999<br />
|where=Booting and Devices.chipset='Qualcomm MSM8916v2 Snapdragon 412'<br />
|more results text=<br />
}}<br />
<br />
== Installation ==<br />
All MSM8916 devices in postmarketOS use [https://github.com/msm8916-mainline/lk2nd lk2nd] as secondary bootloader. It does '''not''' replace the stock bootloader. Instead, it is flashed in place of an Android boot image, so that the stock bootloader will first load lk2nd instead of a regular Linux kernel. The advantage of this approach is that there is a consistent installation procedure for all MSM8916 devices (once lk2nd was installed), and various device-specific quirks can be handled within lk2nd.<br />
<br />
=== Installing lk2nd ===<br />
[[File:Lk2nd-crackling-0.8.2-no-luck.jpg|thumb|lk2nd fastboot screen example]]<br />
The instructions for installing lk2nd vary from device to device, so please check your device wiki page for instructions. Once you have lk2nd installed and working, you can proceed with the common installation procedure documented below.<br />
<br />
=== Installation from pre-built image ===<br />
The MSM8916-based devices in the <code>community</code> category (see table above) have pre-built images that can be easily installed without [[pmbootstrap]]. There are different images (e.g. [[Phosh]] or [[Plasma Mobile]]) to choose from and they are updated every week. If you want more control about the installation (e.g. no proprietary firmware, different UI, extra packages, ...) consider using the [[pmbootstrap]] installation method instead (documented further below).<br />
<br />
First, download the right image for your device:<br />
<br />
* '''[https://images.postmarketos.org/bpo/edge/ edge]''' bleeding edge version (has latest features, but may break more often).<br />
* '''[https://images.postmarketos.org/bpo/v21.03/ v21.03]''' changes less often, more stability<br />
<br />
Pick the latest date, choose UI between [[Phosh]] or [[Plasma Mobile]] and download 2 files:<br />
# <code><date>-<release>-<ui>-<device>-mainline-modem.img.xz</code><br />
# <code><date>-<release>-<ui>-<device>-mainline-modem-boot.img.xz</code><br />
<br />
Unpack those files (<code>unxz *-<device>-*.img.xz</code>) and with phone in "lk2nd mode" flash those accordingly, smaller <code>*-boot.img</code> image to '''boot''' partition, the larger one to '''userdata''' partition, and do not forget to erase system partition to prevent accidental booting from it. For example:<br />
<br />
$ unxz 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem.img.xz<br />
$ unxz 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem-boot.img.xz<br />
$ fastboot flash boot 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem-boot.img<br />
$ fastboot flash userdata 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem.img<br />
$ fastboot erase system<br />
$ fastboot reboot<br />
<br />
The default username is <code>user</code>, and the default password is <code>147147</code>. Enjoy postmarketOS!<br />
<br />
=== Installation using pmbootstrap ===<br />
Using [[pmbootstrap]] you can generate your own fully customized images, with many more UIs to choose from and other options. However, at the moment it works only on Linux systems.<br />
<br />
# [[Installing_pmbootstrap|Install pmbootstrap]]<br />
# Follow the [[Installation guide]] :<br />
## <code>pmbootstrap init</code> (choose your device, UI you like and other options)<br />
## <code>pmbootstrap install</code><br />
# Put phone into "lk2nd mode", and continue<br />
## <code>pmbootstrap flasher flash_kernel</code><br />
# It is recommended to install large phone UIs like [[Plasma Mobile]] or [[Phosh]] to <code>userdata</code> partition, because system partition is too small for them:<br />
## <code>pmbootstrap flasher flash_rootfs --partition userdata</code><br />
## <code>fastboot erase system</code><br />
# <code>fastboot reboot</code><br />
<br />
Enjoy postmarketOS!<br />
<br />
== Audio ==<br />
=== PulseAudio ===<br />
Audio should work out of the box with PulseAudio. In your favorite PulseAudio mixer (e.g. <code>pulsemixer</code> on the command line) you can select the output port to use (e.g. Speaker, Earpiece, ...).<br />
<br />
'''Note:''' If you use <code>pulsemixer</code> you can switch between output/input configuration with <code>F1</code>/<code>F2</code>. To select a particular output/input device press <code>Enter</code> and choose <code>Set port</code>.<br />
<br />
=== ALSA ===<br />
Everything is muted by default and must be enabled through alsaucm. Unfortunately, the tool is not very user-friendly.<br />
<br />
$ alsaucm -i -c hw:0<br />
set _verb HiFi<br />
set _enadev <device><br />
<br />
where <code><device></code> is one of <code>Speaker</code>, <code>Earpiece</code>, <code>Headphones</code>, <code>Mic1</code>, <code>Mic2</code> or <code>Headset</code>.<br />
alsaucm does not track which devices are already enabled, therefore it is possible to produce combinations that won't work properly (e.g. <code>Headphones</code>+<code>Earpiece</code>). To switch between devices, the old device first needs to be re-enabled and then disabled:<br />
<br />
$ alsaucm -i -c hw:0<br />
set _verb HiFi<br />
set _enadev OLD<br />
set _disdev OLD<br />
set _enadev NEW<br />
<br />
{{note|'''Warning:''' alsaucm sets the volume to maximum by default. It is possible to increase the volume even further, however, this may lead to permanent damage to your speaker!}}<br />
<br />
== Modem ==<br />
To use the modem, select the <code>mainline-modem</code> kernel instead of <code>mainline</code>, and make sure to agree to the usage of non-free firmware (required for the modem).<br />
<br />
Note that this changes the way audio is routed on the device:<br />
* Without modem, audio is routed directly to the audio hardware, and works without the need for non-free firmware.<br />
* With modem running, audio must be routed through the audio DSP, which requires non-free firmware.<br />
<br />
Therefore you should choose the kernel depending whether or not you would like to run the modem.<br />
<br />
For usage instructions, see [[Modem]].<br />
<br />
=== GNSS (GPS) ===<br />
On Qualcomm devices GNSS is usually part of the modem. ModemManager and libqmi (with qmicli) can configure and use the modem Location service. <br />
There is a [https://gitlab.com/gpsd/gpsd/-/merge_requests/139/commits WIP MR to the gpsd] that adds the support for GNSS via Qualcomm modems. Alternatively you can run gpsd to read NMEA output from qmicli. <br />
<br />
An example of that would be the following. (You need ModemManager to run and make sure that CID is correct)<br />
<br />
$ sudo qmicli -pd /dev/modem --loc-start --client-no-release-cid<br />
$ sudo qmicli -pd /dev/modem --loc-follow-nmea --client-cid=2 | gpsd -bnN /dev/stdin<br />
<br />
<br />
== CPU ==<br />
While the specifications of MSM8916 have 1200 MHz as max clock speed, currently the max MHz the CPU will operate with pmOS is 998 MHz. There are WIP changes available to make it work (https://github.com/Minecrell/linux/commits/cpr59).<br />
<br />
== Mainlining ==<br />
* MSM8916 is a great platform to get started with mainlining! It has a dedicated [[MSM8916 Mainlining]] guide that explains how to get started.</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Xiaomi_Redmi_2_(xiaomi-wt88047)&diff=20531Xiaomi Redmi 2 (xiaomi-wt88047)2021-07-08T03:15:14Z<p>JulianGro: Add list of cameras supported by the original Android kernel and information about their use and support.</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = Xiaomi<br />
| name = Redmi 2<br />
| codename = xiaomi-wt88047 (wingtech-wt88047)<br />
| image = File:Xiaomi_wt88047_plamo.png<br />
| imagecaption = Xiaomi Redmi 2 Prime running Plasma Mobile<br />
| releaseyear = 2015<br />
| category = community<br />
| originalsoftware = MIUI 6.0 (Android 4.4.4)<br />
| chipset = Qualcomm MSM8916 Snapdragon 410<br />
| cpu = Quad-core 1.2 GHz Cortex-A53<br />
| gpu = Adreno 306<br />
| storage = 8 GB / 16 GB<br />
| display = 720 x 1280<br />
| memory = 1 GB / 2 GB<br />
| architecture = aarch64<br />
| whet_dhry = 918.9<br />
| status_usbnet = Y<br />
| status_flashing = Y<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = Y<br />
| status_xwayland = Y<br />
| status_fde = Y<br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_accel = Y<br />
| status_audio = Y<br />
| status_bluetooth = Y<br />
| status_camera = N<br />
| status_gps = Y<br />
| status_mobiledata = Y <br />
| status_sms = Y<br />
| status_calls = Y<br />
| status_otg = Y<br />
| status_nfc = -<br />
| booting = yes<br />
}}<br />
<br />
== Contributors ==<br />
* sylvieon<br />
* [[User:Minecrell]] (mainline port)<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
== How to enter flash mode ==<br />
* '''Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons.<br />
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}.<br />
* '''lk2nd Recovery''': Power on the device. After it vibrates, hold {{Button|Volume Up}}.<br />
<br />
== Installation ==<br />
# Make sure you have latest firmware flashed. Follow the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] until (including) ''Updating firmware''.<br />
# Check if you have <code>wt88047</code> or <code>wt86047</code> (explained in the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] in ''Updating firmware'').<br />
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd]. Although Xiaomi already provides a Fastboot interface, lk2nd contains various quirks for booting mainline.<br />
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]]. (Flash from lk2nd Fastboot, not the stock Fastboot.)<br />
#* If you want to use the modem, select the <code>mainline-modem-<model></code> kernel, where model is either <code>wt88047</code> or <code>wt86047</code>, as checked above.<br />
<br />
== Audio ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Audio]].<br />
<br />
== Camera ==<br />
Last checked in kernel 5.13<br />
{| class="wikitable"<br />
! Manufacturer<br />
! Originally supported<br />
! Megapixel<br />
! Known used<br />
! Mainlined<br />
! Working<br />
|-<br />
| OmniVision<br />
| ov13850<br />
| 13.0 MP<br />
| yes<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov13853_q13853a<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l2<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8_qtech<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3l8_sunny<br />
| 13.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8858<br />
| 8.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_a11<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_a11_sunny<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_q8v18a<br />
| 8.0 MP<br />
| yes<br />
| driver ov8865?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov8865_qtech<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov8865_sunny<br />
| 8.0 MP<br />
| no<br />
| driver ov8865?<br />
| -<br />
|-<br />
| Samsung<br />
| s5k3h7_8916<br />
| 8.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| Sony<br />
| imx219_q8n13a<br />
| 8.0 MP<br />
| yes<br />
| driver imx219?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov5670_86001<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_a11<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_a11_sunny<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b<br />
| 5.0 MP<br />
| yes<br />
| driver 5670?<br />
| untested<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_lenplus<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_qtech<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| OmniVision<br />
| ov5670_q5v41b_sunny<br />
| 5.0 MP<br />
| no<br />
| driver 5670?<br />
| -<br />
|-<br />
| Samsung<br />
| s5k5e8<br />
| 5.0 MP<br />
| no<br />
| no<br />
| -<br />
|-<br />
| GalaxyCore<br />
| gc2355_8916<br />
| 2.0 MP<br />
| yes<br />
| no<br />
| -<br />
|-<br />
| OmniVision<br />
| ov2680<br />
| 2.0 MP<br />
| no<br />
| yes<br />
| -<br />
|-<br />
| OmniVision<br />
| ov2680_5987fhq<br />
| 2.0 MP<br />
| yes<br />
| driver ov2680?<br />
| untested<br />
|-<br />
| SuperPix<br />
| sp2508<br />
| 2.0 MP<br />
| no<br />
| no<br />
| -<br />
|}<br />
<br />
== Modem ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Modem]].<br />
<br />
== See also ==<br />
* {{MR|62|pmaports}} Initial merge request<br />
* {{MR|1604|pmaports}} Mainline merge request<br />
* {{Device package|xiaomi-wt88047|community}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Xiaomi_Redmi_2_(xiaomi-wt88047)&diff=20415Xiaomi Redmi 2 (xiaomi-wt88047)2021-07-04T18:11:33Z<p>JulianGro: Mark camera as broken as it doesn't seem to show up in /dev/v4l/ and both megapixels and plasma-camera cannot use it.</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = Xiaomi<br />
| name = Redmi 2<br />
| codename = xiaomi-wt88047 (wingtech-wt88047)<br />
| image = File:Xiaomi_wt88047_plamo.png<br />
| imagecaption = Xiaomi Redmi 2 Prime running Plasma Mobile<br />
| releaseyear = 2015<br />
| category = community<br />
| originalsoftware = MIUI 6.0 (Android 4.4.4)<br />
| chipset = Qualcomm MSM8916 Snapdragon 410<br />
| cpu = Quad-core 1.2 GHz Cortex-A53<br />
| gpu = Adreno 306<br />
| storage = 8 GB / 16 GB<br />
| display = 720 x 1280<br />
| memory = 1 GB / 2 GB<br />
| architecture = aarch64<br />
| whet_dhry = 918.9<br />
| status_usbnet = Y<br />
| status_flashing = Y<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = Y<br />
| status_xwayland = Y<br />
| status_fde = Y<br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_accel = Y<br />
| status_audio = Y<br />
| status_bluetooth = Y<br />
| status_camera = N<br />
| status_gps = Y<br />
| status_mobiledata = Y <br />
| status_sms = Y<br />
| status_calls = Y<br />
| status_otg = Y<br />
| status_nfc = -<br />
| booting = yes<br />
}}<br />
<br />
== Contributors ==<br />
* sylvieon<br />
* [[User:Minecrell]] (mainline port)<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
== How to enter flash mode ==<br />
* '''Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons.<br />
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}.<br />
* '''lk2nd Recovery''': Power on the device. After it vibrates, hold {{Button|Volume Up}}.<br />
<br />
== Installation ==<br />
# Make sure you have latest firmware flashed. Follow the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] until (including) ''Updating firmware''.<br />
# Check if you have <code>wt88047</code> or <code>wt86047</code> (explained in the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] in ''Updating firmware'').<br />
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd]. Although Xiaomi already provides a Fastboot interface, lk2nd contains various quirks for booting mainline.<br />
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]]. (Flash from lk2nd Fastboot, not the stock Fastboot.)<br />
#* If you want to use the modem, select the <code>mainline-modem-<model></code> kernel, where model is either <code>wt88047</code> or <code>wt86047</code>, as checked above.<br />
<br />
== Audio ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Audio]].<br />
<br />
== Modem ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Modem]].<br />
<br />
== See also ==<br />
* {{MR|62|pmaports}} Initial merge request<br />
* {{MR|1604|pmaports}} Mainline merge request<br />
* {{Device package|xiaomi-wt88047|community}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Xiaomi_Redmi_2_(xiaomi-wt88047)&diff=20325Xiaomi Redmi 2 (xiaomi-wt88047)2021-07-03T02:57:22Z<p>JulianGro: Add picture of phone</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = Xiaomi<br />
| name = Redmi 2<br />
| codename = xiaomi-wt88047 (wingtech-wt88047)<br />
| image = File:Xiaomi_wt88047_plamo.png<br />
| imagecaption = Xiaomi Redmi 2 Prime running Plasma Mobile<br />
| releaseyear = 2015<br />
| category = community<br />
| originalsoftware = MIUI 6.0 (Android 4.4.4)<br />
| chipset = Qualcomm MSM8916 Snapdragon 410<br />
| cpu = Quad-core 1.2 GHz Cortex-A53<br />
| gpu = Adreno 306<br />
| storage = 8 GB / 16 GB<br />
| display = 720 x 1280<br />
| memory = 1 GB / 2 GB<br />
| architecture = aarch64<br />
| whet_dhry = 918.9<br />
| status_usbnet = Y<br />
| status_flashing = Y<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = Y<br />
| status_xwayland = Y<br />
| status_fde = Y<br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_accel = Y<br />
| status_audio = Y<br />
| status_bluetooth = Y<br />
| status_camera =<br />
| status_gps = Y<br />
| status_mobiledata = Y <br />
| status_sms = Y<br />
| status_calls = Y<br />
| status_otg = Y<br />
| status_nfc = -<br />
| booting = yes<br />
}}<br />
<br />
== Contributors ==<br />
* sylvieon<br />
* [[User:Minecrell]] (mainline port)<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
== How to enter flash mode ==<br />
* '''Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons.<br />
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}.<br />
* '''lk2nd Recovery''': Power on the device. After it vibrates, hold {{Button|Volume Up}}.<br />
<br />
== Installation ==<br />
# Make sure you have latest firmware flashed. Follow the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] until (including) ''Updating firmware''.<br />
# Check if you have <code>wt88047</code> or <code>wt86047</code> (explained in the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] in ''Updating firmware'').<br />
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd]. Although Xiaomi already provides a Fastboot interface, lk2nd contains various quirks for booting mainline.<br />
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]]. (Flash from lk2nd Fastboot, not the stock Fastboot.)<br />
#* If you want to use the modem, select the <code>mainline-modem-<model></code> kernel, where model is either <code>wt88047</code> or <code>wt86047</code>, as checked above.<br />
<br />
== Audio ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Audio]].<br />
<br />
== Modem ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Modem]].<br />
<br />
== See also ==<br />
* {{MR|62|pmaports}} Initial merge request<br />
* {{MR|1604|pmaports}} Mainline merge request<br />
* {{Device package|xiaomi-wt88047|community}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=File:Xiaomi_wt88047_plamo.png&diff=20324File:Xiaomi wt88047 plamo.png2021-07-03T02:55:31Z<p>JulianGro: Xiaomi Redmi 2 Prime running Plasma Mobile</p>
<hr />
<div>== Summary ==<br />
Xiaomi Redmi 2 Prime running Plasma Mobile<br />
== Licensing ==<br />
{{self|cc-zero}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=Xiaomi_Redmi_2_(xiaomi-wt88047)&diff=20323Xiaomi Redmi 2 (xiaomi-wt88047)2021-07-03T01:41:51Z<p>JulianGro: Add unixbench results</p>
<hr />
<div>{{Infobox device<br />
| manufacturer = Xiaomi<br />
| name = Redmi 2<br />
| codename = xiaomi-wt88047 (wingtech-wt88047)<br />
| image = <br />
| imagecaption = <br />
| releaseyear = 2015<br />
| category = community<br />
| originalsoftware = MIUI 6.0 (Android 4.4.4)<br />
| chipset = Qualcomm MSM8916 Snapdragon 410<br />
| cpu = Quad-core 1.2 GHz Cortex-A53<br />
| gpu = Adreno 306<br />
| storage = 8 GB / 16 GB<br />
| display = 720 x 1280<br />
| memory = 1 GB / 2 GB<br />
| architecture = aarch64<br />
| whet_dhry = 918.9<br />
| status_usbnet = Y<br />
| status_flashing = Y<br />
| status_touch = Y<br />
| status_screen = Y<br />
| status_wifi = Y<br />
| status_xwayland = Y<br />
| status_fde = Y<br />
| status_mainline = Y<br />
| status_battery = Y<br />
| status_3d = Y<br />
| status_accel = Y<br />
| status_audio = Y<br />
| status_bluetooth = Y<br />
| status_camera =<br />
| status_gps = Y<br />
| status_mobiledata = Y <br />
| status_sms = Y<br />
| status_calls = Y<br />
| status_otg = Y<br />
| status_nfc = -<br />
| booting = yes<br />
}}<br />
<br />
== Contributors ==<br />
* sylvieon<br />
* [[User:Minecrell]] (mainline port)<br />
<br />
== Users owning this device ==<br />
{{Device owners}}<br />
<br />
== How to enter flash mode ==<br />
* '''Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons.<br />
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}.<br />
* '''lk2nd Recovery''': Power on the device. After it vibrates, hold {{Button|Volume Up}}.<br />
<br />
== Installation ==<br />
# Make sure you have latest firmware flashed. Follow the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] until (including) ''Updating firmware''.<br />
# Check if you have <code>wt88047</code> or <code>wt86047</code> (explained in the [https://wiki.lineageos.org/devices/wt88047/install LineageOS installation guide] in ''Updating firmware'').<br />
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd]. Although Xiaomi already provides a Fastboot interface, lk2nd contains various quirks for booting mainline.<br />
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]]. (Flash from lk2nd Fastboot, not the stock Fastboot.)<br />
#* If you want to use the modem, select the <code>mainline-modem-<model></code> kernel, where model is either <code>wt88047</code> or <code>wt86047</code>, as checked above.<br />
<br />
== Audio ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Audio]].<br />
<br />
== Modem ==<br />
See [[Qualcomm_Snapdragon_410_(MSM8916)#Modem]].<br />
<br />
== See also ==<br />
* {{MR|62|pmaports}} Initial merge request<br />
* {{MR|1604|pmaports}} Mainline merge request<br />
* {{Device package|xiaomi-wt88047|community}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=20322User:JulianGro2021-07-02T23:33:48Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}<br />
{{Owns device|PINE64_RockPro64_(pine64-rockpro64)|Damaged on arrival (has trouble starting)}}<br />
{{Owns device|BQ_Aquaris_M10_(bq-cooler)|runs Ubuntu Touch, cracked screen and no replacements available}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=20318User:JulianGro2021-07-02T17:21:21Z<p>JulianGro: </p>
<hr />
<div>Hello World, I am Julian from Germany.<br />
<br />
<div style="float: right;"><br />
{{User main device|Xiaomi_Redmi_2 (xiaomi-wt88047)}}<br />
{{User GitLab|JulianGro}}<br />
</div><br />
<br />
{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=16692User:JulianGro2021-01-22T14:28:06Z<p>JulianGro: </p>
<hr />
<div>{{My devices}}<br />
{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}</div>JulianGrohttps://wiki.postmarketos.org/index.php?title=User:JulianGro&diff=16691User:JulianGro2021-01-22T14:27:35Z<p>JulianGro: Created page with "{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}"</p>
<hr />
<div>{{Owns device|Xiaomi_Redmi_2_(xiaomi-wt88047)|wt86047 2GB}}</div>JulianGro