Mono Docs

Getting started

Before plugging the Development Kit in for the first time, it’s worth familiarizing yourself with both: the ports on the back of the device as well as the First boot procedure.

Connectors

Development Kit ports

More detailed information about the ports is provided in Hardware description

Port (left to right)Name
0USB-C power
1USB-C
2USB-C UART
3eth1 (1 Gb RJ-45)
4eth2 (1 Gb RJ-45)
5eth0 (1 Gb RJ-45)
6eth3 (10 Gb SFP+)
7eth4 (10 Gb SFP+)

First boot

  1. Connect the power cable and the UART cable to your computer. ( Power is left most, UART is right most. )

  2. Open a serial terminal:

    tio /dev/ttyUSB0

    (Adjust the device path if needed—check ls /dev/ttyUSB* to find yours.)

  3. You should now see output from the device.

Press the reset button to observe the full boot sequence. The device will boot through U-Boot, which displays a countdown before loading the OS. You can either:

  • Let it continue — boots into OpenWrt on the eMMC.
  • Press any key — interrupts the countdown and drops you into the U-Boot shell.

When attaching the USB cable to the router’s UART, in dmesg you will see something like:

[  292.530676] usb 7-2: new full-speed USB device number 2 using xhci_hcd
[  292.682522] usb 7-2: New USB device found, idVendor=0403, idProduct=6015, bcdDevice=10.00
[  292.682529] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  292.682532] usb 7-2: Product: FT230X Basic UART
[  292.682534] usb 7-2: Manufacturer: FTDI
[  292.682536] usb 7-2: SerialNumber: DK0JTX4I
[  292.710533] usbcore: registered new interface driver ftdi_sio
[  292.710557] usbserial: USB Serial support registered for FTDI USB Serial Device
[  292.710742] ftdi_sio 7-2:1.0: FTDI USB Serial Device converter detected
[  292.710783] usb 7-2: Detected FT-X
[  292.720684] usb 7-2: FTDI USB Serial Device converter now attached to ttyUSB0

Recovery Linux

To explore the firmware or troubleshoot issues, enter the following in U-Boot:

=> run recovery

This boots a minimal Linux environment from the firmware region of the selected boot medium. While its primary purpose is recovering a broken main OS, it’s also useful for low-level system maintenance and learning how the components work.

The default user is root with no password.

To exit Recovery Linux and boot into OpenWrt:

$ reboot

If OpenWrt ever fails to boot — or you want to re-flash it from scratch — recovery Linux is where you do it; see Installing OpenWrt.

Status LED

During boot, U-Boot runs a series of hardware tests to verify that all I2C devices are present and functioning correctly. This includes power sensors, thermal sensors, the fan controller, power delivery controller, EEPROM, and more.

LED ColorMeaning
Green (solid)All hardware tests passed
Red (solid)One or more tests failed
Orange (pulsing)Booted into Recovery Linux
White (solid)Booted into OpenWrt

If the LED turns red, reset the device and check the U-Boot output via the serial console—it will report which chip failed its test.

Reading serial number and MAC addresses from EEPROM

From U-Boot

=> i2c dev 3
Setting bus to 3
=> i2c md 0x50 0.2 100
0000: 4d 41 47 43 00 01 a6 3f 4d 6f 6e 6f 20 47 61 74    MAGC...?Mono Gat
0010: 65 77 61 79 20 44 65 76 65 6c 6f 70 6d 65 6e 74    eway Development
0020: 20 4b 69 74 00 00 00 00 4d 54 2d 52 30 31 41 2d     Kit....MT-R01A-
0030: 30 33 32 36 2d 30 30 34 30 34 00 00 00 00 00 00    0326-00404......
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060: 00 00 00 00 00 00 00 00 e8 f6 d7 00 17 df e8 f6    ................
0070: d7 00 17 e0 e8 f6 d7 00 17 e1 e8 f6 d7 00 17 e2    ................
0080: e8 f6 d7 00 17 e3 ff ff ff ff ff ff ff ff ff ff    ................
0090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................

From recovery linux

root@recovery:~# echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-3/new_device
root@recovery:~# hexdump -C /sys/bus/i2c/devices/3-0050/eeprom
00000000  4d 41 47 43 00 01 a6 3f  4d 6f 6e 6f 20 47 61 74  |MAGC...?Mono Gat|
00000010  65 77 61 79 20 44 65 76  65 6c 6f 70 6d 65 6e 74  |eway Development|
00000020  20 4b 69 74 00 00 00 00  4d 54 2d 52 30 31 41 2d  | Kit....MT-R01A-|
00000030  30 33 32 36 2d 30 30 34  30 34 00 00 00 00 00 00  |0326-00404......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000060  00 00 00 00 00 00 00 00  e8 f6 d7 00 17 df e8 f6  |................|
00000070  d7 00 17 e0 e8 f6 d7 00  17 e1 e8 f6 d7 00 17 e2  |................|
00000080  e8 f6 d7 00 17 e3 ff ff  ff ff ff ff ff ff ff ff  |................|
00000090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00001000
root@recovery:~# echo 0x50 > /sys/bus/i2c/devices/i2c-3/delete_device

With Python

In case you have installed an operating system that comes with Python 3 or installed Python 3 manually:

sudo python3 - <<"EOF"
import os, fcntl
fd = os.open("/dev/i2c-3", os.O_RDWR)
fcntl.ioctl(fd, 0x0706, 0x50)
os.write(fd, bytes([0x00, 0x0]))
print(os.read(fd, 160))
EOF

And if you want just serial number:

sudo python3 - <<"EOF"
import os, fcntl
fd = os.open("/dev/i2c-3", os.O_RDWR)
fcntl.ioctl(fd, 0x0706, 0x50)
os.write(fd, bytes([0x00, 0x28]))
print(os.read(fd, 64).split(b"\x00")[0].decode())
EOF

Next steps

Using OpenWrt (default)

The Development Kit ships with OpenWrt pre-installed — LuCI (the web interface) and all the standard OpenWrt package feeds are already there. To start using it, connect a client to one of the RJ-45 ports and open https://192.168.1.1 in your browser (accept the self-signed-certificate warning), then configure the device in LuCI.

To install extra packages, update the feed index and add what you need:

apk update
apk add <package>

Updating the whole system is handled by Attended Sysupgrade — see Installing OpenWrt → Updating.

LuCI login

Installing an alternative OS

If you’d prefer to run Debian or Mono SDK Linux instead, see Alternative operating systems. This is coming soon.