Ethernet not working in the new version of Orange Pi 3B

Hi @MichaIng , thank you for getting back so quickly (& with such a detailed response)

Unfortunately I had already flashed the card with Armbian image mentioned earlier in the thread. So I was not able to try the boot workaround that you mentioned. If you can push the packages to APT repo, I am happy to give it a try!

For now I flashed the dietpi image and used the tricked mentioned by @VittorioParagallo (set the link to 100m) and ethernet started working - but after reboot ethernet does not work again and needs to be restarted via dietpi-config to make it work again (not ideal)

So yeah happy to try it out the new kernel (let me know how can i pull it now) and u-boot

You can download Armbian on your own too.

Citazione needs to be restarted via dietpi-config to make it work again (not ideal)
@ankagar i remebmber that i was playing a bit also with DHCP vs STATIC IP to make it workā€¦ but i forgot the steps i did. Now it is configured whith static ip and in the router with static DHCP

Thanks for the hints @VittorioParagallo , will give it a try. Still keen on trying out the new kernel and uboot to get the full link speed and other goodness. Hopefully @MichaIng can show me the way soon.

You can check Armbian forums on your own.

Okay I generated a new kernel package with the symlink added, to allow seamless migration from pre Linux 6.11 dtb packages, with any U-Boot version and boot environment (defining old device tree name).

Would be great if someone could test it, with fdtfile=rockchip/rk3566-orangepi-3b.dtb in /boot/dietpiEnv.txt still defined:

cd /tmp
wget https://dietpi.com/downloads/binaries/testing/linux-{image,dtb}-edge-rockchip64.deb
sudo dpkg -i linux-{image,dtb}-edge-rockchip64.deb
sudo reboot

It will load the board revision v1.1 device tree, hence broken Ethernet on v2.1. Now, to fix Ethernet and have U-Boot picking the correct device tree:

sudo /boot/dietpi/func/dietpi-set_hardware flash-u-boot-mmc
sudo sed -i '/^fdtfile=/d' /boot/dietpiEnv.txt

If you boot from USB or NVMe, assure to also flash the SPI bootloader image, via dietpi-config > Advanced Options > Update SPI bootloader.

Then test whether it boots fine and has Ethernet functional:

sudo reboot

Iā€™m also building a new image with the new kernel and correct /boot/dietpiEnv.txt: DietPi-Build Ā· MichaIng/DietPi@2ca807c Ā· GitHub
Available here: Index of /downloads/images/testing

1 Like

Gave it a try just now, everything went as expected/described. The trick with symlink worked, I was able to reboot even on the 1.1 version with fdtfile entry. And also reboots now fine after removing fdtfile.

One strange thing was that ethernet link speed did not change from 100 to 1000 , even after setting to auto - required an additional reboot. But seems to be ok after reboot.

3 Likes

I can confirm that this works for me too! Thank you @MichaIng

Additional reboot is indeed required to get the full 1000Mbit speed.

3 Likes

Also gave this a try ā€¦ but this does not work!

With the image from 10th night, everything looks good, but the image from 12th night is failing to start. Hmm strange, it now booted up on the 3rd try! , maybe because I was trying to also install eMMC, maybe that messed something up.

Thanks for testing guys. The next DietPi update will apply it as well this way.

Hmm, I just tried to enable and disable auto-negotiation on the fly on my RPi 2, but it broke the network connection and did not re-connect anymore. Theoretically, to re-enable it:

ethtool -s eth0 autoneg on

And maybe as well needed to actually trigger negotiation:

ethtool -r eth0

@ankagar
Maybe it did just take a while for first boot setup stuff? What do you mean with the eMMC? Did you have multiple storage devices with OS attached?

Not really ā€¦ it looked bit like ā€˜thread dumpā€™ - sorry coming from java world here.
I had a blank eMMC , with no OS on it - wanted to move the OS to eMMC next.

BTW tried DietPi-Drive_Manager to format eMMC and ran into an issue (should probably open another thread for this?)

[ INFO ] DietPi-Drive_Manager | Writing zeros to partition: /dev/mmcblk0boot0
[.     ]dd: error writing '/dev/mmcblk0boot0': Operation not permitteds=4K count=10
1+0 records in
0+0 records out
0 bytes copied, 0.0005075 s, 0.0 kB/s
[FAILED] DietPi-Drive_Manager | dd if=/dev/zero of=/dev/mmcblk0boot0 bs=4K count=10
[FAILED] DietPi-Drive_Manager | Unable to continue, DietPi-Drive_Manager will now terminate.

but was able to format as below (got the command from manual)

root@emerald:~# sudo dd bs=1M if=/dev/zero of=/dev/mmcblk0 count=1000 status=progress
968884224 bytes (969 MB, 924 MiB) copied, 2 s, 484 MB/s
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 8.74504 s, 120 MB/s
root@emerald:~# 

Oh, I thought we fixed that already. Itā€™s these special boot sector partitions on some Hardkernel SBCsā€™ eMMC. This should fix it: v9.8 Ā· MichaIng/DietPi@065dc9d Ā· GitHub

Generally, it is not required to format the drive if you are going to flash a new image anyway. The image includes/overwrites the partition table anyway.

1 Like

Awesome! will not be able to try it out though. My eMMC is already up and running - also this time went with the last testing image and everything was smooth - did not run into any issues (so far).

2 Likes

@MichaIng, Iā€™ve downloaded and flashed the test image. However, Iā€™m unable to boot from SD Card. I donā€™t have the eMMC, but usually boot from the attached NVMe (obviously with u-boot in the SPI). For reference, Iā€™m able to boot perfectly with the 9.7 image, however canā€™t use EthernetšŸ„ŗ. Also worried if thereā€™s a voltage mismatchā€¦ BTW Iā€™ve formatted the SPI to ensure the boot is always from SD Card as of now, yet after 5th attempt, unable to boot. Any ideas?
Image being used:

Is there anything I can help to do? Also, does the 9.8 beta have this sorted out? If yes, how can I download a copy of it?

Apologies for so many questionsā€¦ Iā€™m loving this project for sureā€¦

New image flashed on SD work perfectly on my OrangePi 3B v2.1 on first boot.

	Speed: 1000Mb/s
	Duplex: Full
	Auto-negotiation: on

With the original version setting speed to 100 Mb worked fine connected on good switch but loses about 50% packet on cheapest one.

2 Likes

Hmm, as it works for others, do you have a USB-UART adapter to check via serial console what is going on in your case?

1 Like

Thanks for all the help, yes on checking further I realized the mtd0 hadnā€™t been wiped properly. Itā€™s booting almost well now :+1:.

However, Iā€™m getting this:

Failed to start systemd-modules-load.service - Load Kernel Modules

And when it comes to digging a bit more:

Any idea? Can I recompile the kernel, or any guide?

Today I found update 9.8 with patch for ethernet on orange pi, I launched diepi-update but at the end of the update the ethernet problem reappeared.
In addition the system wonā€™t start from NVME, It seems that during the update the bootloader was rewritten on SPI. So i booted the system from the sd, rewritten SPI and now the system boot from NVME

Hello friend, same thing here with me, you can write the ā€œosā€ in the nvme via RKDevTool, but after finishing the configuration and minimal installation, if the card restarts or turns off it doesnā€™t come back, just reinstalling the system again, if possible could you explain to me this procedure you performed, thank you!

My orange pi starts from SD card with dietpi, then I go in dietpi-config > 4. Advanced option > Update spi bootloader. Now my card boots from NVME, but no longer boots from SD with official Orange pi debian