The need for smarter switches
Our customers like our boards because they're incredibly small and easy to integrate, but increasingly we are seeing applications calling for "smarter" switches.
A smart switch (often called a managed switch) is a general term but it generally means a switch that can be configured to do some kind of extra functionality above just routing packets to the right ports, for example...
- Quality of Service: Routing specific types of packets with more priority to ensure that high-priority traffic is always given the most network capacity.
- Link Aggregation: Bundling individual ethernet ports to act like a single logical link to achieve increased data rates.
- VLANs: Separating devices based on a network into separate groups that can only communicate with each other.
- Port Mirroring: Duplicating network traffic on one port onto another port for analysis and monitoring.
In compact mobile platforms, the functionality of a smart managed switch can be highly advantageous. For example, Quality of Service can be used to ensure a stream from a specific sensor is always given priority to reduce sensing latency.
At BotBlox, we are developing a set of open-source software tools to allow configuration of our boards. This functionality, when coupled with the tiny size of our hardware, makes our switches the ideal solution for complex, specific, space-constrained networking inside mobile networks.
Our management software currently consists of two key components.
Board specific firmware
This is firmware that runs on a microcontroller embedded onto our boards. This generally takes one of two forms:
- Custom written firmware that runs on an embedded STM32 microcontroller. This firmware communicates directly with the ethernet switch IC on the board for configuration.
- Off-the-shelf firmware provided by the manufacturer of the switch IC that runs internally on a microcontroller inside the switch IC itself).
The purpose of the board specific firmware is to:
- Abstract the low level communication bus (usually MDIO) used for configuration away from the user.
- Provide non-volatile memory that allows configurations to be stored and loaded to the ethernet IC between power cycles.
- Provide a simpler way to set configuration variables for the user. For example, the user can send human readable commands to the microcontroller over UART, which is then parsed into MDIO.
Universal configuration software
This is software that runs on a command line interface and allows human readable configuration commands to be send to the switch. The aim of this software is to provide an easy to use switch configuration method that is common among all our boards.
The general structure of this mechanism is shown below.
- BotBlox Software receives user input and outputs serial on the computer USB port
- A USB to UART converter is used to convert this to logic-level serial
- UART commands are received by the microcontroller.
- The BotBlox Firmware converts these UART commands to MDIO commands to configure the Ethernet IC.
Management Abilities on our boards
As a new feature for our products, only SwitchBlox and SwitchBlox Nano currently have management capability, and only a subset of the total possible features are currently implemented.
The table below shows the status of software and firmware for all our boards, as of August 2021.
|Board||Switch IC||Embedded MCU||Current Firmware State||Current Software State||Current functionality||Future functionality|
|SwitchBlox||IP175G||STM32L011||Implemented||Implemented||VLAN (Port and Tag)
QoS (Port basedf, 802.1p, Diffserve)
|SwitchBlox Nano||IP175G||STM32L011||Implemented||Implemented||VLAN (Port and Tag)
QoS (Port basedf, 802.1p, Diffserve)
|SwitchBlox Rugged||KSZ8567||STM32L011||Unimplemented||Unimplemented||None||Various, see KSZ8567S functionality|
|GigaBlox Rugged||VSC7511||None, use VSC7511 internal MCU||Third-party||NA||Various, see VSC7511 functionality||Various, see VSC7511 functionality|
Getting Started on the Software
Currently all our boards ship without firmware, so to get started you will need to upload the firmware directly. We recommend reading the software guide, and also to get in touch with us so we can support your application.