AIO-3399Pro-JD4 How does Android9 use the ALC5640 codec on the baseboard?

The system uses RK809 codec by default. If you use ALC5640, you need to modify the hardware. I2S1 signal pin is changed to I2S0 (Core-3399Pro-JD4 does not lead to I2S1), I2C and I2S_CLK do not move, need to jump off the resistance of R89~R93.

_images/5640_sch.png _images/5640_pcb.png

The software is modified as follows:

**Modified according to the latest code**
commit 809d8d77b59996770a05f81abff9ff2553773ff7
Author: Firefly <service@t-firefly.com>
Date:   Tue Oct 20 15:41:26 2020 +0800

    1.add alc5640 support
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aiojd4.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aiojd4.dtsi
@@ -20,11 +20,11 @@

        rk809-sound {
-               status = "okay";
+               status = "disabled";

         rt5640-sound {
-               status = "disabled";
+               status = "okay";
                 compatible = "simple-audio-card";
                 simple-audio-card,format = "i2s";
                 simple-audio-card,name = "rockchip,rt5640-codec";

How to adjust HDMI output resolution?

AIO-3399Pro-JD4 HDMI cannot automatically identify display resolution temporary. Use command below to switch 4K resoultion and flash screen:

# 4k60:
setprop persist.sys.resolution.main 3840x2160@60
# Set sys.display.timeline base on the default num to plus one for updating resolution
setprop sys.display.timeline 1

Open Root permissions

There are many powerful functions of the Android system that require root permissions. Developers often encounter permissions problems when using them. How to enable the root permissions of the system on the Firefly platform? Firefly has added the function of starting root privileges in the system. The specific steps are as follows:

  1. Find About device in Settgins apk and click into it;

  2. After clicking on Build number 5 times, it will prompt (you are now a developer);

  3. Then return to the previous level and click the option Developer options, and click ROOT access in the options to open the root authority function.


What should I do if the boot is abnormal and restarts cyclically?

It may be that the power supply current is not enough. Please use a power supply with a voltage of 12V and a current of 2.5A~3A.

What is the default username and password for Ubuntu?

  • Username: firefly

  • Password: firefly

  • Switch super user sudo -s

Where is the RK3399Pro chip technical manual?

K3399Pro chip technical manual link: [Part1](https://download.t-firefly.com/product/RK3399/Docs/Chip%20Specifications/RK3399Pro-TRM-V1.0/Rockchip%20RK3399Pro%20TRM%20V1.0% 20Part1-20190122.pdf) [Part2](https://download.t-firefly.com/product/RK3399/Docs/Chip%20Specifications/RK3399Pro-TRM-V1.0/Rockchip%20RK3399Pro%20TRM%20V1.0% 20Part2-20190122.pdf)

How to turn off audio in Android system?

For users without a codec module, if the audio-related configuration is not turned off, the kernel will always report abnormal log information. There are two ways to turn off the audio:

  1. Disable audioserver in the source code:

--- a/vendor/rockchip/common/device-vendor.mk
+++ b/vendor/rockchip/common/device-vendor.mk
@@ -121,6 +121,8 @@ ifeq ($(strip $(TARGET_BOARD_PLATFORM)), rk3399pro)
 $(call inherit-product-if-exists, vendor/rockchip/common/npu/npu_transfer.mk)

   -$(call inherit-product-if-exists, vendor/rockchip/common/tinyalsa/tinyalsa.mk)

    $(call inherit-product-if-exists, vendor/rockchip/common/pppoe/pppoe.mk)
  1. Directly delete udio.primary.default.so:


Write number tool to write SN, MAC address

Note: If the eMMC erase operation is performed on the development board, the previously written data will also be cleared.

Windows way

  • Install RKDevInfoWriteTool

  • Select “RPMB” in Settings of RKDevInfoWriteTool

  • Configure “SN”, “WIFI MAC”, “LAN MAC”, “BT MAC”, etc. in the Settings of RKDevInfoWriteTool as needed

  • The development board enters loader mode

  • RKDevInfoWriteTool performs write or read operations

For specific operations, please refer to the PDF document “RKDevInfoWriteTool User Guide” under the RKDevInfoWriteTool installation directory.

Linux way

How to write the number of the development board itself

  • Buildroot enable BR2_PACKAGE_VENDOR_STORAGE

  • Read and write operations through the vendor_storage command

    vendor_storage -w VENDOR_SN_ID -t string -i cad895bedb8ee15f
    vendor_storage -r VENDOR_SN_ID -t hex -i /dev/null
    • LAN MAC

    vendor_storage -w VENDOR_LAN_MAC_ID -t string -i AABBCCDDEEFF
    vendor_storage -r VENDOR_LAN_MAC_ID -t hex -i /dev/null
      Others can be operated according to the prompt of `vendor_storage -h`.

For how to read the application, please refer to the vendor_storage_read function in buildroot/package/rockchip/vendor_storage/vendor_storage.c.

On Ubuntu system, if there is no sound after plugging in headphones, what should I do?

Menu -> Multimedia -> PulseAudio Volume Control -> Configuration -> Select the sound card that is working and turn off the other sound card.

How to make the system crawl LOG under Android?

Settings (settings) -> About phone (about phone) -> Click 5 times Build number (version number) -> Developer options (Developer options) -> Enable logging to save Save). After the function is turned on, the folder .LOGSAVE will be generated under the root directory of the system storage, which includes the system logcat and kernel kmsg.