Getting started with preinstalled MicroPython¶
10BASE-T1S driver support¶
The ESP32 micro used on the ManT1S enjoys broad software support, but support for the LAN8670 10BASE-T1S PHY has been a more recent development. It was pretty much when I saw support for this chip land in the ESP Component Registry in 2024 that I decided the time was ripe to get started on the ManT1S.
Of course, ESP-IDF support is only the starting point, it took more effort to get it into other frameworks people may want to use. I'm happy to report that by now the ManT1S and its LAN8670 PHY is fully supported upstream in Arduino, ESPHome and MicroPython! This was the minimum software support I wanted to achieve.
Why MicroPython by default?¶
The ManT1S will ship with MicroPython preinstalled. Why? Because it's awesome of course! :) For most deeply embedded software, you need to build your application code to get a binary that does something and then flash that binary to the board. It makes little sense to ship with "some" Arduino code preinstalled for instance, because what should it do? I don't know your application!
With MicroPython, on the other hand, the board ships with a runtime and some handy included libraries, allowing you to start experimenting right away either by copying some simple scripts to the device or in a live session using the REPL (read-eval-print-loop). If you have any experience with Python on a computer, this should be familiar; it's a great way to start exploring the system without having to install or compile any software first. It's also a great way to ensure your hardware is working. Even if you intend to use a different development environment, please do a quick check of your board with MicroPython first before you blow it away because then, if you have an issue, you won't know if your problem is with the hardware or your software.
Getting connected¶
For the remainder of this getting started guide, I am going to assume you are working with a ManT1S connected to your main network through a ManT1S-Bridge, since this is the simplest way to get started. Preferably the ManT1S-Bridge should be connected to a PoE switch so it can power itself and the mixing segment using PoE power. If this is not the case, extra steps will be needed to power the mixing segment, for instance through a ManT1S as shown in the diagram in the the first guide or using a ManT1S-Gadget.
The preinstalled MicroPython comes with a boot.py file that, on boot, automatically configures the hostname to mant1s-XXXXXX (where the last 6 digits are a unique code based on the device's MAC address), and then tries to get an IP address through DHCP. In your network router admin interface, you may see the device show up like this:

If you see this, congratulations! You now know your ManT1S hardware is working and connected to your network. :) You can go a bit further and try to ping it from a computer:
$ ping mant1s-67b54
PING mant1s-67b54b.inet.mynextlight.net (192.168.1.183) 56(84) bytes of data.
64 bytes from mant1s-67b54b.inet.mynextlight.net (192.168.1.183): icmp_seq=1 ttl=64 time=1.62 ms
64 bytes from mant1s-67b54b.inet.mynextlight.net (192.168.1.183): icmp_seq=2 ttl=64 time=0.910 ms
64 bytes from mant1s-67b54b.inet.mynextlight.net (192.168.1.183): icmp_seq=3 ttl=64 time=0.884 ms
64 bytes from mant1s-67b54b.inet.mynextlight.net (192.168.1.183): icmp_seq=4 ttl=64 time=0.855 ms
64 bytes from mant1s-67b54b.inet.mynextlight.net (192.168.1.183): icmp_seq=5 ttl=64 time=0.809 ms
^C
--- mant1s-67b54b.inet.mynextlight.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.809/1.015/1.620/0.304 ms
If your router doesn't automatically make the device available by its hostname through its DNS service, you may need to use the IP address available in your router admin interface in the ping command instead of the hostname.
Getting an interactive session (REPL)¶
There are two ways to get a REPL session to the ManT1S: either through a serial interface such as the wESP32-Prog-C (available as a campaign add-on with free shipping), or using MicroPython's WebREPL, in which case you don't need any extra hardware. I'll now explain both options in more detail.
Getting a REPL using the wESP32-Prog-C¶
The wESP32-Prog-C programmer (initially designed for the wESP32 project) fits in the J3 footprint of the ManT1S with the USB connector toward the edge of the board. If you choose, you can solder it in permanently (which may be nice for a board you use for development), you can also install a 6-pin female header to plug it into or, for very short-term programming needs, you can use a hack such as this to keep it in place:

