Arch linux Arm support the Odroid N2

#1

Hi,

Arch linux Arm support now the Odroid N2 :slight_smile:

https://archlinuxarm.org/platforms/armv8/amlogic/odroid-n2

Have a good day.

#2

That's great. I see it's using a specific kernel for the device. How's the mainline support?

Can you install it on your n2 and it boots?
I mean, can you install the Arch Linux on the device, boot it, install linux-aarch64 and reboot it afterwards?

#3

Hi,

Thank you for your answer and question.
For the moment the Odroid N2 is out of stock, i'm waiting on my device...
So, for the moment i can't help you, sorry, maybe someone else...
I'll come back as soon as possible, for sure.

Have a good day.

1 Like
#4

Hi,

Someone installed arch linux arm on the odroid n2 device, find below the link on the arch linux arm forum.
https://archlinuxarm.org/forum/viewtopic.php?f=65&t=13577

i can't do more fore the moment.

#5

Hi,

I have ArchLinuxArm installed on my odroid N2 since last Monday (the date that I received my N2). I followed the instructions on their website: https://archlinuxarm.org/platforms/armv8/amlogic/odroid-n2

All worked out of the box, on first install. Only thing to note is that it's running kernal 4.19.34-1-ARCH, doesn't appear to be a 5.x kernel available yet, but I'm hopeful it'll come along soon! I've also not tried installing linux-aarch64 yet though.

#6

If the install is not meant as a permanent install and more of a test, please try installing linux-aarch64 and see if the device still boots.
If it does, I will look into supporting the N2.

#7

ok, i'll give it a go! would these instructions suffice please? https://archlinuxarm.org/platforms/armv8/generic

If not, can you point me to something that I can follow please?

thanks,
James

#8

It is quite easy.

Boot up your working Arch Linux.
Run this in a terminal:
sudo pacman -S linux-aarch64
When it asks if you want to replace linux-odroid-n2 with linux-aarch64, press Y for yes. Finish the install and reboot.

Let me know if it boots up to login prompt after that or not. :slight_smile:

#9

I was intrigued about if it would work so i tried that myself, did a arch install, updated it, rebooted and ran fine. did the linux-aarch64 install and it failed to boot after with a black screen.

uart output:

G12B:BL:6e7c85:7898ac;FEAT:E0F83180:2000;POC:F;RCY:0;EMMC:800;NAND:81;SD?:0;SD:0;READ:0;0.0
                                                                                           bl2_stage_init 0x01
bl2_stage_init 0x81
hw id: 0x0000 - pwm id 0x01
bl2_stage_init 0xc1
bl2_stage_init 0x02

no sdio debug board detected
L0:00000000
L1:00000703
L2:00008067
L3:04000000
B2:00002000
B1:e0f83180

TE: 278942

BL2 Built : 10:47:19, Jan 14 2019. g12b g152d217 - guotai.shen@droid11-sz

Board ID = 3
Set A53 clk to 24M
Set A73 clk to 24M
Set clk81 to 24M
A53 clk: 1200 MHz
A73 clk: 1200 MHz
CLK81: 166.6M
smccc: 00048a2f
DDR driver_vesion: LPDDR4_PHY_V_0_1_11 build time: Jan 14 2019 10:47:15
board id: 3
Load FIP HDR from SD, src: 0x00010200, des: 0xfffd0000, size: 0x00004000, part: 0
fw parse done
Load ddrfw from SD, src: 0x00030200, des: 0xfffd0000, size: 0x0000c000, part: 0
Load ddrfw from SD, src: 0x0002c200, des: 0xfffd0000, size: 0x00004000, part: 0
PIEI prepare done
Cfg max: 2, cur: 1. Board id: 255. Force loop cfg
DDR4 probe
ddr clk to 1320MHz
Load ddrfw from SD, src: 0x00014200, des: 0xfffd0000, size: 0x0000c000, part: 0
Check phy result
INFO : End of initialization
INFO : End of read enable training
INFO : End of fine write leveling
INFO : End of read dq deskew training
INFO : End of MPR read delay center optimization
INFO : End of Write leveling coarse delay
INFO : End of write delay center optimization
INFO : End of read delay center optimization
INFO : End of max read latency training
INFO : Training has run successfully!
1D training succeed
Load ddrfw from SD, src: 0x00020200, des: 0xfffd0000, size: 0x0000c000, part: 0
Check phy result
INFO : End of initialization
INFO : End of 2D read delay Voltage center optimization
INFO : End of 2D write delay Voltage center optimization
INFO : Training has run successfully!

