Ethernet not working on Manjaro 21.02 Raspberry Pi 4 Minimal

After flashing the image ( Manjaro - Raspberry Pi 4 Minimal ) onto the SD card, booting and setting it up, I have not Ethernet connection.

The LEDs are blinking, I tried three different network cables.

I tried to add a file eth0.network in /etc/systemd/network/

[Match]
Name=eth0

[Network]
DHCP=yes

but it had no effect other than changing the output of networkctl from Unmanaged to Configuring


ip link gives me

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether dc:a6:32:61:31:2e brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DORMANT group default qlen 1000
    link/ether dc:a6:32:61:31:30 brd ff:ff:ff:ff:ff:ff

networkctl gives me

IDX LINK  TYPE     OPERATIONAL SETUP      
  1 lo    loopback carrier     unmanaged  
  2 eth0  ether    degraded    configuring
  3 wlan0 wlan     no-carrier  unmanaged  

3 links listed.

systemctl status systemd-networkd gives me

● systemd-networkd.service - Network Service
     Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-10-04 02:13:07 HKT; 1min 34s ago
TriggeredBy: ● systemd-networkd.socket
       Docs: man:systemd-networkd.service(8)
   Main PID: 172 (systemd-network)
     Status: "Processing requests..."
      Tasks: 1 (limit: 4252)
     CGroup: /system.slice/systemd-networkd.service
             └─172 /usr/lib/systemd/systemd-networkd

Oct 04 02:13:07 raspi systemd-networkd[172]: Enumeration completed
Oct 04 02:13:07 raspi systemd-networkd[172]: eth0: IPv6 successfully enabled
Oct 04 02:13:07 raspi systemd-networkd[172]: eth0: Link UP
Oct 04 02:13:07 raspi systemd[1]: Started Network Service.
Oct 04 02:13:08 raspi systemd-networkd[172]: wlan0: Link UP
Oct 04 02:13:08 raspi systemd-networkd[172]: wlan0: Link DOWN
Oct 04 02:13:08 raspi systemd-networkd[172]: wlan0: Link UP
Oct 04 02:13:11 raspi systemd-networkd[172]: eth0: Gained carrier
Oct 04 02:13:12 raspi systemd-networkd[172]: eth0: Gained IPv6LL
Oct 04 02:13:54 raspi systemd-networkd[172]: eth0: Gained IPv6LL

Is your dhcp client started ?

sudo systemctl start dhcpd

Could you give us the output of

ip a

Ethernet seems to be UP according to your output.

Can you ping 8.8.8.8 or 1.1.1.1?

If you can, you have a DHCP issue.

I think he cannot ping anything because there is no ip address assigned to the interface, no ?

We don’t know if he has an address.
ip link only gives link status. ip addr would show IP’s.

You are right sorry, i changed my first message to ask him the output of

ip a

Hello yansolo, hello Strit,

sorry for the late response. Please find the requested outputs attached

ping 1.1.1.1 gives me

ping: connect: Network is unreachable

systemctl status dhcpd gives me an error that the service does not exist. instead, I can provide the output of systemctl status dhcpcd

