Portable Raspberry Pi Pico LAN Tester

by Markus24152 in Circuits > Electronics

203 Views, 5 Favorites, 0 Comments

Portable Raspberry Pi Pico LAN Tester

Bild_2026-04-29_183934795.png
Bild_2026-04-28_213106773.png
Bild_2026-04-29_183415663.png
Bild_2026-04-29_183449482.png
WhatsApp Image 2026-04-28 at 21.08.24 (4).jpeg

This project is a small handheld LAN tester based on a Raspberry Pi Pico and a W5500 Ethernet controller. It is designed as a practical tool for quickly checking Ethernet ports and LAN cables without using a laptop.

You plug in an Ethernet cable, press one button, and the tester shows the result on the OLED display.

It checks:

  1. whether the Ethernet chip is responding
  2. whether a LAN link is present
  3. whether DHCP works
  4. the assigned IP address
  5. gateway and DNS address
  6. whether internet access is available
  7. battery voltage and estimated charge level
  8. charging status

The project uses a custom PCB, a 3D printed case, and firmware written in C with the Raspberry Pi Pico SDK.

All design files, firmware, BOM, manufacturing files and 3D files are intended to be provided through the project repository. The PCB can be ordered as bare boards or directly with assembly. The BOM contains the JLCPCB/LCSC part numbers so the parts can also be ordered separately from LCSC.

Supplies

WhatsApp Image 2026-04-28 at 21.20.25.jpeg
WhatsApp Image 2026-04-28 at 21.19.44.jpeg
WhatsApp Image 2026-04-28 at 21.08.24.jpeg
Bild_2026-04-28_212145780.png

Main Parts


  1. 1x Raspberry Pi Pico
  2. 1x SSD1306 128x64 I2C OLED display
  3. 1x LiPo battery
  4. 1x Custom PCB (GitHub)
  5. 4x M3 20mm Screws
  6. 4x M3 brass insert nut
  7. 3D printed case


Tools

  1. Soldering iron
  2. Computer with Visual Studio Code
  3. 3D printer

Project Idea and Plan

Bild_2026-04-28_211203368.png
Bild_2026-04-29_183924913.png

The goal was to build a portable LAN diagnostic device that is simple to use but still performs real network checks.

Many cheap cable testers only check continuity. This project goes further: it uses a real Ethernet controller and actually joins the network. That means it can detect the difference between:

  1. no cable connected
  2. cable connected but no DHCP
  3. local network available
  4. internet available
  5. Ethernet hardware fault

The Raspberry Pi Pico controls the complete device. The W5500 handles Ethernet. The SSD1306 OLED shows the user interface. A BQ24074 charger circuit allows battery operation.

Basic test flow:

  1. Power on the tester.
  2. OLED shows battery or charging state.
  3. Connect LAN cable.
  4. Press the button.
  5. The Pico checks the W5500 over SPI.
  6. The W5500 checks Ethernet link.
  7. DHCP is started.
  8. IP, gateway and DNS are displayed.
  9. The firmware tests internet access with TCP connections.
  10. The final result is shown on the display.


Order the PCB and Parts

Bild_2026-04-28_212418902.png
Bild_2026-04-28_212518418.png

Start with the PCB files from the project repository. You can order only the bare PCB and solder everything yourself, or you can use PCB assembly. For assembly, upload the Gerbers, BOM and CPL/pick-and-place file. The BOM already contains the JLCPCB/LCSC part numbers, which makes component selection much easier.

Before submitting the order, check the assembly preview carefully. The most important things are the orientation of the W5500, BQ24074, USB-C connector, RJ45 connector, battery connector and Raspberry Pi Pico footprint.

If you solder manually, order the components from LCSC or another supplier using the BOM. It is useful to order a few extra resistors, capacitors and connectors in case something is lost or damaged during assembly.

PCB Files

Solder the SMD Components

WhatsApp Image 2026-04-28 at 21.08.24 (1).jpeg
WhatsApp Image 2026-04-28 at 21.08.24 (3).jpeg
WhatsApp Image 2026-04-28 at 21.08.24 (5).jpeg

I recommend starting with the most difficult parts while the PCB is still flat and easy to inspect. First solder the W5500, then the BQ24074 charger IC, then the USB-C connector, crystal/clock parts, resistors, capacitors and the remaining small components.

Apply only a small amount of solder paste, place the IC carefully and heat it evenly with hot air or a reflow plate. After soldering, inspect the pins under a microscope. Even a tiny solder bridge on the W5500 SPI pins can stop the Ethernet chip from responding.

Do not connect the battery at this stage. First make sure the PCB has no shorts and the power rails look safe.

Print and Prepare the Case

WhatsApp Image 2026-04-28 at 21.08.24 (6).jpeg
WhatsApp Image 2026-04-28 at 21.08.24 (7).jpeg
Bild_2026-04-29_181921404.png

Print the case parts from PLA or PETG. Before final assembly, test-fit the PCB. Check that the USB-C connector, RJ45 connector, OLED and button all line up correctly.