R0_RxClkDly_Margin==82 ps 7
R0_TxDqDly_Margi==94 ps 8


R1_RxClkDly_Margin==0 ps 0
R1_TxDqDly_Margi==0 ps 0

 dwc_ddrphy_apb_wr((0<<20)|(2<<16)|(0<<12)|(0xb0):0001

 ddr scramble enable
2D training succeed
auto size-- 65535DDR cs0 size: 2048MB
DDR cs1 size: 2048MB
DMC_DDR_CTRL: 00600024DDR size: 3928MB
cs0 DataBus test pass
cs1 DataBus test pass
cs0 AddrBus test pass
cs1 AddrBus test pass
 pre test  bdlr_100_average==445 bdlr_100_min==445 bdlr_100_max==445 bdlr_100_cur==445
 aft test  bdlr_100_average==445 bdlr_100_min==445 bdlr_100_max==445 bdlr_100_cur==445
100bdlr_step_size ps== 450
result report
boot times 0Enable ddr reg access
Load FIP HDR from SD, src: 0x00010200, des: 0x01700000, size: 0x00004000, part: 0
Load BL3X from SD, src: 0x0003c200, des: 0x0172c000, size: 0x00098000, part: 0
0.0;M3 CHK:0;cm4_sp_mode 0
E30HDR
MVN_1=0x00000000
MVN_2=0x00000000
[Image: g12b_v1.1.3375-8f9c8a7 2019-01-24 10:44:46 guotai.shen@droid11-sz]
OPS=0x40
ring efuse init
chipver efuse init
29 0a 40 00 01 17 24 00 00 19 34 37 57 4e 4b 50
[0.019924 Inits done]
secure task start!
high task start!
low task start!
run into bl31
NOTICE:  BL31: v1.3(release):ab8811b
NOTICE:  BL31: Built : 15:03:31, Feb 12 2019
NOTICE:  BL31: G12A normal boot!
NOTICE:  BL31: BL33 decompress pass
ERROR:   Error initializing runtime service opteed_fast


U-Boot 2015.01-2 (Apr 18 2019 - 18:19:42) Arch Linux ARM

DRAM:  3.5 GiB
Relocation Offset is: d6ef4000
spi_post_bind(spifc): req_seq = 0
register usb cfg[0][1] = 00000000d7f85930
MMC:   aml_priv->desc_buf = 0x00000000d3ee47c0
aml_priv->desc_buf = 0x00000000d3ee6b00
SDIO Port C: 0, SDIO Port B: 1
card in
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 25000000
[mmc_init] mmc init success
In:    serial
Out:   serial
Err:   serial
vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters
vpu: clk_level = 7
vpu: set clk: 666667000Hz, readback: 666666667Hz(0x100)
vpu: vpu_clk_gate_init_off finish
vpp: vpp_init
vpp: g12a/b osd1 matrix rgb2yuv ..............
vpp: g12a/b osd2 matrix rgb2yuv..............
vpp: g12a/b osd3 matrix rgb2yuv..............
cvbs_config_hdmipll_g12a
cvbs_set_vid2_clk
reading boot-logo.bmp.gz
** Unable to read file boot-logo.bmp.gz **
reading boot-logo.bmp
** Unable to read file boot-logo.bmp **
movi: not registered partition name, logo
movi - Read/write command from/to SD/MMC for ODROID board

Usage:
movi <read|write> <partition|sector> <offset> <address> [<length>]
    - <read|write>  the command to access the storage
    - <offset>  the offset from the start of given partiton in lba
    - <address>  the memory address to load/store from/to the storage device
    - [<length>]  the size of the block to read/write in bytes
    - all parameters must be hexa-decimal only

[OSD]check dts: FDT_ERR_BADMAGIC, load default fb_addr parameters
[OSD]set initrd_high: 0x3d800000
[OSD]fb_addr for logo: 0x3d800000
[OSD]check dts: FDT_ERR_BADMAGIC, load default fb_addr parameters
[OSD]fb_addr for logo: 0x3d800000
[OSD]VPP_OFIFO_SIZE:0xfff01fff
[CANVAS]canvas init
[CANVAS]addr=0x3d800000 width=5760, height=2160
[OSD]wait_vsync_wakeup exit
cvbs: outputmode[1080p60hz] is invalid
vpp: vpp_matrix_update: 2
set hdmitx VIC = 16
config HPLL = 5940000 frac_rate = 1
HPLL: 0x3b3a04f7
HPLL: 0x1b3a04f7
HPLLv1: 0xdb3a04f7
config HPLL done
j = 6  vid_clk_div = 1
hdmitx phy setting done
hdmitx: set enc for VIC: 16
enc_vpu_bridge_reset[1312]
rx version is 1.4 or below  div=10
Net:   dwmac.ff3f0000
Hit Enter or space or Ctrl+C key to stop autoboot -- :  0
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
emmc/sd response timeout, cmd8, status=0x1ff2800
emmc/sd response timeout, cmd55, status=0x1ff2800
emmc/sd response timeout, cmd1, status=0x1ff2800
** Bad device mmc 0 **
## Executing script at 01000000
Wrong image format for "source" command
reading boot.ini
4196 bytes read in 6 ms (682.6 KiB/s)
## Executing script at 01000000
edid extension block number : 2
Dump EDID Rawdata
00000000000000001e6dca5901010101011b010380331d78ea6275a3554fa027
125054a76a00314f454f614f81000101010101010101662156aa51001e30468f
3300fd1e1100001e000000fd00384b1e3d09000a202020202020000000fc0032
44204844204c472054560a20000000ff000a2020202020202020202020200194
02031ef14e84050302202210111312141f07162309570766030c00100080011d
007251d01e203888150056502100001e011d8018711c1620582c250056502100
009e011d80d0721c1620102c2580c48e2100009e023a80d072382d40102c4520
06442100001e023a801871382d40582c450056502100001e00000000000000f0
No header found - count 0
hdmitx: read edid fails.. retry..
edid extension block number : 2
Dump EDID Rawdata
00ffffffffffff001e6dca5901010101011b010380331d78ea6275a3554fa027
125054a76a00314f454f614f81000101010101010101662156aa51001e30468f
3300fd1e1100001e000000fd00384b1e3d09000a202020202020000000fc0032
44204844204c472054560a20000000ff000a2020202020202020202020200194
02031ef14e84050302202210111312141f07162309570766030c00100080011d
007251d01e203888150056502100001e011d8018711c1620582c250056502100
009e011d80d0721c1620102c2580c48e2100009e023a80d072382d40102c4520
06442100001e023a801871382d40582c450056502100001e00000000000000f0
Manufacturer: GSM Model 59ca Serial Number 16843009
EDID version: 1.3
Established timings supported:
  720x400@70Hz
  640x480@60Hz
  640x480@75Hz
  800x600@56Hz
  800x600@60Hz
  800x600@75Hz
  832x624@75Hz
  1024x768@60Hz
  1024x768@75Hz
Standard timings supported:
  640x480@75Hz
  800x600@75Hz
  1024x768@75Hz
  1280x800@60Hz
Detailed mode (1) : Clock 85 MHz, 509 mm x 286 mm
               1366 1436 1579 1792 hborder 0
                768  771  774  798 vborder 0
               +hsync +vsync
Monitor ranges (GTF): 56-75Hz V, 30-61kHz H, max dotclock 90MHz
Monitor name: 2D HD LG TV
Serial number:
Has 1 extension blocks
Checksum: 0x94 (valid)

CEA extension block
Extension version: 3
26 bytes of CEA data
    VIC   4 1280x720@60Hz (native)
    VIC   5 1920x1080i@60Hz
    VIC   3 720x480@60Hz
    VIC   2 720x480@60Hz
    VIC  32 1920x1080@24Hz
    VIC  34 1920x1080@30Hz
    VIC  16 1920x1080@60Hz
    VIC  17 720x576@50Hz
    VIC  19 1280x720@50Hz
    VIC  18 720x576@50Hz
    VIC  20 1920x1080i@50Hz
    VIC  31 1920x1080@50Hz
    VIC   7 1440x480i@60Hz
    VIC  22 1440x576i@50Hz
    Linear PCM, max channels 2
  Vendor-specific data block, OUI 000c03 (HDMI)
    Supports_AI
Detailed mode (1) : Clock 74 MHz, 598 mm x 336 mm
               1280 1336 1472 1650 hborder 0
                720  721  726  750 vborder 0
               +hsync +vsync
Detailed mode (1) : Clock 74 MHz, 598 mm x 336 mm
               1920 2008 2052 2200 hborder 0
                540  542  547  562 vborder 0
               +hsync +vsync interlaced
Detailed mode (1) : Clock 74 MHz, 708 mm x 398 mm
               1920 2448 2492 2640 hborder 0
                540  542  547  562 vborder 0
               +hsync +vsync interlaced
Detailed mode (1) : Clock 148 MHz, 518 mm x 324 mm
               1920 1936 2492 2640 hborder 0
               1080 1084 1089 1125 vborder 0
               +hsync +vsync
Detailed mode (1) : Clock 148 MHz, 598 mm x 336 mm
               1920 2008 2052 2200 hborder 0
               1080 1084 1089 1125 vborder 0
               +hsync +vsync
Checksum: 0xf0 (valid)

bestmode is custombuilt, IEEEOUI 0x000c03
HDMI Mode
reading /Image
24734208 bytes read in 2188 ms (10.8 MiB/s)
reading /dtbs/amlogic/meson64_odroidn2.dtb
** Unable to read file /dtbs/amlogic/meson64_odroidn2.dtb **
reading /initramfs-linux.uimg
7371327 bytes read in 658 ms (10.7 MiB/s)
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
[rsvmem] get fdtaddr NULL!
rsvmem - reserve memory

Usage:
rsvmem check                   - check reserved memory
rsvmem dump                    - dump reserved memory

rsvmem check failed
## Loading init Ramdisk from Legacy Image at 03700000 ...
   Image Name:   Ramdisk Image
   Image Type:   AArch64 Linux RAMDisk Image (uncompressed)
   Data Size:    7371263 Bytes = 7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
load dtb from 0x1000000 ......
ERROR: Did not find a cmdline Flattened Device Tree
load dtb from 0x0 ......
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
emmc/sd response timeout, cmd8, status=0x1ff2800
emmc/sd response timeout, cmd55, status=0x1ff2800
emmc/sd response timeout, cmd1, status=0x1ff2800
** Bad device mmc 0 **
## Executing script at 03000000
Wrong image format for "source" command
reading boot.scr
** Unable to read file boot.scr **
## Executing script at 03000000
Wrong image format for "source" command
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
emmc/sd response timeout, cmd8, status=0x1ff2800
emmc/sd response timeout, cmd55, status=0x1ff2800
emmc/sd response timeout, cmd1, status=0x1ff2800
movi: not registered partition name, boot
movi - Read/write command from/to SD/MMC for ODROID board

Usage:
movi <read|write> <partition|sector> <offset> <address> [<length>]
    - <read|write>  the command to access the storage
    - <offset>  the offset from the start of given partiton in lba
    - <address>  the memory address to load/store from/to the storage device
    - [<length>]  the size of the block to read/write in bytes
    - all parameters must be hexa-decimal only

movi: not registered partition name, dtbs
movi - Read/write command from/to SD/MMC for ODROID board

Usage:
movi <read|write> <partition|sector> <offset> <address> [<length>]
    - <read|write>  the command to access the storage
    - <offset>  the offset from the start of given partiton in lba
    - <address>  the memory address to load/store from/to the storage device
    - [<length>]  the size of the block to read/write in bytes
    - all parameters must be hexa-decimal only

[rsvmem] get fdtaddr NULL!
rsvmem - reserve memory

Usage:
rsvmem check                   - check reserved memory
rsvmem dump                    - dump reserved memory

rsvmem check failed
load dtb from 0x1000000 ......
ERROR: Did not find a cmdline Flattened Device Tree
load dtb from 0x0 ......
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
ee_gate_off ...
Wrong Image Format for bootm command
ERROR: can't get kernel image!
[rsvmem] get fdtaddr NULL!
rsvmem - reserve memory

Usage:
rsvmem check                   - check reserved memory
rsvmem dump                    - dump reserved memory

rsvmem check failed
ee_gate_on ...
co-phase 0x2, tx-dly 0, clock 25000000
co-phase 0x2, tx-dly 0, clock 25000000
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 400000
co-phase 0x2, tx-dly 0, clock 25000000
[mmc_init] mmc init success
switch to partitions #0, OK
mmc1 is current device
movi: not registered partition name, boot
movi - Read/write command from/to SD/MMC for ODROID board

Usage:
movi <read|write> <partition|sector> <offset> <address> [<length>]
    - <read|write>  the command to access the storage
    - <offset>  the offset from the start of given partiton in lba
    - <address>  the memory address to load/store from/to the storage device
    - [<length>]  the size of the block to read/write in bytes
    - all parameters must be hexa-decimal only

movi: not registered partition name, dtbs
movi - Read/write command from/to SD/MMC for ODROID board

Usage:
movi <read|write> <partition|sector> <offset> <address> [<length>]
    - <read|write>  the command to access the storage
    - <offset>  the offset from the start of given partiton in lba
    - <address>  the memory address to load/store from/to the storage device
    - [<length>]  the size of the block to read/write in bytes
    - all parameters must be hexa-decimal only

[rsvmem] get fdtaddr NULL!
rsvmem - reserve memory

Usage:
rsvmem check                   - check reserved memory
rsvmem dump                    - dump reserved memory

rsvmem check failed
load dtb from 0x1000000 ......
ERROR: Did not find a cmdline Flattened Device Tree
load dtb from 0x0 ......
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
ee_gate_off ...
Wrong Image Format for bootm command
ERROR: can't get kernel image!
[rsvmem] get fdtaddr NULL!
rsvmem - reserve memory

Usage:
rsvmem check                   - check reserved memory
rsvmem dump                    - dump reserved memory

rsvmem check failed
ee_gate_on ...
odroidn2#

#10

Thanks.

Seems that the N2 is not in the mainline device tree yet, which is why they run their own.

If the N2 gains enough traction, I could probably be persuaded to put the N2 kernel into Manjaro ARM. I just don't like that they use an ancient LTS like 4.9 for it.

#11

I have done a good bit of testing with the board, its quite nice. it would be great to see it supported.

From seeing the trends the cpu/chipset ( Amlogic S922X ) may make it into kernel mainline for support. Not sure about its support in uboot.

#12

You will be pleased to know, that we have begun testing on this device. :slight_smile:

1 Like
#13

If you need help testing it feel free to shoot me a message. :smiley:

2 Likes