Orange pi 4

Recommended Posts

Armbian is a community driven open source project. Do you like to contribute your code?

On 12/4/2019 at 10:11 PM, Jack953 said:

Why 4.4 ? I hope that will be possible to install armbian


cause Rockchips BSP kernel is a 4.4. All our legacy images for rk3288, (3308), 3328 and 3399 boards are based on this kernel (or a fork of it).


On 12/4/2019 at 10:30 PM, Jack953 said:

armbian somehow !

if this 'somehow' doesn't end here: it's IMO not much of a difference to have "armbian" or the vendors provided image. It shouldn't be as hard to get it there (at least as csc supported device). The wifi module is the same as for the RockPi (next to USB3 yay) and it's also LPDDR4 (also RockPi 4b). As a first try I would just (try to) boot an Armbian image for the RockPi (this may also answer your questions for a "generic image", I assume you look for a starting point to get your new toy working). Then create a new boardconfig patch in the (hopefully) proper DT information you get somewhere from the BSP package of this board and pray it compiles without issues (even sound should be here: at least for the 4.4 kernel). Send this back to Armbian and you'll likely end with (at least) csc support for this board. Except the NPU there's not much 'special' on this board so I don't see a reason why support for it shouldn't be straight forward (except the DTS file is such a mess that it doesn't work properly).


IMO the most interesting parts for this board are:


camera & 10.1 inch display (both MIPI 4 lane) so that someone finally could work on camera and display support for those boards (I hope/think that they are pincompatible to all RK3399 camera/display outs with 4 lane mipi, e.g. nanopi and ROCKPro64). Actually a part of all RK3399 boards where nobody cared about it until yet.




Link to post
Share on other sites

Thanks chwe i'll do something in 2,3 weeks when I get the board.

Also interesting to me is the pcie expansion as a cable rather than pins. I guess that they will make theyr own expansion boards...

Or are there already expansion/adapters for that, from others ? I mean, its a "standard" or a opi thing ?

Link to post
Share on other sites
On 12/6/2019 at 8:53 AM, chwe said:


Got the board, can you guys help  please ?

On this page there is the source code (including uboot so the dt) for also the opi4.

Is this the dt ?

There are info about the sources also on the manual.

I guess I could build my uboot... but idk what im talking about...

There are the boot partition and the uboot one...

Im running theyr debian at the moment... thanks.

Link to post
Share on other sites

rockpi image doesnt work... Now im using theyr ubuntu (in the debian image the lan desnt work) on the emmc. Likely they are all using the rockchip provided bsp 4.4 kernel... I wonder why since it got mainline support in 5.3 ! Id like to use mainline maybe in a second stage... So what to do now ?

@0626... no but there is a flat cable based pcie extension, like others rk3399, not sure what can u attach there...

Link to post
Share on other sites

for those interested in a board bring up


the kernel DT can be found here (it's the commit bringing the board up, so rk3399-orangepi.dts is the most important here):


this is (likely) the used defconfig for u-boot:


this might also be of interest for the first stage loaders:


it seems xunlong did quite some cleaning of their sources to build proper images.

Link to post
Share on other sites

Sorry guys, I over rated myself, to bring up the board I'd need a step by step guide... :unsure:

My personal reconstruction of the build commands from the scripts:


make -C /startdir ARCH=arm64 4_linux_defconfig
make -C /startdir ARCH=arm64 rk3399-orangepi.img
make -C /startdir ARCH=arm64 modules


make rk3399_defconfig /dir

(the f***ing packing part is missing)

But honestly i dont know what im doing...

Link to post
Share on other sites

More News, today In the opi4 downloads I see armbian ! That links to here, but there is not a opi4 download yet... Also updated debian and ubuntu.

I wonder whats the difference between the 3 ?

Also a source code  link to github, may be the sources are pretty stable now...

ANYWAY still bsp kernel 4.4. I hope to see soon regular kernel 5.4 !

Im available for testing if needed!

Link to post
Share on other sites

Ok I tryed to compile regular uboot and kernel but I failed. the defconf and dts are not compatible with regular software.

Its the first time i do this i cant help anymore. but Im available for testing.

The only thing I sucessfully compiled is the linaro gcc 7.5 (5 hours).

Link to post
Share on other sites

so a small update for those being impatient...

1 hour ago, Jack953 said:

I mean, I think armbian is working on the opi4, but not telling

well there's not much to tell as long as there aren't any results yet... :D


Yes I do have the board and started to integrate it.. but currently fail. For those who want to join the board bring up party:

  • UART2 is on the 3 pin pinheader as normally used by RK3399 for debugging..
  • It seems xunlongs buildscript points to the evb board for the 2017 u-boot when building images. I never used their buildscript, I don't plan to change this and I don't know if images built with it work. It looks cleaner than stuff I saw before but still room for improvements.
  • The devicetree is clearly based on the evb board (nodes which aren't used are commented out e.g. evb's eDP node). Likely not the newest version (see example pin naming

    just as examples for naming convention. One can be compared with the schematics without even thinking.. the other one is a pain (you can guess on your own which one I prefer)..

    OrangePi 4 node for LED:
    		led@1 {
    			gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
    			label = "status_led";
    			linux,default-trigger = "heartbeat";
    			linux,default-trigger-delay-ms = <0>
    Pinebook node for LED:
    		green-led {
    			gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "disk-activity-inverted";
    			default-state = "on";
    			mode = <0x23>;


  • The u-boot on the board is a 2014 based one (I guess there's a android preloaded on the boards eMMC? - no idea I never connected it to a HDMI screen to actually see what happens). I tried to erase eMMC with the rkdevel tool from command line but it fails (it recognizes maskroom mode when clock of eMMC is shorted - see in documentation of xunlong how to short eMMC, not recommended if you don't know what you're doing!) but somehow I can't erase eMMC then (it worked on a TV box back then but not here). At least rockchips android bsp uses a 2014 u-boot iirc.

  • at least I can't interrupt the 2014 u-boot from a serial debugger connected (15000000 baud) boottime is set to 0 seconds and it's not able or not set as default to boot from SD-card (i tried to build a first image but this one is either nor bootable or the 2014 u-boot just ignores SD card images - an empty eMMC would force brom to fire up SD card and I would see where it fails).

after all there's still work to do to get this board running and a not preloaded eMMC would've been nice. @martinayotte if I short eMMC clk to ground does it enter maskroom directly or does it just skip eMMC and tries SD card then? I think you had the same for their first rk3399 based board back then or was it for the firefly? I don't remember anymore.


@Jack953 even when first images are here. This will still be early wip cause some cleaning is needed to get the board properly working. Board bring up needs time and it doesn't get better when we rush here...

Link to post
Share on other sites

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.

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.