IoTether Classic

IoTether 3D view.jpg
IoTether front.jpg
IoTether back.jpg
For the IoTether Mini, see IoTether Mini.

IoTether Classic (I-O-tether) is a multi-function USB device designed specifically for remote debugging and management of IoT devices, single-board computers, and many other embedded systems.


  • 5x UART (2 can be reconfigured for SPI/JTAG)
  • 4x signal switches
  • 4x power switches
  • 1x I2C
  • 1x Ethernet output (10/100)
  • 2x USB 2.0 output (high speed)

How to use

First, solder all components onto the PCB (The Ethernet jack is a WizNet RB1-125BAG1A; the USB connector is probably something from Würth Elektronik).

DC power input is +5V center positive. Minimum required current is 500 mA without any other devices plugged into it. Polyfuse should be rated for 2.5 A.

No firmware programming is required.


No additional drivers or software required. Should enumerate automatically under all Linux distributions.


Controller chip is a Microchip/SMSC LAN9514 with optional DIP socket for 93C46 EEPROM in 8-bit mode. Should be plug-and-play on Raspberry Pis (since they use the exact same chip). If compiling a custom Linux kernel, be sure to enable the CONFIG_USB_SMSC95XX option in your config file.

The Ethernet controller can be used for any purpose that involves the use of a 10/100 USB NIC, including for Internet access. In the context of IoTether, the Ethernet output is used to create a separate LAN/network for IoT devices, using the host system as a router, whereby Internet access controlled by tools like Universal Relay and/or Linux network namespaces and ip[6]tables (see Linux Networking Primitives)

USB-to-UART (FT4232H)

Controller chip is a FTDI FT4232H with optional DIP socket for 93C46 EEPROM in 16-bit mode. Enable ftdi_sio driver in Linux kernel. May also be used with flashrom or other similar tools that are compatible with FTDI FT*232H chips.

All 8 pins of the FTDI MPSSE are broken out onto a 12-pin header for each of the four channels; the pinout is as follows:

+3.3V +5V

In the context of IoTether, the UART outputs are used to attach to the internal serial consoles of embedded devices for the purposes of remote debugging.

USB-to-UART and I2C

The controller chip is a Microchip MCP2221A. The VDD pin is connected to +5 volts. The UART is connected directly to a MAX232 (Texas Instruments variant), giving it RS232 signal levels. The I2C bus is broken out onto a 4-pin connector labeled J408, pinout being (4-GND 3-SCL 2-SDA 1-+5V)

The UART can be controlled using the cdc_acm driver present in the Linux kernel. The I2C can be controlled using the hid_mcp2221 driver already present in the mainline Linux kernel. Additional functionality can also be done by reading and writing from and to the corresponding hidraw interface (run dmesg | tail to see which number it is).

The I2C bus has a PCF8574 on I2C bus address 0x3c and a MCP79410 on I2C bus address 0x57 (1kb EEPROM) and 0x6f (real-time clock registers + 64 byte SRAM). The outputs of the PCF8574 are connected to four optocouplers, three P-channel MOSFET switches, and one relay. Except for the relay output, all outputs are active low. See the schematic for exact connection information.

In the context of IoTether, the four optocouplers are used to control various buttons of interest (power, reset, pair, WPS, etc.) on IoT devices, by connecting the C and E contacts of the optocoupler to simulate a button press (see Optocoupler Switcher). The relay and P-channel MOSFETs are used to switch on and off the power of a particular IoT device. The MOSFETs provide +5V power up to a maximum current of 1.5 A per channel. The relay can be used for currents up to about 4 amps; the DC barrel jack next to it is a power input, and its ground is completely isolated from the normal system ground.

TODO: Next hardware revision requires breakout of the four other GPIO pins on the MCP2221A.

To do

  • Fix FT4232H VPHY/VPLL wiring (ferrite beads should have been connected to 3.3v, not 1.8v)
  • LAN9514 should have had separate VDD33A (3.3v analog) supply.

For OSHWA certification

IoTether Classic is Certified Open Source Hardware under OSHWA UID US002065.

Open Source Licenses

Category License
Hardware (PCB design files) X11/Expat (The license refers to software, but the hardware is also included).
Software Not applicable
Documentation (this page) CC-BY-SA 4.0