<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.radxa.com/mw/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.radxa.com/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yanw</id>
		<title>Radxa Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.radxa.com/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yanw"/>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Special:Contributions/Yanw"/>
		<updated>2026-08-10T14:37:04Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide</id>
		<title>Rock5/guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide"/>
				<updated>2024-11-04T03:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/guide}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/build-debian-from-debos-radxa | How to build Debian from debos-radxa]]&lt;br /&gt;
* [[rock5/guide/serial-console | How to using Serial Console]]&lt;br /&gt;
* [[rock5/guide/radxa-debian | How to use Radxa Official Debian]]&lt;br /&gt;
* [[rock5/guide/radxa-ubuntu | How to use Radxa Official Ubuntu]]&lt;br /&gt;
* [[rock5/guide/radxa-apt | Radxa APT]]&lt;br /&gt;
* [[rock5/guide/hdmiin | How to use hdmi in]]&lt;br /&gt;
* [[rock5/guide/sata | How to use M.2 E-key to SATA breakout board]]&lt;br /&gt;
* [[rock5/guide/spi-nvme-boot | SPI Nor Flash and NVME SSD boot]]&lt;br /&gt;
* [[rock5/guide/build-u-boot-on-5b | Build U-Boot on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/build-kernel-on-5b | Build Kernel on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/rockchip-mpp | Rockchip MPP]]&lt;br /&gt;
* [[rock5/guide/apmode | Setting AP Mode]]&lt;br /&gt;
* [[rock5/guide/linux-backupos| Linux Backup OS]]&lt;br /&gt;
* [[rock5/guide/5b-debian-12-bookworm | How to upgrade Rock 5B Debian 12 bookworm]]&lt;br /&gt;
* [[rock5/guide/5b-debian-icaclient-invisible-mouse-troubleshooting | Rock 5B Debian 11 ICAClient (Citrix workspace app for Linux) invisible mouse troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/android12 | Android12]]&lt;br /&gt;
* [[rock5/guide/wireless | Wireless ADB]]&lt;br /&gt;
* [[rock5/guide/Touch Screen Portable Monitor | Touch Screen Portable Monitor]]&lt;br /&gt;
* [[rock5/guide/GPIO interface power supply | GPIO interface power supply]]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Android11</id>
		<title>Rock3/Android11</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Android11"/>
				<updated>2024-01-26T09:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Setup board environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Android11}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[Rock3/Android11 | Andriod11]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page is a step-by-step tutorial how to build Rock 3 serail board Android11 image. Including：&lt;br /&gt;
&lt;br /&gt;
* 3A&amp;lt;br&amp;gt;&lt;br /&gt;
* 3B&amp;lt;br&amp;gt;&lt;br /&gt;
* CM3IO&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommend build host is Ubuntu 20.04 64bit, for other hosts, refer official Android documents [https://source.android.com/setup/build/initializing Establishing a Build Environment].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android11-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android11-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android11-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:11.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android11&lt;br /&gt;
    $ cd rock-android11&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ repo init -u https://github.com/radxa/manifests.git -b Android11_Radxa_rk11 -m rockchip-r-release.xml&lt;br /&gt;
   radxa:rock-android11 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   &lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_r-userdebug&lt;br /&gt;
   # for Rock 3A if you want a box software&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_box-userdebug&lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3b_r-userdebug&lt;br /&gt;
   # for Rock 3C&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3c_r-userdebug&lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_cm3_r-userdebug&lt;br /&gt;
   &lt;br /&gt;
   radxa:rock-android11 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3A box software&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_box&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3b_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rock_3b.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   # for Rock 3C&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3c_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rockcm3io.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3566-rock-3c&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_cm3_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3566&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rockcm3io.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3566-rock-cm3io&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd u-boot&lt;br /&gt;
   radxa:rock-android11/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android11/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android11/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android11/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd kernel&lt;br /&gt;
   radxa:rock-android11/kernel $ ADDON_ARGS=&amp;quot;CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld&amp;quot;&lt;br /&gt;
   radxa:rock-android11/kernel $ make clean&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_CONFIG}&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_DTS}.img -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android11 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android11 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android11 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android11 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd rockdev&lt;br /&gt;
   radxa:rock-android11/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android11/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./mkupdate_rk356x.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
* sdcard&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/microSD Install on MicroSD]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc with reader&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/eMMC Install on eMMC with USB to eMMC Reader]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc from usb port&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/dev/usb-install Install on eMMC from USB port]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Android11</id>
		<title>Rock3/Android11</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Android11"/>
				<updated>2024-01-26T09:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Setup board environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Android11}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[Rock3/Android11 | Andriod11]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page is a step-by-step tutorial how to build Rock 3 serail board Android11 image. Including：&lt;br /&gt;
&lt;br /&gt;
* 3A&amp;lt;br&amp;gt;&lt;br /&gt;
* 3B&amp;lt;br&amp;gt;&lt;br /&gt;
* CM3IO&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommend build host is Ubuntu 20.04 64bit, for other hosts, refer official Android documents [https://source.android.com/setup/build/initializing Establishing a Build Environment].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android11-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android11-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android11-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:11.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android11&lt;br /&gt;
    $ cd rock-android11&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ repo init -u https://github.com/radxa/manifests.git -b Android11_Radxa_rk11 -m rockchip-r-release.xml&lt;br /&gt;
   radxa:rock-android11 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   &lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_r-userdebug&lt;br /&gt;
   # for Rock 3A if you want a box software&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_box-userdebug&lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3b_r-userdebug&lt;br /&gt;
   # for Rock 3C&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3c_r-userdebug&lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_cm3_r-userdebug&lt;br /&gt;
   &lt;br /&gt;
   radxa:rock-android11 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3A box software&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_box&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3b_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rock_3b.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   # for Rock 3C&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3c_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rockcm3io.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3b&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_cm3_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3566&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rockcm3io.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3566-rock-cm3io&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd u-boot&lt;br /&gt;
   radxa:rock-android11/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android11/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android11/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android11/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd kernel&lt;br /&gt;
   radxa:rock-android11/kernel $ ADDON_ARGS=&amp;quot;CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld&amp;quot;&lt;br /&gt;
   radxa:rock-android11/kernel $ make clean&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_CONFIG}&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_DTS}.img -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android11 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android11 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android11 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android11 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd rockdev&lt;br /&gt;
   radxa:rock-android11/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android11/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./mkupdate_rk356x.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
* sdcard&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/microSD Install on MicroSD]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc with reader&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/eMMC Install on eMMC with USB to eMMC Reader]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc from usb port&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/dev/usb-install Install on eMMC from USB port]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Android11</id>
		<title>Rock3/Android11</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Android11"/>
				<updated>2024-01-26T09:23:23Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Use all-in-one build script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Android11}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[Rock3/Android11 | Andriod11]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page is a step-by-step tutorial how to build Rock 3 serail board Android11 image. Including：&lt;br /&gt;
&lt;br /&gt;
* 3A&amp;lt;br&amp;gt;&lt;br /&gt;
* 3B&amp;lt;br&amp;gt;&lt;br /&gt;
* CM3IO&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommend build host is Ubuntu 20.04 64bit, for other hosts, refer official Android documents [https://source.android.com/setup/build/initializing Establishing a Build Environment].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android11-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android11-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android11-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:11.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android11&lt;br /&gt;
    $ cd rock-android11&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ repo init -u https://github.com/radxa/manifests.git -b Android11_Radxa_rk11 -m rockchip-r-release.xml&lt;br /&gt;
   radxa:rock-android11 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   &lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_r-userdebug&lt;br /&gt;
   # for Rock 3A if you want a box software&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3a_box-userdebug&lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3b_r-userdebug&lt;br /&gt;
   # for Rock 3C&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_3c_r-userdebug&lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ lunch rk356x_rock_cm3_r-userdebug&lt;br /&gt;
   &lt;br /&gt;
   radxa:rock-android11 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 3A&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3A box software&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3a_box&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3a&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock 3B&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_3b_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;radxa_rock_3a_toybrick&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rock_3b.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3568-rock-3b&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   # for Rock CM3 IO&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_NAME=&amp;quot;rk356x_rock_cm3_r&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3566&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig android-11.config rockcm3io.config&amp;quot;&lt;br /&gt;
   radxa:rock-android11 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3566-rock-cm3io&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd u-boot&lt;br /&gt;
   radxa:rock-android11/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android11/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android11/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android11/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd kernel&lt;br /&gt;
   radxa:rock-android11/kernel $ ADDON_ARGS=&amp;quot;CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld&amp;quot;&lt;br /&gt;
   radxa:rock-android11/kernel $ make clean&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_CONFIG}&lt;br /&gt;
   radxa:rock-android11/kernel $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_DTS}.img -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android11 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android11 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android11 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android11 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android11 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11 $ cd rockdev&lt;br /&gt;
   radxa:rock-android11/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android11/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./mkupdate_rk356x.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android11/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
* sdcard&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/microSD Install on MicroSD]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc with reader&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/install/eMMC Install on eMMC with USB to eMMC Reader]&amp;lt;br&amp;gt;&lt;br /&gt;
* emmc from usb port&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.radxa.com/Rock3/dev/usb-install Install on eMMC from USB port]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/android12</id>
		<title>Rock5/guide/android12</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/android12"/>
				<updated>2024-01-10T06:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Download source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android12-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android12-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android12-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:12.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android12&lt;br /&gt;
    $ cd rock-android12&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ repo init -u https://github.com/radxa/manifests.git -b Android12_RK3588_Radxa_rk14 -m rockchip-s-release.xml&lt;br /&gt;
   radxa:rock-android12 $ repo sync -d  -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch RadxaRock5B-userdebug&lt;br /&gt;
   radxa:rock-android12 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 5B&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_NAME=&amp;quot;RadxaRock5B&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3588&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3588-rock-5b&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd u-boot&lt;br /&gt;
   radxa:rock-android12/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android12/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android12/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android12/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
Android 12.0 cannot directly burn kernel.img and resource.img, kernel.img and resource.img are included in boot.img&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd kernel-5.10&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 rockchip_defconfig android-11.config rock5b.config&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 BOOT_IMG=../rockdev/Image-RadxaRock5B/boot.img rk3588-rock-5b.img&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
After compiling, you can directly burn the boot.img in the kernel-5.10 directory to the boot location of the machine. Please load the partition table first when burning (parameter.txt), so as not to burn the wrong location.&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android12 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android12 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android12 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd rockdev&lt;br /&gt;
   radxa:rock-android12/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android12/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./mkupdate.sh rk3588 Image&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/android12</id>
		<title>Rock5/guide/android12</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/android12"/>
				<updated>2024-01-10T06:34:13Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Download source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android12-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android12-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android12-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:12.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android12&lt;br /&gt;
    $ cd rock-android12&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ repo init -u https://github.com/radxa/manifests.git -b Android12_RK3588_Radxa_rk14 -m rockchip-s-release.xml&lt;br /&gt;
   radxa:rock-android12 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch RadxaRock5B-userdebug&lt;br /&gt;
   radxa:rock-android12 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 5B&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_NAME=&amp;quot;RadxaRock5B&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3588&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3588-rock-5b&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd u-boot&lt;br /&gt;
   radxa:rock-android12/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android12/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android12/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android12/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
Android 12.0 cannot directly burn kernel.img and resource.img, kernel.img and resource.img are included in boot.img&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd kernel-5.10&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 rockchip_defconfig android-11.config rock5b.config&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 BOOT_IMG=../rockdev/Image-RadxaRock5B/boot.img rk3588-rock-5b.img&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
After compiling, you can directly burn the boot.img in the kernel-5.10 directory to the boot location of the machine. Please load the partition table first when burning (parameter.txt), so as not to burn the wrong location.&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android12 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android12 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android12 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd rockdev&lt;br /&gt;
   radxa:rock-android12/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android12/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./mkupdate.sh rk3588 Image&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/android12</id>
		<title>Rock5/guide/android12</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/android12"/>
				<updated>2023-04-20T01:47:56Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Building kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android12-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android12-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android12-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:12.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android12&lt;br /&gt;
    $ cd rock-android12&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ repo init -u https://github.com/radxa/manifests.git -b Android12_RK3588_Radxa_rk8 -m rockchip-s-release.xml&lt;br /&gt;
   radxa:rock-android12 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch RadxaRock5B-userdebug&lt;br /&gt;
   radxa:rock-android12 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 5B&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_NAME=&amp;quot;RadxaRock5B&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3588&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3588-rock-5b&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd u-boot&lt;br /&gt;
   radxa:rock-android12/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android12/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android12/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android12/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
