nyuuzyou/wikis huggingface dataset:
OnePlus 9 & 9 Pro (oneplus-lemonade & oneplus-lemonadep)

== Contributors ==
robbbbbb, aissa, paweier
== Users owning this device ==
== How to enter flash mode ==
TLDR:
 1. Enable Developer Options: Settings -> About Phone -> Click on "Build number" 9 times
 2. OEM unlocking: System -> Developer options -> Enable "OEM unlocking"
 3. Unlock the bootloader: Unplug and turnoff the device -> Hold volume up&down with power simultaneously -> fastboot logo should appear
 4. Finally: open terminal -> fastboot oem unlock
Non-TLDR: Unlocking and rooting the phone
== Installation ==
BACKUP YOUR DEVICE FIRST especially (but not limited to) the dtbo, super, and boot partitions (Backing partitions with ADB).
You can try pulling original super.img to restore to Android later:
 adb pull /dev/block/by-name/super super.img
Install and init pmbootstrap first (installation guide)
 
 sudo apt install python3-pip
 pip3 install pmbootstrap
 pmbootstrap init
(Optional) Clone the downstream codebase, and rebase with master:
 cd /path/to/your/pmaports (for example: /home/administrator/.local/var/pmbootstrap/cache_git/pmaports)
 git remote add downstream https://gitlab.com/Robbbbbb/pmaports.git
 git fetch downstream && git checkout oneplus-lemonade
 git rebase master
(Optional) Update the checksums when the package is changed:
 pmbootstrap checksum linux-oneplus-lemonade
Compile the kernel for aarch64 and flash rootfs to the super partition:
 pmbootstrap build device-oneplus-lemonade
 pmbootstrap install
 pmbootstrap flasher flash_rootfs
 pmbootstrap flasher flash_dtbo
 pmbootstrap flasher flash_kernel
 pmbootstrap flasher boot
SSH into the device (Full instructions):
 ssh user@172.16.42.1
== See also ==
* Initial merge request: 
* pmaports fork: 
* Mainline linux fork: current WIP branch
* Matrix room: sm8350 mainlining
OnePlus Nord (oneplus-avicii)

== Contributors ==
* rasp
== Maintainer(s) ==
* rasp
== Users owning this device ==
== How to enter flash mode ==
=== Via ADB ===
* adb reboot fastboot
* (a menu appears, that says 'fastbootd')
* English -> Advanced -> Reboot to fastboot -> Reboot to fastboot (confirm)
=== Via "Advanced Reboot" ===
* make sure Settings -> System -> Developer Tools -> Advanced Reboot is enabled
* hold power+volup button (or just power if you enabled it) and choose Bootloader
== Installation ==
* Note that currently the device works to a debug-shell in initfs, so you can install boot.img, but not rootfs. Also you can just fastboot boot instead
* This is an A/B device, so you leave your working slot and play on the other:
 pmbootstrap chroot -- fastboot reboot fastboot # go from fastboot to fastbootD (fastbootd is userspace, sees system partitions)
 pmbootstrap chroot -- fastboot getvar current-slot # should display a or b
 pmbootstrap chroot -- fastboot set_active a # or b, to change active slot 
* After you ensure you have pmbootstrap up and running
 pmbootstrap init # choose avicii, downstream kernel
 pmbootstrap install
 pmbootstrap initfs hook_add debug-shell
 pmbootstrap flasher flash_vbmeta
 pmbootstrap chroot -- fastboot erase dtbo
 # and now you can either boot
 pmbootstrap flasher boot
 # OR flash boot.img
 pmbootstrap flasher flash_kernel
== Other notes ==
== See also ==
* device info
* lineageos device repo
* lineageos vendor repo
* vendor kernel repo
* 
*
OnePlus Nord N100 (oneplus-billie2)

