Arch linux Arm support the Odroid N2

Hi,

Arch linux Arm support now the Odroid N2 :slight_smile:

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

Have a good day.

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?

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

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.

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.

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.

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

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:

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#

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.

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.

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

1 Like

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

2 Likes

This topic was automatically closed after 90 days. New replies are no longer allowed.