> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/ask/flat/chapter-23-embedded-platforms-and-development-environments/di-23.4-jie-radxa-x4-x86-kai-fa-ban.md).

# 23.4 Radxa X4 x86 Development Board

In addition to ARM architecture single-board computers such as the Raspberry Pi, x86 architecture development board products also exist on the market.

## Overview

The Radxa X4 is a single-board computer based on the x86 architecture, with an Intel N100 as its core processor. This section is based on the hardware configuration with 16 GB of memory and 128 GB eMMC storage.

### BIOS Configuration Notes

For unlocking BIOS settings related to power limits such as PL1 and PL2, please refer to the boot manager and UEFI firmware sections of this book.

### FreeBSD Version Compatibility

It is recommended to install FreeBSD 15.1-RELEASE (released in June 2026) or later.

FreeBSD 14.3-RELEASE has a potential issue: if using the eMMC storage version and installing the system on eMMC, the number of partitions on the solid-state drive must not exceed 5, otherwise the ZFS file system will fail to boot properly.

### Hardware Configuration Information

The wireless network adapter equipped on the Radxa X4 is the RTL8852BE (i.e., Radxa A8 wireless module V2.0), where the Wi-Fi function is implemented via the PCIe channel, while the Bluetooth function is provided via the USB channel.

The wired Ethernet controller on the Radxa X4 is the Intel i226-V.

## Graphics Driver Installation and Configuration

### Driver Installation

**Install using the pkg binary package manager:**

```sh
# pkg install drm-61-kmod
```

**Or build and install from the Port:**

```sh
# cd /usr/ports/graphics/drm-61-kmod/
# make install clean
```

### Driver Loading Configuration

After installing the driver, you need to configure the driver module to load automatically at boot. Add `i915kms` to **/etc/rc.conf**:

```sh
# sysrc -f /etc/rc.conf kld_list+=i915kms
```

## Wireless Network Adapter Driver Installation and Configuration

### Driver Installation

**Install using the pkg binary package manager:**

```sh
# pkg install wifi-firmware-rtw89-kmod
```

**Or build and install from the Ports:**

```sh
# cd /usr/ports/net/wifi-firmware-rtw89-kmod/
# make install clean
```

### Wireless Network Performance Configuration

After completing the wireless network adapter driver installation, further configuration is needed to optimize wireless connection stability and performance. The current driver does not yet support Wi-Fi 5/6 standards.

On the 2.4 GHz band, the transfer rate only reaches the 802.11g standard; on the 5 GHz band, the transfer rate only reaches the 802.11a standard. Although the rtw89 driver hardware supports 802.11a/b/g/n/ac/ax modes, the current compatibility layer code only supports 802.11a/b/g modes; 802.11n/ac/ax support is yet to be implemented.

When using the rtw89 module, edit the **/boot/loader.conf** configuration file and add the following parameter:

```ini
compat.linuxkpi.skb.mem_limit=1
```

This parameter sets the Linux KPI network buffer memory limit to `1`, which resolves the issue of Wi-Fi failing to automatically reconnect after the system has been running for an extended period.

## System Real-Time Status Monitoring

### Resource Usage Monitoring

The following command refreshes virtual memory and system status summary information every second:

```sh
# systat -vmstat 1
    2 users    Load  2.01  3.28  3.42                  Mar  9 12:26:41
   Mem usage:  91%Phy 52%Kmem                           VN PAGER   SWAP PAGER
Mem:      REAL           VIRTUAL                        in   out     in   out
       Tot   Share     Tot    Share     Free   count
Act   432M  10400K   4610G   15868K    1373M   pages
All   434M  12244K   4610G   87652K                       ioflt  Interrupts
Proc:                                                     cow    3273 total
  r   p   d    s   w   Csw  Trp  Sys  Int  Sof  Flt   663 zfod        sdhci_pci0
  1           41        4K  684  138   2K       663       ozfod  1030 cpu0:timer
                                                         %ozfod   204 cpu1:timer
 0.2%Sys   0.2%Intr 25.3%User  0.0%Nice 74.3%Idle         daefr     3 cpu2:timer
|    |    |    |    |    |    |    |    |    |    |       prcfr     9 cpu3:timer
>>>>>>>>>>>>>                                             totfr  2022 xhci1 129
                                           dtbuf          react       igc0:rxq0
Namei     Name-cache   Dir-cache    345474 maxvn          pdwak     3 igc0:rxq1
   Calls    hits   %    hits   %    252374 numvn      249 pdpgs       igc0:rxq2
       3       3 100                176597 frevn          intrn     2 igc0:rxq3
                                                    8298M wire        igc0:aq
Disks mmcsd mmcsd mmcsd  nda0 pass0                  581M act         nvme0:admi
KB/t   0.00  0.00  0.00  0.00  0.00                 5380M inact       nvme0:io0
tps       0     0     0     0     0                  548K laund       nvme0:io1
MB/s   0.00  0.00  0.00  0.00  0.00                 1373M free        nvme0:io2
%busy     0     0     0     0     0                   57K buf         nvme0:io3
                                                                      hdac0 140
```

