Jump to content

Recommended Posts

Posted (edited)

Hi Armbian community

 

I have a Giada DN74 media player and would like to install Armbian on the box. 

First I try (through SD card) some community maintained images like the Orange Pi RK3399 or the Firefly RK3399, but none of them worked. 

Some google search teach me the Rockchip SoCs  have fixed boot order (SPI->eMMC->SD card), and this cause my boot issue. 

Then search again how boot from SD card, the only solution which I find is to erase eMMC, so I erase the eMMC using: "rkdeveloptool ef".

Unfortunately the box still not want to boot, so I open the box and try to identify the UART to see what is happening during the boot. 

I find a 4 pin connector (see images) which I assume this is the UART console, have a label "MCU_D" (Micro Controller Units Debug?) and have 3,3V on first pin and GND on the last pin. I try to use this connector whit some USB-to-UART (PL2303 and FT232RL) with multiple baud rate (115200, 1500000) without output.

At this point was able still connect the box through USB and recover Android because MaskRom mode work fine. 

After some reading on https://opensource.rock-chips.com/wiki_Boot_option I deiced to build u-boot using evb-rk3399_defconfig and flash to the eMMC (which wan was a big mistake).

I assume the box is try to boot from eMMC, but stuck there because is only u-boot on the eMMC nothing else.

Unfortunately still no UART output (maybe is not UART connector) but also no Maskrom mode. 

If I understand right jock guide Unbrick Part, the only option to recover the box if I short EMMC CLK pin to GND. 

 

So my question is somebody could help me identify the eMMC CLK pin?

 

Some extra info:

According the rk3399 hardware design guide, I need to find a 22 ohm resistor near to the CLK pin. 

 

image.png.1264d8522e8b3e483ae45c54d5d93d45.png

 

The eMMC is a Kingstone EMMC32G-TX29, and the manual write different CLK frequency's, I am don't know what I need to look.

 

image.png.a38f0c6141fe4044e74bc8fa1fa139f8.png

 

I have a Fnirsi dst-210 3in1 (sure not the best), which I could use measurements but I do not know how to set the oscilloscope parameters to find the CLK.

 

20260203_111221.jpg

20260203_111235.jpg

20260203_111436.jpg

20260203_111602.jpg

Edited by kisgezenguz
Add extra info
Posted

Take some time but I was able to identify the CLK pin.  

Shorting the marked pins (CLK and GND in this case) was able to switch MaskRom mode. 

Note: in early boot stages the eMMC CLK only working in legacy mode (24Mhz).

20260203_111436.jpg

Posted (edited)

Which DTB did you use?

I extracted the Android files and found a resource file named ENTRrk-kernel.dtb. The file began with "Rockchip RK3399 Excavator Board edp (Android)".
Could it be possible that the device is compatible with this board?

Edited by BigDi
Posted

I tried Armbian_26.2.1_Nanopim4v2_trixie_current_6.18.8_minimal.img.xz, wrote it on TF card and it booted into Linux without any changes.

Posted

Thank you for the update, good to hear there is possible to run Linux on the box.

In other hand, little bit is surprising, I try Nanopi M4 image and many other images, but non of work for me. 

Far as I know Rockchip have fixed boot order (emmc -> sd cadr ... ).

Do you have a working Android on emmc and Armbian on sd card? 

On the weekend I will try also again the SD card boot. 

 

To answer your questions:

I did not use any DTB at yet I only try rkbin boot loaders which not need to build.

I was also able to extract the Android 11 Image there was model name "Giada JHS558" entered, I assume you have older Android version where the vendor use the Excavator Board as basis for the device tree. 

Posted (edited)

The Nanopi M4 (not V2) has only 2GB of RAM. It could also possible that my device has an other (or older) Android. 

And you have to use the HDMI port 1 in the "middle". Not the HDMI under the TF slot!

Edited by BigDi
Posted
On 2/16/2026 at 12:32 PM, kisgezenguz said:

