diff --git a/6-asyn-troubleshooting.md b/6-asyn-troubleshooting.md
index ab81c03bb5772aa04e4553bb27094de8f6461eea..d034605aafe855ed62f39caef403da8366a2e284 100644
--- a/6-asyn-troubleshooting.md
+++ b/6-asyn-troubleshooting.md
@@ -183,7 +183,15 @@ Other questions to answer:
 * Yes, but you can't tell from the motor screen.  A controller error appears when a move is attempted, but the asyn trace shows that the MV command does get sent to the controller and the queried position is correct.  The motor record does retries because the position query is not returning asynSuccess to the EPICS motor driver.
 </details>
 
-### 6.9 Manually send a command to the controller
+### 6.9 Enable traceIOEscape
+
+Sometimes communication problems are caused by the characters you can't see.  Enable **traceIOEscape** instead of (or in addition to) **traceIOASCII**
+
+![screenshot of asynRecord.ui with traceIODriver and traceIOEscape enabled](images/asynRecord-traceIOEscape.png)
+
+Both the printable and unprintable characters that are sent to/from the controller should now be visible on the IOC's shell.
+
+### 6.10 Manually send a command to the controller
 
 Send the **1 POS?** command to the controller to query m1's position (in controller units).
 
@@ -201,14 +209,6 @@ How does the controller's response differ from [before the firmware upgrade](6-a
 
 </details>
 
-### 6.10 Enable traceIOEscape
-
-Enable **traceIOEscape** instead of (or in addition to) **traceIOASCII**
-
-![screenshot of asynRecord.ui with traceIODriver and traceIOEscape enabled](images/asynRecord-traceIOEscape.png)
-
-Both the printable and unprintable characters that are sent to/from the controller should now be visible on the IOC's shell.
-
 ### 6.11 Confirm the communication problem
 
 ### 6.12 Solve the communication problem