Android 12.0 cannot directly burn kernel.img and resource.img, kernel.img and resource.img are included in boot.img&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd kernel-5.10&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 rockchip_defconfig android-11.config rock5b.config&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 BOOT_IMG=../rockdev/Image-RadxaRock5B/boot.img rk3588-rock-5b.img&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
After compiling, you can directly burn the boot.img in the kernel-5.10 directory to the boot location of the machine. Please load the partition table first when burning (parameter.txt), so as not to burn the wrong location.&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android12 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android12 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android12 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd rockdev&lt;br /&gt;
   radxa:rock-android12/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android12/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./mkupdate.sh rk3588 Image&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/Touch_Screen_Portable_Monitor</id>
		<title>Rock5/guide/Touch Screen Portable Monitor</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/Touch_Screen_Portable_Monitor"/>
				<updated>2023-04-12T11:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* FAQ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is how rock5 created the IDC file for Touch Screen Portable Monitor&lt;br /&gt;
&lt;br /&gt;
===What is idc?===&lt;br /&gt;
idc (Input Device Configuration) is an input device configuration file, which contains device-specific configuration attributes that affect the behavior of the input device. For touch screen devices, an idc file is always required to define its behavior.&lt;br /&gt;
&lt;br /&gt;
===How to edit IDC files===&lt;br /&gt;
&lt;br /&gt;
Confirm the VID and PID of the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
   $ lsusb&lt;br /&gt;
   Bus 002 Device 005: ID 27c0:0858&lt;br /&gt;
&lt;br /&gt;
Name the IDC file according to the ID.&lt;br /&gt;
   $ ls /system/usr/idc&lt;br /&gt;
   Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Edit IDC file&lt;br /&gt;
&lt;br /&gt;
   $ cat Vendor_27c0_Product_0858.idc&lt;br /&gt;
   touch.deviceType = touchScreen&lt;br /&gt;
   device.internal= 1&lt;br /&gt;
   touch.orientationAware = 1&lt;br /&gt;
   keyboard.layout = Vendor_27c0_Product_0858&lt;br /&gt;
   keyboard.orientationAware = 1&lt;br /&gt;
   cursor.mode = navigation&lt;br /&gt;
   cursor.orientationAware = 1&lt;br /&gt;
&lt;br /&gt;
The specific attribute configuration of the file can refer to https://source.android.com/docs/core/interaction/input/input-device-configuration-files&lt;br /&gt;
&lt;br /&gt;
===How to load IDC file===&lt;br /&gt;
Create an IDC file under the device/rockchip/rk3588 directory of the SDK.&lt;br /&gt;
&lt;br /&gt;
  $ vim  Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Add in the device.mk file.&lt;br /&gt;
  PRODUCT_COPY_FILES += $(LOCAL_PATH)/Vendor_27c0_Product_0858.idc:$(TARGET_COPY_OUT_SYSTEM)/usr/idc/Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Recompile the firmware.&lt;br /&gt;
  $ source build/envsetup.sh&lt;br /&gt;
  $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
  $ ./build.sh -Au&lt;br /&gt;
&lt;br /&gt;
===FAQ===&lt;br /&gt;
how to rotate the screen.&lt;br /&gt;
 Modify the value of SF_PRIMARY_DISPLAY_ORIENTATION in device/rockchip/rk3588/BoardConfig.mk&lt;br /&gt;
  &lt;br /&gt;
  - SF_PRIMARY_DISPLAY_ORIENTATION := 0&lt;br /&gt;
  + SF_PRIMARY_DISPLAY_ORIENTATION := 270&lt;br /&gt;
The touch screen cannot rotate with the screen.&lt;br /&gt;
  Add a patch to the framework/native directory,the content is as follows&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  diff --git a/services/inputflinger/reader/mapper/TouchInputMapper.cpp b/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  index decbea4c3e..42c4612159 100644&lt;br /&gt;
  --- a/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  +++ b/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  @@ -17,7 +17,7 @@&lt;br /&gt;
  #include &amp;quot;../Macros.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
  #include &amp;quot;TouchInputMapper.h&amp;quot;&lt;br /&gt;
  -&lt;br /&gt;
  +#include &amp;quot;cutils/properties.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;CursorButtonAccumulator.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;CursorScrollAccumulator.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;TouchButtonAccumulator.h&amp;quot; &lt;br /&gt;
  @@ -668,6 +668,29 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {&lt;br /&gt;
     if (viewportChanged) {&lt;br /&gt;
         mViewport = *newViewport;&lt;br /&gt;
 &lt;br /&gt;
  +         char buffer_orientation[270];&lt;br /&gt;
  +        memset(buffer_orientation, 0, sizeof(buffer_orientation));&lt;br /&gt;
  +        property_get(&amp;quot;persist.sys.panel.flip&amp;quot;, buffer_orientation, &amp;quot;270&amp;quot;);&lt;br /&gt;
  +        int cmpRet = atoi(buffer_orientation);&lt;br /&gt;
  +        ALOGE(&amp;quot;persist.sys.hwrotation= %d&amp;quot;,cmpRet);&lt;br /&gt;
  +        if (cmpRet == 0)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_0;&lt;br /&gt;
  +        }&lt;br /&gt;
  +&lt;br /&gt;
  +        else if (cmpRet == 90)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_90;&lt;br /&gt;
  +        }&lt;br /&gt;
  +        else if (cmpRet == 180)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_180;&lt;br /&gt;
  +        }&lt;br /&gt;
  +        else if (cmpRet == 270)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_270;&lt;br /&gt;
  +        }&lt;br /&gt;
  +&lt;br /&gt;
         if (mDeviceMode == DEVICE_MODE_DIRECT || mDeviceMode == DEVICE_MODE_POINTER) {&lt;br /&gt;
             // Convert rotated viewport to natural surface coordinates.&lt;br /&gt;
             int32_t naturalLogicalWidth, naturalLogicalHeight;&lt;br /&gt;
  --&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/Touch_Screen_Portable_Monitor</id>
		<title>Rock5/guide/Touch Screen Portable Monitor</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/Touch_Screen_Portable_Monitor"/>
				<updated>2023-04-03T10:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: Created page with &amp;quot;This page is how rock5 created the IDC file for Touch Screen Portable Monitor  ===What is idc?=== idc (Input Device Configuration) is an input device configuration file, which...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is how rock5 created the IDC file for Touch Screen Portable Monitor&lt;br /&gt;
&lt;br /&gt;
===What is idc?===&lt;br /&gt;
idc (Input Device Configuration) is an input device configuration file, which contains device-specific configuration attributes that affect the behavior of the input device. For touch screen devices, an idc file is always required to define its behavior.&lt;br /&gt;
&lt;br /&gt;
===How to edit IDC files===&lt;br /&gt;
&lt;br /&gt;
Confirm the VID and PID of the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
   $ lsusb&lt;br /&gt;
   Bus 002 Device 005: ID 27c0:0858&lt;br /&gt;
&lt;br /&gt;
Name the IDC file according to the ID.&lt;br /&gt;
   $ ls /system/usr/idc&lt;br /&gt;
   Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Edit IDC file&lt;br /&gt;
&lt;br /&gt;
   $ cat Vendor_27c0_Product_0858.idc&lt;br /&gt;
   touch.deviceType = touchScreen&lt;br /&gt;
   device.internal= 1&lt;br /&gt;
   touch.orientationAware = 1&lt;br /&gt;
   keyboard.layout = Vendor_27c0_Product_0858&lt;br /&gt;
   keyboard.orientationAware = 1&lt;br /&gt;
   cursor.mode = navigation&lt;br /&gt;
   cursor.orientationAware = 1&lt;br /&gt;
&lt;br /&gt;
The specific attribute configuration of the file can refer to https://source.android.com/docs/core/interaction/input/input-device-configuration-files&lt;br /&gt;
&lt;br /&gt;
===How to load IDC file===&lt;br /&gt;
Create an IDC file under the device/rockchip/rk3588 directory of the SDK.&lt;br /&gt;
&lt;br /&gt;
  $ vim  Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Add in the device.mk file.&lt;br /&gt;
  PRODUCT_COPY_FILES += $(LOCAL_PATH)/Vendor_27c0_Product_0858.idc:$(TARGET_COPY_OUT_SYSTEM)/usr/idc/Vendor_27c0_Product_0858.idc&lt;br /&gt;
&lt;br /&gt;
Recompile the firmware.&lt;br /&gt;
  $ source build/envsetup.sh&lt;br /&gt;
  $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
  $ ./build.sh -Au&lt;br /&gt;
&lt;br /&gt;
===FAQ===&lt;br /&gt;
The touch screen cannot rotate with the screen.&lt;br /&gt;
  Add a patch to the framework/native directory,the content is as follows&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  diff --git a/services/inputflinger/reader/mapper/TouchInputMapper.cpp b/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  index decbea4c3e..42c4612159 100644&lt;br /&gt;
  --- a/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  +++ b/services/inputflinger/reader/mapper/TouchInputMapper.cpp&lt;br /&gt;
  @@ -17,7 +17,7 @@&lt;br /&gt;
  #include &amp;quot;../Macros.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
  #include &amp;quot;TouchInputMapper.h&amp;quot;&lt;br /&gt;
  -&lt;br /&gt;
  +#include &amp;quot;cutils/properties.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;CursorButtonAccumulator.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;CursorScrollAccumulator.h&amp;quot;&lt;br /&gt;
   #include &amp;quot;TouchButtonAccumulator.h&amp;quot; &lt;br /&gt;
  @@ -668,6 +668,29 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {&lt;br /&gt;
     if (viewportChanged) {&lt;br /&gt;
         mViewport = *newViewport;&lt;br /&gt;
 &lt;br /&gt;
  +         char buffer_orientation[270];&lt;br /&gt;
  +        memset(buffer_orientation, 0, sizeof(buffer_orientation));&lt;br /&gt;
  +        property_get(&amp;quot;persist.sys.panel.flip&amp;quot;, buffer_orientation, &amp;quot;270&amp;quot;);&lt;br /&gt;
  +        int cmpRet = atoi(buffer_orientation);&lt;br /&gt;
  +        ALOGE(&amp;quot;persist.sys.hwrotation= %d&amp;quot;,cmpRet);&lt;br /&gt;
  +        if (cmpRet == 0)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_0;&lt;br /&gt;
  +        }&lt;br /&gt;
  +&lt;br /&gt;
  +        else if (cmpRet == 90)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_90;&lt;br /&gt;
  +        }&lt;br /&gt;
  +        else if (cmpRet == 180)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_180;&lt;br /&gt;
  +        }&lt;br /&gt;
  +        else if (cmpRet == 270)&lt;br /&gt;
  +        {&lt;br /&gt;
  +            mViewport.orientation = DISPLAY_ORIENTATION_270;&lt;br /&gt;
  +        }&lt;br /&gt;
  +&lt;br /&gt;
         if (mDeviceMode == DEVICE_MODE_DIRECT || mDeviceMode == DEVICE_MODE_POINTER) {&lt;br /&gt;
             // Convert rotated viewport to natural surface coordinates.&lt;br /&gt;
             int32_t naturalLogicalWidth, naturalLogicalHeight;&lt;br /&gt;
  --&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide</id>
		<title>Rock5/guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide"/>
				<updated>2023-04-03T02:58:25Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/guide}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/build-debian-from-debos-radxa | How to build Debian from debos-radxa]]&lt;br /&gt;
* [[rock5/guide/serial-console | How to using Serial Console]]&lt;br /&gt;
* [[rock5/guide/radxa-debian | How to use Radxa Official Debian]]&lt;br /&gt;
* [[rock5/guide/radxa-ubuntu | How to use Radxa Official Ubuntu]]&lt;br /&gt;
* [[rock5/guide/radxa-apt | Radxa APT]]&lt;br /&gt;
* [[rock5/guide/hdmiin | How to use hdmi in]]&lt;br /&gt;
* [[rock5/guide/sata | How to use M.2 E-key to SATA breakout board]]&lt;br /&gt;
* [[rock5/guide/spi-nvme-boot | SPI Nor Flash and NVME SSD boot]]&lt;br /&gt;
* [[rock5/guide/build-u-boot-on-5b | Build U-Boot on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/build-kernel-on-5b | Build Kernel on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/rockchip-mpp | Rockchip MPP]]&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/android12 | Android12]]&lt;br /&gt;
* [[rock5/guide/wireless | Wireless ADB]]&lt;br /&gt;
* [[rock5/guide/Touch Screen Portable Monitor | Touch Screen Portable Monitor]]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide</id>
		<title>Rock5/guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide"/>
				<updated>2023-04-03T02:57:36Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/guide}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/build-debian-from-debos-radxa | How to build Debian from debos-radxa]]&lt;br /&gt;
* [[rock5/guide/serial-console | How to using Serial Console]]&lt;br /&gt;
* [[rock5/guide/radxa-debian | How to use Radxa Official Debian]]&lt;br /&gt;
* [[rock5/guide/radxa-ubuntu | How to use Radxa Official Ubuntu]]&lt;br /&gt;
* [[rock5/guide/radxa-apt | Radxa APT]]&lt;br /&gt;
* [[rock5/guide/hdmiin | How to use hdmi in]]&lt;br /&gt;
* [[rock5/guide/sata | How to use M.2 E-key to SATA breakout board]]&lt;br /&gt;
* [[rock5/guide/spi-nvme-boot | SPI Nor Flash and NVME SSD boot]]&lt;br /&gt;
* [[rock5/guide/build-u-boot-on-5b | Build U-Boot on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/build-kernel-on-5b | Build Kernel on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/rockchip-mpp | Rockchip MPP]]&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/android12 | Android12]]&lt;br /&gt;
* [[rock5/guide/wireless | Wireless ADB]]&lt;br /&gt;
* [[rock5/guide/wireless | Touch Screen Portable Monitor]]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/wireless</id>
		<title>Rock5/guide/wireless</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/wireless"/>
				<updated>2023-03-30T06:52:26Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* ADB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial on how to use wireless ADB for the Rock 5 serial board Android12 image.&lt;br /&gt;
&lt;br /&gt;
===ADB===&lt;br /&gt;
Confirm whether adb is installed on the computer.If not, please install it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux install&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   $ sudo apt-get update&lt;br /&gt;
   $ sudo apt-get install -y android-tools-adb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rock 5 serial board ===&lt;br /&gt;
#Make sure your Rock5 is running Android 11 (API level 30) or higher.&lt;br /&gt;
#Make sure your computer and Rock5 are connected to the same wireless network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
&lt;br /&gt;
Enable developer options.&lt;br /&gt;
&lt;br /&gt;
    find settings -&amp;gt; About tablet -&amp;gt; Build number. Tap the build number option seven times until you see the message &amp;quot;You are now a developer!&amp;quot;&lt;br /&gt;
    Return to the previous interface, in the System option you can find the developer options.&lt;br /&gt;
&lt;br /&gt;
Enable Wireless debugging option&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot1.png]]&lt;br /&gt;
&lt;br /&gt;
Ok, now adb can connect to this device based on IP address &amp;amp; Port&lt;br /&gt;
&lt;br /&gt;
  $ adb connect 10.0.0.16:45613&lt;br /&gt;
  $ adb devices -l&lt;br /&gt;
  10.0.0.16:45613        device product:RadxaRock5B model:Rock5B device:RadxaRock5B transport_id:5&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/wireless</id>
		<title>Rock5/guide/wireless</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/wireless"/>
				<updated>2023-03-30T06:47:55Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial on how to use wireless ADB for the Rock 5 serial board Android12 image.&lt;br /&gt;
&lt;br /&gt;
===ADB===&lt;br /&gt;
Confirm whether adb is installed on the computer.If not, please install it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux install&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   $ sudo apt-get update&lt;br /&gt;
   $ sudo apt-get install -y adb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rock 5 serial board ===&lt;br /&gt;
#Make sure your Rock5 is running Android 11 (API level 30) or higher.&lt;br /&gt;
#Make sure your computer and Rock5 are connected to the same wireless network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
&lt;br /&gt;
Enable developer options.&lt;br /&gt;
&lt;br /&gt;
    find settings -&amp;gt; About tablet -&amp;gt; Build number. Tap the build number option seven times until you see the message &amp;quot;You are now a developer!&amp;quot;&lt;br /&gt;
    Return to the previous interface, in the System option you can find the developer options.&lt;br /&gt;
&lt;br /&gt;
Enable Wireless debugging option&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot1.png]]&lt;br /&gt;
&lt;br /&gt;
Ok, now adb can connect to this device based on IP address &amp;amp; Port&lt;br /&gt;
&lt;br /&gt;
  $ adb connect 10.0.0.16:45613&lt;br /&gt;
  $ adb devices -l&lt;br /&gt;
  10.0.0.16:45613        device product:RadxaRock5B model:Rock5B device:RadxaRock5B transport_id:5&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/wireless</id>
		<title>Rock5/guide/wireless</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/wireless"/>
				<updated>2023-03-30T06:42:14Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: Created page with &amp;quot;This page is a step-by-step tutorial on how to use wireless ADB for the Rock 5 serial board Android12 image.  ===ADB=== Confirm whether adb is installed on the computer.If not...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial on how to use wireless ADB for the Rock 5 serial board Android12 image.&lt;br /&gt;
&lt;br /&gt;
===ADB===&lt;br /&gt;
Confirm whether adb is installed on the computer.If not, please install it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux install&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   $ sudo apt-get update&lt;br /&gt;
   $ sudo apt-get install -y adb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rock 5 serial board ===&lt;br /&gt;
#Make sure your Rock5 is running Android 11 (API level 30) or higher.&lt;br /&gt;
#Make sure your computer and Rock5 are connected to the same wireless network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
&lt;br /&gt;
Enable developer options.&lt;br /&gt;
&lt;br /&gt;
    find settings -&amp;gt; About tablet -&amp;gt; Build number. Tap the build number option seven times until you see the message &amp;quot;You are now a developer!&amp;quot;&lt;br /&gt;
    Return to the previous interface, in the System option you can find the developer options.&lt;br /&gt;
&lt;br /&gt;
Enable Wireless debugging option&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot1.png]]&lt;br /&gt;
&lt;br /&gt;
Ok, now adb can connect to this device based on IP address &amp;amp; Port&lt;br /&gt;
&lt;br /&gt;
  $ adb connect 10.0.0.16:45613&lt;br /&gt;
  $ adb shell&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/File:Screenshot1.png</id>
		<title>File:Screenshot1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/File:Screenshot1.png"/>
				<updated>2023-03-30T06:27:17Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide</id>
		<title>Rock5/guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide"/>
				<updated>2023-03-30T02:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/guide}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/build-debian-from-debos-radxa | How to build Debian from debos-radxa]]&lt;br /&gt;
* [[rock5/guide/serial-console | How to using Serial Console]]&lt;br /&gt;
* [[rock5/guide/radxa-debian | How to use Radxa Official Debian]]&lt;br /&gt;
* [[rock5/guide/radxa-ubuntu | How to use Radxa Official Ubuntu]]&lt;br /&gt;
* [[rock5/guide/radxa-apt | Radxa APT]]&lt;br /&gt;
* [[rock5/guide/hdmiin | How to use hdmi in]]&lt;br /&gt;
* [[rock5/guide/sata | How to use M.2 E-key to SATA breakout board]]&lt;br /&gt;
* [[rock5/guide/spi-nvme-boot | SPI Nor Flash and NVME SSD boot]]&lt;br /&gt;
* [[rock5/guide/build-u-boot-on-5b | Build U-Boot on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/build-kernel-on-5b | Build Kernel on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/rockchip-mpp | Rockchip MPP]]&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/android12 | Android12]]&lt;br /&gt;
* [[rock5/guide/wireless | Wireless ADB]]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide</id>
		<title>Rock5/guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide"/>
				<updated>2023-03-30T02:17:38Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/guide}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/build-debian-from-debos-radxa | How to build Debian from debos-radxa]]&lt;br /&gt;
* [[rock5/guide/serial-console | How to using Serial Console]]&lt;br /&gt;
* [[rock5/guide/radxa-debian | How to use Radxa Official Debian]]&lt;br /&gt;
* [[rock5/guide/radxa-ubuntu | How to use Radxa Official Ubuntu]]&lt;br /&gt;
* [[rock5/guide/radxa-apt | Radxa APT]]&lt;br /&gt;
* [[rock5/guide/hdmiin | How to use hdmi in]]&lt;br /&gt;
* [[rock5/guide/sata | How to use M.2 E-key to SATA breakout board]]&lt;br /&gt;
* [[rock5/guide/spi-nvme-boot | SPI Nor Flash and NVME SSD boot]]&lt;br /&gt;
* [[rock5/guide/build-u-boot-on-5b | Build U-Boot on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/build-kernel-on-5b | Build Kernel on ROCK 5B]]&lt;br /&gt;
* [[rock5/guide/rockchip-mpp | Rockchip MPP]]&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
* [[rock5/guide/android12 | Android12]]&lt;br /&gt;
* [[rock5/guide/android12 | Wireless ADB]]&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/downloads</id>
		<title>Rock5/downloads</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/downloads"/>
				<updated>2022-11-03T08:19:47Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /*  Official Images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/downloads}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Official ROCK images can also be downloaded from&lt;br /&gt;
&lt;br /&gt;
* '''[http://rock.sh/rockpi-baidupan BaiduPan(China)]'''&lt;br /&gt;
* '''[https://github.com/radxa/debos-radxa/releases/latest ROCK 5 Image Development Build]''' - The latest system images.&lt;br /&gt;
&lt;br /&gt;
For usernames and passwords please check the [https://wiki.radxa.com/Rock/FAQ#What.27s_the_user_and_password_in_Lubuntu FAQ].&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Tools&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Linux&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | MacOS&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Windows&lt;br /&gt;
|-&lt;br /&gt;
| Etcher - A user friendly Image Writer&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-x64.AppImage Linux 64bit], [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-ia32.AppImage Linux 32bit]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9.dmg balenaEtcher-1.4.9.dmg]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-Setup-1.7.9.exe balenaEtcher-Setup-1.4.9-x86.exe]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-android&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Official Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Distribution&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Supported Boards&lt;br /&gt;
! style=&amp;quot;width: 60%; text-align:center;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Android-Logo.jpg | 200px | link=https://github.com/radxa/manifests]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/manifests/releases ROCK 5B]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[File:Debian-logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-debian-bullseye-xfce4-arm64-20220919-0912-gpt.img.xz ROCK 5B]&lt;br /&gt;
| Debian Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/debian | Installation Wiki]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Debian 11 Bullseye &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Ubuntu_logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-ubuntu-focal-server-arm64-20220919-0839-gpt.img.xz ROCK 5B]&lt;br /&gt;
&lt;br /&gt;
| Ubuntu Server Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/ubuntu | Installation Wiki]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ubuntu Server 20.04.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Third Party Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Community Built Images&amp;lt;/span&amp;gt;====&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/downloads</id>
		<title>Rock5/downloads</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/downloads"/>
				<updated>2022-11-03T08:18:58Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /*  Official Images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/downloads}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Official ROCK images can also be downloaded from&lt;br /&gt;
&lt;br /&gt;
* '''[http://rock.sh/rockpi-baidupan BaiduPan(China)]'''&lt;br /&gt;
* '''[https://github.com/radxa/debos-radxa/releases/latest ROCK 5 Image Development Build]''' - The latest system images.&lt;br /&gt;
&lt;br /&gt;
For usernames and passwords please check the [https://wiki.radxa.com/Rock/FAQ#What.27s_the_user_and_password_in_Lubuntu FAQ].&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Tools&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Linux&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | MacOS&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Windows&lt;br /&gt;
|-&lt;br /&gt;
| Etcher - A user friendly Image Writer&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-x64.AppImage Linux 64bit], [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-ia32.AppImage Linux 32bit]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9.dmg balenaEtcher-1.4.9.dmg]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-Setup-1.7.9.exe balenaEtcher-Setup-1.4.9-x86.exe]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-android&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Official Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Distribution&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Supported Boards&lt;br /&gt;
! style=&amp;quot;width: 60%; text-align:center;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Android-Logo.jpg | 200px | link=https://github.com/radxa/manifests]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/manifests/releases]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[File:Debian-logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-debian-bullseye-xfce4-arm64-20220919-0912-gpt.img.xz ROCK 5B]&lt;br /&gt;
| Debian Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/debian | Installation Wiki]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Debian 11 Bullseye &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Ubuntu_logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-ubuntu-focal-server-arm64-20220919-0839-gpt.img.xz ROCK 5B]&lt;br /&gt;
&lt;br /&gt;
| Ubuntu Server Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/ubuntu | Installation Wiki]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ubuntu Server 20.04.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Third Party Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Community Built Images&amp;lt;/span&amp;gt;====&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/guide/android12</id>
		<title>Rock5/guide/android12</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/guide/android12"/>
				<updated>2022-10-08T08:56:11Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: Created page with &amp;quot;This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.  === Repo === &amp;lt;code bash&amp;gt;     radxa$ wget 'https://storage.googleapis.com/git-repo-downl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.&lt;br /&gt;
&lt;br /&gt;
=== Repo ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In China Download Repo:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    radxa$ echo &amp;quot;export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    radxa$ source ~/.bashrc&lt;br /&gt;
    radxa$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo&lt;br /&gt;
    radxa$ sudo cp /tmp/repo /usr/local/bin/repo&lt;br /&gt;
    radxa$ sudo chmod +x /usr/local/bin/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DockerFile ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    FROM ubuntu:xenial&lt;br /&gt;
 &lt;br /&gt;
    RUN apt-get update -y &amp;amp;&amp;amp; apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \&lt;br /&gt;
        zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \&lt;br /&gt;
        lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \&lt;br /&gt;
        libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \&lt;br /&gt;
        htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \&lt;br /&gt;
        dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig&lt;br /&gt;
 &lt;br /&gt;
    #### For China&lt;br /&gt;
    RUN curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &amp;gt; /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        chmod +x /usr/local/bin/repo &amp;amp;&amp;amp; \&lt;br /&gt;
        which repo&lt;br /&gt;
    ENV REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'&lt;br /&gt;
    #### For China End&lt;br /&gt;
 &lt;br /&gt;
    RUN pip install pycrypto&lt;br /&gt;
    ENV USER=android12-docker&lt;br /&gt;
    ARG USER_ID=0&lt;br /&gt;
    ARG GROUP_ID=0&lt;br /&gt;
    RUN groupadd -g ${GROUP_ID} jenkins-docker &amp;amp;&amp;amp; useradd -m -g jenkins-docker -u ${USER_ID} android12-docker&lt;br /&gt;
 &lt;br /&gt;
    USER android12-docker&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build DockerFile&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    radxa$ docker build -t android-builder:12.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download source code ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
    $ mkdir rock-android12&lt;br /&gt;
    $ cd rock-android12&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then run:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ repo init -u https://github.com/radxa/manifests.git -b Android12_RK3588_Radxa_rk8 -m rockchip-s-release.xml&lt;br /&gt;
   radxa:rock-android12 $ repo sync -d --no-tags -j4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
==== Use all-in-one build script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch RadxaRock5B-userdebug&lt;br /&gt;
   radxa:rock-android12 $ ./build.sh -UACKup&lt;br /&gt;
   # get images from IMAGE directory&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Step by step Build ====&lt;br /&gt;
If you dont' want to use &amp;quot;Use all-in-one build script&amp;quot;, you can follow this way to build image step by step.&lt;br /&gt;
&lt;br /&gt;
===== Setup board environment =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   # for Rock 5B&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_NAME=&amp;quot;RadxaRock5B&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_UBOOT_CONFIG=&amp;quot;rk3588&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_CONFIG=&amp;quot;rockchip_defconfig&amp;quot;&lt;br /&gt;
   radxa:rock-android12 $ export PRODUCT_KERNEL_DTS=&amp;quot;rk3588-rock-5b&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Build u-boot =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd u-boot&lt;br /&gt;
   radxa:rock-android12/u-boot $ make clean&lt;br /&gt;
   radxa:rock-android12/u-boot $ make mrproper&lt;br /&gt;
   radxa:rock-android12/u-boot $ make distclean&lt;br /&gt;
   radxa:rock-android12/u-boot $ ./make.sh ${PRODUCT_UBOOT_CONFIG}&lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The generated images are '''idbloader.img''' , and '''uboot.img'''&lt;br /&gt;
===== Building kernel =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd kernel-5.10&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_CONFIG}&lt;br /&gt;
   radxa:rock-android12/kernel-5.10 $ make $ADDON_ARGS ARCH=arm64 ${PRODUCT_KERNEL_DTS}.img -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
   radxa:rock-android12 $ cd -&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Building AOSP =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ source build/envsetup.sh&lt;br /&gt;
   radxa:rock-android12 $ lunch ${PRODUCT_NAME}-userdebug&lt;br /&gt;
   radxa:rock-android12 $ make -j$(nproc)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It takes a long time, take a break and wait...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Make images =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ rm -rf rockdev&lt;br /&gt;
   radxa:rock-android12 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .&lt;br /&gt;
   radxa:rock-android12 $ ./mkimage.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Pack Image =====&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12 $ cd rockdev&lt;br /&gt;
   radxa:rock-android12/rockdev $ rm -rf Image&lt;br /&gt;
   radxa:rock-android12/rockdev $ ln -s Image-${PRODUCT_NAME} Image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. RkUpdate Image&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./mkupdate.sh rk3588 Image&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The images under rockdev/ are `update.img`&lt;br /&gt;
&lt;br /&gt;
2. gpt Image&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
   radxa:rock-android12/rockdev $ ./android-gpt.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock5/downloads</id>
		<title>Rock5/downloads</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock5/downloads"/>
				<updated>2022-09-29T09:13:47Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /*  Official Images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock5_header}}&lt;br /&gt;
{{Languages|rock5/downloads}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Official ROCK images can also be downloaded from&lt;br /&gt;
&lt;br /&gt;
* '''[http://rock.sh/rockpi-baidupan BaiduPan(China)]'''&lt;br /&gt;
* '''[https://github.com/radxa/debos-radxa/releases/latest ROCK 5 Image Development Build]''' - The latest system images.&lt;br /&gt;
&lt;br /&gt;
For usernames and passwords please check the [https://wiki.radxa.com/Rock/FAQ#What.27s_the_user_and_password_in_Lubuntu FAQ].&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Tools&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Linux&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | MacOS&lt;br /&gt;
! style=&amp;quot;width: 25%; text-align:center;&amp;quot; | Windows&lt;br /&gt;
|-&lt;br /&gt;
| Etcher - A user friendly Image Writer&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-x64.AppImage Linux 64bit], [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9-ia32.AppImage Linux 32bit]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-1.7.9.dmg balenaEtcher-1.4.9.dmg]&lt;br /&gt;
| [https://github.com/balena-io/etcher/releases/download/v1.7.9/balenaEtcher-Setup-1.7.9.exe balenaEtcher-Setup-1.4.9-x86.exe]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-android&amp;quot; &amp;gt;&amp;lt;/i&amp;gt; Official Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Distribution&lt;br /&gt;
! style=&amp;quot;width: 20%; text-align:center;&amp;quot; | Supported Boards&lt;br /&gt;
! style=&amp;quot;width: 60%; text-align:center;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Android-Logo.jpg | 200px | link=https://github.com/radxa/manifests]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/manifests/releases/tag/ROCK-android12 ROCK 5B]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[File:Debian-logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-debian-bullseye-xfce4-arm64-20220919-0912-gpt.img.xz ROCK 5B]&lt;br /&gt;
| Debian Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/debian | Installation Wiki]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Debian 11 Bullseye &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Ubuntu_logo.png | 200px | link=https://github.com/radxa-build]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radxa/debos-radxa/releases/download/20220919-0624/rock-5b-ubuntu-focal-server-arm64-20220919-0839-gpt.img.xz ROCK 5B]&lt;br /&gt;
&lt;br /&gt;
| Ubuntu Server Product.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Rock5/linux/ubuntu | Installation Wiki]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ubuntu Server 20.04.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/radxa/debos-radxa/releases/latest Change Log].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Third Party Images&amp;lt;/span&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span class=&amp;quot;label forest&amp;quot; style=&amp;quot;margin-bottom:5px;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-linux&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Community Built Images&amp;lt;/span&amp;gt;====&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rockpi4/dev/compile-a-kernel-module-on-rockpi4</id>
		<title>Rockpi4/dev/compile-a-kernel-module-on-rockpi4</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rockpi4/dev/compile-a-kernel-module-on-rockpi4"/>
				<updated>2021-10-20T11:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Software Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rockpi4_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rockpi4/dev/libmraa}}&lt;br /&gt;
&lt;br /&gt;
       [[rockpi4 | ROCK Pi 4]] &amp;gt; [[rockpi4/dev | Development]] &amp;gt; [[rockpi4/dev/compile-a-kernel-module-on-rockpi4 | Compile a kernel module on ROCK Pi 4]]&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
This guide is for  compiling a kernel module for ROCK Pi 4 on ROCK Pi 4 board. You can use system images [https://dl.radxa.com/rockpi4/images/debian/ Debian] and [https://dl.radxa.com/rockpi4/images/ubuntu/ Ubuntu].&lt;br /&gt;
&lt;br /&gt;
=== Software Support ===&lt;br /&gt;
&lt;br /&gt;
For kernel, you need to upgrade to at least '''4.4.154-98-rockchip''' version.&lt;br /&gt;
&lt;br /&gt;
Note that the latest U-boot and Kernel packages are in '''Radxa APT''' '''stretch-testing''' and '''bionic-testing''' repositories.&lt;br /&gt;
&lt;br /&gt;
Also, you need to update rockchip-fstab, rockchip-overlay, u-boot packages. And [[rockpi4/radxa-apt | Radxa APT]] helps.&lt;br /&gt;
&lt;br /&gt;
=== Example: r8152 device driver===&lt;br /&gt;
&lt;br /&gt;
Here take r8152 device driver as an example.&lt;br /&gt;
&lt;br /&gt;
Install necessary packages.&lt;br /&gt;
&lt;br /&gt;
  $ sudo apt-get install -y libssl-dev build-essential&lt;br /&gt;
&lt;br /&gt;
Recompile dependent libraries.&lt;br /&gt;
&lt;br /&gt;
  $ cd /usr/src/linux-headers-$(uname -r)&lt;br /&gt;
  $ make scripts&lt;br /&gt;
&lt;br /&gt;
Download [https://github.com/wget/realtek-r8152-linux/archive/master.zip r8152 driver source code] to ROCK Pi 4 and extract it to home directory.&lt;br /&gt;
&lt;br /&gt;
Go to the top-level directory of the source code&lt;br /&gt;
&lt;br /&gt;
  $ cd realtek-r8152-linux-master&lt;br /&gt;
  $ ls&lt;br /&gt;
  50-usb-realtek-net.rules  compatibility.h  Makefile  r8152.c  ReadMe.txt&lt;br /&gt;
&lt;br /&gt;
Generate r8152.ko file.&lt;br /&gt;
&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
Check kernel release and processor&lt;br /&gt;
  $ uname -rp&lt;br /&gt;
  4.4.154-98-rockchip-gcbc3da2ca32c aarch64&lt;br /&gt;
&lt;br /&gt;
Check r8152 ko information&lt;br /&gt;
&lt;br /&gt;
  $ modinfo r8152.ko &lt;br /&gt;
  filename:       /home/rock/r8152_2.12.0/r8152.ko&lt;br /&gt;
  version:        v2.12.0 (2019/04/29)&lt;br /&gt;
  license:        GPL&lt;br /&gt;
  description:    Realtek RTL8152/RTL8153 Based USB Ethernet Adapters&lt;br /&gt;
  author:         Realtek nic sw &amp;lt;nic_swsd@realtek.com&amp;gt;&lt;br /&gt;
  srcversion:     576F778ECF92A5E23120A75&lt;br /&gt;
  ...&lt;br /&gt;
  depends:        &lt;br /&gt;
  vermagic:       4.4.154-98-rockchip-gcbc3da2ca32c SMP mod_unload aarch64&lt;br /&gt;
&lt;br /&gt;
The vermagic of module should be the same as current kernel release version like 4.4.154-98-rockchip-gcbc3da2ca32c.&lt;br /&gt;
&lt;br /&gt;
Install driver module to kernel.&lt;br /&gt;
&lt;br /&gt;
  $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Remove driver module.&lt;br /&gt;
&lt;br /&gt;
  $ sudo rmmod r8152&lt;br /&gt;
&lt;br /&gt;
=== FAQs ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you have issue with compiling a kernel module on ROCK Pi 4, start a new post on the forum. https://forum.radxa.com/c/dev&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rockpi4/dev/kernel-mainline</id>
		<title>Rockpi4/dev/kernel-mainline</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rockpi4/dev/kernel-mainline"/>
				<updated>2021-09-18T12:09:41Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Build kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rockpi4_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rockpi4/dev/kernel-mainline}}&lt;br /&gt;
&lt;br /&gt;
    [[rockpi4 | ROCK Pi 4]] &amp;gt; [[rockpi4/dev | Development]] &amp;gt; [[rockpi4/dev/kernel-mainline | Build mainline kernel(5.x)]]&lt;br /&gt;
&lt;br /&gt;
ROCK Pi 4 is officially supported in mainline kernel since v5.1 thanks to developer Akash Gajjar from Mentor. Below is how to build it on a X86 Linux host PC and run on ROCK Pi 4.&lt;br /&gt;
&lt;br /&gt;
== Please help to fix/enhance this page ==&lt;br /&gt;
&lt;br /&gt;
=== Current status ===&lt;br /&gt;
&lt;br /&gt;
As of 01/07/2020, these instructions are incomplete, incorrect and do not result in a working kernel. Please help to fix them.&lt;br /&gt;
&lt;br /&gt;
Use [[https://forum.radxa.com/t/mainline-support-for-rockpi-4/131/91]] to discuss this page.&lt;br /&gt;
&lt;br /&gt;
Tested with&lt;br /&gt;
&lt;br /&gt;
* RockPI 4 A with 2GByte&lt;br /&gt;
* 16 GByte eMMC module (no uSD)&lt;br /&gt;
* Current debian (5.5.0-rc5-00039-gae6088216ce4).&lt;br /&gt;
&lt;br /&gt;
Without any overlays configured, the kernel starts to boot with working console output, but then it seems to hang after the following output:&lt;br /&gt;
&lt;br /&gt;
   ...&lt;br /&gt;
   [   14.670351] mmc_host mmc0: Bus speed (slot 0) = 200000Hz (slot req 200000Hz, actual 200000HZ div = 0)&lt;br /&gt;
   [   14.674934] hctosys: unable to open rtc device (rtc0)&lt;br /&gt;
&lt;br /&gt;
=== ID of root file system ===&lt;br /&gt;
&lt;br /&gt;
The instructions show a specific PARTUUID. It seems as if the instructions should explain that the PARTUUID needs to be changed according to the PARTUUID of the boot partition on the boot device - aka: The same PARTUUID used with the 'old' radxa 4.4 kernel ?!&lt;br /&gt;
&lt;br /&gt;
=== Use of overlays ===&lt;br /&gt;
&lt;br /&gt;
The instructions on this page do not describe if/how overlays can be used with mainline kernel:&lt;br /&gt;
&lt;br /&gt;
The instructions do not explain if overlays need to be compiled for the new kernel or not.&lt;br /&gt;
&lt;br /&gt;
The instructions do not explain why overlays may fail to work, for example because all or some of the overlays do not have according entry points in the mainline kernel ?&lt;br /&gt;
&lt;br /&gt;
The instructions do not explain if it is possible to configure u-boot so that there are different overlays enabled for different kernels - e.g.: all necessary overlays for the radxa 4.4 kernel and non (or others) for a mainline kernel. Is this even possible ?&lt;br /&gt;
&lt;br /&gt;
Result: When attempting to use ANY overlays such as spi1-flash, the boot process fails to merge the overlays and reverts to boot the first (default) kernel instead.&lt;br /&gt;
&lt;br /&gt;
The console log for this looks as follows:&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    reading /rk3399-rock-pi-4.dtb&lt;br /&gt;
    54207 bytes read in 13 ms (4 MiB/s)&lt;br /&gt;
    fdt addr 0000000008300000&lt;br /&gt;
    fdt magic number edfe0dd0&lt;br /&gt;
    fdt size 1048576&lt;br /&gt;
    merge_dts_overlay&lt;br /&gt;
    Retrieving file: /overlays/spi1-flash.dtbo&lt;br /&gt;
    reading /overlays/spi1-flash.dtbo&lt;br /&gt;
    765 bytes read in 11 ms (67.4 KiB/s)&lt;br /&gt;
    overlay dtb(0x0000000008200000) is valid&lt;br /&gt;
    fdt_overlay_apply 0000000008300000 0000000008200000&lt;br /&gt;
    fdt_overlay_apply(): FDT_ERR_NOTFOUND&lt;br /&gt;
    Can't load dts overlay&lt;br /&gt;
    Can not merge dts overlay&lt;br /&gt;
    ERROR: Did not find a cmdline Flattened Device Tree&lt;br /&gt;
    Could not find a valid device tree&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
=== Loadable modules ===&lt;br /&gt;
&lt;br /&gt;
The kernel will need dynamically loaded modules. These need to be installed into /lib/modules/&amp;lt;kernel-name&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is unclear how to best do this when compiling on a separate PC (cross-compilation as explained).&lt;br /&gt;
&lt;br /&gt;
When compiling locally on the Rock PI 4, this is easily achied by using &amp;quot;make modules_install&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Already fixed ===&lt;br /&gt;
&lt;br /&gt;
01/07/2020 Added explanations how to add new kernel to existing boot file and choose from serial console during boot.&lt;br /&gt;
&lt;br /&gt;
== Build kernel on linux PC ==&lt;br /&gt;
&lt;br /&gt;
=== Requirement ===&lt;br /&gt;
&lt;br /&gt;
    $ sudo apt-get install libncurses-dev flex bison libssl-dev git&lt;br /&gt;
&lt;br /&gt;
=== Get the mainline kernel source ===&lt;br /&gt;
&lt;br /&gt;
    $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
    $ cd linux&lt;br /&gt;
&lt;br /&gt;
=== Install toolchain from Linaro ===&lt;br /&gt;
&lt;br /&gt;
    $ wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz&lt;br /&gt;
    $ sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz  -C /usr/local/&lt;br /&gt;
    $ export ARCH=arm64&lt;br /&gt;
    $ export CROSS_COMPILE=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-&lt;br /&gt;
&lt;br /&gt;
=== Build kernel===&lt;br /&gt;
&lt;br /&gt;
    $ make defconfig&lt;br /&gt;
    $ make -j6&lt;br /&gt;
&lt;br /&gt;
Copy '''arch/arm64/boot/Image''' and '''arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtb''' to your ROCK Pi 4.&lt;br /&gt;
&lt;br /&gt;
== Install it on ROCK Pi 4.==&lt;br /&gt;
&lt;br /&gt;
=== Copy files ===&lt;br /&gt;
&lt;br /&gt;
    $ sudo cp Image rk3399-rock-pi-4.dtb /boot/&lt;br /&gt;
&lt;br /&gt;
=== Configure and Reboot ===&lt;br /&gt;
&lt;br /&gt;
    $ sudo vim /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
Add an entry as follows:&lt;br /&gt;
&lt;br /&gt;
   label kernel-mainline&lt;br /&gt;
   kernel /Image&lt;br /&gt;
   fdt /rk3399-rock-pi-4.dtb&lt;br /&gt;
   append earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 coherent_pool=1m earlyprintk console=ttyS2,1500000n8 rw root=PARTUUID=b921b045-1d rootfstype=ext4 init=/sbin/init rootwait&lt;br /&gt;
&lt;br /&gt;
Reboot you will have the new kernel booting.&lt;br /&gt;
&lt;br /&gt;
If you have a serial console connected to the Rock PI 4, you can also add this kernel as a second or further boot entry and then select it during the bootstrap process as follows:&lt;br /&gt;
&lt;br /&gt;
   ...&lt;br /&gt;
   Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
   reading /extlinux/extlinux.conf&lt;br /&gt;
   956 bytes read in 17 ms (54.7 KiB/s)&lt;br /&gt;
   select kernel&lt;br /&gt;
   1:      kernel-4.4.154-100-rockchip-gf7c3df9923c2&lt;br /&gt;
   2:      kernel-mainline&lt;br /&gt;
   Enter choice: 2&lt;br /&gt;
   ...&lt;br /&gt;
   ...&lt;br /&gt;
   2:      kernel-mainline&lt;br /&gt;
   Retrieving file: /Image&lt;br /&gt;
   reading /Image&lt;br /&gt;
&lt;br /&gt;
You need to be fast typing the desired number (2). &lt;br /&gt;
&lt;br /&gt;
The benefit of this approach is that the bootstrap process will automatically revert booting the first (working radxa) kernel when the newly built kernel fails to boot - or that you can simply power cycle to boot the working kernel in case the newly built kernel does not work.&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rockpi4/dev/Debian</id>
		<title>Rockpi4/dev/Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rockpi4/dev/Debian"/>
				<updated>2021-09-16T11:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Install other build tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rockpi4_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rockpi4/dev/Debian}}&lt;br /&gt;
&lt;br /&gt;
    [[rockpi4 | ROCK Pi 4]] &amp;gt; [[rockpi4/dev | Development]] &amp;gt; [[rockpi4/dev/Debian | Build Debian]]&lt;br /&gt;
&lt;br /&gt;
=== Rockchip Debian SDK ===&lt;br /&gt;
&lt;br /&gt;
Below is the instructions of how to build image for ROCK Pi 4 on a '''HOST PC'''.&lt;br /&gt;
&lt;br /&gt;
==== Get the source code ====&lt;br /&gt;
&lt;br /&gt;
You need Git to get multiple git repositories to build the image.&lt;br /&gt;
&lt;br /&gt;
Install Git if you don't have it.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
Clone the source code&lt;br /&gt;
&lt;br /&gt;
 git clone -b master https://github.com/radxa/rockchip-bsp.git&lt;br /&gt;
 cd rockchip-bsp&lt;br /&gt;
 git submodule init&lt;br /&gt;
 git submodule update&lt;br /&gt;
&lt;br /&gt;
You will get &lt;br /&gt;
&lt;br /&gt;
 build  kernel  README.md  rkbin  rootfs  u-boot&lt;br /&gt;
&lt;br /&gt;
Directories usage introductions:&lt;br /&gt;
&lt;br /&gt;
* build:&lt;br /&gt;
** Some script files and configuration files for building u-boot, kernel and rootfs.&lt;br /&gt;
* kernel: &lt;br /&gt;
** kernel source code, current version is 4.4&lt;br /&gt;
* rkbin: &lt;br /&gt;
** Prebuilt Rockchip binaries, include first stage loader and ATF(Arm Trustzone Firmware).&lt;br /&gt;
* rootfs: &lt;br /&gt;
** Bootstrap a Debian based rootfs, support architechture armhf and arm64, support Debian Jessie, Stretch and Buster.&lt;br /&gt;
* u-boot: &lt;br /&gt;
** u-boot as the second stage bootloader&lt;br /&gt;
&lt;br /&gt;
==== Update the source code ====&lt;br /&gt;
&lt;br /&gt;
The rockchip-bsp will be updated all the time, so you can update the source before building the system image.&lt;br /&gt;
&lt;br /&gt;
 cd rockchip-bsp&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git fetch origin&lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git submodule update&lt;br /&gt;
&lt;br /&gt;
==== Install toolchain from Linaro ====&lt;br /&gt;
&lt;br /&gt;
 wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz&lt;br /&gt;
 sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz  -C /usr/local/&lt;br /&gt;
 export CROSS_COMPILE=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-&lt;br /&gt;
 export PATH=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
Check if Linaro toolchain is the default choice:&lt;br /&gt;
&lt;br /&gt;
 which aarch64-linux-gnu-gcc&lt;br /&gt;
 /usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc&lt;br /&gt;
&lt;br /&gt;
==== Install other build tools ====&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools&lt;br /&gt;
 sudo apt-get install bc python dosfstools&lt;br /&gt;
&lt;br /&gt;
If it appears that it cannot be installed. You can try the following method&lt;br /&gt;
 sudo apt-get install aptitude &lt;br /&gt;
 sudo aptitude install bc python dosfstools&lt;br /&gt;
&lt;br /&gt;
==== Build u-boot ====&lt;br /&gt;
&lt;br /&gt;
 ./build/mk-uboot.sh rockpi4b     #For ROCK Pi 4 Mode B&lt;br /&gt;
&lt;br /&gt;
The generated images will be copied to out/u-boot folder&lt;br /&gt;
&lt;br /&gt;
 ls out/u-boot/&lt;br /&gt;
 idbloader.img  rk3399_loader_v1.12.112.bin  trust.img  uboot.img&lt;br /&gt;
&lt;br /&gt;
==== Build kernel ====&lt;br /&gt;
Build kernel with default '''rockchip_linux_defconfig'''&lt;br /&gt;
&lt;br /&gt;
 ./build/mk-kernel.sh rockpi4b    #For ROCK Pi 4 Mode B&lt;br /&gt;
&lt;br /&gt;
===== Change kernel config(optional)=====&lt;br /&gt;
&lt;br /&gt;
Optionally, if you want to change the default kernel config&lt;br /&gt;
&lt;br /&gt;
 cd kernel&lt;br /&gt;
 export ARCH=arm64&lt;br /&gt;
 export CROSS_COMPILE=aarch64-linux-gnu-&lt;br /&gt;
 make rockchip_linux_defconfig&lt;br /&gt;
 make menuconfig&lt;br /&gt;
 cd ..&lt;br /&gt;
 ./build/mk-kernel.sh rockpi4b    #For ROCK Pi 4 Mode B&lt;br /&gt;
&lt;br /&gt;
You will get the kernel image and dtb file&lt;br /&gt;
&lt;br /&gt;
 ls out/kernel/&lt;br /&gt;
 Image  rockpi-4b-linux.dtb&lt;br /&gt;
&lt;br /&gt;
==== Make rootfs image ====&lt;br /&gt;
&lt;br /&gt;
Check out the rootfs source. The repository is '''https://github.com/radxa/rk-rootfs-build.git''' and the branch is '''debian'''.&lt;br /&gt;
&lt;br /&gt;
To build 32bit rootfs:&lt;br /&gt;
 &lt;br /&gt;
 export ARCH=armhf&lt;br /&gt;
&lt;br /&gt;
To build 64bit rootfs:&lt;br /&gt;
&lt;br /&gt;
 export ARCH=arm64&lt;br /&gt;
&lt;br /&gt;
Building a base debian system by ubuntu-build-service from linaro.&lt;br /&gt;
&lt;br /&gt;
 cd rootfs&lt;br /&gt;
 sudo apt-get install binfmt-support qemu-user-static cpio gdisk&lt;br /&gt;
 sudo dpkg -i ubuntu-build-service/packages/*        # ignore the broken dependencies, we will fix it next step&lt;br /&gt;
 sudo apt-get install -f&lt;br /&gt;
 RELEASE=buster TARGET=desktop ARCH=arm64 ./mk-base-debian.sh&lt;br /&gt;
&lt;br /&gt;
This will bootstrap a Debian Buster image, you will get a rootfs tarball named '''linaro-buster-alip-xxxx.tar.gz'''. &lt;br /&gt;
&lt;br /&gt;
Building the rk-debian rootfs.&lt;br /&gt;
&lt;br /&gt;
 RELEASE=buster ARCH=arm64 ./mk-rootfs.sh&lt;br /&gt;
&lt;br /&gt;
Creating the ext4 image(linaro-rootfs.img):&lt;br /&gt;
&lt;br /&gt;
 ./mk-image.sh&lt;br /&gt;
&lt;br /&gt;
==== Combine everything into one image ====&lt;br /&gt;
&lt;br /&gt;
 build/mk-image.sh -c rk3399 -b rockpi4 -t system -r rootfs/linaro-rootfs.img&lt;br /&gt;
&lt;br /&gt;
This will combine u-boot, kernel and rootfs into one image and generate GPT partition table. Output is &lt;br /&gt;
&lt;br /&gt;
 out/system.img&lt;br /&gt;
&lt;br /&gt;
==== Flash the image ====&lt;br /&gt;
&lt;br /&gt;
For normal users, follow instructions [[Rockpi4/install | here]]. You will need the generated '''out/system.img''' only.&lt;br /&gt;
&lt;br /&gt;
For developers, flash from USB OTG port, follow instructions [[Rockpi4/dev/usb-install |here]]. You will need the flash helper '''rk3399_loader_xxx.bin''' and generated '''out/system.img''' files.&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
Check [[Rockpi4/FAQs |ROCK Pi 4 FAQs]] first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/dev&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Debian</id>
		<title>Rock3/Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Debian"/>
				<updated>2021-09-10T10:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Bluetooth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Debian}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Debian | Debian]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Debian ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian  is an easy to use desktop system. While working with ROCK 3 Debian, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
===Desktop ===&lt;br /&gt;
&lt;br /&gt;
The preinstalled Desktop is xfce4.&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain. , try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK Pi N10 supports 2.4G/5G WIFI and WIFI 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
*Update necessary packages.&lt;br /&gt;
 root@rock3a:~# apt-get update&lt;br /&gt;
 root@rock3a:~# apt-get install  broadcom-wifibt-firmware&lt;br /&gt;
*Check Bluetooth service.&lt;br /&gt;
 root@rock3a:~# systemctl status bluetooth&lt;br /&gt;
*Run Bluetooth service if the Bluetooth service is inactive.&lt;br /&gt;
 root@rock3a:~# systemctl start bluetooth&lt;br /&gt;
*Check Bluetooth device.&lt;br /&gt;
 root@rock3a:~# hciconfig&lt;br /&gt;
 hci0:   Type: Primary  Bus: UART&lt;br /&gt;
        BD Address: 10:2C:6B:49:D5:53  ACL MTU: 1021:8  SCO MTU: 64:1&lt;br /&gt;
        UP RUNNING &lt;br /&gt;
        RX bytes:850 acl:0 sco:0 events:58 errors:0&lt;br /&gt;
        TX bytes:2814 acl:0 sco:0 commands:58 errors:0&lt;br /&gt;
*Example: Connect to Bluetooth Speaker.&lt;br /&gt;
*Install pulseaudio packages.&lt;br /&gt;
 root@rock3a:~# apt-get install -y pulseaudio-module-bluetooth pulseaudio&lt;br /&gt;
*Run pulseaudio.&lt;br /&gt;
 root@rock3a:~# pulseaudio --start&lt;br /&gt;
*Connect using bluetoothctl.&lt;br /&gt;
 root@rock3a:~# bluetoothctl&lt;br /&gt;
 [bluetooth]# default-agent &lt;br /&gt;
 [bluetooth]# power on&lt;br /&gt;
 [bluetooth]# scan on&lt;br /&gt;
 [bluetooth]# trust 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# pair 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# connect 77:EC:79:4F:6B:AC&lt;br /&gt;
*Play songs and enjoy it.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G.&lt;br /&gt;
 $ free -h&lt;br /&gt;
               total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          '''7.4Gi'''        72Mi       7.1Gi        16Mi       182Mi       7.2Gi &lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
&lt;br /&gt;
For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0&lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD:  /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
 root@rock3a:~# dmesg | grep rtc&lt;br /&gt;
 [    0.749597] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.751404] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:02 UTC (1501837202)&lt;br /&gt;
&lt;br /&gt;
Second, use the follow commands to set the system time and synchronization to the rtc clock.&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00&lt;br /&gt;
 $ poweroff&lt;br /&gt;
and then disconnect the power supply&lt;br /&gt;
Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Test Audio Player===&lt;br /&gt;
Download a wav audio file, and use the command to test the HP player.&lt;br /&gt;
&lt;br /&gt;
 $ amixer -c 1 cset numid=1 3&lt;br /&gt;
    numid=1,iface=MIXER,name='Playback Path'&lt;br /&gt;
  ; type=ENUMERATED,access=rw------,values=1,items=11&lt;br /&gt;
  ; Item #0 'OFF'&lt;br /&gt;
  ; Item #1 'RCV'&lt;br /&gt;
  ; Item #2 'SPK'&lt;br /&gt;
  ; Item #3 'HP'&lt;br /&gt;
  ; Item #4 'HP_NO_MIC'&lt;br /&gt;
  ; Item #5 'BT'&lt;br /&gt;
  ; Item #6 'SPK_HP'&lt;br /&gt;
  ; Item #7 'RING_SPK'&lt;br /&gt;
  ; Item #8 'RING_HP'&lt;br /&gt;
  ; Item #9 'RING_HP_NO_MIC'&lt;br /&gt;
  ; Item #10 'RING_SPK_HP'&lt;br /&gt;
  : values=3&lt;br /&gt;
 &lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
   Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
To test the Mic recordding， please follow：&lt;br /&gt;
 $ amixer -c 1 cset numid=2 1&lt;br /&gt;
 $ arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav ./mic_test.wav      #this is a record command&lt;br /&gt;
   Recording WAVE './mic_test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
 $ aplay -D plughw:1,0 mic_test.wav&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
Plug in the U dish and use the command by serial console.&lt;br /&gt;
 $ '''dmesg | tail'''&lt;br /&gt;
 [  133.773558] usb 2-1: SerialNumber: CCYYB18M1CFKO4H4&lt;br /&gt;
 [  133.774332] usb-storage 2-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [  133.774657] scsi host0: usb-storage 2-1:1.0&lt;br /&gt;
 [  134.841096] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [  134.846394] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [  134.847554] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [  134.847635] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [  134.848824] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 '''[  134.858173]  sda: sda1'''&lt;br /&gt;
 [  134.861161] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 $ '''sudo mount /dev/sda1 /mnt'''&lt;br /&gt;
 $ '''lsblk'''&lt;br /&gt;
 root@linaro-alip:~# lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda            8:0    1 14.7G  0 disk &lt;br /&gt;
 └─sda1         8:1    1 14.7G  0 part /mnt&lt;br /&gt;
If  /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
===Test fan on / off===&lt;br /&gt;
Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
 &lt;br /&gt;
 echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on  &lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_debian_buster_xfce4_arm64_20210824_0136-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T10:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Bluetooth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
*Update necessary packages.&lt;br /&gt;
 root@rock3a:~# apt-get update&lt;br /&gt;
 root@rock3a:~# apt-get install  broadcom-wifibt-firmware&lt;br /&gt;
*Check Bluetooth service.&lt;br /&gt;
 root@rock3a:~# systemctl status bluetooth&lt;br /&gt;
*Run Bluetooth service if the Bluetooth service is inactive.&lt;br /&gt;
 root@rock3a:~# systemctl start bluetooth&lt;br /&gt;
*Check Bluetooth device.&lt;br /&gt;
 root@rock3a:~# hciconfig&lt;br /&gt;
 hci0:   Type: Primary  Bus: UART&lt;br /&gt;
        BD Address: 10:2C:6B:49:D5:53  ACL MTU: 1021:8  SCO MTU: 64:1&lt;br /&gt;
        UP RUNNING &lt;br /&gt;
        RX bytes:850 acl:0 sco:0 events:58 errors:0&lt;br /&gt;
        TX bytes:2814 acl:0 sco:0 commands:58 errors:0&lt;br /&gt;
*Example: Connect to Bluetooth Speaker.&lt;br /&gt;
*Install pulseaudio packages.&lt;br /&gt;
 root@rock3a:~# apt-get install -y pulseaudio-module-bluetooth pulseaudio&lt;br /&gt;
*Run pulseaudio.&lt;br /&gt;
 root@rock3a:~$ pulseaudio --start&lt;br /&gt;
*Connect using bluetoothctl.&lt;br /&gt;
 root@rock3a:~$ bluetoothctl&lt;br /&gt;
 [bluetooth]# default-agent &lt;br /&gt;
 [bluetooth]# power on&lt;br /&gt;
 [bluetooth]# scan on&lt;br /&gt;
 [bluetooth]# trust 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# pair 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# connect 77:EC:79:4F:6B:AC&lt;br /&gt;
*Play songs and enjoy it.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
===Test Audio Player===&lt;br /&gt;
*Download a wav audio file, and use the command to test the HP player. &lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=1 3&lt;br /&gt;
    numid=1,iface=MIXER,name='Playback Path'&lt;br /&gt;
     ; type=ENUMERATED,access=rw------,values=1,items=11&lt;br /&gt;
     ; Item #0 'OFF'&lt;br /&gt;
     ; Item #1 'RCV'&lt;br /&gt;
     ; Item #2 'SPK'&lt;br /&gt;
     ; Item #3 'HP'&lt;br /&gt;
     ; Item #4 'HP_NO_MIC'&lt;br /&gt;
     ; Item #5 'BT'&lt;br /&gt;
     ; Item #6 'SPK_HP'&lt;br /&gt;
     ; Item #7 'RING_SPK'&lt;br /&gt;
     ; Item #8 'RING_HP'&lt;br /&gt;
     ; Item #9 'RING_HP_NO_MIC'&lt;br /&gt;
     ; Item #10 'RING_SPK_HP'&lt;br /&gt;
     : values=3&lt;br /&gt;
 &lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
 $ Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
*To test the Mic recordding， please follow:&lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=2 1&lt;br /&gt;
 $ arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav ./mic_test.wav      #this is a record command&lt;br /&gt;
  Recording WAVE './mic_test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
 $ aplay -D plughw:1,0 mic_test.wav&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
*Plug in the U dish and use the command by serial console.&lt;br /&gt;
 &lt;br /&gt;
 rock@rock3a:~$ dmesg | tail&lt;br /&gt;
 [11831.172069] usb 8-1: SerialNumber: CCYYXI5KH5PRSNCA&lt;br /&gt;
 [11831.175205] usb-storage 8-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [11831.176984] scsi host0: usb-storage 8-1:1.0&lt;br /&gt;
 [11832.272573] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [11832.276158] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [11832.276756] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [11832.276774] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [11832.277126] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 [11832.285978] sda: sda1&lt;br /&gt;
 [11832.288023] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ sudo mount /dev/sda1 /mnt&lt;br /&gt;
 rock@rock3a:~$ lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE   RO   TYPE   MOUNTPOINT&lt;br /&gt;
 sda           8:0    1    14.7G  0    disk &lt;br /&gt;
 └─sda1       8:1     1    14.7G  0    part     /mnt&lt;br /&gt;
&lt;br /&gt;
*If /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
=== Test fan on / off ===&lt;br /&gt;
*Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 root@rock3a:~# echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 root@rock3a:~# echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 root@rock3a:~# echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T09:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
*Update necessary packages.&lt;br /&gt;
 root@rock3a:~# apt-get update&lt;br /&gt;
 root@rock3a:~# apt-get install  rcokchip-overlay&lt;br /&gt;
 root@rock3a:~# apt-get install  linux-4.19-rock-3-latest&lt;br /&gt;
 root@rock3a:~# apt-get install  broadcom-wifibt-firmware&lt;br /&gt;
*Check Bluetooth service.&lt;br /&gt;
 root@rock3a:~# systemctl status bluetooth&lt;br /&gt;
*Run Bluetooth service if the Bluetooth service is inactive.&lt;br /&gt;
 root@rock3a:~# systemctl start bluetooth&lt;br /&gt;
*Check Bluetooth device.&lt;br /&gt;
 root@rock3a:~# hciconfig&lt;br /&gt;
 hci0:   Type: Primary  Bus: UART&lt;br /&gt;
        BD Address: 10:2C:6B:49:D5:53  ACL MTU: 1021:8  SCO MTU: 64:1&lt;br /&gt;
        UP RUNNING &lt;br /&gt;
        RX bytes:850 acl:0 sco:0 events:58 errors:0&lt;br /&gt;
        TX bytes:2814 acl:0 sco:0 commands:58 errors:0&lt;br /&gt;
*Example: Connect to Bluetooth Speaker.&lt;br /&gt;
*Install pulseaudio packages.&lt;br /&gt;
 root@rock3a:~# apt-get install -y pulseaudio-module-bluetooth pulseaudio&lt;br /&gt;
*Run pulseaudio.&lt;br /&gt;
 root@rock3a:~$ pulseaudio --start&lt;br /&gt;
*Connect using bluetoothctl.&lt;br /&gt;
 root@rock3a:~$ bluetoothctl&lt;br /&gt;
 [bluetooth]# default-agent &lt;br /&gt;
 [bluetooth]# power on&lt;br /&gt;
 [bluetooth]# scan on&lt;br /&gt;
 [bluetooth]# trust 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# pair 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# connect 77:EC:79:4F:6B:AC&lt;br /&gt;
*Play songs and enjoy it.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
===Test Audio Player===&lt;br /&gt;
*Download a wav audio file, and use the command to test the HP player. &lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=1 3&lt;br /&gt;
    numid=1,iface=MIXER,name='Playback Path'&lt;br /&gt;
     ; type=ENUMERATED,access=rw------,values=1,items=11&lt;br /&gt;
     ; Item #0 'OFF'&lt;br /&gt;
     ; Item #1 'RCV'&lt;br /&gt;
     ; Item #2 'SPK'&lt;br /&gt;
     ; Item #3 'HP'&lt;br /&gt;
     ; Item #4 'HP_NO_MIC'&lt;br /&gt;
     ; Item #5 'BT'&lt;br /&gt;
     ; Item #6 'SPK_HP'&lt;br /&gt;
     ; Item #7 'RING_SPK'&lt;br /&gt;
     ; Item #8 'RING_HP'&lt;br /&gt;
     ; Item #9 'RING_HP_NO_MIC'&lt;br /&gt;
     ; Item #10 'RING_SPK_HP'&lt;br /&gt;
     : values=3&lt;br /&gt;
 &lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
 $ Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
*To test the Mic recordding， please follow:&lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=2 1&lt;br /&gt;
 $ arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav ./mic_test.wav      #this is a record command&lt;br /&gt;
  Recording WAVE './mic_test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
 $ aplay -D plughw:1,0 mic_test.wav&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
*Plug in the U dish and use the command by serial console.&lt;br /&gt;
 &lt;br /&gt;
 rock@rock3a:~$ dmesg | tail&lt;br /&gt;
 [11831.172069] usb 8-1: SerialNumber: CCYYXI5KH5PRSNCA&lt;br /&gt;
 [11831.175205] usb-storage 8-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [11831.176984] scsi host0: usb-storage 8-1:1.0&lt;br /&gt;
 [11832.272573] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [11832.276158] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [11832.276756] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [11832.276774] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [11832.277126] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 [11832.285978] sda: sda1&lt;br /&gt;
 [11832.288023] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ sudo mount /dev/sda1 /mnt&lt;br /&gt;
 rock@rock3a:~$ lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE   RO   TYPE   MOUNTPOINT&lt;br /&gt;
 sda           8:0    1    14.7G  0    disk &lt;br /&gt;
 └─sda1       8:1     1    14.7G  0    part     /mnt&lt;br /&gt;
&lt;br /&gt;
*If /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
=== Test fan on / off ===&lt;br /&gt;
*Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 root@rock3a:~# echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 root@rock3a:~# echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 root@rock3a:~# echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T09:30:35Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
===Test Audio Player===&lt;br /&gt;
*Download a wav audio file, and use the command to test the HP player. &lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=1 3&lt;br /&gt;
    numid=1,iface=MIXER,name='Playback Path'&lt;br /&gt;
     ; type=ENUMERATED,access=rw------,values=1,items=11&lt;br /&gt;
     ; Item #0 'OFF'&lt;br /&gt;
     ; Item #1 'RCV'&lt;br /&gt;
     ; Item #2 'SPK'&lt;br /&gt;
     ; Item #3 'HP'&lt;br /&gt;
     ; Item #4 'HP_NO_MIC'&lt;br /&gt;
     ; Item #5 'BT'&lt;br /&gt;
     ; Item #6 'SPK_HP'&lt;br /&gt;
     ; Item #7 'RING_SPK'&lt;br /&gt;
     ; Item #8 'RING_HP'&lt;br /&gt;
     ; Item #9 'RING_HP_NO_MIC'&lt;br /&gt;
     ; Item #10 'RING_SPK_HP'&lt;br /&gt;
     : values=3&lt;br /&gt;
 &lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
 $ Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
*To test the Mic recordding， please follow:&lt;br /&gt;
 &lt;br /&gt;
 $ amixer -c 1 cset numid=2 1&lt;br /&gt;
 $ arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav ./mic_test.wav      #this is a record command&lt;br /&gt;
  Recording WAVE './mic_test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
 $ aplay -D plughw:1,0 mic_test.wav&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
*Plug in the U dish and use the command by serial console.&lt;br /&gt;
 &lt;br /&gt;
 rock@rock3a:~$ dmesg | tail&lt;br /&gt;
 [11831.172069] usb 8-1: SerialNumber: CCYYXI5KH5PRSNCA&lt;br /&gt;
 [11831.175205] usb-storage 8-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [11831.176984] scsi host0: usb-storage 8-1:1.0&lt;br /&gt;
 [11832.272573] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [11832.276158] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [11832.276756] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [11832.276774] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [11832.277126] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 [11832.285978] sda: sda1&lt;br /&gt;
 [11832.288023] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ sudo mount /dev/sda1 /mnt&lt;br /&gt;
 rock@rock3a:~$ lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE   RO   TYPE   MOUNTPOINT&lt;br /&gt;
 sda           8:0    1    14.7G  0    disk &lt;br /&gt;
 └─sda1       8:1     1    14.7G  0    part     /mnt&lt;br /&gt;
&lt;br /&gt;
*If /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
=== Test fan on / off ===&lt;br /&gt;
*Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 root@rock3a:~# echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 root@rock3a:~# echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 root@rock3a:~# echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T07:35:55Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: /* Test USB Host */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
*Plug in the U dish and use the command by serial console.&lt;br /&gt;
 &lt;br /&gt;
 rock@rock3a:~$ dmesg | tail&lt;br /&gt;
 [11831.172069] usb 8-1: SerialNumber: CCYYXI5KH5PRSNCA&lt;br /&gt;
 [11831.175205] usb-storage 8-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [11831.176984] scsi host0: usb-storage 8-1:1.0&lt;br /&gt;
 [11832.272573] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [11832.276158] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [11832.276756] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [11832.276774] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [11832.277126] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 [11832.285978] sda: sda1&lt;br /&gt;
 [11832.288023] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ sudo mount /dev/sda1 /mnt&lt;br /&gt;
 rock@rock3a:~$ lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE   RO   TYPE   MOUNTPOINT&lt;br /&gt;
 sda           8:0    1    14.7G  0    disk &lt;br /&gt;
 └─sda1       8:1     1    14.7G  0    part     /mnt&lt;br /&gt;
