Samsung Galaxy Tab S6 samsung gts6lwifi · SM-T860 Qualcomm SM8150 · Snapdragon 855 · aarch64 RO-OS · mainline 6.17
Galaxy Tab S6 · 2019 · first light · Wayland on hardware GL

The One UI tablet,
first light on mainline.

A 2019 Snapdragon 855 flagship tablet — 6 GB, arm64, Adreno 640 — booting an unmodified 6.17 kernel on RO-OS. First Samsung SM8150 device on mainline with a working USB-net shell, and now a lit 2560×1600 panel driving a Wayland desktop on hardware-accelerated GL (freedreno FD640, glmark2 864).

Kernel
6.17.0-r122 · sm8150
Panel
ANA38401 · lit
SoC
SD855 · Adreno 640
Android life
9 Pie → One UI / 12
Kernel vs. stock
4.14 → 6.17
48%to RO-OS
P2 · Display lit — GPU + Wayland live, touch scanning
8 of 16 subsystems live

Hardware

Every subsystem, and exactly where it stands.

WorkingIn progressBlocked / portingNot started

Kernel / boot

LIVE

Unmodified mainline 6.17 executes to a full userland — 8 penguins, all cores — after root-causing the dispcc-with-no-parents hard-hang and the ABL appended-DTB scan.

6.17.0-sm8150 · 8 cores

USB / SSH

LIVE

Full RO-OS over USB-net. The gate was the SM5705 MUIC switch idling open — D+/D- route through it, not straight to the SoC. Closed in DT.

usb0 · 172.16.42.1

Storage (UFS)

LIVE

Real rootfs on UFS sda30, ext4 rw, 108 G — Samsung KLUDG4UHDB. Host+PHY up on the mainline driver.

UFS 3.0 · 108 G

Bluetooth

LIVE

WCN3990 (QCA) over UART; crbtfw firmware aliased and the BD address self-heals at boot — pulled from Samsung EFS to fix the unconfigured controller.

WCN3990 · hci0

Display / panel

FIRST LIGHT

ANA38401 + AMSA05RB06 dual-DSI, 2560×1600 command-mode — lit 2026-07-23. fb0 is msmdrmfb on ae01000.display-controller, simplefb handed off at 5.4 s: DPU → dual-DSI → TCON → glass, with the weston desktop rendering on it. The long-assumed gamma gate was wrong — it lit on placeholder gamma; the per-panel MTP read is still open and only affects colour/brightness accuracy.

dual-DSI · 2560×1600

Wi-Fi

LIVE

ath10k_snoc associates and carries traffic — wlan0 holds a DHCP lease on real hardware. Needed BOTH a 3312 mV vdd-3.3-ch0 rail floor and shadowing the generic board-2.bin; the rail-floor trap is fleet-general.

WCN3990 · wlan0

Battery + charger

JUST LANDED

SM5705 charger + fuel-gauge driver (mainline has none) and batteryd wired for Tier-B mid-SoC charge capping. The two most recent commits in the repo.

SM5705 · batteryd

GPU accel

HW RENDERING

Both APIs on hardware, measured on glass 2026-07-23: turnip Vulkan 1.3.348 (Mesa 26.1.1) and freedreno FD640 GLES 3.2. glmark2 864 — it read 61 until we found weston was launched --renderer=pixman, a software compositor that also denied clients any hardware EGL path, silently dropping every GL app to llvmpipe.

Adreno 640 · glmark2 864

Touchscreen

AFE SCANS

The on-cell STM FTS AFE scans in normal mode for the first time (2026-08-06). The old bus-wedge reading was retired — the IC probes fine; the real gate was the panel touch-sync enable, which is inert in the ON table and must be re-sent after display-on (~335 ms later). Confirmed on two cold boots; confirming finger events is the last step.

STM FTS · 0x49

cpufreq

RE-ENABLED

Samsung OSM hyp-fence rationale was found wrong — cpufreq re-enabled; scaling range still to be verified live.

OSM · A76 2.84 GHz

Audio

BT PLAYS

First sound out of the device 2026-07-22 — A2DP to a UE BOOM 2, which needs no kernel card. Speakers are mapped from the stock HAL: Q6 → SEC_TDM_RX_0 → 4× CS35L41 (slots 0-3), VMON feedback on SEC_TDM_TX_0. The ADSP is now enabled — the Q6/APR bus, gate for the whole speaker path, is up and awaiting hardware confirm; SND_SOC_SM8250 is still unset and sm8250.c has no TDM support.

A2DP live · 4× CS35L41

S Pen

LIVE

Wacom W9021 driver written from scratch — mainline wacom_i2c is the wrong model (big-endian 17-byte push frames vs. little-endian query/response). Complete on glass 2026-08-04: the pen tracks, with axis resolution reported.

