Look on the circuit board of nearly any electronic device made since the 1980s. If the device intelligently transmits or receives data, you’re likely to find the acronyms MOSI and MISO silkscreened onto the PCB. Rather than indicating a source of salty soy soup, those letters stand for Master Out/Slave In, and Master In/Slave Out.
These pins describe the Serial Peripheral Interface or SPI. SPI is a way to control multiple electronic devices (called Slaves) from a single command unit (called the Master). How did this terminology come to be so prevalent?
It’s actually pretty old. In the 1880s (when the American Civil War was still fresh in many minds), rail engineers worked out a way to use two or more locomotives to pull a load that one locomotive could not handle on its own. To do this safely, they devised a way to make a single set of controls in one locomotive drive all the other locomotives in the train. The railroaders used the “master/slave” metaphor to describe that relationship, which set the tone for a century of other engineers to do the same.
If you put on your “Technologically Brilliant but Interpersonally and Sociologically Inept” goggles, it almost looks like it makes sense. The engineers who developed SPI in the late 1970s had to come up with a shorthand to indicate that one component controlled the data dialogue and gave the orders, while the other took the orders and only responded within a limited set of expected norms. Master/Slave was the engineering norm.
But these words are not appropriate and we at Make: will stop using those terms in our books, magazine, and online articles. Unfortunately, that can’t erase the millions of MOSI/MISO boards already in existence. What do we do about them?
Following what we think will become standard practice, from now on, our default for MOSI/MISO will be to call them “Main Out/Serial In” and “Main In/Serial Out”, a practice already being followed by Adafruit and others. When more information is available about a specific circuit, the initials can become more precise:
– When the main controller is an Arduino or other microcontroller, the letter M will stand for Microcontroller.
– When the main controller is a RaspberryPi or other single-board computer, the letter M will stand for Microcomputer.
– When the M is specifically connected to a device that reads the environment, the S will stand for Sensor.
So an Arduino reading the temperature from a smart thermistor would be “Microcontroller In/Sensor Out”, while a RaspberryPi sending data to an SD card would be “Microcomputer Out/Serial In”. We acknowledge that this re-imagining is not perfect. It’s just that the old way was even less perfect.
In the meantime, the Open Source Hardware Association (OSHWA) has put forth a proposal to rename “master” and “slave” components to “controller” and “peripheral”. As we wait for COPI/CIPO boards to become the norm, we welcome these changes to nomenclature throughout the electronics industry.