&lt;br /&gt;
*If /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
=== Test fan on / off ===&lt;br /&gt;
*Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 root@rock3a:~# echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 root@rock3a:~# echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 root@rock3a:~# echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T07:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
*Plug in the U dish and use the command by serial console.&lt;br /&gt;
 &lt;br /&gt;
 rock@rock3a:~$ dmesg | tail&lt;br /&gt;
 [11831.172069] usb 8-1: SerialNumber: CCYYXI5KH5PRSNCA&lt;br /&gt;
 [11831.175205] usb-storage 8-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [11831.176984] scsi host0: usb-storage 8-1:1.0&lt;br /&gt;
 [11832.272573] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [11832.276158] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [11832.276756] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [11832.276774] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [11832.277126] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 [11832.285978]&amp;quot;'sda: sda1'&amp;quot;&lt;br /&gt;
 [11832.288023] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ sudo mount /dev/sda1 /mnt&lt;br /&gt;
 rock@rock3a:~$ lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE   RO   TYPE   MOUNTPOINT&lt;br /&gt;
 sda           8:0    1    14.7G  0    disk &lt;br /&gt;
 └─sda1       8:1     1    14.7G  0    part     /mnt&lt;br /&gt;
&lt;br /&gt;
*If /dev/sda1 is successfully mounted, this usb host is working properly. &lt;br /&gt;
&lt;br /&gt;
=== Test fan on / off ===&lt;br /&gt;
*Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 root@rock3a:~# echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 root@rock3a:~# echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 root@rock3a:~# echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
 root@rock3a:~# echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on&lt;br /&gt;
 root@rock3a:~# echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Ubuntu</id>
		<title>Rock3/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Ubuntu"/>
				<updated>2021-09-10T06:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Ubuntu}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Ubuntu | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server  is an easy to use system. While working with ROCK 3 Ubuntu Server, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Ubuntu server uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain, try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK 3 supports 2.4G/5G WIFI and Wi-Fi 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
*ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G. &lt;br /&gt;
 rock@rock3a:~$ free -h&lt;br /&gt;
              total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          7.4Gi        85Mi       7.2Gi       8.0Mi       168Mi       7.2Gi&lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
*For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0 &lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD: /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
*First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
&lt;br /&gt;
 rock@rock3a:~$ dmesg | grep rtc&lt;br /&gt;
 [    0.878676] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.880447] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:04 UTC (1501837204)&lt;br /&gt;
&lt;br /&gt;
*Second, use the follow commands to set the system time and synchronization to the rtc clock. &lt;br /&gt;
&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00 &lt;br /&gt;
 $ poweroff&lt;br /&gt;
&lt;br /&gt;
*and then disconnect the power supply &lt;br /&gt;
*Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 &lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_ubuntu_focal_server_arm64_20210823_2119-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Debian</id>
		<title>Rock3/Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Debian"/>
				<updated>2021-09-08T03:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Debian}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Debian | Debian]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Debian ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian  is an easy to use desktop system. While working with ROCK 3 Debian, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
===Desktop ===&lt;br /&gt;
&lt;br /&gt;
The preinstalled Desktop is xfce4.&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain. , try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK Pi N10 supports 2.4G/5G WIFI and WIFI 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
*Update necessary packages.&lt;br /&gt;
 root@rock3a:~# apt-get update&lt;br /&gt;
 root@rock3a:~# apt-get install  rcokchip-overlay&lt;br /&gt;
 root@rock3a:~# apt-get install  linux-4.19-rock-3-latest&lt;br /&gt;
 root@rock3a:~# apt-get install  broadcom-wifibt-firmware&lt;br /&gt;