== Contributors ==
* ichernev
* BenTheTechGuy
== Users owning this device ==
== How to enter flash mode ==
=== Via ADB ===
adb reboot bootloader
=== Via hardware buttons ===
Hold , , and at boot.
=== Via recovery mode ===
* If you're not already in recovery mode, run adb reboot recovery or hold and at boot.
* English -> Advanced -> Reboot to fastboot -> Reboot to fastboot (confirm)
=== Via "Advanced Reboot" ===
* make sure Settings -> System -> Developer Tools -> Advanced Reboot is enabled
* hold power and choose bootloader
== Installation ==
This device is in pmaports, but the downstream kernel doesn't boot and now fails to compile. There is work to mainline the device, but it's still early days. The source and a blog with some info are available below.
== See also ==
* Initial merge request
* Phone info
* Downstream vendor kernel repo
* WIP mainline fork
* Mainlining blog
* 
* Current kernel package (downstream, doesn't compile or boot)
OnePlus Nord N10 5G (oneplus-billie)

== Contributors ==
*HenriDellal
*Rob Wilson
== Users owning this device ==
== How to enter flash mode ==
Hold Volume Down + Power for 5 seconds
== Installation ==
# fastboot erase dtbo
# fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img
# pmbootstrap init
# pmbootstrap install
# pmbootstrap flasher flash_kernel
# pmbootstrap flasher flash_rootfs --partition super
== Device hardware information and support ==
Hardware information
=== USB Networking ===
==== Mainline ====
USB doesn't appear
==== Downstream ====
SSH works with RNDIS
=== Internal storage ===
==== Mainline ====
Doesn't work
==== Downstream ====
Works
=== Screen ===
==== Mainline ====
SimpleFB works, there is a driver for hx83112_tianma_fhd_video in mainline, it's untested yet.
==== Downstream ====
Doesn't work, most likely to be a bug in downstream DRM
== See also ==
* (mainline)
OnePlus Watch 2 (oneplus-opwwe231)

== Bootloader unlock ==
To begin using the device you unfortunately need to set it up through the OHealth app on a full fat Android 8+ device over Bluetooth. The charging base and the pogo pins on the watch back side are USB data transfer enabled. For the rest follow https://twitter.com/MishaalRahman/status/1762141667086205000 if you're not familiar with the usual Android process.
== How to enter flash mode ==
This is the biggest mystery with the device so far. Only e.g. adb reboot bootloader + fastboot flash recovery ... reboot recovery works for "safely" testing at least a custom initramfs in header v4 wrapper (with fully stock kernel from boot/vendor_boot). fastboot boot is an unknown command and placing a kernel in recovery.img either in header v4 or combining it all to a header v2 one simply results in the device not booting the flashed image and just booting to fastboot mode immediately every time on subsequent boots until a recovery image with just initramfs is restored.
I'd rather not flash any of the boot related partitions for now (except recovery which also is just reflashed on WearOS boot lol) until I know exactly how the watch will behave in case it enters a bootloop, just stays "booted" without a way for me to interact with it or I otherwise have no way to reboot the watch to bootloader mode manually.
== Boot related partitions ==
All of the following contain a header v4 bootimg.
- 96 MiB boot: has just uncompressed Linux kernel ARM64 boot executable Image, bl may work with compressed (test gzip/lz4) ones too if needed later, stock ~44 MiB
- 8 MiB init_boot: has just gzipped base initramfs.cpio, stock ~1 MiB
- 96 MiB vendor_boot: has the usual modern suspects like vendor initramfs overlay (including device-specific GKI kernel modules), dtb etc, stock ~7 MiB
- 68 MiB recovery: has just gzipped recovery initramfs.cpio, stock ~10 MiB
== Community Info ==
=== postmarketOS users that own the device ===
== See also ==
* Dump of latest current downstream firmware (mostly complete)
* Downstream v5.15 Android 13 kernel source
* Full device specifications as listed on gsmarena
* OnePlus official device page
OnePlus X (oneplus-onyx)

== Contributors ==
* magmastonealex
* symmetrist
== Device owners ==
== What works ==
with LineageOS-built kernel
* Boot with LineageOS kernel (with postmarketOS configuration)
* Weston
* Touchscreen
With pmOS built kernel
* Boot
* Touchscreen (but NOT display)
== What does not work ==
* Everything else
== How to enter flash mode ==
Hold power button and volume up while device is turned off
== Installation ==
Fastboot installation fails with an error like this.
Android recovery installation via sideload is recommended, as explained here.
== Photos ==
== Links ==
* Initial toolchain problems (now fixed)
* 
* 
== See also ==
* Lineage-20.0-OTA Most up to date LineageOS ROM
Onn Tablet Gen 3 (onn-kelvin)

The Onn Tablet Gen 3 is a low-end (The 7" model is only $50) android tablet by Walmart with decent hardware.
It currently cannot boot into the postmarketOS initramfs.
This port is part of the lowendlibre project.
== Contributors ==
hexaheximal
== Users owning this device ==
== How to enter flash mode ==
To use mtkclient, hold down the power button until it shuts off. It should then enter preloader mode within a few seconds.
For fastboot, hold down Volume Up + Power while the device is off and then select the fastboot option. You can also use adb reboot fastboot.
== Installation ==
Use pmbootstrap to build your own installation image.
$ pmbootstrap init
$ pmbootstrap install --fde
You can then use mtkclient to flash the boot.img:
$ pmbootstrap export
$ mtk w boot /tmp/postmarketOS-export/boot.img
==Notes==
==References==
OpenRC

OpenRC is a dependency-based init system that maintains compatibility with the system provided init program, normally located in /sbin/init. It does not function as a replacement for the /sbin/init file.
It is the default system in postmarketOS, and documentation can be found on the Gentoo wiki. For information related to handwriting an init script, check out Gentoos guide to initscripts
Init scripts are stored in /etc/init.d/ but it is generally recommended you do not write them by hand. User-configurable options are stored in /etc/conf.d.
=== See also ===
* Terminal_cheat_sheet#Service_management
Category:Init
OpeniBoot

openiBoot is an open source accessible reproduction of iBoot bootloader.
== Features ==
* Allow booting unsigned code on supported iDevices, such as iPhone, iPad and iPod Touch.
* The bootloader can be controlled with oibc (openiBoot console) which can be connected to using libusb.
== Support ==
openiBoot supports the following devices:
* iPod Touch 1G
* iPhone 2G
* iPhone 3G
* iPod Touch 2G
* iPhone 3GS
* iPhone 4
* iPod Touch 4G
* iPad 1G
* Apple TV 2G
== See also ==
* iDroid Project openiBoot (source code)
category:bootloaders
Oppo A31 (oppo-a31t)

== Contributors ==
* CHANGE_ME (put your username here!)
== Maintainer(s) ==
== Users owning this device ==
== How to enter flash mode ==
== Installation ==
The Model has built-in fastboot mode, but can't use for installing pmOS, need lk2nd to boot the generic boot.img...
For Other model which is not equipped fastboot, need to install older version of "stock aboot image" by QFIL first.
# Install lk2nd (alternative bootloader that provides a standard fastboot interface)
# Follow the Installation guide
== See also ==
P.S. Please don't take this as Oppo A31 2020, this is Oppo A31 original version!
Oppo Find 7a (oppo-find-7a)

== Contributors ==
* farmatito
== Maintainer(s) ==
== Users owning this device ==
== How to enter flash mode ==
With the device powered off, hold Volume Up + Power
== Installation ==
Install the image to an sd card and flash the boot.img to the device
or install the image to an sd card and fastboot boot boot.img.
== See also ==
* Initial merge request
* 
*
Oppo Mirror5s (oppo-a51f)

== Contributors ==
* Natsu
* minecrell (Helped with mainlining kernel and several things)
== Maintainer(s) ==
* Natsu
== Users owning this device ==
== How to Install ==
Note: Unfortunately this device was removed from postmarketOS. See "Device removed" under see also for more information.
The Model has built-in fastboot mode, but can't use for installing pmOS, need lk2nd to boot the generic boot.img...
For Other model which is not equipped fastboot, need to install older version of "stock aboot image" by QFIL first.
# Install lk2nd (alternative bootloader that provides a standard fastboot interface)
# Follow Qualcomm_Snapdragon_410/412_(MSM8916)#Installation.
Bluetooth seems work on phosh
== See also ==
* Initial merge request
* Device removed
Opportunistic Sleep

Opportunistic sleep is a form of device power management which essentially flips the desktop setup on it's head. On your desktop PC you will put it to sleep when you're going out, or going to bed for example, or maybe if it's been idle for some set time period. Usually your PC will sleep until you manually wake it up again, you don't expect to receive notifications during this time.
== Usage ==
Opportunistic sleep can be enabled with the following:
echo "mem" | sudo tee /sys/power/autosleep
With opportunistic sleep, the device will try to suspend whenever possible, sleeping can be prevented by taking a wakelock:
echo "my_wakelock" | sudo tee /sys/power/wake_lock
And can be allowed again by dropping it:
echo "my_wakelock" | sudo tee /sys/power/wake_unlock
The general idea here is that a wakeup would occur in the kernel (e.g when a sensor device detects an event), the kernel would wakeup and various userspace services could obtain independant (deadlock free!) wakelocks, handle events and then unlock them, allowing the kernel to suspend again.
The caveat here is that some service is required to handle this, otherwise when waking up your device it would shortly go to sleep again. A wakelock must be held while the display is on.
== Stated ==
stated is a daemon being developed by the Droidian developers which aims to bring Android-style opportunistic sleep to Linux mobile devices, despite it being developed by Droidan, mainline kernels implement wakelock and autosleep support, so it should be feasible to run it on postmarketOS once it becomes more usable.
== Required kernel config options ==
The following options are required for opportunistic sleep to work properly:
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_AUTOSLEEP=y
== See also ==
* slides from 2012 presentation about wakelock/autosleep by the author of the mainline patches.
* LWN article "auto sleep and wake locks"
Category:Technical Reference
Optimizing built binaries

A compiler can be told to create binaries specifically for one CPU or family of CPUs, often resulting in a (minor, albeit always welcome) performance boost. On weaker systems, every additional bit of performance might be significant to the user.
==== Reference ====
* Gentoo GCC Optimization guide
* Android buildsystem file hinting which CFLAGS to use for arm targets
* Android buildsystem file hinting which CFLAGS to use for aarch64 targets
* GCC documentation: Optimize options
* GCC documentation: ARM options
* GCC documentation: aarch64 options
Category:Technical Reference
Orange Pi 4G-IoT

== Contributors ==
* cyrozap
=== Flashing using the Preloader ===
# Remove jumper J5. This will disable the USB hub on the board and enable you to connect the board to the host PC via USB. If you don't do this, USB errors will appear in dmesg.
# Start the MediaTek Smartphone Flash Tool (SPFT) as root.
# Select the scatter file and the partitions you want to flash.
# Click "Download".
# Plug the board into your computer via its micro-USB port.
# Wait for flashing to complete.
# If that fails, repeat steps 4-6 until it works. Maybe try a different USB cable/port.
== See also ==
* Product page
* Download page for the user manual, schematics, source code, Android image, etc.
* Board review
Osmin

osmin is a offline map application similar to osmand.
== Installation ==
osmin is shipped with Alpine (), thus it can be easily installed in pmOS:
# apk add osmin
== Mobile version ==
== Using osmin ==
Before being able to do anything in osmin, you have to download a map of the area you want to view.
To be able to get your location, geoclue has to run you may have to start it manually.
== See also ==
Mepo
Category:Apps
Out-of-tree kernel modules

=== Introduction ===
Drivers in the Linux kernel can either be built into the kernel, or built as modules that stay on disk and get loaded as needed. The modules that can be generated while building the kernel package are called in-tree (because the source code lives in the kernel source tree). There are also out-of-tree modules, for which the source code is located elsewhere. One popular example is wireguard, which is as time of writing, an out-of-tree kernel module.
These out-of-tree modules must be built against the specific kernel source code, that your target device is using, and this is a challenge on its own. Because there are many different Linux kernel packages that the user could install, especially in postmarketOS where we package a downstream kernel for every non-mainlined device. (But even in Alpine, there are various kernel packages to choose from.)
=== Alpine doesn't use DKMS ===
Many Linux distributions use DKMS, they install gcc and build the out-of-tree modules on the user's computer for the user's specific kernel just after that kernel has been installed or updated. Alpine does not use DKMS, it goes the route of compiling all out-of-tree modules for all available kernels and offering them as binary packages (e.g. wireguard-vanilla). This is acceptable in Alpine, as there's a low amount of available kernels and out-of-tree modules.
Alpine developers have expressed several times that they have no interest in adding DKMS to Alpine, because it requires installing the compiler and sources, and that goes against the minimal philosophy of Alpine.
=== How we had it in postmarketOS ===
For a short time, we also had the out-of-tree kernel module for wireguard working in postmarketOS. Eventually, this became too much maintenance effort and it was dropped. But for the record, here is how it was done:
* a wireguard-postmarketos-stable package (which worked only with linux-postmarketos-stable)
* a kernel-scripts package, which provides the "kernel scripts" for the right architecture, which are necessary to build the out-of-tree module (note that the [ "$type" != "application/x-sharedlib" ] bit from the patch had to be updated a few times afterwards, but the PR description explains in detail why the package is needed, that's why there's a link to the original PR.)
=== Related ===
* Proposal for wireguard support without DKMS or the fragile out-of-tree build method from before
* DKMS for postmarketOS
Overte

__NOTOC__
Overte is an open-source social-VR platform.
It is available as Flatpak through: https://github.com/flathub/flathub/pull/5509
Your residential postmarketOS user in Overte is User:JulianGro, contact or mention him if you have any questions about running Overte on postmarketOS.
== Tips and Tricks ==
=== Lower resolution scale ===
The graphics settings allow you to lower the resolution scale.
You can also edit the resolution scale in the interface.json config file under "viewportResolutionScale": 0.20,.
=== Running on software rendering ===
If LLVMpipe is available, you can enable it by first entering the Flatpak's command line:
flatpak run --command=sh --devel --filesystem=$(pwd) org.overte.Overte
And then running: 
LIBGL_ALWAYS_SOFTWARE=true GALLIUM_DRIVER=llvmpipe LP_NUM_THREADS=6 Overte
Adjust the amount of threads for LLVMpipe as you see fit.
=== Open statistics ===
Pressing Shift + / opens statistics. Clicking on those statistics expands them.
=== Video memory usage ===
It is possible to partially limit the texture memory used by Overte. This can be done by first enabling the Developer menu inside the Settings menu, and then setting the amount of texture memory under Developer -> Render -> Maximum Texture Memory.
Overte will then scale down all non-UI textures to fit this value.
=== Memory usage ===
Overte has an issue where it will use too much memory while baking assets and not properly deallocate said memory. It is possible to run Overte on as low as 4GB of system memory, if zram and a big swapfile are enabled. Since a lot of this memory might be unused, it is sometimes possible to swap multiple gigabytes to flash. See the relevant issue here: https://github.com/overte-org/overte/issues/1101
== Potentially interesting information ==
=== Touch UI ===
Overte has code for an unmaintained/dead Android app in its codebase. This Android app comes with a touch UI, which should be possible to be activated somehow.
=== Window decoration issues on KDE ===
There is an issue with aggressive window decoration on KDE. See issue: https://github.com/overte-org/overte/issues/167
While it can usually be worked around with an environment variable, this doesn't appear to be working on Flatpak.
=== Panfrost UI rendering ===
The UI currently doesn't render on Panfrost, which is a shame because performance is suprisingly good. See issue: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11692
Oysters T84Bi 4G (oysters-t84bi-4g)

== Contributors ==
* km2
== Users owning this device ==
== How to enter flash mode ==
== Installation ==
== UART ==
There are several test points under the SoC cover. For uart, you need TxD0 (transmit) and RxD0 (receive). Standard Serial Console Speed 921600 
== See also ==
PDF

== PDF viewers ==
=== Firefox ===
Firefox browser can open PDF files.
=== MuPDF ===
A lightweight PDF viewer. Install package mupdf-x11. When the file manager asks for a program to open the PDF file, navigate to /usr/bin/mupdf. Handling happens mainly by keyboard, see e.g. debian manpage.
=== Xpdf ===
An X11 PDF viewer (website). Looks a bit old-school (screenshot).
=== zathura ===
A minimalistic, vim-like document viewer. Handling by keyboard, see manpage.
=== CorePDF ===
Part of CoreApps collection. Depends on qt5-qtbase.
=== Atril ===
MATE document viewer. Depends on file manager caja, itself depending on mate-desktop.
=== Evince ===
GNOME document viewer. Depends on gnome-desktop, these are just the core libraries (not the full desktop).
=== Okular ===
Document viewer of KDE. Depends among others on kwindowsystem and qt5-qtbase.
=== qpdfview ===
Lightweight PDF viewer for Qt. Not available on Alpine Linux and postmarketOS. For compliling: source on Launchpad.
=== Pidif ===
Lightweight PDF viewer using GTK4, built especially for small touch screens. Available on Alpine Linux and postmarketOS as .
Category:Apps
PINE64 A64-LTS (pine64-a64lts)

=== Contributors ===
* MartijnBraam
* Luca Weiss (z3ntu)
== Serial console ==
The Pine board has a 3.3v UART on the EXP 10-pin header.
* Pin 6 is GND
* Pin 7 is TX
* Pin 8 is RX
== Headphone jack ==
Install alsa-utils with apk, launch alsamixer, unmute (press M) "Headphone", "AIF1 Slot 0 Digi" and "DAC" (or "DAC Reversed"), increase the volume of "Headphone" to something over zero.
Then you can play some music (e.g. a .wav file) with aplay.
== See also ==
* Initial merge request
* 
* Tools for FEL mode
* pine64's own wiki page
* Patch for u-boot for board support
PINE64 PinePhone (pine64-pinephone)/Old Images

Notes about old PinePhone images from https://images.postmarketos.org/pinephone/ were moved here, to de-clutter the images page.
* The factory image of the postmarketOS community edition is pine64-pinephone-20200726-phosh-v20.05-installer.img.xz.
* Images before 2020-07 contain a SSH key that has been copied over from the build machine, in /home/demo/.ssh.
* Devkit: there are two variations of the PinePhone Don't be evil development kit, the normal images are for the devkits with a long touchscreen cable. The inverted images are for devkits with a short touchscreen cable. In newer releases this is renamed to longts and shortts. 
=== Login info ===
Older images without "installer" in the name have the following login credentials hardcoded:
* username: "demo"
* password: "147147" (or "demo")