Unable to establish Ethernet connection

If you can’t connect to the LibreMesh router as indicated in How to connect to LiMe nodes you can try other ways.

Verify the connection

If you are connected by cable:

  • verify that the cable is well plugged and that the ethernet led on the router or on the computer port show some activity;

  • verify that you’re connected to a LAN port on the router (or main) not to a WAN one (or secondary);

  • verify that the network manager on your computer is actually trying to connect by this cable;

  • if the network manager is down or not installed, connect by the command line activating the ethernet interface and using a DHCP client for asking for an IPv4 to the router. Refer to your operating system documentation for detailed instructions (usually is ip link set dev eth0 up or sudo ifconfig eth0 up for activating the interface and sudo dhclient -x; sudo dhclient + or +sudo dhcpcd -x; sudo dhcpcd for obtaining an IPv4).

If you are connected by wireless:

  • check that the wireless physical switch is ON both on the LiMe router and on the computer;

  • verify that the network manager on your computer is actually trying to connect to the wireless network named as your network community (with default configuration is LibreMesh.org) or on the "named AP" (with default configuration is something like LibreMesh.org-abc123), connecting to the LiMe wireless SSID is not likely to work;

  • if the network manager is down or not installed, connect by the command line activating the wireless interface, associating to the correct access point, and using a DHCP client for asking for an IPv4 to the router. Refer to your operating system documentation for detailed instructions.

Connect using gateway IPv4

If trying to connect to thisnode.info (as explained in normal connection procedure) does not work, you can take your gateway address and connect to it.

When you’re phisically connected to the router and you receive an IPv4 from it, you receive also the IPv4 direction of the gateway. Refer to your operating system documentation for how to see it (usually ip route and route -n work). This IPv4 is not identificative of a specific LibreMesh router, indeed, because of a feature called anygw this IPv4 is common for all the routers. In our case this doesn’t matter because we just want connect to the directly connected one and this will work as expected.

If no root password was set (in the example we will use 10.13.0.1 as the gateway address):

telnet 10.13.0.1

If a root password was set:

ssh root@10.13.0.1

In case neither the normal connection procedure nor the gateway IPv4 are working for connecting to your node, you can use IPv6 link local.

Each working network interface in your Linux system have a special IPv6 address configured automatically by the Kernel. These are named IPv6 link-local and are inside the special prefix fe80::/10 The scope of these IPs is to communicate computers which are in the same collision domain, so translated to LiMe it would be the layer2 Cloud.

If you use NetworkManager, you may create a custom profile to avoid its intervention on the ethernet interface without having to stop it:

  1. Right click the NetworkManager applet

  2. Edit connections → Add → Select Ethernet

  3. Give it any name you desire, such as eth0 manual

  4. General tab: deselect Automatic connect

  5. IPv4 tab: select Disabled

  6. IPv6 tab: select Link-Local only

Finally swith on your router and connect to it using an ethernet cable from its LAN port (WAN should also work) to the ethernet port of your computer, and select the new NetworkManager profile eth manual. Then, how to discover the IPv6 link local address of the router we’re connected to? Using ICMPv6 we can discover machines in our network thanks to the special Multicast address "ff02::". To discover all the devices we can use the next command (using ping6 or ping depending on your distro) where the appended %eth0 specifies which network interface to use (could be something like eth0 or enp0s25, you can see the interface names with the commands ip link or ifconfig):

ping6 ff02::1%eth0

Then each device connected to our colision domain, will reply the ICMP request with its own IPv6 link-local address. The first answer to each ping usually is your own ethernet interface (you can see your own IPv6 link local address with ip address show dev eth0) while the ones marked with DUP! are the connected devices, the first one is the fastest to answer, so the one you’re directly connected to. You can more or less recognize the routers IPv6 link local addresses comparing them with the final part of their physical MAC address (printed on the router label), which should be similar.

The router direction is a combination of the router’s IPv6 address, %, and your ethernet interface name. It should be something like fe90::aa20:66ff:fe4f:ae87%eth0. Do not include a trailing : or other text from the ping responses.

Now that you have the target IPv6 link local you can connect to the router:

  1. try with telnet, it will be enabled just if no password was set: telnet fe90::aa20:66ff:fe4f:ae87%eth0. If the answer is Connection refused, try ssh.

  2. ssh: ssh root@fe90::aa20:66ff:fe4f:ae87%eth0. Remember to include root@, otherwise it will attempt to connect using your personal username. Try the password you remember. If neither that nor a blank password (a blank password is worth to try, it is the default in the development version of LibreMesh).

  3. If that does not work, and you already tried with all the other methods, likely you will have to reflash your router (e.g. using TFTP) or to reset using OpenWrt/LEDE failsafe mode.

If you managed to connect via ssh (aka if a root password is set on the router, if is not you can connect via telnet and set it using passwd) you can also copy files on the router using IPv6 link local and scp (for copying big files like firmware images use the /tmp directory as a destination):

scp LiMe-fw.bin root@\[fe80::a2f3:c1ff:fe39:1cea%eth0\]:/tmp/

Click here for downloading Pau’s script which check if there is some router attached to your network device and in case, try to connect to it. If there are not routers it waits until some appears.

An example of execution:

p4u@nomada:~$ ./disc6 eth1
...........................Host found, connecting to it!

Warning: Permanently added 'fe80::a2f3:c1ff:fe39:7cea%eth1' (RSA) to the list of known hosts.
root@fe80::a2f3:c1ff:fe39:7cea%eth1's password:

Recover from bad configurations with Failsafe mode

Sometimes you configure things badly and ends in a messed up configuration where you can’t connect to the router using any of the techniques listed above. One option is to flash again the router with low level procedures (e.g. TFTP when possible), another is to boot the router in failsafe mode.

Failsafe mode enables you to recover from bad configurations without much trouble. Learn how to access Failsafe mode here or on the specific router page in OpenWrt hardware wiki.

Once in failsafe, connect by ethernet cable or by wireless to the router and try to connect to it as if was a freshly flashed LibreMesh router as explained in the connection procedure on this site. If that does not work, try connecting to 192.168.1.1 via telnet:

telnet 192.168.1.1