*Check Bluetooth service.&lt;br /&gt;
 root@rock3a:~# systemctl status bluetooth&lt;br /&gt;
*Run Bluetooth service if the Bluetooth service is inactive.&lt;br /&gt;
 root@rock3a:~# systemctl start bluetooth&lt;br /&gt;
*Check Bluetooth device.&lt;br /&gt;
 root@rock3a:~# hciconfig&lt;br /&gt;
 hci0:   Type: Primary  Bus: UART&lt;br /&gt;
        BD Address: 10:2C:6B:49:D5:53  ACL MTU: 1021:8  SCO MTU: 64:1&lt;br /&gt;
        UP RUNNING &lt;br /&gt;
        RX bytes:850 acl:0 sco:0 events:58 errors:0&lt;br /&gt;
        TX bytes:2814 acl:0 sco:0 commands:58 errors:0&lt;br /&gt;
*Example: Connect to Bluetooth Speaker.&lt;br /&gt;
*Install pulseaudio packages.&lt;br /&gt;
 root@rock3a:~# apt-get install -y pulseaudio-module-bluetooth pulseaudio&lt;br /&gt;
*Run pulseaudio.&lt;br /&gt;
 root@rock3a:~# pulseaudio --start&lt;br /&gt;
*Connect using bluetoothctl.&lt;br /&gt;
 root@rock3a:~# bluetoothctl&lt;br /&gt;
 [bluetooth]# default-agent &lt;br /&gt;
 [bluetooth]# power on&lt;br /&gt;
 [bluetooth]# scan on&lt;br /&gt;
 [bluetooth]# trust 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# pair 77:EC:79:4F:6B:AC&lt;br /&gt;
 [bluetooth]# connect 77:EC:79:4F:6B:AC&lt;br /&gt;
*Play songs and enjoy it.&lt;br /&gt;
 &lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G.&lt;br /&gt;
 $ free -h&lt;br /&gt;
               total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          '''7.4Gi'''        72Mi       7.1Gi        16Mi       182Mi       7.2Gi &lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
&lt;br /&gt;
For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0&lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD:  /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
 root@rock3a:~# dmesg | grep rtc&lt;br /&gt;
 [    0.749597] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.751404] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:02 UTC (1501837202)&lt;br /&gt;
&lt;br /&gt;
Second, use the follow commands to set the system time and synchronization to the rtc clock.&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00&lt;br /&gt;
 $ poweroff&lt;br /&gt;
and then disconnect the power supply&lt;br /&gt;
Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Test Audio Player===&lt;br /&gt;
Download a wav audio file, and use the command to test.&lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
 &lt;br /&gt;
 root@rock3a:~# aplay -D plughw:1,0 6.wav &lt;br /&gt;
 xcb_connection_has_error() returned true &lt;br /&gt;
 Playing WAVE '6.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
Plug in the U dish and use the command by serial console.&lt;br /&gt;
 $ '''dmesg | tail'''&lt;br /&gt;
 [  133.773558] usb 2-1: SerialNumber: CCYYB18M1CFKO4H4&lt;br /&gt;
 [  133.774332] usb-storage 2-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [  133.774657] scsi host0: usb-storage 2-1:1.0&lt;br /&gt;
 [  134.841096] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [  134.846394] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [  134.847554] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [  134.847635] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [  134.848824] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 '''[  134.858173]  sda: sda1'''&lt;br /&gt;
 [  134.861161] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 $ '''sudo mount /dev/sda1 /mnt'''&lt;br /&gt;
 $ '''lsblk'''&lt;br /&gt;
 root@linaro-alip:~# lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda            8:0    1 14.7G  0 disk &lt;br /&gt;
 └─sda1         8:1    1 14.7G  0 part /mnt&lt;br /&gt;
If  /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
===Test fan on / off===&lt;br /&gt;
Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 echo normal &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on  &lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_debian_buster_xfce4_arm64_20210824_0136-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	<entry>
		<id>https://wiki.radxa.com/Rock3/Debian</id>
		<title>Rock3/Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Rock3/Debian"/>
				<updated>2021-09-07T02:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Yanw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rock3_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rock3/Debian}}&lt;br /&gt;
&lt;br /&gt;
    [[rock3 | ROCK 3]] &amp;gt; [[rock3/Debian | Debian]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Work with ROCK 3 Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to ROCK 3 Debian ===&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian  is an easy to use desktop system. While working with ROCK 3 Debian, you will find it do well on playing music, Internet, Bluetooth, AI and so on.&lt;br /&gt;
&lt;br /&gt;
ROCK 3 Debian uses '''systemd''' to manage system.&lt;br /&gt;
&lt;br /&gt;
Command prepended by $ means the command may be executed by an unprivileged user.  And command prepended by # means the command may be executed by an privileged user. But the symbol, $ or #, is not part of the command.&lt;br /&gt;
&lt;br /&gt;
=== Access from the Host PC/Laptop ===&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Serial console ====&lt;br /&gt;
&lt;br /&gt;
Check [[rock3/dev/serial-console | Serial Console]]&lt;br /&gt;
&lt;br /&gt;
==== Option 2: SSH ====&lt;br /&gt;
SSH server  is enabled on port 22 of ROCK 3 default image. &lt;br /&gt;
&lt;br /&gt;
Please use [https://angryip.org/ angryip] to find your board IP address.&lt;br /&gt;
&lt;br /&gt;
 $ ping ip-of-device&lt;br /&gt;
 $ ssh rock@ip-of-device&lt;br /&gt;
&lt;br /&gt;
=== Debian Default User Account ===&lt;br /&gt;
&lt;br /&gt;
Non-root User:&lt;br /&gt;
&lt;br /&gt;
 User Name : rock&lt;br /&gt;
 Password  : rock&lt;br /&gt;
&lt;br /&gt;
===Desktop ===&lt;br /&gt;
&lt;br /&gt;
The preinstalled Desktop is xfce4.&lt;br /&gt;
&lt;br /&gt;
=== Install and update  necessary packages ===&lt;br /&gt;
&lt;br /&gt;
Add Radxa APT, see [[rock3/radxa-apt | Radxa APT]].&lt;br /&gt;
&lt;br /&gt;
Install packages;&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install -y rockchip-overlay&lt;br /&gt;
 $ sudo apt-get install -y linux-4.4-rock-3-latest&lt;br /&gt;
&lt;br /&gt;
=== Network Connection ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for network connection. One is Ethernet and the other is WIFI.&lt;br /&gt;
&lt;br /&gt;
==== Ethernet Connection ====&lt;br /&gt;
You can use a network cable (one end connected to the external network port or route)  to connect your ROCK 3 to the network. The ROCK 3 will automatically configure the network for your surfing on the Internet.&lt;br /&gt;
&lt;br /&gt;
===== To test the Ethernet, we need to follow the steps: =====&lt;br /&gt;
* Switch to super user mode by command&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Check whether the Ethernet is normal by command, ifconfig, which would show us a network card, eth0, and the Ethernet IP address. Also, use tool, ping, to connect to a normal domain. &lt;br /&gt;
&lt;br /&gt;
 $ ifconfig&lt;br /&gt;
 $ ping www.baidu.com&lt;br /&gt;
&lt;br /&gt;
* If failed to connect to a normal domain. , try &lt;br /&gt;
&lt;br /&gt;
 $ sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
==== WIFI Connection ====&lt;br /&gt;
&lt;br /&gt;
When there is not a network cable for your ROCK 3 the WIFI connection is another good choice. ROCK Pi N10 supports 2.4G/5G WIFI and WIFI 6 wireless network.&lt;br /&gt;
&lt;br /&gt;
=====To test the WIFI performance, we need to follow the steps:=====&lt;br /&gt;
&lt;br /&gt;
* Switch to super user mode&lt;br /&gt;
 $ sudo su&lt;br /&gt;
&lt;br /&gt;
* Open the WIFI&lt;br /&gt;
 $ nmcli r wifi on&lt;br /&gt;
&lt;br /&gt;
* Scan WIFI&lt;br /&gt;
 $ nmcli dev wifi&lt;br /&gt;
&lt;br /&gt;
* Connect to WIFI network&lt;br /&gt;
 $ nmcli dev wifi connect &amp;quot;wifi_name&amp;quot; password &amp;quot;wifi_password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Test WIFI perpormance by tool iperf.&lt;br /&gt;
&lt;br /&gt;
=== Check DDR size ===&lt;br /&gt;
ROCK 3 has several different DDR sizes, such as 2G, 4G, 8G.&lt;br /&gt;
 $ free -h&lt;br /&gt;
               total        used        free      shared  buff/cache   available&lt;br /&gt;
 Mem:          '''7.4Gi'''        72Mi       7.1Gi        16Mi       182Mi       7.2Gi &lt;br /&gt;
 Swap:            0B          0B          0B&lt;br /&gt;
&lt;br /&gt;
For example, the size of DDR on this board is 8G.&lt;br /&gt;
&lt;br /&gt;
=== Storage device ===&lt;br /&gt;
* eMMC: /dev/mmcblk0&lt;br /&gt;
* uSD Card: /dev/mmcblk1&lt;br /&gt;
* NVME M.2 SDD:  /dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
=== Test RTC Device ===&lt;br /&gt;
First, plug in RTC battery and power on.Check the rtc device:&lt;br /&gt;
 root@rock3a:~# dmesg | grep rtc&lt;br /&gt;
 [    0.749597] rk808-rtc rk808-rtc: registered as rtc0&lt;br /&gt;
 [    0.751404] rk808-rtc rk808-rtc: setting system clock to 2017-08-04 09:00:02 UTC (1501837202)&lt;br /&gt;
&lt;br /&gt;
Second, use the follow commands to set the system time and synchronization to the rtc clock.&lt;br /&gt;
 $ date -s &amp;quot;2021-08-17 20:03:00&amp;quot;&lt;br /&gt;
 $ hwclock -w&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:00:04.745124+00:00&lt;br /&gt;
 $ poweroff&lt;br /&gt;
and then disconnect the power supply&lt;br /&gt;
Third, back to power after 10 mins and check whether the rtc clock run the same time&lt;br /&gt;
 $ hwclock -r&lt;br /&gt;
 root@rock3a:~# hwclock -r&lt;br /&gt;
 2021-08-17 20:10:14.745124+00:00&lt;br /&gt;
&lt;br /&gt;
=== Test Audio Player===&lt;br /&gt;
Download a wav audio file, and use the command to test.&lt;br /&gt;
 $ aplay -D plughw:1,0 test.wav&lt;br /&gt;
 &lt;br /&gt;
 root@rock3a:~# aplay -D plughw:1,0 6.wav &lt;br /&gt;
 xcb_connection_has_error() returned true &lt;br /&gt;
 Playing WAVE '6.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
=== Test USB Host ===&lt;br /&gt;
Plug in the U dish and use the command by serial console.&lt;br /&gt;
 $ '''dmesg | tail'''&lt;br /&gt;
 [  133.773558] usb 2-1: SerialNumber: CCYYB18M1CFKO4H4&lt;br /&gt;
 [  133.774332] usb-storage 2-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [  133.774657] scsi host0: usb-storage 2-1:1.0&lt;br /&gt;
 [  134.841096] scsi 0:0:0:0: Direct-Access     aigo     U350             1100 PQ: 0 ANSI: 6&lt;br /&gt;
 [  134.846394] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)&lt;br /&gt;
 [  134.847554] sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;
 [  134.847635] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00&lt;br /&gt;
 [  134.848824] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;
 '''[  134.858173]  sda: sda1'''&lt;br /&gt;
 [  134.861161] sd 0:0:0:0: [sda] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 $ '''sudo mount /dev/sda1 /mnt'''&lt;br /&gt;
 $ '''lsblk'''&lt;br /&gt;
 root@linaro-alip:~# lsblk&lt;br /&gt;
 NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda            8:0    1 14.7G  0 disk &lt;br /&gt;
 └─sda1         8:1    1 14.7G  0 part /mnt&lt;br /&gt;
If  /dev/sda1 is successfully mounted, this usb host is working properly.&lt;br /&gt;
&lt;br /&gt;
===Test fan on / off===&lt;br /&gt;
Please execute with root permission&lt;br /&gt;
&lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/export&lt;br /&gt;
 echo 10000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/period&lt;br /&gt;
 echo 5000 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/duty_cycle&lt;br /&gt;
 echo normai &amp;gt;  /sys/class/pwm/pwmchip0/pwm0/polarity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo 1 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable        // on  &lt;br /&gt;
 echo 0 &amp;gt; /sys/class/pwm/pwmchip0/pwm0/enable       //  off  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changelogs ===&lt;br /&gt;
&lt;br /&gt;
==== 2021.08.24 ====&lt;br /&gt;
&lt;br /&gt;
'''rock3a_debian_buster_xfce4_arm64_20210824_0136-gpt.img'''&lt;br /&gt;
&lt;br /&gt;
* Kernel version: 4.19.193-2-rockchip-g7cf7399ddb5c&lt;br /&gt;
* U-Boot version: 2017.09-gbd2fa07970e-210525&lt;/div&gt;</summary>
		<author><name>Yanw</name></author>	</entry>

	</feed>