## CPU Temperature Monitoring

Excessively high operating temperatures can cause system instability, frequency throttling, or even permanent hardware damage.

### CPU Temperature Reading Method

First, dynamically load the `coretemp` kernel module, which is used for Intel processor temperature monitoring:

```sh
# kldload coretemp # Load coretemp module for Intel processors; use amdtemp for AMD processors
# kldstat -v | grep coretemp # Confirm the module has been loaded successfully
# sysctl -a | grep temperature
hw.acpi.thermal.tz0.temperature: 27.9C # This value does not represent CPU core temperature; it is typically the motherboard ambient temperature
dev.cpu.3.temperature: 41.0C
dev.cpu.2.temperature: 40.0C
dev.cpu.1.temperature: 40.0C
dev.cpu.0.temperature: 40.0C
```

If you need to view the temperature information of individual CPU cores, execute the following command:

```sh
# sysctl dev.cpu | grep temperature
dev.cpu.3.temperature: 30.0C
dev.cpu.2.temperature: 30.0C
dev.cpu.1.temperature: 29.0C
dev.cpu.0.temperature: 30.0C
```

### Persisting Temperature Monitoring Configuration

To ensure CPU temperature monitoring works properly after each system boot, the temperature monitoring module loading configuration needs to be persisted. To facilitate system monitoring software such as htop in reading CPU temperature information, edit the **/boot/loader.conf** configuration file and add the following content:

```ini
coretemp_load="YES"
```

This configuration enables the system to automatically load the `coretemp` kernel module at boot.

### References

* Intel Corporation. Intel® Processor N100\[EB/OL]. \[2026-04-17]. <https://ark.intel.com/content/www/cn/zh/ark/products/231803/intel-processor-n100-6m-cache-up-to-3-40-ghz.html>. N100 rated specifications.
* FreeBSD Project. coretemp(4)\[EB/OL]. \[2026-03-25]. <https://man.freebsd.org/cgi/man.cgi?query=coretemp&sektion=4>. FreeBSD official coretemp module man page for Intel processor temperature monitoring.
* FreeBSD Project. amdtemp(4)\[EB/OL]. \[2026-03-25]. <https://man.freebsd.org/cgi/man.cgi?query=amdtemp&sektion=4>. FreeBSD official amdtemp module man page for AMD processor temperature monitoring.
* Vivek Gite. FreeBSD find CPU (processor) temperature command\[EB/OL]. (2022-06-16)\[2026-03-25]. <https://www.cyberciti.biz/faq/freebsd-determine-processor-cpu-temperature-command/>. Introduces methods and commands for reading CPU temperature on FreeBSD.

## Appendix: How to Install Intel i226-V Network Adapter Driver on Server 2025

In addition to FreeBSD, some users need to use the Radxa X4 development board on Windows Server systems.

This appendix describes the method for installing the Intel i226-V network adapter driver on Windows Server 2025. The i226-V can use the I226-LM driver on Windows Server without modifying any files or system configuration. The I226-LM is compatible with the I226-V in basic Ethernet functionality, but the I226-LM additionally supports enterprise management features such as Intel vPro/AMT.

The steps are as follows:

1. Download and extract the [Intel® Network Adapter Driver for Windows Server 2025\*](https://www.intel.com/content/www/us/en/download/838943/intel-network-adapter-driver-for-windows-server-2025.html)
2. Locate the Ethernet Controller in Device Manager
3. On its properties page, select "Update Driver"
4. Click "Browse my computer for driver software"
5. Select "Let me pick from a list of available drivers on my computer"
6. In "Select the type of device from the list below", select "Network adapters"
7. In the "Select the device driver you want to install for this hardware" interface, click the "Have Disk" button at the bottom right
8. Click "Browse", locate the `e2f.inf` file in the driver files, and click "OK"
9. Select the entry "Intel(R) Ethernet Controller I226-LM"

### References

* Dang Wo Ning Wang Shen Yuan. Installation of ASUS motherboard onboard Intel i225-V and i226-V network adapter drivers on Windows Server 2019\[EB/OL]. (2023-04-25)\[2026-03-25]. <https://zhuanlan.zhihu.com/p/624820359>.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/ask/flat/chapter-23-embedded-platforms-and-development-environments/di-23.4-jie-radxa-x4-x86-kai-fa-ban.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
