Skip to content

MPF config file reference: fast: net: settings (I/O boards & I/O loop)

MPF 0.57 Configuration Reference for FAST Pinball Hardware

This page is parrt of the reference material for users of the Mission Pinball Framework and FAST Pinball hardware. If you're new to MPF and FAST, read the MPF + FAST overview first. If you are a programmer writing your own software, see our Developer's Reference Guide.

Note that this guide only applies to MPF 0.57. If you're using MPF 0.56 or older, then the FAST Pinball configuration section of the Mission Pinball website has everything you need.

This guide shows you all the settings for the fast: net: section of your MPF config file which is where you configure your FAST I/O boards and I/O loop.

The net: section contains settings for the "NET" processor on the FAST Pinball controller. For FAST Modern Platform controllers, the NET processor is responsible for the I/O loop network, I/O boards, switches, and drivers. The net: section (which is a subsection of the fast: section) contains configuration details of your I/O loop (which boards in what order), as well as default settings for those devices and other settings related to the NET processor.

Minimal config example

Click the (+) plus circle for notes and comments on that line.

Minimum MPF 0.57 config file for FAST Neuron
# config_version=6

hardware:
    platform: fast  #(1)!

fast:
  net:
    controller: neuron  #(2)!
    io_loop:
      my_first_board:
        model: FP-I/O-3208
        order: 1
  1. This is a general MPF setting which tells MPF to use the FAST Pinball hardware platform. This setting is required. (Note that the FAST platform does not require a driverboards: section in your config file.)
  2. This config is the same regardless of whether you have a Neuron or Nano Controller. Change this line to controller: nano for a Nano.

Full config example

Click the (+) plus circle for notes and comments on that line.

Full MPF 0.57 fast: section showing all settings (with defaults)
# config_version=6

hardware:
    platform: fast #(1)!

fast:
  net:
    controller: neuron
    io_loop:
      some_board: #(2)!
        model: FP-I/O-3208
        order: 1
      cabinet_board:
        model: FP-I/O-0024
        order: 2
      another_io_board:
        [Etc. one entry for each board, with the model and order]
    port: auto
    baud: 921600
    debug: false
    watchdog: 1s
    default_quick_debounce_open: 2ms
    default_quick_debounce_close: 2ms
    default_normal_debounce_open: 4ms
    default_normal_debounce_close: 4ms
  exp:
    [covered in the Expansion Board section of the docs]
  1. This is a general MPF setting which tells MPF to use the FAST Pinball hardware platform. This setting is required. (Note that the FAST platform does not require a driverboards: section in your config file.)
  2. In the io_loop: section, you'll have a sub-section for each IO board. (Whatever you call each sub-section is will be the name of that board. Then you specify the board model and position in the loop for each board.)

net: required settings

The following settings are required in your fast: net: section when using MPF with a Neuron Controller.

controller:

The type of FAST Pinball controller that's connected to the NET port. Valid options are:

  • neuron
  • nano
  • sys11
  • wpc89
  • wpc95

io_loop:

This consists of a series of sub-entries, one for each I/O board in your I/O loop network. This is similar to other device lists in MPF, like lights: or coils: where you give a device a name, and then under that name you have settings for that specific device. In this case the device you're naming is the I/O board itself.

Here's an example I/O board layout followed by how it's io_loop: config section would look in MPF:

Example io_loop: section for the machine above
fast:
  net:
    controller: neuron
    io_loop:
      cab:
        model: FP-CAB-0001
        order: 1
      1616:
        model: FP-I/O-1616
        order: 2
      "0804":  # (1)!
        model: FP-I/O-0804
        order: 3
      3208:
        model: FP-I/O-3208
        order: 4
  1. The 0804 board is in quotes because it's a number and starts with 0. If you don't put it in quotes, the YAML processor will think it's "804" instead of "0804". Of course if you name your board something else like "left_side" or "playfield" you don't need quotes. If you use underscores but the rest of the characters are digits, then you also must use quotes. e.g. 1616_1: will not work, but "1616_1": will.

You cannot use a dash in your I/O board name

Since MPF uses the dash to parse the I/O board name from the driver number, you cannot use a dash in your I/O board name. e.g. calling a board left-side will not work because then the driver number would be left-side-1 and that would confused MPF. (You can use underscores though, so left_side and then driver numbers like left_side-4 are fine.)

model:

The model number of this FAST I/O board, which you can find printed on the board or in the product documentation. Note that the final number(s) after the dash is the "hardware revision" number and does not matter to the software or MPF. So you can leave it off, or include it, your call. For example, FP-I/O-3208-2B is the same as FP-I/O-3208 and can be entered as either.

Valid entries include:

  • FP-I/O-3208
  • FP-I/O-1616
  • FP-I/O-1604
  • FP-I/O-0804
  • FP-I/O-0024
  • FP-CAB-0001

order:

