May 7, 2026

NanoPi Neo2 - first power up

I found a USB to serial dongle (CP2104) and connected 3 wires from it to the console Rx, Tx, and ground. I got Rx and Tx wrong at first.

I found a micro USB connector and used it to power the board from an ordinary USB jack on my PC (presumably limited to 500 mA). Without an SD card, a red power LED come on at first, then after a while a green LED begins to blink. Better than the Orange Pi PC2, which never did ANYTHING when you power it up without an SD card.

I inserted an SD card set up with U-boot for the PC2. This particular card fires up U-Boot (U-Boot 2018.09) and by tapping the space bar, I get the U-Boot prompt.
Looking at the output from printenv, I see:

bootcmd=run boot_kyu
boot_kyu=echo Booting Kyu via dhcp ; dhcp 0x40000000; go 0x40000000
I type "boot" and get the following:
=> boot
Booting Kyu via dhcp
phy interface7
mdio_register: non unique device name 'ethernet@1c30000'
Could not get PHY for ethernet@1c30000: addr 1
No ethernet found.

## Starting application at 0x40000000 ...
"Synchronous Abort" handler, esr 0x02000000
It looks like the Neo2 has the ethernet PHY hooked up differently than the Orange Pi PC2 and I will need a U-boot build specific to the Neo2. A likely place is here: I have been sloppily calling this a Neo2, but it really is a Neo Plus2. I download the boot image from this site. This is U-boot v2026.4. I use gunzip to decompress it, put it on a new SD card, and most importantly, I move the boot flag (using fdisk) to the FAT partition so saveenv will work. This disk gives us:
U-Boot 2026.04johang-dirty (May 01 2026 - 02:14:40 +0000) Allwinner Technology
CPU:   Allwinner H5 (SUN50I)
Model: FriendlyARM NanoPi NEO Plus2
DRAM:  512 MiB
I get to the U-boot prompt and do this:
setenv bootaddr 0x40000000
setenv kyu_bootcmd "echo Booting Kyu via dhcp ; dhcp ${bootaddr}; go ${bootaddr}"
setenv bootcmd "run kyu_bootcmd"
saveenv
I type "boot" and now I get:
Booting Kyu via dhcp
ethernet@1c30000 Waiting for PHY auto negotiation to complete........ done
BOOTP broadcast 1
DHCP client bound to address 192.168.0.150 (3016 ms)
*** Warning: no boot file name; using 'C0A80096.img'
Using ethernet@1c30000 device
TFTP from server 192.168.0.53; our IP address is 192.168.0.150
Filename 'C0A80096.img'.
Load address: 0x40000000
So this is progress of a sort. I get back to the U-boot prompt and use printenv to find this:
ethaddr=02:01:84:50:cb:57
The game now is adding an entry to my DHCP server. I do this, reboot the board, and I am running Kyu!!
Probing for amount of ram
Found 2048 M of ram
cache_diag Fails !!
RAM 2045M available starting at 40000000
So the memory probe fails entirely, given 512M of ram. Nonetheless Kyu runs fine (apparently) since it isn't trying to use all that supposed memory that does not really exist. Another issue is:
My IP address is: 192.168.0.68 (4400a8c0)
My MAC address is: 02:01:05:d4:18:d4
These values are currently "wired in" to Kyu and are correct for my Opi PC2 board -- but with these values I now have two boards on my network with the same IP number (and MAC) which is not good.

The good news is that there is no trouble finding the PHY chip. I fix the ram size code in the ram_probe() routine, and figure out a hacky way to make the neo use 192.168.0.69 as well as the MAC address given above, so this is all good.

Probing for amount of ram
Found 512 M of ram
y IP = 192.168.0.69, netmask = ffffff00
My network = 192.168.0.0
My MAC address is: 02:01:05:d4:18:d4
My gateway: 192.168.0.1
fetched symbol table: 41596 bytes
1043 symbols
RAM 503M+ available starting at 406d0000


Have any comments? Questions? Drop me a line!

Tom's electronics pages / tom@mmto.org