This is the PineTab2 software-source map: which Linux/U-Boot trees are worth reading, what each one teaches, and which details should change our FreeBSD bring-up plan. It is intentionally source-driven; the tablet already has enough folklore.
Source Repositories
| Source | What it is | Why it matters |
|---|---|---|
| Megi Linux | Ondrej Jirman’s Linux branch stack, now on Codeberg after xff.cz/git/linux redirects there | Has explicit PineTab2 branch families: pt2-*, bes2600-*, husb311-*, typec-extcon-*, rk817-* |
| Megi U-Boot | PinePhone/PinePhone Pro-heavy U-Boot tree with Rockchip side branches | Useful for style and Rockchip boot ideas, but mainline U-Boot now has the PineTab2 target |
| DanctNIX linux-pinetab2 | PineTab2 mainline kernel plus distribution patch releases | Latest GitHub release inspected here: v6.15.2-danctnix2, published 2025-06-22, 23-patch zstd bundle |
| DanctNIX / Pine64 Arch | Arch Linux ARM distribution integration for Pine64 devices | Package/release lineage for the factory-style PineTab2 images |
| postmarketOS PineTab2 wiki | Current pmOS device status | Shows the practical state: many tablet features work, WiFi remains partial, Bluetooth untested |
| postmarketOS package index | Built package metadata | As of the package page checked on 2026-05-01: linux-pine64-pinetab2 is 6.17.8-r0, maintained by Danct12 |
| mainline U-Boot PineTab2 defconfig | Upstream boot target | Confirms pinetab2-rk3566_defconfig, rk3566-pinetab2-v2.0.dtb, 1500000 baud UART, RockUSB/UMS, and both v0.1/v2.0 DTBs |
| mainline Linux/U-Boot DTS import | Shared PineTab2 hardware description | Best single table of board wiring: RK817, Goodix GT911, BOE DSI panel, SC7A20, OV5648, SARADC keys, USB rails, SD/eMMC |
| Pine64 PineTab2 docs | Board docs, recovery, known issues | Records debug adapter behavior, Maskrom recovery, and known BES2600/camera/suspend limits |
| Pine64 USB guide | Network workaround guide | Explicitly says built-in BES2600 WiFi is not stable/functioning and recommends USB WiFi/Ethernet/phone tethering |
What Megi Teaches
Megi’s current Linux branch list is more useful than a single diff. The branch families say which PineTab2 problems have needed independent maintenance across kernel versions:
pt2-6.5throughpt2-7.0— aggregate PineTab2 patch stacks.bes2600-6.8throughbes2600-7.0plusbesdbg-*— internal WiFi remains a large, active maintenance burden.husb311-*andtypec-extcon-*— the Type-C port is not generic USB glue; it needs a Hynetek HUSB311 TCPC path and a bridge into older extcon-style USB/PHY consumers.rk817-*— PMIC/charger work is a first-class board concern, not a small variant of the PinePhone Pro’s RK818 work.
Two Megi-authored patches are directly visible in the DanctNIX
v6.15.2-danctnix2 patch bundle:
- Add the HUSB311 Type-C controller node for the USB OTG port at i2c
address
0x4e, IRQGPIO0_C5, wired intousb_host0_xhciandusb2phy0. - Lower the SPI NOR clock from
100 MHzto50 MHzbecause100 MHzstopped working from Linux 6.12 onward.
What DanctNIX Teaches
DanctNIX’s v6.15.2-danctnix2 release is a compact checklist of the
non-mainline PineTab2 delta. The patch bundle contains 23 patches; the
interesting board ones are:
| Patch area | Lesson for FreeBSD |
|---|---|
| RK817 charger overflow fix | Do not copy RK818 assumptions blindly; the first FreeBSD pass keeps RK817 read-only and exposes charger/gauge sysctls before programming NVRAM or charge limits |
vdd_gpu_npu always-on / boot-on | Turning the GPU/NPU rail off can panic later when the driver re-enables it; first FreeBSD DT should keep it on |
| BES2600 staging driver | This is a huge mac80211 staging import, not a small SDIO quirk; first FreeBSD support should continue to use USB networking |
| BES2600 node/power sequencing | The tablet has vcc_wl, reset/power GPIOs, host-wake GPIOs, and U-Boot interaction; WiFi power state is board-fragile |
| HUSB311 + typec-extcon | FreeBSD needs a PineTab2 Type-C story distinct from PinePhone Pro FUSB302 |
| RK3568 USB2 PHY tuning | USB host reliability may depend on PHY tuning, not only xHCI attach |
| SPI NOR at 50 MHz | Keep SFC conservative until bench-proven |
| microSD SDR50 | Linux dropped from SDR104 to SDR50 after random read errors on fast UHS-1 cards |
| BES2600 P2P/testmode cleanup | Even the Linux side is still removing feature surface to make the driver behave |
The headline: DanctNIX treats the PineTab2 as mostly-mainline RK3566 plus a narrow but important board patch stack. FreeBSD should do the same.
Those lessons are now encoded in the local
rk3566-pinetab2-v2.0-freebsd.dts wrapper rather than carried as prose
only: TSADC stays disabled, microSD is capped at SDR50, SFC flash is
kept at 50 MHz, and vdd_gpu_npu is marked boot-on/always-on.
What Mainline U-Boot Teaches
Mainline U-Boot already has a PineTab2 target. The defconfig says:
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3566-pinetab2-v2.0"CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-pinetab2-v2.0.dtb"CONFIG_OF_LIST="rockchip/rk3566-pinetab2-v0.1 rockchip/rk3566-pinetab2-v2.0"CONFIG_BAUDRATE=1500000, debug UART base0xFE660000- RockUSB and USB mass-storage commands are enabled.
- SPI image boot is enabled, with SFC and SiliconKaiser SPI flash support.
- The U-Boot target still uses
CONFIG_TARGET_QUARTZ64_RK3566, which reinforces the Quartz64-first FreeBSD bring-up path.
The PineTab2 U-Boot DTS overlay marks early-boot dependencies with
bootph-*: GPIO0, I2C0, RK817 regulators, SFC flash, and the SD power
rail. That is a good checklist for what must attach early or be left in
firmware-safe state on FreeBSD.
What The Mainline DTS Teaches
The upstream DTS confirms several components we should not guess:
| Block | DTS detail | FreeBSD implication |
|---|---|---|
| Goodix touch | goodix,gt911 at i2c1 addr 0x5d, IRQ GPIO0_B0, reset GPIO0_C2 | Shared Goodix driver now handles GT911’s address-select reset and 0x8047 / 186-byte config block; orientation still needs panel proof |
| GPIO switches | gpio-keys children with linux,input-type = <EV_SW> for SW_TABLET_MODE and SW_LID | FreeBSD gpiokeys(4) needs switch-event handling, not keyboard scan-code mapping; local patch now adds that path |
| RK817 PMIC | i2c0 addr 0x20, IRQ GPIO0_A3, system-power-controller | Needs RK817-specific battery/charger and codec work |
| CPU regulator | TCS4525 at i2c0 addr 0x1c | DVFS can wait, but firmware defaults should be treated as a dependency |
| Panel path | VOP2 VP1 -> DSI0 -> BOE th101mb31ig002-28a, rotation 90 | Linux proves the panel path; FreeBSD should still use HDMI first |
| HDMI path | VOP2 VP0 -> DW-HDMI -> type-D connector | Best first graphical target |
| Audio | RK817 codec on I2S1, speaker amp GPIO4_C2, HP detect GPIO4_C6 | Not a reuse of the phone’s RT5640 path |
| Accelerometer | silan,sc7a20 at i2c5 addr 0x18, IRQ GPIO3_A2 | Different sensor from the phone’s MPU-6500; candidate FreeBSD sc7a20 driver now handles probe and polled axis reads |
| SARADC keys | channel 0, volume-up threshold 297500 uV, volume-down 1750 uV | rk_saradc now matches RK3568-compatible nodes; rk_adc_keys uses the DTS thresholds and reports last sample/threshold/delta sysctls |
| SPI NOR | SFC jedec,spi-nor, dual-rx, single-tx | Start slow; DanctNIX/Megi use 50 MHz |
| microSD | mainline advertises SDR104; DanctNIX forces SDR50 | FreeBSD should bias to SDR50 until transfer tests prove otherwise |
What postmarketOS Teaches
postmarketOS is useful because it records user-visible state, not just
kernel code. Its PineTab2 wiki says the port is in testing, uses a
mainline-ish kernel, and marks these as working: battery, screen,
touchscreen, keyboard, touchpad, 3D acceleration, audio, camera flash,
USB OTG, HDMI/DP, accelerometer, U-Boot SD/eMMC boot, and U-Boot
buttons. WiFi is Partial; Bluetooth is Untested.
The same page warns not to flash postmarketOS to internal storage
because the image does not include a bootloader, and notes that devices
from before November 2024 need a U-Boot update to at least
2023.07.02-2 before SD cards boot reliably.
FreeBSD Takeaways
- Keep PineTab2 first boot boring. Use mainline U-Boot’s PineTab2 target, serial, microSD/eMMC, USB, and micro-HDMI. Do not make DSI, internal WiFi, suspend, or cameras part of the first success criteria.
- Carry over the board scars immediately. The local first-boot DTB
starts with SPI NOR
50 MHz, microSD SDR50,vdd_gpu_npualways-on, and TSADC disabled until the RK3566 thermal path is audited. It also disables DSI/panel, camera CSI, audio/I2S, PCIe, GPU, and internal SDIO WiFi so the first run stays focused on boot, storage, USB, HDMI, and I2C visibility. - Treat Type-C as a new driver problem. PinePhone Pro’s FUSB302 work is conceptually useful, but PineTab2 uses a HUSB311/TCPCI-style path plus role-switch/extcon plumbing in Linux.
- Treat RK817 as its own PMIC. Charger, battery, codec, boost, OTG switch, and poweroff sequencing deserve a separate audit from RK818.
- Leave BES2600 out of phase one. The Linux driver is large, staging-quality, firmware-coupled, and affected by board reset limitations. USB WiFi/Ethernet is the pragmatic FreeBSD network path.
- Use Linux DTS as the component backlog. Goodix GT911, SC7A20, SARADC keys, GPIO tablet/hall switches, RK817 audio, BOE DSI panel, and OV5648 all have enough board description to write targeted FreeBSD candidates later.