From f8db580279427afecdad85712e25d70933e841c2 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 11:38:57 +0800 Subject: [PATCH 1/8] docs: add dragon q6a vnc login --- docs/common/radxa-os/remote-login/_vnc.mdx | 341 ++++++++++++++++++ docs/dragon/q6a/system-config/vnc-login.md | 15 + .../common/radxa-os/remote-login/_vnc.mdx | 341 ++++++++++++++++++ .../dragon/q6a/system-config/vnc-login.md | 15 + .../system-config/vnc-gnome-succ.webp | Bin 0 -> 18310 bytes 5 files changed, 712 insertions(+) create mode 100644 docs/common/radxa-os/remote-login/_vnc.mdx create mode 100644 docs/dragon/q6a/system-config/vnc-login.md create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/system-config/vnc-login.md create mode 100644 static/img/common/radxa-os/system-config/vnc-gnome-succ.webp diff --git a/docs/common/radxa-os/remote-login/_vnc.mdx b/docs/common/radxa-os/remote-login/_vnc.mdx new file mode 100644 index 000000000..6a435781d --- /dev/null +++ b/docs/common/radxa-os/remote-login/_vnc.mdx @@ -0,0 +1,341 @@ +import { Image } from "@site/src/utils/docs"; + +## 使用说明 + +VNC 远程登录需要满足同一局域网和带有图形界面的系统。且双方设备需要开启 VNC 服务。 + +## 控制端(PC) + +### 下载 VNC Viewer + +### 下载 VNC Viewer + +我们需要在远程设备上安装 VNC Viewer 软件控制主板。 + +访问 [RealVNC](https://www.realvnc.com/en/connect/download/viewer) 官网下载 VNC Viewer 安装包。 + +① : 选择远程设备的系统平台 + +② : 下载 VNC Viewer 安装包 + +
+ +
+ +### 安装 VNC Viewer + + + + + +下载 windows 版本的 `*.exe` 安装包后。 + +- 运行安装包 + +以管理员身份运行 `VNC-Viewer-xxx.exe` 安装程序。 + +
+ +
+- 软件语言 + +选择 `English` 语言,点击 `OK` 进入下一步。 + +
+ +
+ +- 进入安装 + +点击 `Next` 进入安装程序。 + +
+ +
+ +- 同意协议 + +勾选 `I accept the terms in the License Agreement` 选项,点击 `Next` 进入下一步。 + +
+ +
+ +- 安装路径 + +建议选择软件默认安装路径,点击 `Next` 进入下一步。 + +
+ +
+ +- 正式安装 + +点击 `Install` 开始正式安装。 + +
+ +
+ +- 完成安装 + +点击 `Finish` 完成安装。 + +
+ +
+ +
+ + + +下载 Linux 版本的 `*.deb` 安装包后,在终端命令行运行以下命令安装 VNC Viewer: + + + +``` +sudo dpkg -i VNC-Viewer-xxx.deb +``` + + + + + +
+ +### 运行 VNC Viewer + +安装完成后,打开 VNC Viewer 软件: 您可以选择不登录账号使用 VNC Viewer 软件。 + +
+ +
+ +
+ VNC Viewer 界面 + +
+ +## 被控端(主板) + +### 安装 VNC 服务器 + +在主板的终端命令行运行以下命令安装 VNC 服务器: + + + +``` +sudo apt update +sudo apt install -y tigervnc-standalone-server tigervnc-tools dbus-x11 tigervnc-common +``` + + + +### 设置 VNC 远程密码 + +在主板的终端命令行运行以下命令设置 VNC 远程密码: + + + +``` +vncpasswd +``` + + + +:::tip +输入密码和确认密码不会显示在屏幕上,系统提示是否创建一个只读密码,选择 `n`(否)。 +::: + +完成密码设置后,系统会提示类似信息: + +``` +Password: +Verify: +Would you like to enter a view-only password (y/n)? n +A view-only password is not used +``` + +### 配置 VNC 启动文件 + +在主板编辑 `~/.vnc/xstartup` 文件: + + + +``` +sudo vi ~/.vnc/xstartup +``` + + + +修改 `~/.vnc/xstartup` 文件内容为: + + + + + +``` +#!/bin/sh +unset SESSION_MANAGER +unset DBUS_SESSION_BUS_ADDRESS +export XDG_SESSION_TYPE=x11 +export DESKTOP_SESSION=plasma +exec startplasma-x11 +``` + + + + + +``` +#!/bin/sh + +unset SESSION_MANAGER +unset DBUS_SESSION_BUS_ADDRESS +unset XDG_RUNTIME_DIR + +if command -v dbus-launch >/dev/null 2>&1; then + eval "$(dbus-launch --sh-syntax --exit-with-session)" +fi + +export XDG_SESSION_TYPE=x11 +export DESKTOP_SESSION=ubuntu + +exec gnome-session +``` + + + + + +编辑 `~/.vnc/xstartup` 文件后,需要赋予该文件可执行权限: + + + +``` +sudo chmod +x ~/.vnc/xstartup +``` + + + +### 启动 VNC 服务器 + +在主板的终端命令行运行以下命令启动 VNC 服务器:使用 `-localhost no` 参数可以允许远程访问。 + + + +``` +vncserver -localhost no +``` + + + +启动成功后,终端会输出类似信息,提示 VNC 服务器的端口号。 + +``` +New Xtigervnc server \*\*\*:1 (radxa)' on port 5901 for display :1. +Use xtigervncviewer -SecurityTypes VncAuth -passwd /tmp/tigervnc.VQ4DfI/passwd :1 to connect to the VNC server. +``` + +### 查看 VNC 服务器状态 + +在主板的终端命令行运行以下命令查看 VNC 服务器状态: + + + +``` +vncserver -list +``` + + + +终端会输出类似信息: + +``` +TigerVNC server sessions: + +X DISPLAY # RFB PORT # RFB UNIX PATH PROCESS ID # SERVER +1 5901 3283 Xtigervnc +``` + +### 关闭 VNC 服务器 + +在主板的终端命令行运行以下命令可以关闭 VNC 服务器:其中命令中的 `:1` 代表 VNC 服务器的显示编号。 + + + +``` +vncserver -kill :1 +``` + + + +关闭 VNC 服务器后,VNC Viewer 软件会自动断开连接。 + +## VNC 远程登录 + +在另一台设备上打开 VNC Viewer 软件,根据主板的 IP 地址和端口号进行 VNC 连接。 + +① : 填写主板的 IP 地址和端口号 + +② : 点击 `Connect to address ···` 连接主板 + +
+ +
+ +① : 输入 VNC 远程设置的密码 + +② : 勾选 `Remember password` 选项可以保存密码,方便下次登录 + +③ : 点击 `OK` 进行连接 + +
+ +
+ + +:::tip VNC 黑屏 +若 VNC 远程登录黑屏,可以检查系统的自动登录选项是否开启,若开启,需要关闭自动登录选项。 +::: diff --git a/docs/dragon/q6a/system-config/vnc-login.md b/docs/dragon/q6a/system-config/vnc-login.md new file mode 100644 index 000000000..027ff5301 --- /dev/null +++ b/docs/dragon/q6a/system-config/vnc-login.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +--- + +import VNC_REMOTE from '../../../common/radxa-os/remote-login/\_vnc.mdx'; + +# VNC 远程登录 + +:::tip 教程参考 + +本教程部分内容参考社区用户 YeWenXuan 的整理与贡献,特此致谢。 + +::: + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx new file mode 100644 index 000000000..442b67aa7 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx @@ -0,0 +1,341 @@ +import { Image } from "@site/src/utils/docs"; + +## Notes + +VNC remote login requires both devices to be on the same LAN and the target device to have a graphical desktop environment. VNC must be enabled on both devices. + +## Controller (PC) + +### Download VNC Viewer + +### Download VNC Viewer + +Install VNC Viewer on the controller device to control the board. + +Download the VNC Viewer installer from the official [RealVNC](https://www.realvnc.com/en/connect/download/viewer) website. + +① : Select the operating system platform of the controller device + +② : Download the VNC Viewer installer + +
+ +
+ +### Install VNC Viewer + + + + + +After downloading the Windows `*.exe` installer: + +- Run the installer + +Run the `VNC-Viewer-xxx.exe` installer as an administrator. + +
+ +
+- Language + +Select `English` and click `OK` to continue. + +
+ +
+ +- Start installation + +Click `Next` to continue. + +
+ +
+ +- Accept the license + +Check `I accept the terms in the License Agreement`, then click `Next`. + +
+ +
+ +- Installation path + +We recommend using the default installation path, then click `Next`. + +
+ +
+ +- Install + +Click `Install` to start the installation. + +
+ +
+ +- Finish + +Click `Finish` to complete the installation. + +
+ +
+ +
+ + + +After downloading the Linux `*.deb` package, run the following command in a terminal to install VNC Viewer: + + + +``` +sudo dpkg -i VNC-Viewer-xxx.deb +``` + + + + + +
+ +### Launch VNC Viewer + +After installation, open VNC Viewer. You can use VNC Viewer without signing in. + +
+ +
+ +
+ VNC Viewer interface + +
+ +## Target (Board) + +### Install the VNC Server + +Run the following commands on the board to install the VNC server: + + + +``` +sudo apt update +sudo apt install -y tigervnc-standalone-server tigervnc-tools dbus-x11 tigervnc-common +``` + + + +### Set a VNC Password + +Run the following command on the board to set a VNC password: + + + +``` +vncpasswd +``` + + + +:::tip +The password and confirmation will not be shown on screen. When asked whether to create a view-only password, choose `n` (No). +::: + +After setting the password, you will see output similar to the following: + +``` +Password: +Verify: +Would you like to enter a view-only password (y/n)? n +A view-only password is not used +``` + +### Configure the VNC Startup Script + +Edit the `~/.vnc/xstartup` file on the board: + + + +``` +sudo vi ~/.vnc/xstartup +``` + + + +Replace the contents of `~/.vnc/xstartup` with the following: + + + + + +``` +#!/bin/sh +unset SESSION_MANAGER +unset DBUS_SESSION_BUS_ADDRESS +export XDG_SESSION_TYPE=x11 +export DESKTOP_SESSION=plasma +exec startplasma-x11 +``` + + + + + +``` +#!/bin/sh + +unset SESSION_MANAGER +unset DBUS_SESSION_BUS_ADDRESS +unset XDG_RUNTIME_DIR + +if command -v dbus-launch >/dev/null 2>&1; then + eval "$(dbus-launch --sh-syntax --exit-with-session)" +fi + +export XDG_SESSION_TYPE=x11 +export DESKTOP_SESSION=ubuntu + +exec gnome-session +``` + + + + + +After editing `~/.vnc/xstartup`, make it executable: + + + +``` +sudo chmod +x ~/.vnc/xstartup +``` + + + +### Start the VNC Server + +Run the following command on the board to start the VNC server. The `-localhost no` option allows remote access. + + + +``` +vncserver -localhost no +``` + + + +After a successful start, the terminal will print output similar to the following, which includes the VNC server port. + +``` +New Xtigervnc server \*\*\*:1 (radxa)' on port 5901 for display :1. +Use xtigervncviewer -SecurityTypes VncAuth -passwd /tmp/tigervnc.VQ4DfI/passwd :1 to connect to the VNC server. +``` + +### Check VNC Server Status + +Run the following command on the board to check the VNC server status: + + + +``` +vncserver -list +``` + + + +The terminal will output something like this: + +``` +TigerVNC server sessions: + +X DISPLAY # RFB PORT # RFB UNIX PATH PROCESS ID # SERVER +1 5901 3283 Xtigervnc +``` + +### Stop the VNC Server + +Run the following command on the board to stop the VNC server. In the command, `:1` is the display number. + + + +``` +vncserver -kill :1 +``` + + + +After the VNC server is stopped, VNC Viewer will disconnect automatically. + +## VNC Remote Login + +Open VNC Viewer on another device and connect using the board's IP address and port. + +① : Enter the board's IP address and port + +② : Click `Connect to address ···` to connect to the board + +
+ +
+ +① : Enter the VNC password + +② : Check `Remember password` to save the password for next time + +③ : Click `OK` to connect + +
+ +
+ + +:::tip VNC Black Screen +If the VNC session shows a black screen, check whether auto-login is enabled. If it is enabled, disable auto-login. +::: diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/system-config/vnc-login.md b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/system-config/vnc-login.md new file mode 100644 index 000000000..f356cff69 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/system-config/vnc-login.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +--- + +import VNC_REMOTE from '../../../common/radxa-os/remote-login/\_vnc.mdx'; + +# VNC Remote Login + +:::tip Credits + +Parts of this guide are based on contributions from the community user YeWenXuan. Thanks! + +::: + + diff --git a/static/img/common/radxa-os/system-config/vnc-gnome-succ.webp b/static/img/common/radxa-os/system-config/vnc-gnome-succ.webp new file mode 100644 index 0000000000000000000000000000000000000000..c171e27c534d8643cc4c523c090dc4359435bf4b GIT binary patch literal 18310 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 Vv03-FDq)>5Mh;*3c*b>Y5CGCTi(3Ey literal 0 HcmV?d00001 From c4c011a9018301498f379cc7e7127bbe3c75a978 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 11:58:16 +0800 Subject: [PATCH 2/8] docs: add dragon q6a vnc login --- docs/common/radxa-os/remote-login/_vnc.mdx | 2 -- .../current/common/radxa-os/remote-login/_vnc.mdx | 2 -- 2 files changed, 4 deletions(-) diff --git a/docs/common/radxa-os/remote-login/_vnc.mdx b/docs/common/radxa-os/remote-login/_vnc.mdx index 6a435781d..2edb73e13 100644 --- a/docs/common/radxa-os/remote-login/_vnc.mdx +++ b/docs/common/radxa-os/remote-login/_vnc.mdx @@ -8,8 +8,6 @@ VNC 远程登录需要满足同一局域网和带有图形界面的系统。且 ### 下载 VNC Viewer -### 下载 VNC Viewer - 我们需要在远程设备上安装 VNC Viewer 软件控制主板。 访问 [RealVNC](https://www.realvnc.com/en/connect/download/viewer) 官网下载 VNC Viewer 安装包。 diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx index 442b67aa7..638d2f106 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/remote-login/_vnc.mdx @@ -8,8 +8,6 @@ VNC remote login requires both devices to be on the same LAN and the target devi ### Download VNC Viewer -### Download VNC Viewer - Install VNC Viewer on the controller device to control the board. Download the VNC Viewer installer from the official [RealVNC](https://www.realvnc.com/en/connect/download/viewer) website. From ca61e54c8981af47377bd0939faa28aaaa14f15f Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 13:43:07 +0800 Subject: [PATCH 3/8] fix: dragon q6a imx 219 camera use --- docs/dragon/q6a/accessories/camera-8m-219.md | 48 ++++++------------- .../dragon/q6a/accessories/camera-8m-219.md | 48 ++++++------------- 2 files changed, 30 insertions(+), 66 deletions(-) diff --git a/docs/dragon/q6a/accessories/camera-8m-219.md b/docs/dragon/q6a/accessories/camera-8m-219.md index 39841ecb4..b0a65b941 100644 --- a/docs/dragon/q6a/accessories/camera-8m-219.md +++ b/docs/dragon/q6a/accessories/camera-8m-219.md @@ -36,6 +36,7 @@ sudo apt install \ qtdeclarative5-dev \ libqt5opengl5-dev \ qml-module-qtquick-controls \ + libgles2-mesa-dev \ qml-module-qtquick2 -y ``` @@ -77,49 +78,30 @@ sudo nano /usr/local/share/libcamera/ipa/simple/imx219.yaml 将下面内容复制到 `/usr/local/share/libcamera/ipa/simple/imx219.yaml`文件。 ``` +# SPDX-License-Identifier: CC0-1.0 %YAML 1.1 --- version: 1 algorithms: - BlackLevel: - Awb: - bayes: - k: 0.02 - sigma: 0.1 - priors: - - lux: 400 - prior: [2.2, 1.0, 1.2] - - lux: 100 - prior: [2.7, 1.0, 1.9] - # Optional but recommended for IMX219 + # 手动引导白平衡(非常重要) + gains: + red: 1.8 + green: 1.0 + blue: 1.4 - Ccm: ccms: - - ct: 4500 - ccm: - [ 1.31, -0.59, 0.28, - -0.32, 1.73, -0.41, - -0.04, -0.98, 2.02 ] - ct: 6500 - ccm: - [ 1.48, -0.74, 0.26, - -0.35, 1.86, -0.51, - -0.06, -1.09, 2.15 ] - - Lut: - curve: - - [0, 0] - - [1024, 487] - - [2048, 1096] - - [3072, 1780] - - [4096, 2593] - - [5120, 3410] - - [6144, 4095] + ccm: [ + 1.35, -0.25, -0.10, + -0.10, 0.80, -0.10, + -0.05, -0.30, 1.35 + ] - Agc: + # 防止自动曝光拉灰 + target: 0.55 speed: 0.2 - metering-mode: centre-weighted - exposure-mode: normal - constraint-mode: normal - fixed-shutter: 0 - fixed-analogue-gain: 0.0 ... ``` @@ -141,7 +123,7 @@ sudo chmod 666 /dev/dma_heap/* ``` cd libcamera/build/src/apps/qcam/ -./qcam --renderer=gles --stream pixelformat=YUYV,width=1920,height=1080 +./qcam --stream pixelformat=YUYV,width=1920,height=1080 ``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/camera-8m-219.md b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/camera-8m-219.md index 5d72b838c..84e295293 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/camera-8m-219.md +++ b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/camera-8m-219.md @@ -36,6 +36,7 @@ sudo apt install \ qtdeclarative5-dev \ libqt5opengl5-dev \ qml-module-qtquick-controls \ + libgles2-mesa-dev \ qml-module-qtquick2 -y ``` @@ -77,49 +78,30 @@ sudo nano /usr/local/share/libcamera/ipa/simple/imx219.yaml Copy the following content into `/usr/local/share/libcamera/ipa/simple/imx219.yaml`. ``` +# SPDX-License-Identifier: CC0-1.0 %YAML 1.1 --- version: 1 algorithms: - BlackLevel: - Awb: - bayes: - k: 0.02 - sigma: 0.1 - priors: - - lux: 400 - prior: [2.2, 1.0, 1.2] - - lux: 100 - prior: [2.7, 1.0, 1.9] - # Optional but recommended for IMX219 + # Manual white balance guidance (important) + gains: + red: 1.8 + green: 1.0 + blue: 1.4 - Ccm: ccms: - - ct: 4500 - ccm: - [ 1.31, -0.59, 0.28, - -0.32, 1.73, -0.41, - -0.04, -0.98, 2.02 ] - ct: 6500 - ccm: - [ 1.48, -0.74, 0.26, - -0.35, 1.86, -0.51, - -0.06, -1.09, 2.15 ] - - Lut: - curve: - - [0, 0] - - [1024, 487] - - [2048, 1096] - - [3072, 1780] - - [4096, 2593] - - [5120, 3410] - - [6144, 4095] + ccm: [ + 1.35, -0.25, -0.10, + -0.10, 0.80, -0.10, + -0.05, -0.30, 1.35 + ] - Agc: + # Prevent grayish auto exposure + target: 0.55 speed: 0.2 - metering-mode: centre-weighted - exposure-mode: normal - constraint-mode: normal - fixed-shutter: 0 - fixed-analogue-gain: 0.0 ... ``` @@ -141,7 +123,7 @@ Open the system desktop terminal, go to the libcamera build directory, and start ``` cd libcamera/build/src/apps/qcam/ -./qcam --renderer=gles --stream pixelformat=YUYV,width=1920,height=1080 +./qcam --stream pixelformat=YUYV,width=1920,height=1080 ``` From 76201c13a6b79e893dfa9e6a88d4259e2e363303 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 14:27:43 +0800 Subject: [PATCH 4/8] fix: nomachine use --- .../radxa-os/system-config/_nomachine.mdx | 44 ++---------------- .../radxa-os/system-config/_nomachine.mdx | 44 ++---------------- .../nomachine-success-dragon-q6a.webp | Bin 15430 -> 18310 bytes 3 files changed, 6 insertions(+), 82 deletions(-) diff --git a/docs/common/radxa-os/system-config/_nomachine.mdx b/docs/common/radxa-os/system-config/_nomachine.mdx index b0140acdb..2809e3061 100644 --- a/docs/common/radxa-os/system-config/_nomachine.mdx +++ b/docs/common/radxa-os/system-config/_nomachine.mdx @@ -129,57 +129,19 @@ wget ::: -### 安装依赖包 - -安装虚拟显示器驱动,这是 NoMachine 远程桌面正常工作所必需的: - - - -``` -sudo apt update -sudo apt install xserver-xorg-video-dummy -y -``` - - - ### 配置虚拟显示器 -创建虚拟显示器配置文件,使 NoMachine 能够在没有物理显示器的情况下正常工作: +修改配置文件,使 NoMachine 能够在没有物理显示器的情况下正常工作: ``` -sudo nano /usr/share/X11/xorg.conf.d/10-dummy.conf +sudo nano /usr/NX/etc/node.cfg ``` -将以下配置内容复制到文件中并保存: - -``` -Section "Device" - Identifier "DummyDevice" - Driver "dummy" - VideoRam 256000 -EndSection - -Section "Monitor" - Identifier "DummyMonitor" - HorizSync 28.0-80.0 - VertRefresh 48.0-75.0 - Option "DPMS" "false" -EndSection - -Section "Screen" - Identifier "DummyScreen" - Device "DummyDevice" - Monitor "DummyMonitor" - SubSection "Display" - Depth 24 - Modes "1920x1080" - EndSubSection -EndSection -``` +将文件内的 `PhysicalDisplays :0` 改为 `PhysicalDisplays :1`,然后保存文件。 ### 重启系统 diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/system-config/_nomachine.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/system-config/_nomachine.mdx index 83dfda91c..3652635fd 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/system-config/_nomachine.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/common/radxa-os/system-config/_nomachine.mdx @@ -129,57 +129,19 @@ wget ::: -### Install Dependencies - -Install the virtual display driver, which is required for NoMachine remote desktop to work properly: - - - -``` -sudo apt update -sudo apt install xserver-xorg-video-dummy -y -``` - - - ### Configure Virtual Display -Create a virtual display configuration file to allow NoMachine to work properly without a physical display: +Modify the configuration file so that NoMachine can work properly without a physical display: ``` -sudo nano /usr/share/X11/xorg.conf.d/10-dummy.conf +sudo nano /usr/NX/etc/node.cfg ``` -Copy the following configuration content to the file and save: - -``` -Section "Device" - Identifier "DummyDevice" - Driver "dummy" - VideoRam 256000 -EndSection - -Section "Monitor" - Identifier "DummyMonitor" - HorizSync 28.0-80.0 - VertRefresh 48.0-75.0 - Option "DPMS" "false" -EndSection - -Section "Screen" - Identifier "DummyScreen" - Device "DummyDevice" - Monitor "DummyMonitor" - SubSection "Display" - Depth 24 - Modes "1920x1080" - EndSubSection -EndSection -``` +Change `PhysicalDisplays :0` to `PhysicalDisplays :1` in the file, then save it. ### Restart System diff --git a/static/img/common/radxa-os/system-config/nomachine-success-dragon-q6a.webp b/static/img/common/radxa-os/system-config/nomachine-success-dragon-q6a.webp index 56ae1005f0cd788d1ba537a4b33a96f782e42e07..c171e27c534d8643cc4c523c090dc4359435bf4b 100644 GIT binary patch literal 18310 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 Vv03-FDq)>5Mh;*3c*b>Y5CGCTi(3Ey literal 15430 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 From cd811cf7c62c4b17438d6df2baff48231db05155 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 15:26:15 +0800 Subject: [PATCH 5/8] docs: add dragon q6a work with waveshare 3.5 inch lcd --- .../accessories/_wareshare-spi-lcd-3-5.mdx | 111 ++++++++++++++++++ .../q6a/accessories/wareshare-spi-lcd-3-5.md | 9 ++ .../accessories/_wareshare-spi-lcd-3-5.mdx | 111 ++++++++++++++++++ .../q6a/accessories/wareshare-spi-lcd-3-5.md | 9 ++ 4 files changed, 240 insertions(+) create mode 100644 docs/common/accessories/_wareshare-spi-lcd-3-5.mdx create mode 100644 docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md diff --git a/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx b/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx new file mode 100644 index 000000000..3839813fc --- /dev/null +++ b/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx @@ -0,0 +1,111 @@ +在 {props.product} 上使用微雪 3.5 寸树莓派显示屏(WareShare 3.5" RPi LCD (B))。 + +## 硬件连接 + +将显示屏安装到主板上。 + +## 软件使能 + +使用瑞莎系统自带的 Rsetup 工具使能微雪 3.5 寸树莓派显示屏。 + +:::tip Rsetup 使用指南 + +- 选中选项 : 对应选项会高亮显示 +- 确认选择 : 按 `Enter` +- 取消选择 : 按 `ESC` +- 切换选项 : 按 `Up` 、 `Down` 、 `Left` 、 `Right` 控制 +- 多选界面 : 按 `Space` 选择,按 `Enter` 确认选择;选择对应功能后,对应选项框会出现一个 `*` ,表示该选项已启用 + +::: + +在终端命令行运行 `rsetup` 命令启动 Rsetup 工具: + + + +``` +rsetup +``` + + + +在 Rsetup 工具中依次进入 Overlays -> Manage overlays。 + +1. 通过方向键找到 [ ] Enable Waveshare 3.5inch RPi LCD (B) on SPI12 选项 +2. 按空格出现 [*] Enable Waveshare 3.5inch RPi LCD (B) on SPI12 说明已启用该功能 +3. 按 Enter 确认并保存设置,使能显示屏。 +4. 重启系统,使配置生效。 + +## 查看设备 + +使用命令查看设备对应 fb(framebuffer):显示屏对应的设备 ID 是 fb_ili9486。 + + + +``` +cat /sys/class/graphics/fb0/name +``` + + + +如果显示屏被正确启用,你应该会看到类似以下的输出(以 fb0 为例): + +``` +fb_ili9486 +``` + +说明:若显示屏设备不在 fb0,可以修改命令中的 `fb0`,如 `cat /sys/class/graphics/fb1/name`。 + +## 显示图片 + +### 安装 fbi + + + +``` +sudo apt-get update +sudo apt-get install -y fbi +``` + + + +### 显示图片 + +将图片显示到显示屏的 framebuffer:提前准备好图片,以 fb0 作为示例。 + + + +``` +sudo fbi -vt 1 --noverbose -d /dev/fb0 logo.bmp +``` + + + +### 显示终端 + +- 将 tty2 的输出映射到显示屏上 + +键盘同时按下 Ctrl + Alt + F2 进入 TTY2 纯文本模式, 将在显示屏上显示 tty2 终端。 + + + +``` +sudo con2fbmap 2 0 +``` + + + +参数说明:其中 2 为 TTY2,0 为 fb0。 + +- 将 tty3 的输出映射到显示屏上 + +键盘同时按下 Ctrl + Alt + F3 进入 TTY3 纯文本模式, 将在显示屏上显示 tty3 终端。 + + + +``` +sudo con2fbmap 3 0 +``` + + + +参数说明:其中 3 为 TTY3,0 为 fb0。 diff --git a/docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md b/docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md new file mode 100644 index 000000000..9aa9ffa89 --- /dev/null +++ b/docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 2 +--- + +import WareshareSpiLcd35 from '../../../common/accessories/\_wareshare-spi-lcd-3-5.mdx'; + +# 微雪 3.5 寸树莓派显示屏 + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx new file mode 100644 index 000000000..563608550 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx @@ -0,0 +1,111 @@ +Use the Waveshare 3.5-inch Raspberry Pi LCD (Waveshare 3.5" RPi LCD (B)) on {props.product}. + +## Hardware connection + +Attach the display to the board. + +## Enable in software + +Use the built-in Rsetup tool in Radxa OS to enable the Waveshare 3.5-inch Raspberry Pi LCD. + +:::tip Rsetup quick guide + +- Select an item: the item will be highlighted +- Confirm: press `Enter` +- Cancel/Back: press `ESC` +- Navigate: use `Up`, `Down`, `Left`, `Right` +- Multi-select: press `Space` to toggle, then press `Enter` to confirm; a `*` indicates the option is enabled + +::: + +Run `rsetup` in the terminal to start Rsetup: + + + +``` +rsetup +``` + + + +In Rsetup, go to: Overlays -> Manage overlays. + +1. Use the arrow keys to find: [ ] Enable Waveshare 3.5inch RPi LCD (B) on SPI12 +2. Press `Space` to toggle it to: [*] Enable Waveshare 3.5inch RPi LCD (B) on SPI12 +3. Press `Enter` to confirm and save the settings. +4. Reboot the system to apply the configuration. + +## Check the device + +Check which fb (framebuffer) device the screen is bound to. The device name for this LCD is `fb_ili9486`. + + + +``` +cat /sys/class/graphics/fb0/name +``` + + + +If the display is enabled correctly, you should see output similar to the following (fb0 as an example): + +``` +fb_ili9486 +``` + +Note: If the LCD is not on `fb0`, replace `fb0` with the actual one, e.g. `cat /sys/class/graphics/fb1/name`. + +## Display an image + +### Install fbi + + + +``` +sudo apt-get update +sudo apt-get install -y fbi +``` + + + +### Show an image + +Display an image to the LCD framebuffer. Prepare an image file in advance. The following uses `fb0` as an example. + + + +``` +sudo fbi -vt 1 --noverbose -d /dev/fb0 logo.bmp +``` + + + +### Show a terminal (TTY) + +- Map the output of tty2 to the LCD + +Press Ctrl + Alt + F2 to switch to TTY2 text mode. tty2 will be shown on the LCD. + + + +``` +sudo con2fbmap 2 0 +``` + + + +Parameter notes: `2` is TTY2, `0` is fb0. + +- Map the output of tty3 to the LCD + +Press Ctrl + Alt + F3 to switch to TTY3 text mode. tty3 will be shown on the LCD. + + + +``` +sudo con2fbmap 3 0 +``` + + + +Parameter notes: `3` is TTY3, `0` is fb0. diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md new file mode 100644 index 000000000..20e69381d --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 2 +--- + +import WareshareSpiLcd35 from '../../../common/accessories/\_wareshare-spi-lcd-3-5.mdx'; + +# Waveshare 3.5-inch RPi LCD + + From a2ad55c72da7bd927f7d5545e981380ef7c8b857 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 15:34:58 +0800 Subject: [PATCH 6/8] docs: add dragon q6a work with waveshare 3.5 inch lcd --- docs/common/accessories/_wareshare-spi-lcd-3-5.mdx | 8 ++++++-- .../current/common/accessories/_wareshare-spi-lcd-3-5.mdx | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx b/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx index 3839813fc..9729e4c21 100644 --- a/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx +++ b/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx @@ -84,7 +84,7 @@ sudo fbi -vt 1 --noverbose -d /dev/fb0 logo.bmp - 将 tty2 的输出映射到显示屏上 -键盘同时按下 Ctrl + Alt + F2 进入 TTY2 纯文本模式, 将在显示屏上显示 tty2 终端。 +终端输入以下命令,将 tty2 的输出映射到显示屏上。 @@ -96,9 +96,11 @@ sudo con2fbmap 2 0 参数说明:其中 2 为 TTY2,0 为 fb0。 +键盘同时按下 Ctrl + Alt + F2 进入 TTY2 纯文本模式, 将在显示屏上显示 tty2 终端。 + - 将 tty3 的输出映射到显示屏上 -键盘同时按下 Ctrl + Alt + F3 进入 TTY3 纯文本模式, 将在显示屏上显示 tty3 终端。 +终端输入以下命令,将 tty3 的输出映射到显示屏上。 @@ -109,3 +111,5 @@ sudo con2fbmap 3 0 参数说明:其中 3 为 TTY3,0 为 fb0。 + +键盘同时按下 Ctrl + Alt + F3 进入 TTY3 纯文本模式, 将在显示屏上显示 tty3 终端。 diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx index 563608550..3cd98f382 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx @@ -84,7 +84,7 @@ sudo fbi -vt 1 --noverbose -d /dev/fb0 logo.bmp - Map the output of tty2 to the LCD -Press Ctrl + Alt + F2 to switch to TTY2 text mode. tty2 will be shown on the LCD. +Run the following command in the terminal to map the output of tty2 to the LCD. @@ -96,9 +96,11 @@ sudo con2fbmap 2 0 Parameter notes: `2` is TTY2, `0` is fb0. +Press Ctrl + Alt + F2 to switch to TTY2 text mode. tty2 will be shown on the LCD. + - Map the output of tty3 to the LCD -Press Ctrl + Alt + F3 to switch to TTY3 text mode. tty3 will be shown on the LCD. +Run the following command in the terminal to map the output of tty3 to the LCD. @@ -109,3 +111,5 @@ sudo con2fbmap 3 0 Parameter notes: `3` is TTY3, `0` is fb0. + +Press Ctrl + Alt + F3 to switch to TTY3 text mode. tty3 will be shown on the LCD. From b587f3529c527a023c584322dd1e92d2f5d43cac Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 15:43:15 +0800 Subject: [PATCH 7/8] docs: modify waveshare 3.5 inch lcd file --- .../{_wareshare-spi-lcd-3-5.mdx => _waveshare-spi-lcd-3-5.mdx} | 0 .../{wareshare-spi-lcd-3-5.md => waveshare-spi-lcd-3-5.md} | 2 +- .../{_wareshare-spi-lcd-3-5.mdx => _waveshare-spi-lcd-3-5.mdx} | 0 .../{wareshare-spi-lcd-3-5.md => waveshare-spi-lcd-3-5.md} | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename docs/common/accessories/{_wareshare-spi-lcd-3-5.mdx => _waveshare-spi-lcd-3-5.mdx} (100%) rename docs/dragon/q6a/accessories/{wareshare-spi-lcd-3-5.md => waveshare-spi-lcd-3-5.md} (71%) rename i18n/en/docusaurus-plugin-content-docs/current/common/accessories/{_wareshare-spi-lcd-3-5.mdx => _waveshare-spi-lcd-3-5.mdx} (100%) rename i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/{wareshare-spi-lcd-3-5.md => waveshare-spi-lcd-3-5.md} (70%) diff --git a/docs/common/accessories/_wareshare-spi-lcd-3-5.mdx b/docs/common/accessories/_waveshare-spi-lcd-3-5.mdx similarity index 100% rename from docs/common/accessories/_wareshare-spi-lcd-3-5.mdx rename to docs/common/accessories/_waveshare-spi-lcd-3-5.mdx diff --git a/docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md b/docs/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md similarity index 71% rename from docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md rename to docs/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md index 9aa9ffa89..77b15a80d 100644 --- a/docs/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md +++ b/docs/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -import WareshareSpiLcd35 from '../../../common/accessories/\_wareshare-spi-lcd-3-5.mdx'; +import WareshareSpiLcd35 from '../../../common/accessories/\_waveshare-spi-lcd-3-5.mdx'; # 微雪 3.5 寸树莓派显示屏 diff --git a/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx b/i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_waveshare-spi-lcd-3-5.mdx similarity index 100% rename from i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_wareshare-spi-lcd-3-5.mdx rename to i18n/en/docusaurus-plugin-content-docs/current/common/accessories/_waveshare-spi-lcd-3-5.mdx diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md similarity index 70% rename from i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md rename to i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md index 20e69381d..9b4be8673 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/wareshare-spi-lcd-3-5.md +++ b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/accessories/waveshare-spi-lcd-3-5.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -import WareshareSpiLcd35 from '../../../common/accessories/\_wareshare-spi-lcd-3-5.mdx'; +import WareshareSpiLcd35 from '../../../common/accessories/\_waveshare-spi-lcd-3-5.mdx'; # Waveshare 3.5-inch RPi LCD From 5254eac525b8ac7c2db65b3bb1ec3f926eeffe19 Mon Sep 17 00:00:00 2001 From: WuMinlong <726485702@qq.com> Date: Fri, 6 Feb 2026 18:44:15 +0800 Subject: [PATCH 8/8] fix: dragon q6a download page --- docs/dragon/q6a/download.md | 8 ++------ .../current/dragon/q6a/download.md | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/dragon/q6a/download.md b/docs/dragon/q6a/download.md index e3633af6d..b5746b382 100644 --- a/docs/dragon/q6a/download.md +++ b/docs/dragon/q6a/download.md @@ -25,11 +25,7 @@ sidebar_position: 150 可以根据以下方式判断系统 SPI 固件版本信息: -1. 购买时间 - -若是 2026 年购买的产品,出厂为 20251230 版本的启动固件,无需烧录更新 SPI 启动固件。 - -2. 命令查询 +1. 命令查询 若系统可以正常启动,可以使用以下命令查询 SPI 启动固件版本信息: @@ -49,7 +45,7 @@ sudo dmidecode -s bios-version ``` -3. 系统启动异常 +2. 系统启动异常 若系统无法正常启动,可以尝试重新烧录最新 SPI 启动固件。 diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/download.md b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/download.md index 83c6133c7..846c674f3 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/download.md +++ b/i18n/en/docusaurus-plugin-content-docs/current/dragon/q6a/download.md @@ -25,11 +25,7 @@ This page hosts the latest official and test system images. Test releases begin You can determine the system SPI firmware version using the following methods: -1. Purchase Time - -If you purchased the product in 2026, it comes with boot firmware version 20251230 pre-installed, so there's no need to update the SPI boot firmware. - -2. Command Query +1. Command Query If the system can boot normally, you can use the following command to check the SPI boot firmware version: @@ -49,7 +45,7 @@ The terminal will output something like the following. The `260120` portion indi ``` -3. System Boot Issues +2. System Boot Issues If the system fails to boot properly, you can try re-flashing the latest SPI boot firmware.