This repository packages the board support files, launcher application, and host scripts for building a LILYGO T-Display K230 SD-card image from the official Kendryte K230 Linux SDK.
Validated upstream SDK:
https://github.com/kendryte/k230_linux_sdk.git
dev commit 22d02c6b6783a57a3aca7eb3160e313e772cb710
See CHANGELOG.MD for release history.
The public image includes a phone-style LVGL launcher, responsive portrait/landscape layouts, camera and media apps, settings pages, optional keyboard-base hardware support, nRF52840/nRF9151 management, LoRa/LoRaWAN tools, and Meshtastic beta support.
Feature status:
- Stable daily-use apps: camera, gallery, music, network radio, recorder, video player, terminal, MTP, Wi-Fi, Ethernet, display, audio, notification, battery, charger, sensor, keyboard, and system settings.
- Beta apps: Meshtastic, LoRaWAN, Xiaozhi voice assistant, PicoClaw, nRF9151 cellular/GNSS data tools, and nRF52840 UART DFU.
- User-provided content: NES ROM files and offline map tiles are not bundled in the default image.
k230_bsp/ Board support overlay for U-Boot, Linux, Buildroot, DTB, logo, and hardware services
k230_launcher/ LVGL launcher application and bundled runtime resources
k230_linux_sdk/ Official Kendryte K230 Linux SDK submodule
scripts/ Host setup, SDK overlay, image build, and SSH deployment helpers
- Changelog
- Launcher app guide
- Offline map tile guide
- BSP GPIO and hardware map
- BSP README
- Launcher README
- nRF52840 firmware and related documentation
- nRF9151 & keyboard firmware and related documentation
Ubuntu 22.04 or 24.04 is recommended.
Install Git and basic build tools:
sudo apt update
sudo apt install -y git ca-certificates build-essential make rsync python3Clone this repository with the SDK submodule:
git clone --recurse-submodules https://github.com/Xinyuan-LilyGO/T-Display-K230.git t-display-k230
cd t-display-k230If the repository was cloned without submodules:
git submodule update --init --recursiveInstall the SDK toolchain and host dependencies:
./scripts/setup_ubuntu.shApply the board support files and launcher to the SDK:
./scripts/apply_to_sdk.shBuild the SD-card image:
./scripts/build_sdcard_image.shThe image is exported to:
k230_bsp/images/sysimage-sdcard.img
For a fully clean rebuild, remove the SDK output directory, re-apply the board overlay, then build through the helper script:
rm -rf k230_linux_sdk/output
./scripts/apply_to_sdk.sh
./scripts/build_sdcard_image.shBuilding from native Windows shells such as CMD, PowerShell, Git Bash, MSYS2, or Cygwin is not recommended. Use WSL2 with Ubuntu so the SDK sees a normal Linux filesystem, permissions, symlinks, and shell environment.
Install Ubuntu 22.04 from an Administrator PowerShell window:
wsl --install -d Ubuntu-22.04Restart Windows if WSL asks for it, then open the Ubuntu terminal and install the basic tools:
sudo apt update
sudo apt install -y git ca-certificates build-essential make rsync python3Clone and build inside the WSL Linux filesystem, for example under ~/work.
Do not build under /mnt/c/Users/...; that path is slower and can break
Linux-style permissions or symlinks used by the SDK.
mkdir -p ~/work
cd ~/work
git clone --recurse-submodules https://github.com/Xinyuan-LilyGO/T-Display-K230.git t-display-k230
cd t-display-k230
./scripts/setup_ubuntu.sh
./scripts/apply_to_sdk.sh
./scripts/build_sdcard_image.shThe generated image is:
k230_bsp/images/sysimage-sdcard.img
To open the image folder from Windows Explorer:
explorer.exe "$(wslpath -w k230_bsp/images)"On Linux, replace /dev/sdX with the actual TF-card block device:
sudo dd if=k230_bsp/images/sysimage-sdcard.img of=/dev/sdX bs=8M status=progress conv=fsync
syncOn macOS, replace diskN with the actual TF-card disk:
diskutil unmountDisk /dev/diskN
sudo dd if=k230_bsp/images/sysimage-sdcard.img of=/dev/rdiskN bs=8m status=progress
sync- Insert the TF card into the Windows PC.
- Download Rufus then open Rufus.
- In
Device, select the TF card. - In
Boot selection, chooseDisk or ISO image, then clickSELECT. - Select
sysimage-sdcard.imgfromk230_bsp/images/. - Click
START. - If Rufus asks for the write mode, select
Write in DD Image mode. - Confirm the erase warning and wait until Rufus reports completion.
- Eject the TF card safely and insert it into the T-Display K230.
After flashing, Windows may show a prompt asking to format an unknown partition. Cancel that prompt. The card contains Linux partitions used by the K230 image.
When the board is already running Linux and SSH is reachable, rebuild and deploy the launcher without reflashing the card:
./scripts/deploy_launcher.sh 192.168.1.100Deploy the launcher and boot files:
./scripts/deploy_launcher.sh 192.168.1.100 --full --rebootImportant
Please replace the above IP addresses with the IP address of your device.
- RM69A10 AMOLED MIPI DSI panel and U-Boot boot logo.
- GT9895 / Goodix Berlin touchscreen.
- GC2093 camera.
- RTL8189FS SDIO Wi-Fi.
- USB Bluetooth adapter support and BlueZ runtime.
- nRF52840 UART preset.
- nRF9151 UART and enable-pin preset.
- SX1262/LR2021 LoRa SPI preset.
- MAX98357A external I2S amplifier and audio route switching.
- AHT20, BQ25896, BQ27220, XL9555, and TCA8418 keyboard-base I2C devices.
- Keyboard interrupt GPIO42 and keyboard backlight GPIO52/PWM4.
- PMU power key input and K230 thermal sensor support.
Generated image files under k230_bsp/images/ are local build artifacts.
- Meshtastic is included as a beta feature. Core chat, node display, map view, and channel sharing are available. Voice/photo transfer is only available between K230 boards fitted with LR2021 modules; SX1262 boards support basic text mesh messages only.
- HDMI support is kept as a diagnostic feature. AMOLED remains the default display path.
- Optional hardware features are shown only when the related module is detected. This includes nRF9151, nRF52840, TCA8418, BQ27220, BQ25896, XL9555, and AHT20.
- Xiaozhi requires network access and a compatible Xiaozhi service. Wake-word listening is active only while the Xiaozhi app is open and owns the microphone.
- PicoClaw requires network access and an OpenAI-compatible model API key.
- Offline map tiles, NES ROMs, and user media files should be copied to the SD card by the user.