Install the M3 heat-set inserts with a soldering iron. Place each insert above the hole, heat it slowly and press it straight into the plastic. Let it cool before tightening screws into it. Do not overheat the plastic or press the insert in at an angle.

You can download the files on Printables (HERE)

Downloads

Mount and Align the OLED

WhatsApp Image 2026-04-28 at 21.08.24 (8).jpeg
WhatsApp Image 2026-04-28 at 21.08.24 (9).jpeg

The OLED position is important because it must sit nicely behind the front window of the case. The easiest method is to solder only one pin first. Tin one pad, place the OLED on the PCB, reheat that one pin and align the display.

Before soldering the rest, place the PCB into the front part of the case and check the display position. When the OLED is straight and centered, solder the remaining pins.

If the display header pins are too long and interfere with the battery connector or the enclosure, trim them carefully with side cutters.

Downloads

Build and Upload the Firmware

The firmware is available in the GitHub repository together with the PCB files. For most people, the easiest way is to use the ready-built UF2 file from the GitHub release or from the build folder, if it is provided in the repository.

Download the project from GitHub by clicking Code → Download ZIP. Extract the ZIP file and open the folder. The project folder looks similar to this:

LANTester/
├── .vscode/
├── lib/
├── CMakeLists.txt
├── LANTester.c
├── LANTester.uf2
└── pico_sdk_import.cmake

The important file for flashing is:

LANTester.uf2

If the UF2 file is already included, you do not need to compile anything. The Raspberry Pi Pico can be flashed directly:

  1. Hold the BOOTSEL button on the Raspberry Pi Pico.
  2. Plug the Pico into the computer with USB.
  3. The Pico appears as a USB drive.
  4. Copy LANTester.uf2 onto this drive.
  5. The Pico reboots automatically and starts the LAN tester firmware.

This works with a normal Raspberry Pi Pico. No special bootloader or programmer is needed.

If you want to change the code yourself, open the folder in Visual Studio Code. Install the Raspberry Pi Pico extension from the Extensions tab. Then open LANTester.c, edit the code if needed, and use the build button from the Pico extension to generate a new UF2 file. The build settings are in CMakeLists.txt.

One important setting in CMakeLists.txt is:

target_compile_definitions(LANTester PRIVATE _WIZCHIP_=5500)

This tells the WIZnet ioLibrary to build for the W5500. Without this, the Ethernet library can use the wrong chip configuration and the W5500 may not work correctly.

After flashing, the OLED should show the start screen. Now the tester is ready for the first LAN test.

Bench Test the Electronics

Before closing the case, test everything on the bench. Power the board, check that the OLED turns on and that the button starts the test. Then connect an Ethernet cable to a normal router or switch and press the button.

A successful result should look similar to this:

Internet online
IP 192.168.x.x
GW 192.168.x.x
DNS 192.168.x.x
100M Full xxms

Also test the failure states. With no cable connected, it should show No LAN link. If DHCP is not available, it should report a DHCP problem instead of just failing silently. This is what makes the tester useful: it tells you where the network problem is.

Final Assembly

Bild_2026-04-29_181814566.png
Bild_2026-04-29_181857250.png
Bild_2026-04-29_181944815.png
Bild_2026-04-29_181957980.png

Final Assembly

Put the button and the side switch into the front part of the case first. Then place the front plate face down and insert the PCB. It is easiest to guide the USB-C connector into its opening first and then lower the PCB into position.

Connect the battery and place it into the battery pocket. Make sure the battery cable is not pinched. Also check that the OLED pins do not touch the battery connector or the case. If needed, shorten the display pins a little.

Finally, place the bottom shell on the case and close it with M3 screws. Do not force the enclosure closed. If something does not fit, check the USB-C connector, RJ45 connector, battery cable and OLED pins again.

Troubleshooting

If the OLED stays black, check 3.3 V, GND, SDA/SCL wiring and the I2C address 0x3C.

If the Ethernet chip is not responding, check W5500 power, reset, SPI wiring and soldering. The W5500 version register should read 0x04. A value of 0xFF often means open MISO, wrong CS or missing ground. A value of 0x00 often points to reset, power or clock problems.

If the device resets during a test, the supply voltage is probably dipping. Check VSYS and 3.3 V while the LAN test starts. Extra decoupling near the W5500 can help.

If DHCP fails but link is detected, test the device on a normal home router first. Some networks use VLANs, disabled DHCP, captive portals or isolated switch ports.

Final Result

Bild_2026-04-29_183757804.png
Bild_2026-04-29_182017148.png
Bild_2026-04-29_183434096.png

The final device is a compact battery-powered LAN tester in a 3D printed case. It is useful for quickly checking Ethernet ports, cables, routers, switches and custom network hardware.

It is also a great learning project because it combines custom PCB assembly, Raspberry Pi Pico firmware, SPI Ethernet, I2C displays, battery charging, ADC measurement and mechanical design.