This is the operational path for the first real PineTab2 boot. It assumes the source tree has already been pushed and the build host has run the PineTab2 patch/build tasks.
Build Status
◐ partial The PINETAB2 DTB and kernel config now
have a bounded compile path against FreeBSD stable/15. The first-boot
DTB intentionally disables nonessential tablet paths so the first bench
session is not debugging DSI, cameras, audio, PCIe, GPU, or internal
SDIO WiFi before storage, USB, HDMI, and I2C are known-good. The
remaining unknown is hardware behavior on the tablet: UART visibility,
firmware handoff, storage, USB host power, HDMI, and I2C device
enumeration.
Build
git push origin master
# On the FreeBSD build host path:
mise run check-dtb:pinetab2
mise run build-dtb:pinetab2
mise run build-kernel:pinetab2
# If honor is unavailable, the compile proof path is:
COPPICE_KERNCONF=PINETAB2 \
COPPICE_BUILD_DTB=1 \
COPPICE_FULL_KERNEL=1 \
mise run coppice:build-smoke The honor path leaves the kernel and DTB at:
~/pine64-freebsd/honeyguide/obj.clang/home/jadams/pine64-freebsd/honeyguide/freebsd-src/arm64.aarch64/sys/PINETAB2/kernel
~/pine64-freebsd/honeyguide/dtb.pinetab2/rk3566-pinetab2-v2.0-freebsd.dtb
Stage
mise run stage:pinetab2 The bundle lands under artifacts/pinetab2-firstboot/<timestamp>/ and
contains:
kernel
rk3566-pinetab2-v2.0-freebsd.dtb
loader.conf.pinetab2
INSTALL.md
MANIFEST
loader.conf.pinetab2 sets:
boot_serial="YES"
console="comconsole,efi"
comconsole_speed="1500000"
fdt_file="rockchip/rk3566-pinetab2-v2.0-freebsd.dtb"
Install
sudo mise run install:pinetab2:sd -- artifacts/pinetab2-firstboot/<timestamp> /mnt The installer writes:
| Bundle file | Target path |
|---|---|
kernel | /boot/kernel/kernel |
rk3566-pinetab2-v2.0-freebsd.dtb | /boot/dtb/rockchip/rk3566-pinetab2-v2.0-freebsd.dtb |
loader.conf.pinetab2 | marked block in /boot/loader.conf |
If /boot/kernel/kernel already exists, it is copied to
/boot/kernel/kernel.prev-pinetab2 before replacement.
First Power-On
Use the PineTab2 UART dongle at 1500000 baud, connect micro-HDMI, and bring a USB Ethernet or USB WiFi adapter. The internal BES2600 WiFi is not part of the first boot success criteria.
# Start before applying power.
mise run bench:pinetab2:firstboot -- start --name first-power
# After the boot attempt has finished, stop the UART capture.
mise run bench:pinetab2:firstboot -- status
mise run bench:pinetab2:firstboot -- stop
# Run only after the tablet has a reachable FreeBSD SSH path.
mise run bench:pinetab2:firstboot -- collect --ssh pinetab2
mise run bench:pinetab2:firstboot -- analyze The serial log is the primary receipt. The SSH collection step is a
post-boot add-on for the first time USB Ethernet, USB WiFi, or another
network path comes up; it records uname, FDT evidence, storage, USB,
network, focused devinfo, sysctls, and a filtered dmesg into the
same logs/pinetab2-firstboot/<timestamp>-<name>/ bundle.
The first receipt should answer only these questions:
- Does U-Boot load the FreeBSD loader from the SD card?
- Does loader use
rockchip/rk3566-pinetab2-v2.0-freebsd.dtb? - Does the kernel reach serial login or framebuffer output?
- Do
sdhci,sdmmc0, USB host, and HDMI attach? - Do the I2C buses see RK817, Goodix GT911, and SC7A20 at their DTS addresses?
- Does the disabled set stay quiet:
sdmmc1, DSI/panel, camera CSI, audio/I2S, PCIe, and GPU?
For the touch controller, the useful post-boot proof is:
dmesg | grep -i goodix
sysctl dev.goodix.0
dev.goodix.0.i2c_addr_7bit should be 93 (0x5d), config_addr
should be 32839 (0x8047), and config_len should be 186.
For the RK817 PMIC, start with the read-only monitor:
dmesg | grep -i rk817
sysctl dev.rk8xx.0 | grep rk817
sysctl dev.rk8xx.0.rk817_dump=1
The first useful values are rk817_present=1, rk817_res_div=1,
a plausible rk817_voltage_uv, and rk817_chrg_sts / rk817_sys_sts
changing when USB-C power is connected or removed.
Only after those are boring should DSI, touch policy, battery policy, and Type-C role work move onto the bench.