● dhcpcd.service - dhcpcd on all interfaces
     Loaded: loaded (/usr/lib/systemd/system/dhcpcd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sun 2020-10-04 02:13:07 HKT; 6min ago
    Process: 261 ExecStart=/usr/bin/dhcpcd -q -b (code=exited, status=0/SUCCESS)
   Main PID: 269 (dhcpcd)
      Tasks: 5 (limit: 4252)
     CGroup: /system.slice/dhcpcd.service
             ├─269 dhcpcd: [master] [ip4] [ip6]
             ├─270 dhcpcd: [privileged actioneer]
             ├─271 dhcpcd: [network proxy]
             ├─272 dhcpcd: [control proxy]
             └─399 dhcpcd: [BPF BOOTP] eth0

Oct 04 02:13:07 raspi dhcpcd[270]: wlan0: IAID 32:61:31:30
Oct 04 02:13:07 raspi dhcpcd[270]: wlan0: adding address fe80::dda7:be05:e768:e42d
Oct 04 02:13:07 raspi dhcpcd[270]: wlan0: carrier lost
Oct 04 02:13:07 raspi dhcpcd[270]: wlan0: deleting address fe80::dda7:be05:e768:e42d
Oct 04 02:13:11 raspi dhcpcd[270]: eth0: carrier acquired
Oct 04 02:13:11 raspi dhcpcd[270]: eth0: IAID 32:61:31:2e
Oct 04 02:13:11 raspi dhcpcd[270]: eth0: adding address fe80::64d5:9874:d8b7:a36e
Oct 04 02:13:11 raspi dhcpcd[270]: eth0: soliciting an IPv6 router
Oct 04 02:13:12 raspi dhcpcd[270]: eth0: soliciting a DHCP lease
Oct 04 02:13:24 raspi dhcpcd[270]: eth0: no IPv6 Routers available

and finally ip addr gives me

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:61:31:2e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::64d5:9874:d8b7:a36e/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether dc:a6:32:61:31:30 brd ff:ff:ff:ff:ff:ff

Hi,
My bad, it was dhcpcd to check as it’s the client, dhcpd is the server.
Well, could you check if you have NetworkManager service installed ?
$ sudo systemctl status NetworkManager (the case for the N and the M are important.)

If you do not have NetworkManager service, what you can try to do is (as root) :
$ dhcpcd -k (release your ip)
$ dhcpcd (renew the ip)

Could you show us what do you have in you /etc/dhcpcd.conf ?

Also, check with your router if you have some ipv4 available

Unit NetworkManager.service not found

That unfortunately does not help. In the end I get an error message that the operation timed out.

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
#clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
duid

# Persist interface configuration when dhcpcd exits.
persistent

# vendorclassid is set to blank to avoid sending the default of
# dhcpcd-<version>:<os>:<machine>:<platform>
vendorclassid

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# Request a hostname from the network
option host_name

# Most distributions have NTP support.
#option ntp_servers

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate SLAAC address using the Hardware Address of the interface
#slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID
slaac private
noipv4ll

The router works fine for IPv4 with my Desktop on ether and Laptop, Phones, etc on Wifi.

I meant, could you check if you still have available ip address to assign in the range defined on your router ?
What is this range and how many devices do you have at home ?

Also, in the dhcpcd.conf, could you comment out “duid” and uncomment the line “clientid”, save the file and then restart the service.

Then you can do the same by commenting the line “require dhcp_server_identifier”, save the file, restart the service

Yes, I have well over 200 IPs available. Currently I am using 192.168.1.1 for the router and 192.168.1.2-9 for phones, etc.

Tried both. I am getting the same result. I even restarted the whole system, just to be sure.

I did not post the output of running dhcpcd as root

dhcpcd-9.3.3 starting
dev: loaded udev
DUID 00:01:00:01:27:0b:7b:b4:dc:a6:32:61:31:30
eth0: IAID 32:61:31:2e
wlan0: waiting for carrier
eth0: soliciting an IPv6 router
eth0: soliciting a DHCP lease
eth0: no IPv6 Routers available
forked to background, child pid 555
timed out

It appears that it is not even trying to obtain an IPv4.

Just to be sure: I am using a Raspberry 4B. And not sure whether it makes a difference, but I am temporarily based in China mainland, so the big firewall is a thing for me when it comes to Google nameservers. I don’t think that’s relevant at the current stage though.

Alright, i can be caused by an incorrect system time, maybe.
what is the output of timedatectl status ?

In the mean time, you could configure a static ip address temporarely :
In the /etc/dhcpcd.conf file, add:

interface eth0
static ip_address=192.168.0.4/24 (replace with the ip you want)
static routers=192.168.0.1 (replace with yours)
static domain_name_servers=192.168.0.1 (replace with yours)

reboot

Do you have any external drives attached?
I have the same problem on my RPI 3, no ethernet connection when i boot with external HDD attached. When i boot without HDD everything is ok.

No external HDD attached. Only the 16 GB SD-Card it came with

Ok, the output of timedatectl status is

               Local time: Sun 2020-10-04 02:14:01 HKT
           Universal time: Sat 2020-10-03 18:14:01 UTC
                 RTC time: n/a                        
                Time zone: Asia/Hong_Kong (HKT, +0800)
System clock synchronized: no                         
              NTP service: active                     
          RTC in local TZ: no                         

I tried that but I don’t know how to set the router in a way that a certain range is reserved for static IPs (since it’s all in chinese).

ping test.de gives me

PING test.de (20.73.36.41) 56(84) bytes of data.
From _gateway (192.168.1.1) icmp_seq=1 Packet filtered
From _gateway (192.168.1.1) icmp_seq=2 Packet filtered
From _gateway (192.168.1.1) icmp_seq=3 Packet filtered
From _gateway (192.168.1.1) icmp_seq=4 Packet filtered
From _gateway (192.168.1.1) icmp_seq=5 Packet filtered
From _gateway (192.168.1.1) icmp_seq=6 Packet filtered

--- test.de ping statistics ---
9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 8040ms

as does curl test.de

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (7) Failed to connect to test.de port 80: No route to host

even though networkctl now gives me

IDX LINK  TYPE     OPERATIONAL SETUP    
  1 lo    loopback carrier     unmanaged
  2 eth0  ether    routable    unmanaged
  3 wlan0 wlan     no-carrier  unmanaged

3 links listed.

and ip addr now gives me

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:61:31:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.110/24 brd 192.168.1.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::64d5:9874:d8b7:a36e/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether dc:a6:32:61:31:30 brd ff:ff:ff:ff:ff:ff

So I guess there is no fix for this problem and I have to downgrade to Raspbian 32 Bit?

Did you try pinging 1.1.1.1 again after you got an ipv4 address?

Your system clock is not synchronized, which is not good in my opinion to get and ip address.
It should be synchronized by default, so you might have changed something in your system, although i do not know how it is on the minimal version, however in the xfce version, it is by default.
Does systemd-timesyncd service is started/enable ?

Do this : # timedatectl set-ntp true
You can read the complete article there : https://wiki.archlinux.org/index.php/systemd-timesyncd

From _gateway (192.168.1.1) icmp_seq=1 Packet filtered

I did not get an IPv4 Address. The 192.168.1.110 was assigned manually and resulted in all ping requests being filtered