Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 32 additions & 79 deletions docs/config/fast.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,81 +11,52 @@ title: "fast: Config Reference"
|[machine](instructions/machine_config.md) config files|**YES** :white_check_mark:|
|[mode](instructions/mode_config.md) config files|**NO** :no_entry_sign:|

The `fast:` section of your machine-wide config is where you configure
hardware options that are specific to the FAST Pinball Controller. Note
that we have a how to guide which includes
[all the FAST-specific settings](../hardware/fast/index.md) throughout your entire config file, so be sure to read that
if you have FAST hardware.

``` yaml
fast:
ports: com3, com4, com5
```
# 2026 Documentation Update

## Required settings
The following config documentation is relevant for MPF 0.57.4 and 0.80.0. Last updated Dec 18, 2025.

The following sections are required in the `fast:` section of your
config:
The `fast:` section of your machine-wide config is where you configure hardware options that are specific to the FAST Pinball Controller.
The [FAST website](https://fastpinball.com/mpf/config/) also has thorough documentation and examples for MPF 0.57 and 0.80 compatible configurations.

### default_normal_debounce_close:
## fast: config reference

Single value, type: `time string (ms)`
[Instructions for entering time strings](instructions/time_strings.md). Defaults to empty.
The top-level `fast:` key contains subsections for each of the various component networks available with FAST.
You do not need to include any section that is not present in your machine.

Specifies the default value for the debounce time for switches that are
configured with `debounce: normal` when they close.
### net:

Even though this is listed as a required setting, this entry is in the
`mpfconfig.yaml` file, (with a value of `10ms`), so you don\'t have to
enter it here unless you want to override that.
This contains the configuration for the NET IO boards, which handle switches and drivers.
See [fast:net: config reference](fast/fast_net.md) for details.

Also, keep in mind that this setting is only a default. You can override
it for any switch in that switch\'s config.
### exp:

### default_normal_debounce_open:
This contains the configuration for the EXP boards, which handle lights and various motors and accessories.

Single value, type: `time string (ms)`
[Instructions for entering time strings](instructions/time_strings.md). Defaults to empty.
### exp_int:

Specifies the default value for the debounce time for switches that are
configured with `debounce: normal` when they open.
When using the Raspberry PI directly connected to a Neuron board, the Neuron's LED ports are not accesible on the normal `exp` bus.
To enable use of these headers, define the `FP-EXP-2000` model board in the `exp_int` instead of `exp` configuration.
If using other EXP boards, you still define those on the normal `exp` configuration.
For an example, see this [pull request](https://github.com/missionpinball/mpf/pull/1895) on Github.

Even though this is listed as a required setting, this entry is in the
`mpfconfig.yaml` file, (with a value of `10ms`), so you don\'t have to
enter it here unless you want to override that.
### aud:

Also, keep in mind that this setting is only a default. You can override
it for any switch in that switch\'s config.
This contains the configuration for sounds played through the FAST Audio board.

### default_quick_debounce_close:

Single value, type: `time string (ms)`
[Instructions for entering time strings](instructions/time_strings.md). Defaults to empty.
# Pre-2024 Documentation

Specifies the default value for the debounce time for switches that are
configured with `debounce: quick` when they close.
The following documentation was current in mid 2023, some settings and structures may have changed since then:

Even though this is listed as a required setting, this entry is in the
`mpfconfig.yaml` file, (with a value of `2ms`), so you don\'t have to
enter it here unless you want to override that.
## fast: config settings

Also, keep in mind that this setting is only a default. You can override
it for any switch in that switch\'s config.

### default_quick_debounce_open:

Single value, type: `time string (ms)`
[Instructions for entering time strings](instructions/time_strings.md). Defaults to empty.

Specifies the default value for the debounce time for switches that are
configured with `debounce: quick` when they open.

Even though this is listed as a required setting, this entry is in the
`mpfconfig.yaml` file, (with a value of `2ms`), so you don\'t have to
enter it here unless you want to override that.
The `fast:` section of your machine-wide config is where you configure
hardware options that are specific to the FAST Pinball Controller. Note
that we have a how to guide which includes
[all the FAST-specific settings](../hardware/fast/index.md) throughout your entire config file, so be sure to read that
if you have FAST hardware.

Also, keep in mind that this setting is only a default. You can override
it for any switch in that switch\'s config.

### ports:

Expand All @@ -95,6 +66,11 @@ empty.
A comma-separated list of the serial port names your FAST controller
uses.

``` yaml
fast:
ports: com3, com4, com5
```

## Optional settings

The following sections are optional in the `fast:` section of your
Expand Down Expand Up @@ -181,29 +157,6 @@ Single value, type: `integer`. Default: `3`

Max backlog for the RGB port to prevent overflows in the FAST CPU.

### watchdog:

Single value, type: `time string (ms)`
[Instructions for entering time strings](instructions/time_strings.md). Default: `1000`

The FAST controllers include a "watchdog" timer. A watchdog is a timer
that is continuously counting down towards zero, and if it ever hits
zero, the controller shuts off all the power to the drivers. The idea is
that every time MPF runs a game loop (so, 30 times a second or
whatever), MPF tells the FAST controller to reset the watchdog timer. So
this timer is constantly getting reset and never hits zero.

But if MPF crashes or loses communication with the FAST controller, then
this watchdog timer won\'t be reset. When it hits zero, the FAST
controller will kill the power to the drivers. This should prevent an
MPF crash from burning up driver or somehow damaging your hardware in
another way.

You can set the watchdog timer to whatever you want. (This is
essentially the max time a driver could be stuck "on" if MPF crashes.)
The default is 1 second which is probably fine for almost everyone, and
you don\'t have to include this section in your config if you want to
use the default.

## Related How To guides

Expand Down
67 changes: 67 additions & 0 deletions docs/config/fast/fast_aud.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
title: "fast:aud: Config Reference"
---

# fast:aud: Config Reference

--8<-- "deeper_config_section.md"

| Valid in | |
|-----|:----:|
|[machine](../instructions/machine_config.md) config files|**YES** :white_check_mark:|
|[mode](../instructions/mode_config.md) config files|**NO** :no_entry_sign:|

## aud: config reference

Within the `fast:` section of your machine-wide config, you configure the audio board processor in the subsection `aud:`.

### Sample config:

```yaml
fast:
aud:
port: auto
main_amp_enabled: true
sub_amp_enabled: true
headphones_amp_enabled: true

main_steps: 20
sub_steps: 20
headphones_steps: 20

default_main_volume: 32
default_sub_volume: 32
default_headphones_volume: 16

persist_volume_settings: true

max_hw_volume_main: 63
max_hw_volume_sub: 63
max_hw_volume_headphones: 63

main_levels_list: None
sub_levels_list: None
headphones_levels_list: None

link_sub_to_main: true
link_headphones_to_main: false

headphones_level: headphones
mute_speakers_with_headphones: true
```

### port:

List of one (or more) values, each is a type: `string`. Defaults to `auto`.

A comma-separated list of the serial port names your FAST controller uses.

### baud:

Single value, int, default: `230400`

The connection baud rate.

### FAST Docs:

For the other properties, see the [FAST Audio Interface MPF Config page](https://fastpinball.com/mpf/config/audio/).
75 changes: 75 additions & 0 deletions docs/config/fast/fast_exp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: "fast:exp: Config Reference"
---

# fast:exp: Config Reference

--8<-- "deeper_config_section.md"

| Valid in | |
|-----|:----:|
|[machine](../instructions/machine_config.md) config files|**YES** :white_check_mark:|
|[mode](../instructions/mode_config.md) config files|**NO** :no_entry_sign:|

## exp: config reference

Within the `fast:` section of your machine-wide config, you configure the EXP processor in the subsection `exp:`, and sometimes in `exp_int`.

### port:

List of one (or more) values, each is a type: `string`. Defaults to `auto`.

A comma-separated list of the serial port names your FAST controller uses.

### baud:

Single value, int, default: `921600`

The connection baud rate.

### boards:

Dict of string board names to dicts of EXP board properties. Defaults to empty.

Example:

```yaml
fast:
exp:
port: auto
boards:
neuron:
model: FP-EXP-2000
playfield_0081:
model: FP-EXP-0081
```

#### model:

The product number of the IO board. E.G. `FP-EXP-0081`

#### ignore_led_errors:

Single value, boolean, default: `false`

If false, LED hex communication decode errors will be raised as errors when encountered from this board.
If you encounter instability due to these errors, set this to true to silently ignore them.

## Using exp_int

If using a Raspberry Pi connected directly to the Neuron controller, the LED headers on the Neuron will not be available on the normal EXP interface.
In order to access these Neuron LED headers, you must define a parallel structure to the existing `exp:` configuration, and move the Neuron definition over to it.

Example:

```yaml
fast:
exp:
boards:
playfield_0081:
model: FP-EXP-0081
exp_int:
boards:
neuron:
model: FP-EXP-2000
```
Loading