This board's order in the I/O loop, specified simply as order: 1, order: 2 etc. The first board "out" is 1, then 2, etc. This list must start with 1 and not skip numbers. A maximum of 9 I/O boards are supported. If your physical boards do not match the order configured here, MPF will show an error. (This is a safety feature to prevent boards accidentally connected in the wrong order from controlling unexpected devices.)

net: optional settings

The net: section has lots more settings which you can use to further customize your FAST Pinball hardware. Any settings shown here that you do not include in your own config will use the default values shown in the section title.

port: auto

Specifies the serial port the NET processor is connected to. Starting in MPF 0.57, the serial port detection can be automatic, which is the default:

port: auto

So if you have a port setting in your file, you can remove it.

That said, you also have the option to specify a serial port name which will cause MPF to connect directly to that port without using the auto-detection process.

If you choose to manually enter port names, you can add more than one, separated by commas. In this case, MPF will try to connect to the first port in the list, and if that port does not exist, it will try the next one, etc. until it finds a port that exists.

port: /dev/tty.usbmodem11101, /dev/tty.usbmodem14401, com3

baud: 921600

The baudrate MPF will use for this port. The NET port is always 921600.

watchdog: 1s

Sets the watchdog timer for the NET port. The watchdog timer runs as part of the Neuron firmware, and requires a continuous "ping" from MPF in order for the Neuron to keep the drivers active. If MPF crashes or otherwise breaks, the watchdog messages will stop being sent, and the Neuron will disable any drivers that are currently active and will not allow drivers to activate. This is a safety feature to prevent a burned up coil staying on if MPF crashes or the connection is lost.

The default value of 1s means that your drivers will be active for a max of 1 second after MPF crashes or ends.

The Neuron has a green LED (D5) 🟢 in the upper left corner labeled BLANKING. When this LED is ON, the blanking circuit is enabled which means the watchdog is expired and drivers are disabled.

Details for the watchdog timer are covered in the FAST Serial Protocol docs.

Default switch debounce settings

MPF has a simple debounce: setting for switches which can be either debounce: quick or debounce: normal. (What is switch debouncing? See the MPF documentation Debouncing in Pinball Machines for the full details.) The quick overview is you want "quick" for fast-response things, like flippers, pop bumpers, slingshots, etc., and "normal" for everything else. But what exactly do those "quick" and "normal" settings mean? That is left up to the hardware platform.

Switches in FAST Pinball can have separate settings for how much time passes for a switch to debounce in both the "open" and "close" motions. The following four settings let you specify the default debounce settings, both open and close, for switches set as "quick" or "normal".

Note that you can override this on an individual switch basis, giving you ultimate flexibility. These settings are just the defaults.

default_quick_debounce_open: 2ms
default_quick_debounce_close: 2ms
default_normal_debounce_open: 4ms
default_normal_debounce_close: 4ms

debug: false

Enables detailed FAST Serial Protocol message logging.

When enabled (debug: true), all serial messages exchanged over the NET port, both sending and receiving, are included in the MPF log. Once you have logs with this option enabled, you can see all the port-related messages by filtering the log for [NET]. For example:

11:20:47,705 : INFO : [NET] : >>>> ID:
11:20:47,706 : INFO : [NET] : <<<< ID:NET FP-CPU-2000  02.13
11:20:47,706 : INFO : [NET] : >>>> CH:2000,FF
11:20:47,706 : INFO : [NET] : <<<< CH:P
11:20:47,707 : INFO : [NET] : >>>> WD:1
11:20:47,707 : INFO : [NET] : >>>> NN:00
11:20:47,707 : INFO : [NET] : <<<< NN:00,FP-I/O-3208-3   ,01.10,08,20,00,00,00,00,00,00
11:20:47,707 : INFO : [NET] : <<<< WD:P
11:20:47,708 : INFO : [NET] : >>>> NN:01
11:20:47,708 : INFO : [NET] : <<<< NN:01,FP-I/O-0804-3   ,01.10,04,08,00,00,00,00,00,00
11:20:47,708 : INFO : [NET] : >>>> NN:02
11:20:47,709 : INFO : [NET] : <<<< NN:02,FP-I/O-1616-3   ,01.10,10,10,00,00,00,00,00,00
11:20:47,709 : INFO : [NET] : >>>> NN:03
11:20:47,709 : INFO : [NET] : <<<< NN:03,FP-I/O-0024-3   ,01.10,08,18,00,00,00,00,00,00
11:20:47,753 : INFO : [NET] : >>>> SL:00
11:20:47,754 : INFO : [NET] : <<<< SL:00,01,02,04

Lines with >>>> are messages from MPF to the NET port, and <<<< are messages from the NET to MPF.

console_log: none

The log level for the console log for this port. Options are full, basic, or none. See the MPF Documentation for details.

file_log: basic

The log level for the file log for this port. Options are full, basic, or none. See the MPF Documentation for details.

N or > jump the next page, P or < for previous, search with S or ?