# Setup Raspberry Pi Pico for MAC Address Display
## Intro
This guide explains how to set up a Raspberry Pi Pico with an OLED display to show the MAC address of a Raspberry Pi when powered on. This is useful for commissioning new Raspberry Pi usb-remote servers.
In particular, if you are using this at DLS, we expect the Pi Server to be deployed into a beamline instrumentation network. You need the Mac address of the Pi to create a DHCP reservation for it in Infoblox. Having the Pico display the MAC address means that your commissioning process is:
- Put a pre-configured Raspberry Pi usb-remote server microSD card in a Raspberry Pi and power it on.
- Plug the Pico into the Raspberry Pi USB port and wait for the MAC address to be displayed.
- Use the displayed MAC address to create a DHCP reservation in Infoblox.
- Take the Raspberry Pi to the beamline, connect it to the instrumentation network and power it on.
## Hardware Required
- Raspberry Pi Pico (with micro USB connector)
- A display for the Pico e.g. 1.3" I2C OLED Display
- The next heading provides code for this specific display - other displays will need a small amount of code modification

## Code on the Pico
- flash the Pico with the UF2 for MicroPython from
- clone https://github.com/samveen/pico-oled-1.3-driver and copy the python files to the Pico root filesystem
- save the following code as `main.py` on the Pico root filesystem.
See for more details on using the display.
```python
import select
import sys
import PicoOled13
# Set up the poll object
poll_obj = select.poll()
poll_obj.register(sys.stdin, select.POLLIN)
def main():
# Initialize the display
display = PicoOled13.get()
display.clear()
display.text("Listening ...", 0, 0, 0xFFFF)
display.show()
sys.stdout.write("awaiting data ...\r")
line = 0
while True:
# Wait for input on stdin, waiting for 1000 ms
poll_results = poll_obj.poll(1000)
if poll_results:
# Read the data from stdin (read data coming from PC)
data = sys.stdin.readline().strip()
sys.stdout.write("received data: " + data + "\r")
# Write the data to the display
if len(data) > 0:
if line == 0:
display.clear()
display.text(data, 0, line * 10, 0xFFFF)
line = (line + 1) % 7 # wrap around after 7 lines
display.show()
main()
```
## Sample Results
When the Pico is connected to a Raspberry Pi usb-remote server, it will display output similar to the following:
