Hey everyone, I hope this finds you well!
I’m proud to share that we’ve reached a milestone: the first BETA release of Android 14 for the Tachyon board (v1.0.0).
For a quick look at this running, please take a look here: https://youtu.be/xlh6otYO6cs
It is “quite” exciting to see Android running in such a solid state on our hardware to say the least
Big up to Eugene internally for his help on this! As you might expect from a processor family originally designed for Android, the platform is in pretty good shape and a lot of functionality works right out of the box - however, we’re continuing to refine the embedded-specific features (and feedback here on what you need for your project is highly welcome).
Want to develop a kiosk style app, run and Android app or utilize the device for some cool streaming use case? Its all yours!
But note that this is Beta and that feedback is highly welcome!
Caveats
- Screen orientation: The default HDMI display comes up in portrait mode. If you’d like landscape, you’ll need to run an ADB command (see instructions below). The setting is persistent across reboots. This is the only display currently - DSI displays do work (see below)
- USB keyboards/mice: Currently only USB1 keyboards and mice are usable. Because USB2 isn’t working yet as the power is not enabled, you’ll need to connect them through a USB-C hub on USB1 or via your USB-C monitor’s downstream ports.
- 40-pin header: Not yet accessible from Android user space. Work in progress.
- CSI/DSI cameras and displays: Drivers are functional but limited to internal development modules. Arducam camera and display compatibility will require additional porting.
- Google Play: No Play Services or Play Store are bundled. You can sideload APKs via ADB. The distribution includes only unencumbered, licensable components.
- Display Lock: By default the screen locks every 1 min and you have to unlock using ‘space’ on a keyboard. Change in the settings to disable!
Feature Checklist
Core & System
Boot/reboot/shutdown stable
A/B slots enabled for OTA
Verified boot not supported at the moment (needs additional tooling)
SELinux enforcing
OTA sideload not yet supported (tooling ongoing)
Time sync & RTC persistence
Display & Input
HDMI / USB-C DisplayPort at 1080p
OPEN GLES 3.0/2.0 etc…
No boot logo on USB-C
Portrait mode default (ADB command to rotate)
USB HID keyboard/mouse tested
Touch input works!
Brightness control not functional on HDMI
Audio
USB audio, Bluetooth A2DP
Analog Speaker/headset/mic paths untested (but audio plays here)
Telephony audio untested but feature appears to work (I made a call!)
Connectivity
Wi-Fi (all Wi-Fi 6E features)
Hotspot & tethering
Bluetooth (classic + BLE)
Cellular (data with manual APN configuration)
VPN works
Location
GNSS: cold/warm start, AGNSS, accuracy validated
USB-C & I/O
USB1 host/device functions
PD negotiation stable
Role swap works
- USB2 doesn’t work (power is not getting turned on) but it does appear to prevent the device from sleeping when connected
40-pin header not yet accessible
PCIe not tested
Storage
UFS storage (good performance)
SD card
USB mass storage
Power & Thermal
Suspend/Doze
LED indicators (off, booting, booted, Wi-Fi connected, charging)
Thermal management & throttling
Cameras & Media
Camera HAL works with dev modules
Hardware codecs (H.264/H.265/VP9/AV1 decode; H.264/H.265 encode)
Limited to internal camera hardware
OS & Tooling
Security patch level reports correctly
ADB over USB and Wi-Fi
Haptics not present so no support
Platform
No Device Management is enabled at the moment
Connectivity Management works, but eSIM profile manipulation is not enabled in this build
Getting Started
Download!
Download the ZIP files from here:
NA Build: https://linux-dist.particle.io/release/tachyon-android-14-RoW-1.0.0.zip
RoW Build: https://linux-dist.particle.io/release/tachyon-android-14-NA-1.0.0.zip
Install the Android 14 Beta Image
Using the Particle CLI, you can just install the Android 14 beta release as follows:
particle flash --tachyon /Users/nicklambourne/Downloads/tachyon-android-14-NA-1.0.0.zip
(Update the path to wherever you saved the ZIP, of course
)
Accessing the Console
When the device boots, its console is available via:
- UART (through the debug adapter), or
- ADB over USB (no extra hardware required).
For ADB:
adb devices
adb shell
More info here: Debug Board Details
Window Manager Rotation Control
By default, the HDMI display comes up in portrait orientation. You can use ADB to change the reported display size, which effectively rotates the screen into landscape. This setting is persistent across reboots until you reset it.
Force Landscape
adb shell wm size 1920x1080
Force Portrait
adb shell wm size 1080x1920
Reset to Physical Size
adb shell wm size reset
Check the current status:
adb shell wm size
You should see both the Physical size and the active Override size.
Keyboard / Input Commands via ADB
For testing without touch input, you can simulate keypresses and gestures from the command line. Useful for unlocking the screen or navigating.
Wake the Screen
adb shell input keyevent 224 # KEYCODE_WAKEUP
Dismiss Lock Screen
adb shell input keyevent 82 # KEYCODE_MENU
adb shell input keyevent 3 # KEYCODE_HOME
Swipe to Unlock
(Coordinates are for a 1080p display; adjust if needed.)
adb shell input swipe 540 1600 540 800
Enter a PIN (example: 1234)
adb shell input text 1234
adb shell input keyevent 66 # KEYCODE_ENTER
General Navigation Keys
- Home:
adb shell input keyevent 3
- Back:
adb shell input keyevent 4
- Menu / App Switch:
adb shell input keyevent 187
- DPAD arrows + select (for navigating UI without touch):
adb shell input keyevent 19 # DPAD_UP
adb shell input keyevent 20 # DPAD_DOWN
adb shell input keyevent 21 # DPAD_LEFT
adb shell input keyevent 22 # DPAD_RIGHT
adb shell input keyevent 23 # DPAD_CENTER (OK/Select)
This way, you can rotate the display and interact with the device entirely over ADB, even without touch or working USB2 peripherals…. It's very tiresome after a little while however!
Let us know how you get on here and what you are building with the Particle board!
Thanks,
The Tachyon Team
