---
title: "Adafruit Wiznet5k Library"
url: "https://maker.wiznet.io/scarlet/projects/adafruit-wiznet5k-library/"
markdown_url: "https://maker.wiznet.io/scarlet/projects/adafruit-wiznet5k-library/md"
type: "UCC: User Created Content"
author: "Adafruit"
author_url: "https://docs.circuitpython.org/projects/wiznet5k/en/latest/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Adafruit"
original_url: "https://docs.circuitpython.org/projects/wiznet5k/en/latest/"
published: "2023-01-01"
language: "en"
tags: ["AIoT"]
hardware: ["WIZnet W5500"]
likes: 3
views: 960
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Adafruit Wiznet5k Library

> Pure-Python interface for WIZNET 5k ethernet modules.

Original author: Adafruit (source: https://docs.circuitpython.org/projects/wiznet5k/en/latest/)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

## **Dependencies**

This driver depends on:

[Adafruit CircuitPython](https://github.com/adafruit/circuitpython)

[Bus Device](https://github.com/adafruit/Adafruit_CircuitPython_BusDevice)

Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading [the Adafruit library and driver bundle](https://circuitpython.org/libraries).

## **Installing from PyPI**

On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally [from PyPI](https://pypi.org/project/adafruit-circuitpython-wiznet5k/). To install for current user:

```
pip3 install adafruit-circuitpython-wiznet5k
```

To install system-wide (this may be required in some cases):

```
sudo pip3 install adafruit-circuitpython-wiznet5k
```

To install in a virtual environment in your current project:

```
mkdir project-name && cd project-name
python3 -m venv .venv
source .venv/bin/activate
pip3 install adafruit-circuitpython-wiznet5k
```

## **Usage Example**

This example demonstrates making a HTTP GET request to wifitest.adafruit.com.

```
import board
import busio
import digitalio
import adafruit_requests as requests
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket

print("Wiznet5k WebClient Test")

TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
JSON_URL = "http://api.coindesk.com/v1/bpi/currentprice/USD.json"

cs = digitalio.DigitalInOut(board.D10)
spi_bus = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)

# Initialize ethernet interface with DHCP
eth = WIZNET5K(spi_bus, cs)

# Initialize a requests object with a socket and ethernet interface
requests.set_socket(socket, eth)

print("Chip Version:", eth.chip)
print("MAC Address:", [hex(i) for i in eth.mac_address])
print("My IP address is:", eth.pretty_ip(eth.ip_address))
print("IP lookup adafruit.com: %s" %eth.pretty_ip(eth.get_host_by_name("adafruit.com")))


#eth._debug = True
print("Fetching text from", TEXT_URL)
r = requests.get(TEXT_URL)
print('-'*40)
print(r.text)
print('-'*40)
r.close()

print()
print("Fetching json from", JSON_URL)
r = requests.get(JSON_URL)
print('-'*40)
print(r.json())
print('-'*40)
r.close()

print("Done!")
```

This example demonstrates a simple web server that allows setting the Neopixel color.

```
import board
import busio
import digitalio
import neopixel

from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver as server
from adafruit_wsgi.wsgi_app import WSGIApp

print("Wiznet5k Web Server Test")

# Status LED
led = neopixel.NeoPixel(board.NEOPIXEL, 1)
led.brightness = 0.3
led[0] = (0, 0, 255)

# W5500 connections
cs = digitalio.DigitalInOut(board.D10)
spi_bus = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)

# Initialize Ethernet interface with DHCP
eth = WIZNET5K(spi_bus, cs)

# Here we create our application, registering the
# following functions to be called on specific HTTP GET requests routes

web_app = WSGIApp()

@web_app.route("/led/<r>/<g>/<b>")
def led_on(request, r, g, b):
    print("LED handler")
    led.fill((int(r), int(g), int(b)))
    return ("200 OK", [], ["LED set!"])

@web_app.route("/")
def root(request):
    print("Root handler")
    return ("200 OK", [], ["Root document"])

@web_app.route("/large")
def large(request):
    print("Large pattern handler")
    return ("200 OK", [], ["*-.-" * 2000])


# Here we setup our server, passing in our web_app as the application
server.set_interface(eth)
wsgiServer = server.WSGIServer(80, application=web_app)

print("Open this IP in your browser: ", eth.pretty_ip(eth.ip_address))

# Start the server
wsgiServer.start()
while True:
    # Our main loop where we have the server poll for incoming requests
    wsgiServer.update_poll()
    # Maintain DHCP lease
    eth.maintain_dhcp_lease()
    # Could do any other background tasks here, like reading sensors
```

## **Documentation**

API documentation for this library can be found on [Read the Docs](https://docs.circuitpython.org/projects/wiznet5k/en/latest/).

For information on building library documentation, please check out [this guide](https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-our-docs-on-readthedocs#sphinx-5-1).

## **Contributing**

Contributions are welcome! Please read our [Code of Conduct](https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/blob/main/CODE_OF_CONDUCT.md) before contributing to help this project stay welcoming.

## **License**

This library was written by [Arduino LLC](https://github.com/arduino-libraries/Ethernet/blob/master/AUTHORS). We’ve converted it to work with [CircuitPython](https://circuitpython.org/) and made changes so it works similarly to [CircuitPython’s WIZNET5k wrapper for the WIZnet 5500 Ethernet interface](https://docs.circuitpython.org/en/latest/shared-bindings/wiznet/wiznet5k.html) and CPython’s [Socket low-level networking interface module](https://docs.python.org/3.8/library/socket.html).

This open source code is licensed under the LGPL license (see LICENSE for details).

## **Table of ContentsExamples**

- [Simple test](https://docs.circuitpython.org/projects/wiznet5k/en/latest/examples.html)

**API Reference**

- [`**adafruit_wiznet5k**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html)
  - [Implementation Notes](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#implementation-notes)

- [`WIZNET5K`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K)
  - [`WIZNET5K.chip`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.chip)
  - [`WIZNET5K.get_host_by_name()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.get_host_by_name)
  - [`WIZNET5K.get_socket()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.get_socket)
  - [`WIZNET5K.ifconfig`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.ifconfig)
  - [`WIZNET5K.ip_address`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.ip_address)
  - [`WIZNET5K.link_status`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.link_status)
  - [`WIZNET5K.mac_address`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.mac_address)
  - [`WIZNET5K.maintain_dhcp_lease()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.maintain_dhcp_lease)
  - [`WIZNET5K.max_sockets`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.max_sockets)
  - [`WIZNET5K.pretty_ip()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.pretty_ip)
  - [`WIZNET5K.pretty_mac()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.pretty_mac)
  - [`WIZNET5K.read()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.read)
  - [`WIZNET5K.read_udp()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.read_udp)
  - [`WIZNET5K.remote_ip()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.remote_ip)
  - [`WIZNET5K.remote_port()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.remote_port)
  - [`WIZNET5K.set_dhcp()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.set_dhcp)
  - [`WIZNET5K.socket_accept()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_accept)
  - [`WIZNET5K.socket_available()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_available)
  - [`WIZNET5K.socket_close()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_close)
  - [`WIZNET5K.socket_connect()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_connect)
  - [`WIZNET5K.socket_disconnect()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_disconnect)
  - [`WIZNET5K.socket_listen()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_listen)
  - [`WIZNET5K.socket_open()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_open)
  - [`WIZNET5K.socket_read()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_read)
  - [`WIZNET5K.socket_status()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_status)
  - [`WIZNET5K.socket_write()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.socket_write)
  - [`WIZNET5K.sw_reset()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.sw_reset)
  - [`WIZNET5K.unpretty_ip()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.unpretty_ip)
  - [`WIZNET5K.write()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k.WIZNET5K.write)

- [`**adafruit_wiznet5k_socket**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit-wiznet5k-socket)

- [`getaddrinfo()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.getaddrinfo)

- [`gethostbyname()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.gethostbyname)

- [`htonl()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.htonl)

- [`htons()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.htons)

- [`is_ipv4()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.is_ipv4)

- [`set_interface()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.set_interface)

- [`socket`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket)
  - [`socket.accept()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.accept)
  - [`socket.available()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.available)
  - [`socket.bind()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.bind)
  - [`socket.close()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.close)
  - [`socket.connect()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.connect)
  - [`socket.connected`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.connected)
  - [`socket.disconnect()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.disconnect)
  - [`socket.embed_recv()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.embed_recv)
  - [`socket.getpeername()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.getpeername)
  - [`socket.gettimeout()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.gettimeout)
  - [`socket.inet_aton()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.inet_aton)
  - [`socket.listen()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.listen)
  - [`socket.readline()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.readline)
  - [`socket.recv()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.recv)
  - [`socket.recv_into()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.recv_into)
  - [`socket.recvfrom()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.recvfrom)
  - [`socket.recvfrom_into()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.recvfrom_into)
  - [`socket.send()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.send)
  - [`socket.sendto()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.sendto)
  - [`socket.settimeout()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.settimeout)
  - [`socket.socknum`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.socknum)
  - [`socket.status`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_socket.socket.status)

- [`**adafruit_wiznet5k_dhcp**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit-wiznet5k-dhcp)

- [`DHCP`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dhcp.DHCP)
  - [`DHCP.maintain_dhcp_lease()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dhcp.DHCP.maintain_dhcp_lease)
  - [`DHCP.parse_dhcp_response()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dhcp.DHCP.parse_dhcp_response)
  - [`DHCP.request_dhcp_lease()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dhcp.DHCP.request_dhcp_lease)
  - [`DHCP.send_dhcp_message()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dhcp.DHCP.send_dhcp_message)

- [`**adafruit_wiznet5k_ntp**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit-wiznet5k-ntp)
  - [Implementation Notes](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#id1)

- [`NTP`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_ntp.NTP)
  - [`NTP.get_time()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_ntp.NTP.get_time)

- [`**adafruit_wiznet5k_dns**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit-wiznet5k-dns)

- [`DNS`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dns.DNS)
  - [`DNS.gethostbyname()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dns.DNS.gethostbyname)

- [`getrandbits()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_dns.getrandbits)

- [`**adafruit_wiznet5k_wsgiserver**`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit-wiznet5k-wsgiserver)

- [`WSGIServer`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver.WSGIServer)
  - [`WSGIServer.finish_response()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver.WSGIServer.finish_response)
  - [`WSGIServer.start()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver.WSGIServer.start)
  - [`WSGIServer.update_poll()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver.WSGIServer.update_poll)

- [`set_interface()`](https://docs.circuitpython.org/projects/wiznet5k/en/latest/api.html#adafruit_wiznet5k.adafruit_wiznet5k_wsgiserver.set_interface)

---

Source: https://maker.wiznet.io/scarlet/projects/adafruit-wiznet5k-library/