A rubber band is wrapped around the wESP32-Prog-C, wrapped around the other side of the board and then the other end of the rubber band wraps some of the wESP32-Prog-C pins sticking through the board. I know, it's hokey! But it works. :)
The serial programmer is very versatile and it's recommended that you have one available. You can not only use it to get a MicroPython REPL and load scripts to the ManT1S, you can also use it in the future to load newer versions of MicroPython using esptool. Plus, you will need it if you want to load Arduino or ESPHome firmware instead of the preinstalled MicroPython. In addition, it also allows you to power the board from USB. You can even use it to power the mixing segment from USB with Power Delivery (I will cover how to do this in a future update).
Once you have the wESP32-Prog-C connected, you can use a serial terminal program or the mpremote tool to get a REPL. If no other serial devices are connected, you can simply run mpremote without any extra arguments:
$ mpremote
Connected to MicroPython at /dev/ttyUSB0
Use Ctrl-] or Ctrl-x to exit this shell
>>>
Hit Enter to get the prompt to show, and you can start typing Python commands!
Getting a REPL using WebREPL¶
WebREPL provides a way to get a MicroPython REPL session over the network instead of a serial interface. This is extremely handy once you're dealing with more than one device, or if the devices are built into a machine or building and hard to reach. What's even handier is that ManT1S devices ship with the WebREPL service preconfigured and ready to go! So if you intend to use MicroPython on the ManT1S and have a ManT1S-Bridge, you can most likely develop your application without ever needing a serial programmer.
After downloading the WebREPL code from Github, you can either use the web GUI version or the CLI script. To open the web GUI, open webrepl.html in a browser. Enter the ManT1S hostname or IP after the ws:// in the top left box and don't forget to add the :8266 port specification! You will be asked for the password, the default password is mant1s, followed by Enter. Note that the characters of the password you type will not be echoed back. After that you will get a REPL prompt and also be able to use the handy controls on the right to upload and download files to and from the MicroPython filesystem.

The other way to use WebREPL is with the CLI version. Here's an example:
$ python webrepl_cli.py mant1s-67b54b
Password:
op:repl, host:mant1s-67b54b, port:8266, passwd:mant1s.
Remote WebREPL version: (1, 27, 0)
Use Ctrl-] to exit this shell
>>>
You may need to hit Enter after logging in to get the interactive prompt to show.
I have a REPL, now what?¶
Now the fun starts. :) Explaining everything you can do is obviously beyond the scope of this "getting started" guide, but I'll provide a couple of examples of things you can immediately try.
As mentioned above, the preloaded boot.py automatically configures the LAN (T1S) connection. You can query some properties of the connection through the lan object:
>>> lan.ifconfig()
('192.168.1.183', '255.255.255.0', '192.168.1.1', '192.168.1.1')
The ManT1S MicroPython build comes with a handy ping module preinstalled. You can check your connection by pinging a server:
>>> from ping import ping
>>> ping('mant1s.net')
PING mant1s.net (107.175.32.205): 64 data bytes
84 bytes from 107.175.32.205: icmp_seq=1, ttl=50, time=38.795000 ms
84 bytes from 107.175.32.205: icmp_seq=2, ttl=50, time=39.065000 ms
84 bytes from 107.175.32.205: icmp_seq=3, ttl=50, time=38.756000 ms
84 bytes from 107.175.32.205: icmp_seq=4, ttl=50, time=39.426000 ms
4 packets transmitted, 4 packets received
(4, 4)
>>>
The requests module is also built-in. You can use it to get data from APIs on the Internet, such as the current time in a given time zone:
>>> import requests
>>> requests.get('https://www.timeapi.io/api/time/current/zone?timeZone=America/Denver').json()
{'milliSeconds': 819, 'month': 12, 'hour': 17, 'dayOfWeek': 'Tuesday', 'day': 16, 'dateTime': '2025-12-16T17:16:47.8197177', 'time': '17:16', 'dstActive': False, 'year': 2025, 'minute': 16, 'seconds': 47, 'timeZone': 'America/Denver', 'date': '12/16/2025'}
>>>
MicroPython has a package manager called mip preinstalled as well. You can use it to download and install modules that are not preinstalled. For instance, you can use it to install a driver for common SSD1306 based displays as shown below:
>>> mip.install('ssd1306')
Installing ssd1306 (latest) from https://micropython.org/pi/v2 to /lib
Copying: /lib/ssd1306.mpy
Done
>>> import ssd1306
>>>
These are just a few examples, but they show you the power of what can be done with just a few lines of code. So hit the MicroPython docs and, for learning how to deal with the ManT1S hardware, you may want to pay particular attention to the ESP32 reference section. I hope this gets your creative juices flowing, you can do quite a lot with very little code!
If you want to see more extensive examples, please check out the ManT1S demo code repository.