Hi all.
When I saw this page (thanks @Hqnicolas) - looked at the specs of this board, and looked at its price ($85) - I knew I had to try to install Linux on it.
First things first - I did an Android backup.
====================================
1. Turned on Android box. I connected it to the local network
2. Turn on developer mode. Turn on debugging.
3. On the Linux computer, run
$ adb connect 192.168.0.20:5555
$ adb root
$ adb shell
rk3576_box:/ # cat /proc/partitions | grep mmcblk
179 0 122142720 mmcblk2
179 1 4096 mmcblk2p1
179 2 4096 mmcblk2p2
179 3 4096 mmcblk2p3
179 4 4096 mmcblk2p4
179 5 4096 mmcblk2p5
179 6 1024 mmcblk2p6
179 7 65536 mmcblk2p7
179 8 98304 mmcblk2p8
179 9 393216 mmcblk2p9
179 10 393216 mmcblk2p10
179 11 65536 mmcblk2p11
179 12 512 mmcblk2p12
179 13 1024 mmcblk2p13
179 14 4194304 mmcblk2p14
179 15 116905440 mmcblk2p15
179 32 4096 mmcblk2boot0
179 64 4096 mmcblk2boot1
rk3576_box:/ # exit
adb pull /dev/block/mmcblk2 /home/user/full-big.iso
Next - using the dd utility, reduce the resulting file to 6Gb, since the image takes 120Gb
dd if=/home/user/full-big.iso of=/home/user/H96_MAX_M9_RK3576-android-full.iso bs=512 count=11895122
Getting the dtb file
-----------------------
$binwalk --signature --term full_mini
Find the largest Flattened device tree.
DECIMAL HEXADECIMAL DESCRIPTION
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
………………..……
55363843 0x34CC903 Unix path: /sys/kernel/debug/%pd/%s
55438666 0x34DED4A Unix path: /lib/firmware/updates/6.1.57
55440137 0x34DF309 Unix path: /dev/disk/by-id/ may cause data corruption
55466136 0x34E5898 Neighborly text, "NeighborAdvertisements6ip6t_REJECT: ECHOREPLY is not supported"
55496752 0x34ED030 Unix path: /sys/kernel/debug/rk628/2-0050/hdmitx_color_bar
55555249 0x34FB4B1 Unix path: /sys/kernel/debug/rk628/2-0050/dsi_color_bar
55760043 0x352D4AB Unix path: /sys/kernel/debug/%s
55760097 0x352D4E1 Unix path: /sys/kernel/debug/%pd/%s
55846910 0x35427FE Neighborly text, "Neighborenabling vblank on crtc %u, ret: %d"
55855620 0x3544A04 Unix path: /lib/firmware/6.1.57
55878704 0x354A430 Unix path: /sys/firmware/devicetree/base
55913424 0x3552BD0 Unix path: /sys/kernel/debug/rk628/2-0050/scaler_color_bar
55913634 0x3552CA2 Unix path: /sys/kernel/debug/rk628/2-0050/gvi_color_bar
56002822 0x3568906 Neighborly text, "neighbor %.2x%.2x.%pM lostrward_delay_timer"
56003414 0x3568B56 Neighborly text, "NeighboraversalTime"
56031712 0x356F9E0 Unix path: /sys/kernel/debug/rk628/2-0050/dsi_color_bar
56031782 0x356FA26 Unix path: /sys/kernel/debug/rk628/2-0050/gvi_color_bar
56538119 0x35EB407 MySQL ISAM compressed data file Version 3
58589623 0x37E01B7 mcrypt 2.2 encrypted data, algorithm: blowfish-448, mode: CBC, keymode: 8bit
58682916 0x37F6E24 ASCII cpio archive (SVR4 with no CRC), file name: "dev", file name length: "0x00000004", file size: "0x00000000"
58683032 0x37F6E98 ASCII cpio archive (SVR4 with no CRC), file name: "dev/console", file name length: "0x0000000C", file size: "0x00000000"
58683156 0x37F6F14 ASCII cpio archive (SVR4 with no CRC), file name: "root", file name length: "0x00000005", file size: "0x00000000"
58683272 0x37F6F88 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
58782120 0x380F1A8 Intel x86 or x64 microcode, pf_mask 0xf4401f01, 2001-09-12, rev 0x30000000, size 1
58888000 0x3828F40 AES S-Box
58888256 0x3829040 AES Inverse S-Box
63311872 0x3C61000 gzip compressed data, from Unix, last modified: 1970-01-01 00:00:00 (null date)
64777216 0x3DC6C00 Flattened device tree, size: 262377 bytes, version: 17
65039872 0x3E06E00 PC bitmap, Windows 3.x format,, 220 x 110 x 8
65046528 0x3E08800 PC bitmap, Windows 3.x format,, 220 x 110 x 8
65053184 0x3E0A200 PC bitmap, Windows 3.x format,, 220 x 110 x 8
65059840 0x3E0BC00 PC bitmap, Windows 3.x format,, 220 x 110 x 8
65066496 0x3E0D600 PC bitmap, Windows 3.x format,, 220 x 110 x 8
65073152 0x3E0F000 PC bitmap, Windows 3.x format,, 220 x 110 x 8
^C
~$
~$dd if=full_1_mini of=h96-m9_original.dtb bs=1 skip=64777216 count=262377
~$dtc -O dts h96-m9_original.dtb -o h96-m9_original.dts
How to burn an Android image to a box:
==================================
Press the reset button. Turn on the power.
$rkdeveloptool db RK3576_MiniLoaderAll.bin
$rkdeveloptool wl 0x0 full_mini
cc @El308
Armbian
=====================
Copy the file h96-m9.csc directory to the directory build/config/boards/
Create build/packages/blobs/h96-m9/ directory and copy h96-m9_original.dtb file into it
Run the build
------------------
build debian 12 DESKTOP
./compile.sh BOARD=h96-m9 BRANCH=vendor BUILD_MINIMAL=no DEB_COMPRESS=xz KERNEL_CONFIGURE=no RELEASE=noble KERNEL_GIT=shallow BUILD_DESKTOP=yes DESKTOP_APPGROUPS_SELECTED= DESKTOP_ENVIRONMENT=gnome DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base
Installing
----------------
Press the reset button. Turn on the power.
$rkdeveloptool db RK3576_MiniLoaderAll.bin
$rkdeveloptool wl 0x0 Armbian-unofficial_24.8.0-trunk_H96-m9_noble_vendor_6.1.75_gnome_desktop-test_1.img
Warning! This build has a very important drawback. After flashing, the reset button stops working. Without it it will be difficult to flash the console. If you don't have a console cable - don't flash with this firmware yet. I'll be working on finalizing it now. Wait for a while.
If you have a console cable and you need to install another image.
1. Connect the console cable.
2. Start the console.
3. At the same time try to stop loading by pressing ctrl+c in the console. It may not work the first time.
3. Enter in the u-boot console
part uuid mmc 0:1 partuuid
4. Reboot the box.
5. Flash
$rkdeveloptool db RK3576_MiniLoaderAll.bin
$rkdeveloptool wl 0x0 Armbian-unofficial_24.8.0-trunk_H96-m9_noble_vendor_6.1.75_gnome_desktop-test_1.img
Test debian 12 DESKTOP and debian 12 server.
==================================================
It works
-----------
1. USB2.0 and USB3.0 are working
2. WiFi6 works: router shows 11ax 1x1 80 MHz
Not working
-----------
1. Reset button in UBOOT
2. When turning off the box, the lights are still on. Probably - it is not really turned off.
3. video acceleration does not work.
Tests
==============
$ glmark2-es2-wayland
-----------------------------
MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
libEGL warning: egl: failed to create dri2 screen
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Mesa
GL_RENDERER: llvmpipe (LLVM 17.0.6, 128 bits)
GL_VERSION: OpenGL ES 3.2 Mesa 24.0.9-0ubuntu0.1
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 85 FrameTime: 11.857 ms
[build] use-vbo=true: FPS: 86 FrameTime: 11.747 ms
[texture] texture-filter=nearest: FPS: 128 FrameTime: 7.842 ms
[texture] texture-filter=linear: FPS: 120 FrameTime: 8.345 ms
[texture] texture-filter=mipmap: FPS: 104 FrameTime: 9.689 ms
[shading] shading=gouraud: FPS: 63 FrameTime: 15.886 ms
[shading] shading=blinn-phong-inf: FPS: 58 FrameTime: 17.303 ms
[shading] shading=phong: FPS: 51 FrameTime: 19.827 ms
[shading] shading=cel: FPS: 50 FrameTime: 20.407 ms
[bump] bump-render=high-poly: FPS: 42 FrameTime: 24.208 ms
[bump] bump-render=normals: FPS: 108 FrameTime: 9.273 ms
[bump] bump-render=height: FPS: 99 FrameTime: 10.157 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 58 FrameTime: 17.272 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 34 FrameTime: 30.001 ms
[pulsar] light=false:quads=5:texture=false: FPS: 96 FrameTime: 10.481 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 21 FrameTime: 48.463 ms
[desktop] effect=shadow:windows=4: FPS: 50 FrameTime: 20.021 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 17.063 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 66 FrameTime: 15.303 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 50 FrameTime: 20.203 ms
[ideas] speed=duration: FPS: 48 FrameTime: 20.963 ms
[jellyfish] <default>: FPS: 37 FrameTime: 27.768 ms
[terrain] <default>: FPS: 2 FrameTime: 558.207 ms
[shadow] <default>: FPS: 50 FrameTime: 20.170 ms
[refract] <default>: FPS: 8 FrameTime: 127.994 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 80 FrameTime: 12.594 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 63 FrameTime: 15.980 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 85 FrameTime: 11.845 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 67 FrameTime: 14.929 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 54 FrameTime: 18.690 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 49 FrameTime: 20.822 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 50 FrameTime: 20.299 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 47 FrameTime: 21.386 ms
=======================================================
glmark2 Score: 61
=======================================================
First of all, you need to solve the problem with non-working reset button in U-boot.
If possible, enable USB booting. This can be very useful if the emmc chip fails over time.
Thanks for the links to RK3576_MiniLoaderAll.bin and the firefly repository.
The firefly image in u-boot has the reset button working. Will have to look at their u-boot build settings.
Learn how to build, flash, and initial-configure Armbian Ubuntu 24.04 for the Shenzhen Haochuangyi Technology Co., Ltd. H96 MAX V56 RK3566 8GB/64GB TV Box:
@maka @paradigman @pessimism Look at this:
https://github.com/armbian/build/releases/tag/v24.8.0-trunk.474
rockchip64-edge: add rkvdec2 for rk356x by @amazingfate
rockchip64-edge: disable hantro g1 h264 decoder on rk356x by @amazingfate
oh. sorry didnt notice that it was a X6 version he was asking for.
@loi xin
this thing is 135€ in germany and imho not worth it. the v56 is much cheaper with the same functionallity (but "only" having single WIFI). so imho if u have the chance to send it back, replace it with the v56 unit if u can. then u have a ready to go unit.
@Hqnicolas opened a topic for the H96 MAX M9 RK3576 TV Box 8G/128G which i find the much more interesting unit, with much more power. but the pricing of this unit (top notch) is holding me back right now.