How to submit a new device for official builds
Official devices
If you have a working device tree/kernel, and would like to submit it for official builds, please check this url for more instructions. Please note - your device must have full hardware support (i.e., every peripheral works) and must be stable.
The PixelExperience wiki provides instructions based on the assumption that your device has got its device tree and required depedencies under the PixelExperience-Devices GitHub organization.
Setting up the wiki locally
See this url for detailed instructions on setting up the wiki locally.
Adding your device
Prepare the required files
There are a few files which need to be there to have a device on the wiki.
In order to get them, navigate to ~/wiki/
and run:
./scripts/generate_device.sh your_device
Obviously replace your_device
with the codename of your device
Populating the YAML
The sample template has been copied to ~/wiki/_data/devices/your_device.yml
.
Update the values to match your device. An explanation of some of the options is below:
-
architecture
: The CPU architecture of the device, can be one ofarm, arm64, x86, x86_64
If your device has a 64 bit architecture but Android runs on 32 bit, you can use a different format:
{cpu: 'arm64', userspace: 'arm'}
-
battery
: Use the format{removable: False, capacity: <number in mAh>, tech: '<tech>'}
. If your battery is removable, useTrue
instead. Fortech
you can use:Li-Ion, Li-Po
In case you are setting up one file for multiple devices which have different batteries, you can use Model-Value-Pairs, e.g.
battery: - Model1: {removable: False, capacity: 1000, tech: 'Li-Ion'} - Model2: {removable: True, capacity: 2000, tech: 'Li-Po'}
-
bluetooth
: The proper format is either{spec: '<version>'}
withversion
being the version of the BT protocol supported, or{spec: '<version>', profiles: '<profiles>'}
when your device supports additional profiles. These are the possible values:For the specification: 1.0, 1.0B, 1.1, 1.2, 2.0, 2.0 + EDR, 2.1, 2.1 + EDR, 3.0, 3.0 + HS, 4.0, 4.0 + LE, 4.1, 4.2, 5 For the optional profiles: A2DP, A2DP + aptX, A2DP + aptX HD
-
cpu
: The CPU type of the device, can be one of the following list:Cortex-A15, Cortex-A15 & Cortex-A7, Cortex-A53, Cortex-A53 & Cortex-A53, Cortex-A53 & Cortex-A57, Cortex-A53 & Cortex-A72, Cortex-A57, Cortex-A7, Cortex-A72, Cortex-A73 & Cortex-A53, Cortex-A9, Denver, Exynos M1 & Cortex-A53, Exynos M3 & Cortex-A55, Intel Atom, Krait, Krait 200, Krait 300, Krait 400, Krait 450, Kryo, Kryo 250, Kryo 260, Kryo 280, Kryo 360, Kryo 385, Kryo 460, Kryo 470, Kryo 475, Kryo 485, Kryo 495
download_boot
: Instructions for booting the device into the mode used to install recovery. On most devices, this is fastboot mode.install_method
: Used to determine the recovery install template to use. Templates can be found in _includes/templates/recovery_install_install_method
.md.network
: The frequencies and channels for the various network technologies. You can look them up here. Keep the non-available technologies empty.-
peripherals
: A list of peripherals available on the device, can be any of the following list:A-GPS, Accelerometer, Audio Coprocessor, Barometer, Color spectrum sensor, Compass, Dual SIM, Dual front speakers, Dual side NFC, Dual-frequency GNSS, Essential Accessories, FM radio, Fingerprint reader, BeiDou, Galileo, GLONASS, GPS, NAVIC, SBAS, QZSS, Gesture sensor, Gyroscope, HDMI, Hall effect sensor, Hardware keyboard, Heart rate sensor, Hygrometer, IR blaster, IR camera, Iceview Cases, Infrared sensor, Light sensor, MHL, MHL 2.0, MHL HDMI, Mobility DisplayPort (MyDP), Motion Coprocessor, Moto Mods, NFC, Pedometer, Proximity sensor, Qi wireless charging, RGB ambient light, SNS integration, Sensor hub, Thermometer, Ultrasound proximity sensor, USB OTG, Wi-Fi Display
-
release
: Allowed formats areyyyy
,yyyy-mm
andyyyy-mm-dd
. In case of multiple devices with different dates, you can use Model-Value-Pairs:release: - Model1: 2015 - Model2: 2016-01 - Model3: 2016-02-01
Additionally there are some optional properties which you might not need, but in case you do, they are documented below:
carrier
: If the device was released for a specific carrier, the name of that carrier. Remove this if not used!custom_twrp_link
: A custom twrp recovery link in case no official recovery exists for the specific device or it doesn’t work properly. Remove this if not used!custom_recovery_codename
: If an official recovery exists for the device, but it uses a different codename, specify the used one here. Remove this if not used!custom_unlock_cmd
: Used if the command to unlock your device via fastboot is different thanfastboot oem unlock
. Remove this if not used!format_on_upgrade
: Used if the device needs to wiped on major PixelExperience version due to unfixable device specific issues. Remove if not used!is_ab_device
: Used if the device has an A/B partition scheme. Remove this if not applicable to your device!is_unlockable
: Set to false if there is no official method to unlock the bootloader. A hint will appear on the device’s overview and install page. If this property is not set, it defaults toTrue
-
required_bootloader
: Specify the bootloader versions which are required to install PixelExperience. If no special requirement exists, remove this line! Example:required_bootloader: [Version1, Version2]
uses_twrp
: Used if the device doesn’t use PixelExperience Recovery (the default)
Testing it works
Start the wiki on your local Jekyll server, and navigate to the devices list. Your device should be there. Click on it, and check that the info/install/build pages all seem correct.
Now run the validation:
bundle install
ruby ./test/validate.rb
If the script doesn’t give you an output, all the validated fields have a proper format. Otherwise, read the messages carefully to see which fields have to be corrected.
Submitting wiki changes
After verifying the device-specific pages, commit it and open a pull request at wiki source code to review proposed changes.