The EPICS asyn module provides a [trace facility](https://htmlpreview.github.io/?https://github.com/epics-modules/asyn/blob/master/documentation/asynDriver.html#asynTrace) that allows communication between an IOC and a controller to be displayed or logged.
### 6.1 Enable asyn traces
Enabling specific asyn traces causes communication to & from the virtual motor controller to be displayed on the IOC's shell and optionally logged to a file.
The traces can be enabled from the IOC's shell:
```
kmp> help asynSetTraceMask
asynSetTraceMask portName addr mask
kmp> help asynSetTraceIOMask
asynSetTraceIOMask portName addr mask
kmp> help asynSetTraceFile
asynSetTraceFile portName addr filename
```
Or from MEDM/caQtDM if the IOC loaded at least one asyn record.
TODO: include asynRecord screenshot
Do the following:
* TODO
### 6.2 Observe controller communication
The commands used by the virtual motor controller are documented [here](https://git.aps.anl.gov/practical_beamline_controls_training/session_2/motorVMC#command-reference).
Do the following:
* Note the commands sent while idle polling
* Move a motor and look for the MOV command
*Note the command that is sent when the STOP button is pressed
* Move a motor and look for the MV command
*Stop a motor and look for the AB command
### 6.3 "Upgrade" the Virtual Motor Controller to a newer firmware.