I have been able to reproduce this issue since my first Edgerouter (v1.2.0)and I have deployed a lot of these units.
When I set the speed and duplex on an Ethernet port to 100/full, lose link on that port, and the router reboots (either from power loss or reboot command) while link is down , the port will NOT come back with a link!
Show Interface shows u/d and reseating the cable does nothing.
ubnt@ubnt:~$ show interfaces ethernet eth0
eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 24:a4:3c:05:f1:31 brd ff:ff:ff:ff:ff:ff
inet 10.28.254.178/24 brd 10.28.254.255 scope global eth0
valid_lft forever preferred_lft forever
set interfaces ethernet eth0 address 10.28.254.178/24
set interfaces ethernet eth0 duplex full
set interfaces ethernet eth0 poe output off
If I leave the port set to auto speed/duplex, there is no issue.
Disable and re-enable while in this state has no effect.
Adding the "disable-link-detect" command has no effect.
Rebooting makes the interface come up.
Removing the speed/duplex commands DOES make the interface come up WITHOUT a reboot.
I have been able to recreate this scenario since v1.2.0 and through 1.8.5
It's getting very frustrating as I use these units for small VPN sites and I cannot always get the LEC to change their handoff to AUTO. Carriers want to hard code their ports.
This sequence of events is very rare in the real world, but it still should not behave this way.