Weekend project – fixing Arduino ethernet shield

Few days ago I received message from Post, that new toy are waiting in Post office. I decided to try wired connection with Arduino, as Chinese are making cheap clones. For those who did not know how this device looks, here are image from internet:

This shield is compatible with Arduino Uno and Mega. As I have spare Arduino Mega, connected shield to Mega, connected Ethernet cable directly to laptop. After few minutes Arduino connected to network and started to answer ICMP (ping) packets. All seemed perfect, while connection was directly to PC network card. My router did not had spare network ports to try, so in next day I bought network switch. With smile in my face, I connected Ethernet shield to brand new switch, and was excited to try mqtt communication with Mosquito mqtt broker.

After Arduino was powered ON – nothing happened. Shield is not accessible … first idea – lets try to get IP address from DHCP. Recompiled program to use DHCP, opened serial console for debug, and very strange issue – no IP from DHCP. All leds are blinking, but no connectivity. After that, Ethernet cables was changed, tried different switch ports – no results. It’s time to dig internet for solution, and after deep searching, solution was found in Arduino forum. Happily, I’m not the one who tried cheap Chinese clones, and this time clones have wrong components inside, shields did not work with switches. Thanks to one guy in forum, who suggested workaround: solder additional resistors, to fix incorrect resistance in board. Here is step by step guide to fix issue:

  1. identify if board have wrong component. In this foto you can see selected component, if there are written 511, you have possible issue.

2. Solder additional 100 oms resistors, to fix issue. Here are pads where you need additional resistors:

Here are results:

I did not had 100 oms resistors, so tried to solder 220 oms. They also worked like a charm.

3. Working “patched” Ethernet shield:

Please note, that this fix you should take on your own risk, and I’m not responsible, if you you will have issues reproducing this fix on your own board. But if you succeed, please post comment here 🙂