Repository navigation
tb323fu-linux t47
tb323fu-linux t47 — kernel for the Lenovo Legion Tab Y700 gen 5 (TB323FU)
Kernel: 7.3.0-rc4-tb323fu-t47 — Linux version 7.3.0-rc4-tb323fu-t47 (tb323fu@build) (Ubuntu clang version 18.1.3 (1ubuntu1), Ubuntu LLD 18.1.3) #1 SMP PREEMPT Thu Oct 8 15:41:41 UTC 2026
Mainline Linux v7.3-rc4 with the 129 patches 0001–0130 of kernel/patches,
built from tb323fu-linux commit 0c7c0c477d4fbd1f223737d553ab2014f6879209. What works and what does not: docs/hardware-status.md.
Read this first
- Fixes the Bluetooth address changing after Bluetooth is turned off and on (patch 0130). The controller got its
address (the one in/etc/tb323fu/bt-address) at boot, but after the adapter was powered off and on — the
Bluetooth switch,bluetoothctl power, a bluetoothd restart, rfkill — it came back with the placeholder address
78:55:00:01:5A:ADfrom the firmware's NVM file, and paired devices (bonded to the real address) no longer
connected until a restart. Tested: 3 power cycles, a bluetoothd restart and an rfkill block/unblock all keep the
address, and a paired keyboard reconnects by itself after the switch. Upstream status of each patch:
kernel/PROVENANCE.md. - Includes the storage hang fix from
kernel-t46(patch 0129). - CPU cluster idle state left out of runtime idle (patch 0118). With it the tablet reset when left idle
(twice in 78 minutes); this kernel's built-in command line setscpuidle_psci_domain.allow_cluster_off=0, and the
tablet then ran 3 hours idle without a reset at the same display-off power. Suspend (s2idle) still uses the state;
the cause in its power-down path is not fixed. - CPU capacities (patch 0117): the device tree describes the big and little cores, so the scheduler places
tasks by capacity (energy-aware scheduling). - No USB root shell. Development images open a root shell without password on the USB serial port and telnet
over USB networking while the initramfs runs; this release does not (the USB gadget itself is still set up, so a
root's serial getty andusb0networking work). To turn it on for recovery work, build your own image: the
initramfs withkernel/initramfs/build.sh -u, or the kernel withtb323fu.usbshell=1added toCONFIG_CMDLINE
(kernel/initramfs/README.md). Anyone with a cable
gets root while that shell runs. - If it does not boot: the boot summary on the panel says how far it got. Holding volume up + down for 10 s
restores Android fromboot_b(needs the Android image hash, below). Otherwise write your saved Androidboot.img
back toboot_afrom a PC in EDL mode (fastboot is read-only on this bootloader):
docs/recovery.md.
What is in this release
| File | What |
|---|---|
Image-tb323fu-t47 |
the kernel as a raw arm64 Image, with its device tree, command line and initramfs built in — and all its modules: the initramfs carries lib/modules/7.3.0-rc4-tb323fu-t47 (782 modules, the out-of-tree speaker amplifier driver in extra/) as a squashfs and mounts it on /lib/modules/7.3.0-rc4-tb323fu-t47 of the root it boots, so the roots need no modules of their own |
Image-tb323fu-t47.gz |
the same kernel, gzip-compressed (the bootloader decompresses it); the helper's kernel updates download this one |
modules-tb323fu-t47.tar.gz |
the same modules tree as a tarball — only for a root that opts out of the shared modules (own in its /etc/tb323fu/modules); normally not needed |
boot-repack-kernel.py |
puts Image-tb323fu-t47 into your own stock boot image (Python 3, no dependencies; same as tools/boot-repack-kernel.py) |
config-tb323fu-t47 |
the kernel .config |
initramfs-t47.list, initramfs-t47.files |
the initramfs: gen_init_cpio list and file list |
busybox-1.36.1.config |
configuration of the BusyBox binary in the initramfs |
busybox-1.36.1.tar.bz2 |
the complete source of that BusyBox binary (the unmodified upstream tarball) |
THIRD-PARTY-NOTICES.txt |
copyright and license texts of the third-party files in the initramfs (BusyBox, wireless-regdb, Terminus Font) |
SHA256SUMS |
checksums of all of the above (they catch a damaged download; they are not a signature) |
There is no ready-made boot.img, on purpose. A boot image for this tablet is the stock image with only the kernel
replaced: its header, Lenovo's GKI boot signature and the vbmeta/AVB footer are copied from a stock boot.img. Those
blobs are Lenovo's, not ours to redistribute, and they have to match the firmware version and region of your
tablet. So you build the image yourself, from the stock boot.img you saved during the backup step:
python3 boot-repack-kernel.py stock-boot.img Image-tb323fu-t47 linux-boot.img
tools/install/install.sh boot does this for you. Install: see docs/install.md
(repacked image → boot_a; nothing is installed into the roots).
Already running Linux with Open Device Helper? tb323fu-ctl kernel update (or About → Kernel Updates in the
settings app) installs this release the same way, runs it on trial and goes back to the previous kernel by itself if
it does not start (docs/helper.md).
What you must provide
- Firmware — none is included. Vendor firmware may not be redistributed. Extract it from your own tablet with
firmware/extract-on-device.sh
(the list isfirmware/manifest.tsv) and put it into each root's/lib/firmware(the root builders do this).
The initramfs carries onlyregulatory.db(wireless-regdb, ISC). - The Android image hash for the emergency way back (volume up + down held 10 s):
/etc/tb323fu/android-boot.sha256
onbaldur-root(orbaldur-root-sd). Without it the chord does nothing in the initramfs. - Your own stock
boot.img(saved in the backup step,docs/install.md) to repackImage-tb323fu-t47into.
Firmware-free initramfs: what that means
Drivers that probe before a root is mounted cannot find their firmware in this image (measured on the tablet; table in
kernel/initramfs/README.md):
- Wi-Fi (ath12k) is a module: udev loads it from the root, where the firmware is, so it comes up with the root
(no Wi-Fi in the initramfs itself). - GPU and Bluetooth log a missing-firmware error in the initramfs and recover after the root is mounted.
- Touch is loaded by the root (udev), not by the initramfs; the initramfs' touch echo is not available.
- The boot summary's GPU line is empty (the GPU has no firmware yet at that point).
Source code (GPL)
- Kernel: upstream
torvalds/linuxv7.3-rc4(93f51579e7df248780214094418f205253383cc5) + the patch series in
kernel/patchesof tb323fu-linuxkernel-t47
(commit0c7c0c477d4fbd1f223737d553ab2014f6879209); configuration:config-tb323fu-t47(= defconfig +kaanapali-oneplus-infiniti_defconfigkernel/config/baldur.fragment+kernel/config/baldur-display.fragment+kernel/config/baldur-netfilter.fragment,CONFIG_LOCALVERSION="-tb323fu-t47",
built withmake LOCALVERSION=). Origins of every patch:kernel/PROVENANCE.md.
- Out-of-tree module
snd-soc-aw882xx(GPL-2.0, Awinic):kernel/out-of-tree/aw882xx. - Initramfs:
kernel/initramfs(init,build.sh;gpu-probe.cGPL-2.0),
userspace/platform/src/keyhold.c,android/back-to-android; file listinitramfs-t47.list. - BusyBox 1.36.1 (GPL-2.0), unmodified: the source is attached to this release as
busybox-1.36.1.tar.bz2
(sha256b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314, the same file as https://busybox.net/downloads/busybox-1.36.1.tar.bz2),
configurationbusybox-1.36.1.config, static aarch64 build (binary sha2569ebb421890774102b38919eced19cd3ccd51a984ac0599cbc763f1b09dad11e7). - Console font: console-setup
Lat15-Terminus28x14(Terminus Font, SIL OFL 1.1). - regulatory.db: wireless-regdb (ISC), sha256
2fb33ca0074db573e05ef7dd50bb45b63c0ff98b7e852e1105ebad536fae8e6b.
Copyright and license texts of these third-party files: THIRD-PARTY-NOTICES.txt.
Licenses of the repository's parts: NOTICE.
Redistributors: modified builds use their own name, see TRADEMARKS.md.
Checksums
6b1a2b0f5bdeaa9e862fade84ccd877518681a3c0cb4d1a2df8eb56031ccff19 Image-tb323fu-t47
44d6a1751b3cc92b5ee87c912e58f71f496227c692fcdc1e7feb0c4bb0346175 Image-tb323fu-t47.gz
b4b4731ff05453639a7e2fad65fd61ef78167cd4f40d278f3d092b7fd82fe529 modules-tb323fu-t47.tar.gz
050c00865c257786fa84be475762f50c1dfe0dde1628bdf9233c7a1f6cc4bada config-tb323fu-t47
1ff5c1917f927bddfd504340f56ecfb9307247592435a88e998a999169c5e296 initramfs-t47.list
70784378de7eaa64af2221a15d48189a9573d45f81a5a630d63be632b1b1be75 initramfs-t47.files
5bea14190056e80da14cafb633fd483374441aea80dbf5b3f8e58acbec2ebd26 busybox-1.36.1.config
b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314 busybox-1.36.1.tar.bz2
9fbcfd05be2f2db8b2aefebf9c7153bc122a27eeb5cd3d617caebb4330b6b53f THIRD-PARTY-NOTICES.txt
48a1eddea802e3ea3cc8c16a59cb4c51185d05132d65397bc521dc09ee3c49cc boot-repack-kernel.py