-
Posts
13 -
Joined
-
Last visited
Reputation Activity
-
hzdm reacted to SteeMan in Status of Armbian on TV Boxes - Please Read First
Welcome to the world of Armbian on TV Boxes!
TV Boxes are not officially supported by the Armbian project. This "TV Box" sub forum is for users interested in experimenting with Armbian on TV Boxes.
Overall you will be best served if you set your expectations low as to what you might be able to accomplish with your TV Box and Armbian. Specifically you should think of your TV Box as a potential linux server - *not* as a desktop replacement.
Feel free to post and ask questions in the TV Box forums if you are interested. But realize this is a peer-to-peer forum so you may or may not get an answer. Don't expect or demand support as there are only a handful of people that participate in these forums and they are all donating their time.
Search is your friend. There is a lot of historic information stored on this site. Your question has likely already been asked previously. However, a lot has changed over time and therefore be prepared for a lot of the information you find by searching the forums to be outdated and in some cases just plain wrong. Even though that may be the case, please search the forums first before posting a question. It shows you are willing to invest the time to do your part and makes those of us who volunteer our time to answering questions more likely to want to help you.
Amlogic (S9xx) based TV Boxes
1. There is a community build for Amlogic based s9xx TV Boxes - The key being community - so please contribute to make improvements
2. A single developer (@balbes150) had worked years on getting things to the state they are.
3. As of October 14th, 2020 balbes150 removed support for Amlogic CPUs, so that is the last active build from him
4. Expectations should be set low (i.e. don't expect anything to work) but if you do get the box to boot, get HDMI and wired ethernet to work, you are doing good.
5. You really shouldn't expect things like Wi-Fi, bluetooth, remote control, etc. to work.
6. There is a very small number of people on this forum/club that are able to provide any guidance.
7. Most likely no one on this forum owns your specific box and therefore generally can only provide vague guideance.
8. If you get this working on your box, it will likely only be useful for server type tasks, maybe a little light graphical desktop usage, but do not expect video playback, etc.
RockChip (rk3399, rk3328, rk3288, rk3228, etc) based TV Boxes
These are probably the best supported TV boxes currently. They have the most active developers. Feel free to post in the Rockchip TV Box sub forums your questions.
Allwinner (H6, H616, H313) based TV Boxes
There is no ongoing effort to support Allwinner based boxes. Occasionally a developer will respond to a question, but in general if this is what you have, you will be expected to do a lot of work on your own, so you better be comfortable doing development for these type of boards. You aren't likely to find anything that you can just install and have work.
Other Comments
The official recommendation from the Armbian project would be to not use TV Boxes and use officially supported SBCs. Taking this approach will likely result in an easier time, less hassle, better support and likely a more fully functioning device.
There are reasons you may choose to want to use unsupported Armbian on TV boxes, for example here are some of my ( @SteeMan ) reasons:
1) It is a challenge and therefore a learning opportunity. I would never have learnt to build my own linux kernels from source if I was still exclusively using x86 hardware. If you want a challenge you will find it here.
2) Price vs specs. The Android TV boxes are built to be cheap consumer devices. They are produced in larger quantities which drives down the per unit price. You will generally not be able to get the same level of hardware for the same price with a standard SBC. But that cheapness comes with - no support by the manufacturers and potentially sub-standard components. If the manufacturers goal is to sell the lowest price box they are likely cutting corners somewhere to make that happen.
3) emmc is standard. TV boxes always come with internal storage while most SBCs do not. Again from a price/performance standpoint having internal emmc storage vs running off an SD card is a plus. emmc storage *should* be faster and more durable than storage on an sd card. The caveats here being that this is one of the areas that the manufacturers may cut corners. For example I have two TX3 mini boxes that are supposed to have 16GB of emmc memory (like the other TX3 mini boxes I have), but they were instead manufactured with cheaper nand memory for which there is no mainline kernel support. There is no visible difference between the identically packaged boxes that had emmc vs those that came with nand, other than opening the case and looking at the physical chips on the boards.
4) cases come standard. TV boxes always come with cases, whereas for SBCs that is an extra cost. For my uses having a case is a big improvement vs not having one. A downside if that these cases are not necessarily well designed to provide adequate cooling. So depending on your use case, overheating might be a problem.
5) While I own both SBCs and TV boxes, I personally find the TV boxes work best for my needs (running server based software) and I enjoy the challenge of getting them running and keeping them running with the great underlying work that the Armbian project is doing to build on top of.
If you have the correct expectations (set your expectations low) are looking to learn and are up for a challenge these are fun things to work with. And I look forward to working with you on these forums.
-
hzdm got a reaction from Hqnicolas in Efforts to develop firmware for H96 MAX M9 RK3576 TV Box 8G/128G
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
build debian 12 server
./compile.sh BOARD=h96-m9 BRANCH=vendor BUILD_MINIMAL=no DEB_COMPRESS=xz KERNEL_CONFIGURE=no RELEASE=bookworm KERNEL_GIT=shallow BUILD_DESKTOP=no EXPERT=yes KERNEL_CONFIGURE=no
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.
I continue to study...
Links:
RK3576_MiniLoaderAll.bin
https://drive.google.com/file/d/1gkOdYMaqUBe0iykbIoBcTa5c-fZcjRQU/view?usp=sharing
h96-m9_original.dtd/h96-m9_original.dts
https://drive.google.com/file/d/1tIcK2nWX6hHQY66p1k4BiWnw3CCXRhFd/view?usp=sharing
https://drive.google.com/file/d/1OkZhmmadyvwdTw7zIzExARgoYgO-JVs9/view?usp=sharing
h96-m9.csc
https://drive.google.com/file/d/1Eghh1MmzQoi8KTOPBHQS6i38db3YvF_-/view?usp=sharing
H96 MAX M9 RK3576-android-full.iso.7z
https://drive.google.com/file/d/1i4geoEatD7bagCkkIiRvYSBYGGELivWV/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_noble_vendor_6.1.75_gnome_desktop-test_1.img
https://drive.google.com/file/d/1smumqfmyCDFFaQjoVCFVgQfWG4MN0Shc/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_bookworm_vendor_6.1.75-test_1.img
https://drive.google.com/file/d/1kfLxSNcN3ZJp8iKUVgtncFxhD2TsoNo3/view?usp=sharing
Here are the pictures of the board:
=============================
-
hzdm got a reaction from Vincenzoernst1 in Efforts to develop firmware for H96 MAX M9 RK3576 TV Box 8G/128G
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
build debian 12 server
./compile.sh BOARD=h96-m9 BRANCH=vendor BUILD_MINIMAL=no DEB_COMPRESS=xz KERNEL_CONFIGURE=no RELEASE=bookworm KERNEL_GIT=shallow BUILD_DESKTOP=no EXPERT=yes KERNEL_CONFIGURE=no
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.
I continue to study...
Links:
RK3576_MiniLoaderAll.bin
https://drive.google.com/file/d/1gkOdYMaqUBe0iykbIoBcTa5c-fZcjRQU/view?usp=sharing
h96-m9_original.dtd/h96-m9_original.dts
https://drive.google.com/file/d/1tIcK2nWX6hHQY66p1k4BiWnw3CCXRhFd/view?usp=sharing
https://drive.google.com/file/d/1OkZhmmadyvwdTw7zIzExARgoYgO-JVs9/view?usp=sharing
h96-m9.csc
https://drive.google.com/file/d/1Eghh1MmzQoi8KTOPBHQS6i38db3YvF_-/view?usp=sharing
H96 MAX M9 RK3576-android-full.iso.7z
https://drive.google.com/file/d/1i4geoEatD7bagCkkIiRvYSBYGGELivWV/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_noble_vendor_6.1.75_gnome_desktop-test_1.img
https://drive.google.com/file/d/1smumqfmyCDFFaQjoVCFVgQfWG4MN0Shc/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_bookworm_vendor_6.1.75-test_1.img
https://drive.google.com/file/d/1kfLxSNcN3ZJp8iKUVgtncFxhD2TsoNo3/view?usp=sharing
Here are the pictures of the board:
=============================
-
hzdm got a reaction from cmuki in Efforts to develop firmware for H96 MAX M9 RK3576 TV Box 8G/128G
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
build debian 12 server
./compile.sh BOARD=h96-m9 BRANCH=vendor BUILD_MINIMAL=no DEB_COMPRESS=xz KERNEL_CONFIGURE=no RELEASE=bookworm KERNEL_GIT=shallow BUILD_DESKTOP=no EXPERT=yes KERNEL_CONFIGURE=no
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.
I continue to study...
Links:
RK3576_MiniLoaderAll.bin
https://drive.google.com/file/d/1gkOdYMaqUBe0iykbIoBcTa5c-fZcjRQU/view?usp=sharing
h96-m9_original.dtd/h96-m9_original.dts
https://drive.google.com/file/d/1tIcK2nWX6hHQY66p1k4BiWnw3CCXRhFd/view?usp=sharing
https://drive.google.com/file/d/1OkZhmmadyvwdTw7zIzExARgoYgO-JVs9/view?usp=sharing
h96-m9.csc
https://drive.google.com/file/d/1Eghh1MmzQoi8KTOPBHQS6i38db3YvF_-/view?usp=sharing
H96 MAX M9 RK3576-android-full.iso.7z
https://drive.google.com/file/d/1i4geoEatD7bagCkkIiRvYSBYGGELivWV/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_noble_vendor_6.1.75_gnome_desktop-test_1.img
https://drive.google.com/file/d/1smumqfmyCDFFaQjoVCFVgQfWG4MN0Shc/view?usp=sharing
Armbian-unofficial_24.8.0-trunk_H96-m9_bookworm_vendor_6.1.75-test_1.img
https://drive.google.com/file/d/1kfLxSNcN3ZJp8iKUVgtncFxhD2TsoNo3/view?usp=sharing
Here are the pictures of the board:
=============================
-
hzdm got a reaction from ironiris in Efforts to develop firmware for H96 MAX V56 RK3566 8G/64G
Eventually I plan to add H96-max-v56 to the official Armbian repository.
What else doesn't work in our images?
What could be made better in them?
1. VFD display.
2. Temperature is not displayed in htop.
-
hzdm got a reaction from Hqnicolas in Efforts to develop firmware for H96 MAX V56 RK3566 8G/64G
Unexpectedly, to start WiFi, you just need to copy the drivers for it to the right directory.
Copy the brcmfmac4335-sdio.txt and brcmfmac4335-sdio.firefly,rk3566-roc-pc.bin files to the /lib/firmware/brcm directory and restart the device. After that we can connect to WiFi (at least via command line, I haven't checked it via GUI).
If GUI doesn't work - you can connect to WiFi via console with the command
nmcli device wifi connect My-WiFi-Point password 12345678
https://drive.google.com/file/d/1TeoPe_pO5es247c-5TGLfc4cXiKcPr56/view?usp=share_link