Now I trying to identify and use the debug console, not much success so far :(

I see there is a "UART" on the front board image, but I guess it does not work for you. Check the sorroundings for possibile missing resistors, sometimes they remove some small SMD resistors to make the UART non-functional.

Also note that you must use an adapter that is capable of 1.5Mbps; not all of them can reach such baud rates (AFAIR pl2303 can't, but CH301 should work) 

Posted

@jock

Than you for the hints. 

Quote

Check the sorroundings for possibile missing resistors, sometimes they remove some small SMD resistors to make the UART non-functional.

If I measure on all (except GND) UART Pin 3.3V is not indicate that all resistor in place?

 

Regarding the rk3399 schematic design, there should be some 100 ohm resistors there. 

Screenshotfrom2026-02-2214-28-37.thumb.png.ae3e1ad5b086c740403ee4de0b6207da.png

 

To be honest for me was also very difficult to find the MaskRom pins, search something what is not there is a bit challenging. 

I measure all black SMD item (far as I know they are resistors), but non of them 100 ohm. (The board other side I do not see any missing resistor)

Could you please advise me what I need to look? There is 3 point where possible to solder resistor, how to identify which one I need?

 uart.thumb.jpg.a6e20a7be0ac73a636b9880bf1ef3ed5.jpg

 

Posted

@kisgezenguz you're welcome. You can check the UART RX/TX paths with the multimeter in diode/continuity mode and checking the continuity against RX (or TX) and the various SMD components. But anyway, if you read 3.3v on all the UART pins, I can guess there are three other hypothesis:

 

* the UART RX/TX pins are correctly connected, but not to the usual debug UART. rk3399 has several uarts, so perhaps that exposed UART is not the same configured in software to be used to log the debug.

* MCU_D makes me think that UART is used for the little MCU embedded into rk3399. rk3399 has two small Cortex-M0 cores for very low power tasks. So again that UART is not what you are looking for.

* the RX/TX pins are just shorted to high voltage level/pulled ups on purpose (improbable)

 

edit: I just paid attention to the schematic you posted, but it looks it does not match what you've discovered: the schematic says you should read 5.0v on the VCC pin, instead you read 3.3v. Perhaps that MCU_D connector it's definitely not the one you are looking for.

 

Posted

I tried it with a desktop PC, but couldn't select a resolution higher than 1024x768.

I read that there's a bug in newer kernel versions that's already been fixed. However, I couldn't find out if the fix is included in the downloaded image. Then I tried an older imager with kernel 4.4, and with that one, I was able to select higher resolutions.

@jock I only tested it with Wi-Fi. You could also try a version with an older kernel.

Posted

@jock The schematic is maybe was a wrong example (I just search for rk3399 schematic, and take the first) in this case Leez P710, 

but I also look at the RK3399_Design_Guide and find a interesting point, UART2 based on the sd card pins!!!

image.thumb.png.9ff305db15495d6bb6cfae307ef9b18e.png

 

I already read a bit regarding the ddrbin_tool.py (which is part of the rkbin), which one could be used to manipulate the rockchip boot loader,

but until now I not really understood how this work, then I find this in the Rockpi4 schematic

image.png.8ecb7d94c7aaf3cbf2975c00e3158a2c.png

 

image.png.4c2721362f86dd9e0edccde6089376f3.png

I became enlightened.

In the ddrbin_tool_user_guide is the following:

* UART info

uart id: uart number. 0 for uart0, 1 for uart1, 2 for uart2..., 0xf will disable uart.
uart iomux: uart iomux info, 0 for uartn_m0, 1 for uartn_m1, 2 for uartn_m2...(like uart2_m0, uart2_m1,uart2_m2),
or 1 for uartn_a, 2 for uartn_b, 3 for uartn_c.(like uar2a, uart2b, uart2c).
uart baudrate: uart baudrate should be 115200 or 1500000.

 

I still don't understanding what the iomux (io multiplexing) is, but in theory if I change the uart iomux parameter to 1 then this should means that UART2A is used, which is SD card D0,D1 pins.

(Similar concept I see in Amlogic SoCs. )

 

So I read out the ddrbin parameters from rk3399_ddr_800MHz_v1.27.bin

./tools/ddrbin_tool.py RK3399 -g ddrbin_param.txt ./bin/rk33/rk3399_ddr_800MHz_v1.27.bin

then I change the UART parameters in the file ddrbin_param.txt like this:

uart id=2
uart iomux=1
uart baudrate=115200

then I write the parameters back 

./tools/ddrbin_tool.py RK3399 ddrbin_param.txt ./bin/rk33/rk3399_ddr_800MHz_v1.27.bin

Then I build a new loader based on the rk3399_ddr_800MHz_v1.27.bin

./tools/boot_merger ./RKBOOT/RK3399MINIALL_1.27.ini

Content of the ./RKBOOT/RK3399MINIALL_1.27.ini

[CHIP_NAME]
NAME=RK330C
[VERSION]
MAJOR=1
MINOR=30
[CODE471_OPTION]
NUM=1
Path1=bin/rk33/rk3399_ddr_800MHz_v1.27.bin
Sleep=1
[CODE472_OPTION]
NUM=1
Path1=bin/rk33/rk3399_usbplug_v1.26.bin
[LOADER_OPTION]
NUM=2
LOADER1=FlashData
LOADER2=FlashBoot
FlashData=bin/rk33/rk3399_ddr_800MHz_v1.27.bin
FlashBoot=bin/rk33/rk3399_miniloader_v1.26.bin
[OUTPUT]
PATH=rk3399_loader_v1.27.126.bin

 

The result was uploaded in the emmc

rkdeveloptool db rk3399_loader_v1.27.126.bin
rkdeveloptool ul rk3399_loader_v1.27.126.bin

the I connected my microsd sniffer and after some praying I reset the device ...

 

Then the magic is happened 🤩

DDR Version 1.27 20211018
In
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
channel 0 training pass!
channel 1 training pass!
change freq to 416MHz 0,1
Channel 0: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=16 Size=2048MB
Channel 1: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=16 Size=2048MB
256B stride
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0                                                                                                 
MR19=0x0                                                                                                 
MR24=0x8                                                                                                 
MR25=0x0                                                                                                 
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
channel 0 training pass!
channel 1 training pass!
channel 0, cs 0, advanced training done
channel 1, cs 0, advanced training done
change freq to 856MHz 1,0
ch 0 ddrconfig = 0x101, ddrsize = 0x40
ch 1 ddrconfig = 0x101, ddrsize = 0x40
pmugrf_os_reg[2] = 0x32C1F2C1, stride = 0xD
ddr_set_rate to 328MHZ
ddr_set_rate to 666MHZ
ddr_set_rate to 416MHZ, ctl_index 0
ddr_set_rate to 856MHZ, ctl_index 1
support 416 856 328 666 MHz, current 856MHz
OUT
Boot1 Release Time: May 29 2020 17:36:36, version: 1.26
CPUId = 0x0
ChipType = 0x10, 645
SdmmcInit=2 0
BootCa

 

Yes, is working, I have debug output 😁 this is maybe not the best solution but I could start working running Armbian on this device.

 

The key point was:

Quote

Perhaps that MCU_D connector it's definitely not the one you are looking for.

So thanks again the advise. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines