Skip to content

About

Use GitHub Actions to customize and build Fedora RootFS for Xiaomi Pad 6S Pro (sheng).

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

299 Commits

Folders and files

Repository files navigation

fedora-sheng

中文版

Project Status
This project is still in its early development stage. Functionality may be incomplete and build results may contain unknown issues.
If you encounter any problems, please open an Issue.


Overview

This project uses GitHub Actions to automatically build a Fedora root filesystem for the Xiaomi Pad 6S Pro (sheng), providing a flashable rootfs.img and boot.img.
Simply start a workflow in your own repository and you will have a ready-to-use Fedora environment.


Getting Started

1. Fork & Enable Actions

Click the Fork button at the top right to copy the repository to your GitHub account.

Navigate to the Actions tab of your forked repository.
If Actions are disabled, click I understand my workflows, go ahead and enable them.

2. Run the Build Workflow

In the Actions page, select "Build Fedora RootFS" from the left sidebar, then click the Run workflow dropdown on the right.

You will see a list of configurable options (see Advanced Configuration for details).
If you leave everything unchanged, the build will proceed with the default settings.

Click the green Run workflow button to start the build.

3. Download Artifacts

Once the workflow finishes, open the summary page of that run.
Under the Artifacts section, download rootfs-*.zip and boot-*.zip (GitHub Actions compresses the raw .img files into zip archives).


Advanced Configuration

When you trigger the Build Fedora RootFS workflow via workflow_dispatch, the following inputs are available:

General

Parameter Description Options Default
Fedora Version Fedora version to install 43 / 44 / 45 / rawhide 44
Enable Third-Party Enable third-party repositories true / false false
Desktop Desktop environment to install GNOME / KDE Plasma / Denial / server GNOME
GNOME Mobile Use GNOME Mobile from @mobility/gnome-mobile COPR (requires Enable Third-Party). Package availability differs per Fedora release — see the CRITICAL WARNING below and check the COPR Monitor before building. true / false false
Plasma Mobile Use Plasma Mobile shell instead of Plasma Desktop (only when Desktop=KDE Plasma). Only Fedora 43 confirmed working. Crashes on fc44/45/rawhide. SDDM has been replaced with plasma-login-manager which may fix this, but untested. true / false false
Denial: Mobile mode Denial: launch in Mobile mode (Android-like tablet UI) instead of Desktop mode (no on-screen keyboard) (only when Desktop=Denial). true / false true
Denial: Plugin manager Also install Denial's plugin manager and plugin build kit (only when Desktop=Denial). Adds about 82 MB, and nothing else in this image has been exercised against it. true / false false
Quiet Boot Enable Plymouth splash screen and quiet boot messages true / false true
Autologin Whether the created user should be logged in automatically true / false true
Username Username for the non-root user string username
Hostname System hostname string xiaomi-sheng
System language System locale None (C.UTF-8) / en_US.UTF-8 / zh_CN.UTF-8 / zh_TW.UTF-8 / ja_JP.UTF-8 / ko_KR.UTF-8 / de_DE.UTF-8 / fr_FR.UTF-8 / es_ES.UTF-8 / ru_RU.UTF-8 None (C.UTF-8)
Boot mode Which partition Fedora boots from single (userdata) / dual (linux) / custom dual (linux)
Custom partition Partition name (required when boot_mode=custom) any partition name (empty)
Extra packages Extra packages to install (space-separated) string (empty)

🚫 CRITICAL WARNING

  • Fedora 43: gnome-settings-daemon 49 is expired from COPR and the latest mutter build fails. The repo still serves gsd=51~beta alongside mutter+shell=49^mobile (built 2026-03), so selecting GNOME Mobile on fc43 produces a mixed build. This version mismatch may cause runtime issues or instability. Use at your own risk.
  • Fedora 44: only gnome-settings-daemon (51~beta) is published; gnome-shell and mutter are missing (latest mutter build failed, gnome-shell build forked). GNOME Mobile cannot be assembled, so the build falls back to the original Fedora GNOME. This project is NOT responsible for fc44 builds that end up with standard GNOME instead of GNOME Mobile.
  • Fedora 45 / rawhide: the complete mobile set — gnome-shell, mutter and gnome-settings-daemon 51.1.mobile.3, built 2026-10-20 — is available for both aarch64 and x86_64.
  • If unsure, check the COPR Monitor to verify packages are available before building.

Fedora 45 and rawhide are fully supported for GNOME Mobile as of October 2026.

Kernel

Parameter Description Options Default
Kernel Source Use prebuilt kernel or build from source prebuilt / custom_build prebuilt
Kernel Prebuilt Source Where to get the prebuilt kernel (only when prebuilt) upstream / own upstream
Kernel Repo URL Git repo for kernel source (only when custom_build) valid Git URL https://github.com/ianchb/sm8550-mainline
Kernel Branch Kernel branch name or release tag (custom_build: upstream branch to clone; prebuilt: release tag to download) branch name / tag sheng-7.3.0
Kernel Config Config file path in repo (only when custom_build) file path sm8550.config

Firmware

Parameter Description Options Default
Firmware Repo URL Git repository URL for device firmware files valid Git URL https://github.com/ianchb/sheng-firmware
Firmware Branch Branch to checkout from the firmware repository branch name master

Notes

  • To use a custom password, you must create a repository secret named ROOTFS_PASSWORD before running the workflow.
  • If ROOTFS_PASSWORD is not set, the password will fall back to the insecure default: password.
  • If you choose Boot mode = custom, you must fill in the Custom partition field.

Custom Kernel Build

If you want to use a custom kernel instead of the prebuilt one:

Option 1: Build from source via workflow

  1. Set Kernel Source to custom_build
  2. Fill in Kernel Repo URL, Kernel Branch, and Kernel Config
  3. Run the workflow — it will compile the kernel and include it in the artifacts

Option 2: Use your own prebuilt kernel RPM

  1. Run a custom_build workflow to build the kernel
  2. Download the kernel-sheng.zip artifact from the Actions run
  3. Create a release with any tag name you like (e.g. my-kernel-v1)
  4. Upload the kernel-sheng.zip to that release (file must be named kernel-sheng.zip)
  5. Set Kernel Source to prebuilt, Kernel Prebuilt Source to own
  6. Enter your tag name in Kernel Branch
  7. Run the workflow — it will download the kernel RPM from your release

Packages

Package Description
firmware-xiaomi-sheng Device firmware blobs (WiFi, Bluetooth, DSP, etc.)
sheng-devauth Device authorization daemon
xiaomi-mipps-auth MIPPS authentication for fast charging
xiaomi-charger-mode Charging screen when charger connected while device is off
xiaomi-sheng-thp Touch data processing for finger and stylus
xiaomi-pen-status Stylus connection/battery status display
xiaomi-sheng-fingerprint FPC1553 fingerprint sensor support (libfprint + fprintd)
xiaomi-sheng-keyboard-helper Keyboard microphone indicator and angle-based input control
xiaomi-sheng-keyboard-backlight Keyboard backlight brightness control
fastrpc Qualcomm FastRPC for DSP communication
libssc Qualcomm Sensor Core userspace library
iio-sensor-proxy IIO sensor proxy daemon
sheng-gnome-fix GNOME auto-rotation, power-key display toggle, suspend disabled system-wide
Denial Flutter-native Wayland compositor (ARM64 packages built from a pinned upstream revision; upstream publishes no ARM64 binaries)
sheng-sensors Device-specific sensor configuration and udev rules
alsa-xiaomi-sheng ALSA UCM2 audio configuration

Flashing to Your Device

Prerequisites

  • Device with an unlocked bootloader
  • TWRP recovery installed
  • fastboot properly set up on your computer

Warning
The following steps modify device partitions and may brick your device or cause data loss. Back up your important data and make sure you understand each command.

Partition Setup

  1. Dual boot (keep existing OS)
    Inside TWRP, use parted to shrink the userdata partition and create a new partition at the end, named e.g. linux.

  2. Single boot (replace OS completely)
    Use the userdata partition directly for Fedora (erasing all previous data).

Flashing the Images

The commands below assume:

  • You will boot Fedora using slot B
  • The Fedora partition is named linux
# 1. Erase dtbo
fastboot erase dtbo_b

# 2. Flash the boot image
fastboot flash boot_b boot.img

# 3. Flash the root filesystem to the linux partition
fastboot flash linux rootfs.img

# 4. Reboot
fastboot reboot

After rebooting, the device should start from slot B and boot into Fedora.


Known Issues

  1. Sensor orientation may be "undefined" for a few minutes after boot – The accelerometer orientation may show as "undefined" within the first few minutes after boot, causing auto-rotation to not work. It recovers to "normal" automatically.

GNOME Mobile

  1. Package status differs per Fedora release – see the CRITICAL WARNING under Advanced Configuration and check the COPR Monitor before building. As of October 2026, Fedora 45 and rawhide are fully supported; Fedora 43 and 44 are not.
  2. Random crashes back to GDM – GNOME Mobile may randomly crash and drop back to the GDM login screen. This is an upstream issue, also reproducible on Debian.
  3. GDM password input invisible – The password input field on GDM may appear blank, but typing still works. This is also an upstream issue present on Debian.

KDE Plasma Mobile

  1. Plasma Mobile crashes on Fedora 44, 45, and rawhide – Desktop crashes during startup. Only Fedora 43 is confirmed working.
  2. Partial mobile UI is accessible – Even when the desktop crashes, some mobile shell components still function: the first-boot setup wizard, lock screen password input, and the power menu (shutdown/restart/logout).
  3. I switched from SDDM to plasma-login-manager (SDDM is deprecated on Fedora). This may resolve the Plasma Mobile crash, but I have not tested it yet. Feedback welcome.

Credits

This project benefits from the following outstanding work and community support:

  • map220v – for TWRP, the mainline kernel port and many device-specific adaptations that make Linux run on the Xiaomi Pad 6S Pro (sheng)
  • ianchb – for maintaining the debian-sheng project, userspace drivers and various device-specific packages, from which this project is derived
  • alghiffaryfa19 – for the Qualcomm sensor configuration files (sheng-sensors-file)
  • slhssb – for the keyboard backlight driver (xiaomi-sheng-keyboard-backlight)
  • GhfunNiHe – for the automatic partition resize (growfs) implementation, taken from debian-sheng
  • code002-2 – for the WiFi firmware warning reference
  • DotRedstone – for the nixos-sheng project, whose fake-tablet-mode lid blanking, sheng-power-key-display-toggle service and docs/hall-sensor-rotation.md debugging notes form the basis of the cover/power-key handling in the sheng-gnome-fix package
  • CFM880 – for nabu-accelerometer, whose userspace/nabu-tablet-mode.c (GPL-2.0-only) is the source of the new tablet-mode core in sheng-gnome-fix

Related Projects

About

Use GitHub Actions to customize and build Fedora RootFS for Xiaomi Pad 6S Pro (sheng).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages