[ROM][Android10][RockPI 4] Android Q Firmware Release

Also no update.img after build project:

C/system.img --partition vendor:readonly:264634368:rockchip_dynamic_partitions --image vendor=out/target/product/RockPi4C/vendor.img --partition product:readonly:289423360:rockchip_dynamic_partitions --image product=out/target/product/RockPi4C/product.img --partition odm:readonly:552960:rockchip_dynamic_partitions --image odm=out/target/product/RockPi4C/odm.img --sparse --output out/target/product/RockPi4C/super.img"
2020-09-13 00:24:00 - common.py - INFO    : lpmake I 09-13 00:23:56 11618 11618 builder.cpp:949] [liblp]Partition system will resize from 0 bytes to 907767808 bytes
lpmake I 09-13 00:23:56 11618 11618 builder.cpp:949] [liblp]Partition vendor will resize from 0 bytes to 264634368 bytes
lpmake I 09-13 00:23:56 11618 11618 builder.cpp:949] [liblp]Partition product will resize from 0 bytes to 289423360 bytes
lpmake I 09-13 00:23:56 11618 11618 builder.cpp:949] [liblp]Partition odm will resize from 0 bytes to 552960 bytes
2020-09-13 00:24:00 - build_super_image.py - INFO    : Done writing image out/target/product/RockPi4C/super.img

#### build completed successfully (01:59:25 (hh:mm:ss)) ####

rm: cannot remove '/home/davemf/ROCK_Pi4c/rockdev': No such file or directory
davemf@i7-8700-64gb-ram:~/ROCK_Pi4c$ 

super.img - Is it final android ROM for Pi4?

No, it’s vendor, oem and system combined.
Try creating rockdev then run ./mkimage.sh
Then in the rockdev folder rename the RockPi4B to Image and copy to RKTools/Linux/RK_Pack_Firmware and run mkupdate_rk3399.sh in this folder.

1 Like

before run ./mkimage.sh need to enter lunch command.
Which lunch is need for pi4c board? RockPi4C-userdebug is it right?

Yes that is right.
I forgot when you run the included script that it doesn’t save the commands for manual try later.
source build/envsetup.sh then
lunch RockPi4C-userdebug or lunch and select it from the list.

1 Like

Yes, it is work.
Thank you!

So, I have big issue with ROM.
I added gapps and gps.default.so library in /vendor/lib64/hw folder.
I built ROM with command ./build-rockpi-4c.sh and had the first issue.
I made this steps and got the update.img

Out folder contains all standart library and my gps.default.so file.

I flash my ROM and go to /vendor/lib64/hw folder. This folder contains libraries and HIDL services, but almost all have size 0. Gapps are work fine.
Why is it happened? Nothing to work!

@Lili
I see in Settings - Display - HDMI
The settings gets disabled then you can’t change the resolution.

1 Like

Thank you for your test.

I already know the problem.

How do you add these so’s?

Hello,
Is build-rockpi-4c.sh working?

I executed this script. but created image was uncomplete.
“device/rockchip/rk3399/RockPi4C/parameter.txt” don’t have system,vendor partition.
May I need to recreate parameter.txt?

@minami_uni
In Android 10 system, vendor, odm partitions are merged as one and called super.img so they won’t be in the parameter.txt anymore.

@mo123 Thank you for the reply. I’ll retry to build.

@Lili
Hope you can get gpt images to build too.
Also SDDiskTool v1.62 if you use SD Boot on RKFirmware images to burn firmware to a micro-sd card, it boots to recovery and doesn’t load Android.

I added with PRODUCT_COPY_FILES in RockPi4C.mk file, but it doesn’t matter, the standart library is empty too! Why? They have size in out folder, but size is ZERO in ROM.

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/bootanimation.zip:product/media/bootanimation.zip \
    $(LOCAL_PATH)/lib_hw/gps.default.so:vendor/lib/hw/gps.default.so \
    $(LOCAL_PATH)/lib64_hw/gps.default.so:vendor/lib64/hw/gps.default.so \
    $(LOCAL_PATH)/lib64_hw/settings.conf:vendor/settings.conf

Is it normal log for ./mkimage.sh command?

davemf@i7-8700-64gb-ram:~/ROCK_Pi4c$ ./mkimage.sh
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
device/rockchip/common/device.mk:868: warning: Please set client id with your own MADA ID!
TARGET_PRODUCT=RockPi4C
TARGET_BASE_PARAMETER_IMAGE==
HIGH_RELIABLE_RECOVERY_OTA=false
BOARD_AVB_ENABLE=false
system filesysystem is ext4
create dtbo.img.... 
done.
create boot.img.... 
BOARD_AVB_ENABLE is false, make boot.img from kernel.
done.
create recovery.img.... 
BOARD_AVB_ENABLE is false, make recovery.img from kernel && out.
done.
create system.img.... BOARD_AVB_ENABLE is false, make system.img from out.
in=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/system.img out=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/system.img.out align=1024
Total of 297916 4096-byte output blocks in 14 input chunks.
Generating optimized sparse image done,total_chunk=12.
done.
create vbmeta.img.... BOARD_AVB_ENABLE is false,use default vbmeta.imgdone.create vendor.img...BOARD_AVB_ENABLE is false, make vendor.img from out.
in=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/vendor.img out=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/vendor.img.out align=1024
Total of 64623 4096-byte output blocks in 6 input chunks.
Generating optimized sparse image done,total_chunk=4.
done.create odm.img...BOARD_AVB_ENABLE is false, make odm.img from out.
in=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/odm.img out=/home/davemf/ROCK_Pi4c/out/target/product/RockPi4C/odm.img.out align=1024
Total of 1175 4096-byte output blocks in 2 input chunks.
Generating optimized sparse image done,total_chunk=2.
done.
copy super.img...
create misc.img.... done.
create uboot.img...done.
create trust.img...done.
create loader...done.
create resource.img...done.
create kernel.img...done.
create config.cfg...done.
create parameter...done.

@mo123 Do you have zero library size in /vendor/lib64/hw folder?

@davemf
I think more changes are needed for gps.
Perhaps try grep -r gps in the /device/rockchip and /vendor/rockchip/common folders to check.

Did you remember to add

diff --git a/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
index e49f228..883fc6f 100755
--- a/device.mk
+++ b/device.mk
@@ -23,6 +23,11 @@ PRODUCT_PACKAGES += \
     displayd \
     libion
 
+# GPS HAL
+PRODUCT_PACKAGES += \
+    android.hardware.gnss@1.0-impl \
+    android.hardware.gnss@1.0-service
+
 #enable this for support f2fs with data partion
 BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs

--- a/device/rockchip/common/manifest.xml
+++ b/device/rockchip/common/manifest.xml
@@ -185,6 +185,14 @@
         </interface>
         <fqname>@1.0::IHdmiCec/default</fqname>
     </hal>
-
+    <hal format="hidl">
+       <name>android.hardware.gnss</name>
+       <transport>hwbinder</transport>
+       <version>1.0</version>
+       <interface>
+           <name>IGnss</name>
+           <instance>default</instance>
+       </interface>
+    </hal>
 </manifest>

Yes, it is need, but if you add this changes your board never boot, if shows bootanimation only. Because gps.default.so file is empty and hidl service cannot start it again and again.
My question is: Why ROM has empty library files?

Please check your intermediate file under out.

Yes, I have checked it. All files have a size.

Android10 uses variable partitions, so you need to make super part. bigger.