Wacom W9021 · 0x56

Sensors

SLPI BOOTS

The SLPI remoteproc now boots — the TZ accepted the signed SLPI image and the glink dsps edge plus /dev/fastrpc-sdsp come up. The sensor PD then crash-loops every ~2.5 s, so it is opt-in and no image ships the storm. Next: attach hexagonrpcd before the DSP starts.

SLPI · remoteproc

HW video (Venus)

SESSION RUNS

2026-08-20 — the IRIS1 video core boots and answers HFI for the first time ever on mainline (SM8150 is the only IRIS1 in mainline; nobody had driven venus here before). Android’s own DT was the key: it holds all three GCC video-AXI clocks as proxy-clocks during firmware boot so the ARM9 fetches its firmware, the ready-poll clears (sciacmdarg0=0x40000001) and the HW H264/VP8/VP9/HEVC/MPEG-2 decoder node appears. 2026-08-23 — the session-init wall then fell: the firmware power-collapsed its codec island after boot and could not resume it, so every session hung. Keep the plane powered (fw_low_power=0) and the firmware runs an entire decode session for the first time — INIT → LOAD_RESOURCES → START, 16 input buffers fed, ARM9 idling correctly (WFI=1). It accepts coded input but emits no decoded frames yet.

IRIS1 · fw_low_power=0

USB-PD

QUEUED

Samsung s2mm005 CCIC — CC/PD/SBU only (no D+/D-); no mainline driver, not started.

s2mm005 · 0x33

NFC

QUEUED

nq-nci — downstream-only driver; bring-up not started.

nq-nci

Cameras

QUEUED

Front / rear sensors unprobed.

—

Beyond Android

This is a genuine Track-1 device — the fleet's flagship-tablet toe-hold. Modern capability the frozen One UI build never offered, now within reach.

⚡

Battery intelligence

batteryd caps the SM5705 charger at a mid-SoC band and tracks State-of-Health — the pack stops living at 100% 24/7. The driver just landed on the bench.

A fleet-standard rung; stock One UI only ever trickled the cell to full and let it age.
Vk

turnip Vulkan · Track 1

Adreno 640 (a6xx) is conformant turnip silicon — a real Vulkan compositor plus Zink for legacy GL. Both APIs now run on hardware against a lit panel: turnip 1.3.348 and freedreno FD640, glmark2 864.

Top-tier RO: full spring physics, blur, live thumbnails — and Waydroid-capable for DRM-locked apps.
6.17

A living kernel

An unmodified mainline 6.17 where the tablet froze on One UI / Android 11 (a 4.14 vendor kernel). A half-decade of security and driver work Samsung stopped shipping.

The device keeps getting newer instead of older.
⇄

Gesture navigation + feel

Swipe nav with haptic commit and paired audio cues, plus touch-boost cpufreq for launch-day snap — the Android-feel layer, held to the same floor across the fleet.

Effects scale by track; the felt-parity floor does not move.
◱

Double-tap-to-wake

Shipped and machine-validated via the vendor low-power gesture mode — no wake blob. The production loop was caught firing unprompted: idle blank → LPM → a real double-tap with coordinates → KEY_WAKEUP → resume → full re-arm. It landed on hardware whose normal touch mode did not yet scan.

A standing fleet requirement, not a per-device nicety.

Road to RO-OS

Every device climbs the same eight rungs. Phase = the highest rung fully reached.

P0
Boots

Kernel + initramfs + rootfs on UFS; reaches userland internally.

5%
P1
Access

USB-net SSH shell — full RO-OS reachable at 172.16.42.1.

15%
P2
Display + Touchcurrent

Panel LIT 2026-07-23 — a Wayland desktop renders on it. STM FTS touch is the one gate left: the AFE now scans in normal mode, and confirming finger events on glass is the last step.

30%

On-paper this is a Track 1 target — Adreno 640 turnip Vulkan, ≥6 GB, arm64 — so the ceiling is full RO with spring physics, blur and live thumbnails. As of 2026-07-23 the panel is lit and weston renders on hardware GL (glmark2 864); Wi-Fi, Bluetooth, the GPU and the S Pen came live out of sequence, but the phase stays gated at P2 until STM FTS touch confirms finger events — the AFE now scans in normal mode, and that last confirmation is the one gate left. Progress is tracked by phase, not a fake-precise percentage: the rough model is P0≈5% · P1≈15% · P2≈30% · P3≈45% · P4≈60% · P5≈75% · P6≈90% · P7=100%. The unit on the bench is the fleet's second Tab S6 (R52MC0J6FVJ) — the first was returned; this one is committed to the port.

On the bench

What's live in the workspace right now.

In flight

From first light toward a touchable, speaking tablet

✓
First USB-SSH — full userland

Two walls fell in one session: the SM5705 MUIC switch idled open (D+/D- never reached the SoC) and dispcc was enabled with every parent disabled (hard-hang at ~20 s). Closed the switch, disabled dispcc — the device came up on UFS.

2026-07-16 · ssh user@172.16.42.1 · 8 cores · /dev/sda30 rw
✓
Panel driver proven correct on glass

ANA38401 + AMSA05RB06 dual-DSI, 2560×1600 command-mode. Electricals derived from live stock clocks, cross-checked against vendor source, then validated on the real panel: enable err=0, 29h read back, TCON handshake, clocks exact.

2026-07-18 · dual-DSI · 299.33 MHz pclk · needs a DRM client to render
✓
SM5705 charger + batteryd — just landed

The two most-recent commits in the repo: a mainline-absent SM5705 charger/fuel-gauge driver, then the battery-manager workspace wired for Tier-B mid-SoC charge capping. The longevity foundation is in place.

SM5705 · batteryd Tier B · charge-band capping
✓
FIRST LIGHT — panel lit + Wayland on hardware GL

The panel lit 2026-07-23 on placeholder gamma (the long-assumed gamma gate was wrong) and a weston desktop renders on it: DPU → dual-DSI → TCON → glass. glmark2 jumped 61 → 864 once weston stopped launching --renderer=pixman — turnip Vulkan 1.3.348 and freedreno FD640 GL both on hardware. Wi-Fi and Bluetooth also came live.

2026-07-23 · msmdrmfb fb0 · glmark2 864 · freedreno FD640
✓
Speaker bring-up + confirm touch finger events

A2DP already plays; now wire the on-board speakers — Q6 → SEC_TDM_RX_0 → 4× CS35L41, drafted from the stock HAL (ADSP now enabled, sm8250.c still has no TDM). In parallel, the STM FTS AFE now scans in normal mode after display-on — confirming real finger events on glass is the last step to close P2.

on the bench · 4× CS35L41 TDM · STM FTS AFE scans
6
Frames out of the decoder

The session-init wall fell (2026-08-23): the IRIS1 firmware power-collapsed its codec island after boot and could not resume it, so every session hung. Keep the plane powered (fw_low_power=0) and the firmware runs the whole decode session for the first time — INIT → LOAD_RESOURCES → START → 16 input buffers fed, with the ARM9 idling correctly (WFI=1). It accepts coded input but emits no decoded frames yet; registering the LLCC video cache-slices the firmware expects (llcc_subcache) is the next shot at output.

on the bench · r122 · fw_low_power=0

The die, and what it drives

Every wire labelled with the bus it really runs on; every block coloured by what has been proven on this tablet, not by what the silicon can do. Green is live, amber is in flight, red is porting-in-progress, grey is untouched — so the dark blocks are measured holes, not unexplored ground.

PM8150 · PM8150L PMIC · SPMI 6 GiB LPDDR4X DRAM SNAPDRAGON 855 SDA855 · 7 nm · Kryo 485 8-core · Adreno 640 · modem-less WiFi variant CPU · Kryo 485 8 core · 2.84 GHz prime GPU · Adreno 640 turnip Vk 1.3 · GLES 3.2 DPU · DSI card0-DSI-1 · cmd mode Venus · IRIS1 core boots · /dev/video17 Q6 · ADSP APR/Q6 bus up SLPI boots · PD crash-loops UFS host 1d84000 · root dwc3 USB a600000 · peripheral CAMSS · CSIPHY RX never locks SPMI → PMIC rails Panel · ANA38401 + AMSA05RB06 · 2560×1600 AMOLED dual-DSI Touch · STM FTS on-cell · AFE scans i2c-10 · 0x49 Stylus · Wacom W9021 EMR digitizer i2c-8 · 0x56 Rear cam · S5K3M5 13 MP · sensor transmits CSIPHY0 · i2c-6 4× Cirrus CS35L41 speaker amps · slots 0-3 SEC-TDM · i2c-3 Cirrus CS48L33 mic codec / DSP SPI SM5705 · charger + gauge 7040 mAh · SoH 90.8% · Tier-B cap i2c · 0x49 USB-PD · s2mm005 CC/PD/SBU · DP-altmode i2c-9 · 0x33 WCN3990 · Wi-Fi + BT ath10k_snoc · hci0 · A2DP out SNoC + UART Sensors LSM6DSO · AK0991x · VEML3328 · PAH8011 accel/gyro · mag · ALS · prox via SLPI · SSC SM5705 MUIC USB D+/D- switch — was idling open i2c-1 · 0x25
Live on hardware In flight Porting / blocked Not started