Pine64 Ox64 SBC

The Pine64 Ox64 is a single-board computer featuring a Bouffalo Lab BL808 dual-core 64-bit RISC-V processor with up to 64 MB of built-in RAM, wireless interfaces for WiFi 4, Bluetooth 5.0, and 802.15.4 (Zigbee), as well as an AI accelerator.

Pine64 Ox64 SBC
Fig.: Pine64 Ox64 SBC

Features/Specifications

Core 64-bit 480MHz RV64 C906 (RISC-V) (based on Bouffalo Lab BL808)
Supports official RISC-V Linux
Memory
  • SRAM: 728kB (internal)
  • PSRAM: 64MB (internal)
  • Flash: 128Mb XSPI
  • microSD slot (SDHC/SDXC only on 128MB version)
Interfaces
  • UART
  • I²C
  • SPI
  • I2S
Network
  • 802.11 b/g/n 2.4GHz Wi-Fi
  • BLE 5.0
  • Zigbee
  • USB
  • 10/100Mbps Ethernet (optional, via expansion board)
Expansion Ports
  • USB 2.0 OTG port
  • 26 GPIO pins (incl. SPI, I²C, and UART)
  • MIPI CSI connector via USB-C for an optional camera module

📄 Bouffalo Lab BL808 SoC datasheet (1213 kB)
Ox64: Datasheets

Connections

Pinout-Chart of the Pine64 Ox64 SBC
Fig.: Pinout-Chart of the Pine64 Ox64 SBC

Flashing the Ox64

UART Connection to the PC

The Pine64 documentation offers several alternatives for connecting the Ox64 to a PC via UART. I chose the solution using a Raspberry Pi Pico. To do this, the following connections must first be made:

Serial connection between Raspberry Pi Pico and the Ox64
Fig.: Serial connection between Raspberry Pi Pico and the Ox64

Firmware for Raspberry Pi Pico

First, the Pico must be put into boot mode. This means it must be disconnected from the power supply. Then, press and hold the BOOTSEL button while connecting the Pico to the PC via a Micro-USB cable. The Pico should now appear as a standalone drive in the file system.

From the repository Kris-Sekula/Pine64_Ox64_SBC, download the file picoprobe.uf2 and drag it onto the Pico's drive. After a short moment, the Pico will reboot and is now flashed with the new firmware. (The Pico will no longer be visible as a drive)

You should now see two new devices appear in Device Manager (in my case COM12 and COM13). For the following instructions, it is important to know that the lower port represents the Linux port, and the higher port is used for flashing the firmware.

Device Manager with two new serial devices
Fig.: Device Manager with two new serial devices

Flashing Firmware to the Ox64

First, two different software packages need to be downloaded: the program DevCube for flashing the firmware, and the actual firmware itself.
The firmware can be found in the repository https://github.com/openbouffalo/buildroot_bouffalo under Releases. Download the file bl808-linux-pine64_ox64_full_defconfig.tar.gz and extract it on your PC.

Release for U-Boot support
Fig.: Release for U-Boot support

According to openbouffalo's instructions, DevCube must be version 1.8.3 — newer versions seem to not work. (BouffaloLabDevCube-v1.8.3.zip) Normally, newer versions are downloaded from http://dev.bouffalolab.com/download.

The next step is to put the Ox64 into boot mode by pressing and holding the BOOT button while connecting VBUS to the Pico. (Make sure the connection is unplugged beforehand)

Now start DevCube, select BL808 as the chip, and switch to the MCU tab. Apply the following settings:

Settings in DevCube for MCU (adjust ports and paths accordingly)
Fig.: Settings in DevCube for MCU (adjust ports and paths accordingly)

For the second step, switch to the IOT tab and apply the following settings:

Settings in DevCube for IOT (adjust path accordingly)
Fig.: Settings in DevCube for IOT (adjust path accordingly)

You can now close DevCube and disconnect the Ox64 from the power supply (VBUS).

Preparing Linux

You now need an empty SD card (in this case, 16GB) to load Linux onto it. For this, you can use the software Etcher.
Warning: All data on the SD card will be overwritten!
Open Etcher and select the image sdcard-pine64_ox64_full_defconfig.img.xz from the folder where the firmware was previously downloaded. After selecting the target drive, Linux can be flashed to the SD card.
Warning: Always make sure the correct drive with the SD card is selected!

Select image sdcard-pine64_ox64_full_defconfig.img.xz in Etcher
Fig.: Select image sdcard-pine64_ox64_full_defconfig.img.xz in Etcher
Select the correct drive in Etcher
Fig.: Select the correct drive in Etcher

After clicking Flash!, it may take some time (~10 minutes) for the Linux image to be successfully written to the SD card. Once complete, you can close Etcher and insert the prepared SD card into the Ox64's slot.

Booting Linux

First, connect to the lower of the two ports (here: COM12) using a terminal program (e.g., PuTTY) with a baud rate of 2000000:

Connect to Ox64 using PuTTY
Fig.: Connect to Ox64 using PuTTY

Now reconnect the Ox64 to VBUS, and you should immediately see U-Boot booting in the serial console.

Booting the Ox64
Fig.: Booting the Ox64

There is an artificial delay of 5 seconds, allowing you to interrupt the boot process if necessary. Then, Linux will start, and the login screen will appear. (Login using root with no password)

Starting Linux on the Ox64 and reaching the login screen
Fig.: Starting Linux on the Ox64 and reaching the login screen

You can now try out some commands to test the system:

Linux
Fig.: Linux

Notes

Unfortunately, to the best of my knowledge, there are currently no drivers available for Wi-Fi, USB, etc., which will hopefully be provided in the future. I also haven't found any libraries or similar tools for accessing the GPIOs yet. Once these are in place, I see great potential in this little board. 😎

Further Links

Last edited by Christian Grieger on 2025-05-13
X
  1. [top]
  2. Features/Specifications
  3. Connections
  4. Flashing the Ox64
  5. Notes
  6. Further Links