The examples with the Ethernet2 library all still use the form of 'begin' that require the MAC address to be supplied. I'm trying to avoid that so I can run multiple devices without having to hard code the MAC and IP addresses for every one. My shield has (or is supposed to have 'cos it's printed on a label on the board) its unique mac built in.
That said, even supplying the MAC address to .begin(mac) doesn't work. It returns very quickly and a call to Ethernet.locaIP() returns an IP address which curiously matches the first four bytes of the mac address.
I suspect it's a problem accessing the W5500 registers but I don't yet know enough about the overall architecture to comment. Also, if that is the problem, how does it manage to operate when I don't try to use DHCP?
Oh for a source code debugger