Site Table of Contents ¶ Home ¶ Welcome to DCC-EX ¶ What is DCC-EX ¶ DCC-EX Product Overview ¶ Conductor Level ¶ Tinkerer level ¶ Engineer level ¶ Getting Started with DCC-EX ¶ The DCC-EX Command Station ¶ EX-CSB1 CommandStation Booster ¶ Features ¶ Connecting ¶ Booster mode ¶ Running a Legacy DC layout ¶ Advantages of using a EX-CommandStation to run a DC layout ¶ Basic functionality ¶ Configuring Default Outputs ¶ Switching between tracks ¶ Reversing Loops ¶ More blocks ¶ Build configuration (config.h) ¶ Motor shield definition (Mandatory) ¶ WiFi settings ¶ Ethernet settings ¶ LCD/OLED support ¶ Disable EEPROM ¶ Delayed startup ¶ WiFi configuration (EX-CSB1 or ESP32 ONLY. Version 5.7.0+ ONLY) ¶ Operating Modes ¶ Changing to Station Mode (ie your home router) ¶ Changing the Access Point defaults ¶ Configuring the Host Name ¶ Turning WiFi On/Off ¶ Clearing WiFi settings ¶ Visiting another router ¶ Displaying WiFi settings ¶ Wifi configuration (Not CSB1 or ESP32) ¶ Setup STA (Station) mode ¶ Setup AP (Access Point) default mode ¶ Setup AP (Access Point) advanced mode ¶ Testing your Command Station ¶ Serial Monitors ¶ Simple testing commands (Main track) ¶ Things to remember ¶ TrackManager ¶ Defaults ¶ myAutomation.h ¶ Engine Driver ¶ Notes ¶ EX-CSB1 in DCC Booster Mode ¶ Configuring the EX-CSB1 as a DCC Booster ¶ Programming DCC locos ¶ The PROG track ¶ Reading/Writing decoder settings ¶ Programming using Serial input commands ¶ Programming using Engine Driver ¶ Programming using EX-Toolbox ¶ Programming with JMRI DecoderPro ¶ Programming using Serial commands ¶ Reading a loco id ¶ Setting a loco id ¶ Reading a CV value ¶ Setting a CV value ¶ DCC Consists ¶ Bit management ¶ Diagnostics when things don't work ¶ ACK detector tuning parameters ¶ Programming with EX-WebThrottle ¶ Programming with Engine Driver ¶ Accessing the DCC-EX page ¶ Read loco address ¶ Write loco address ¶ Read and write CVs of decoders on the Programming Track ¶ More Information ¶ If things dont work ¶ Programming with EX-Toolbox ¶ Using JMRI DecoderPro ¶ Making Changes ¶ Overview - What are Accessories? ¶ Accessory Types ¶ Connecting Accessories ¶ Voltage Differences ¶ Actuators - to make stuff happen ¶ Servo actuators ¶ Digital actuators ¶ Sensors ¶ Track/Layout sensors for automation ¶ Defining sensors ¶ Connecting a servo turnout ¶ Follow the steps below ¶ Define your Turnouts ¶ Test your turnout definitions ¶ Connect your servos to turnouts ¶ PCA9685 Configure additional boards ¶ Hardware device list ¶ I2C – An Introduction ¶ What is I2C? ¶ How does it help? ¶ Buying I2C devices ¶ Rosscoe Trains ¶ DFPlayer Sound player ¶ Suggested uses ¶ Hardware connection ¶ Audio file storage and naming convention ¶ Providing sound files ¶ Testing DFPlayer ¶ Serial connected DFPlayer ¶ CSB1 and ESP32 Serial connections ¶ I2C Connected DFPlayer ¶ SC16IS750 - SC16IS752 Breakout board hookup ¶ I2C address selection ¶ Configuring in myAutomation.h ¶ DS1307 Real Time clock chip ¶ What is EXRAIL? ¶ You DON’T need ¶ Important Background Information ¶ Basic building blocks ¶ A users story ¶ Virtual Bitmap device pins (VPINs) ¶ Creating virtual pins ¶ Using OUTPUT VPINS ¶ Using INPUT VPINs ¶ Using INPUT/OUTPUT VPINs ¶ Buttons and Switches ¶ Detecting a button press ¶ Detecting a switch change ¶ DC Track Control ¶ Emergency stop button ¶ ESTOPALL ¶ ESTOP_PAUSE ¶ ESTOP_RESUME ¶ Advanced scenarios ¶ ESTOP serial commands ¶ Roster for Similar Sound Locos ¶ Route button control ¶ Simple light switch route ¶ Changing button captions ¶ Two separate routes example ¶ Time Control ¶ Time Command ¶ Repeating Time events ¶ Testing Timed Sequences ¶ Display Loco speeds on OLED (Advanced) ¶ Display Track Status on OLED ¶ myAutomation.h ¶ myTrackStatus.h ¶ Lines displayed ¶ Analog sensors ¶ Command Filters ¶ Passing locos between sequences ¶ START(sequence_id) ¶ SENDLOCO(loco_id,sequence_id) ¶ START_SEND(sequence_id) ¶ START_SHARED(sequence_id) ¶ Building a speed test track ¶ Basic driving functions ¶ Loco Functions ¶ AUTOMATIONS ¶ Simple shuttle ¶ Sensor positioning ¶ Creating the basic AUTOMATION ¶ Improved shuttle ¶ Speed changes ¶ Sounds and lights ¶ Signals ¶ Passing loop shuttle ¶ Block Reservations ¶ Basic passing-loop logic ¶ Starting the shuttle ¶ Handling facing trains ¶ Advanced Extras ¶ Saving and Restoring speeds ¶ Random selection ¶ Random time delay ¶ Random choice on a given percentage ¶ Random selection of a path to follow ¶ Consists ¶ Consist Types ¶ Command Station consists with EXRAIL ¶ Controlling trains and decoders directly ¶ Multiple Files in EXRAIL ¶ Maintaining multiple command stations ¶ Naming sequences for easy commands ¶ Using CALL and RETURN ¶ Notes ¶ Using C++ Macros ¶ Flags, Counters and Bitmaps ¶ Creating virtual pins ¶ Use as flags ¶ Use as counters ¶ Use as analogue values (advanced) ¶ Use as binary flag groups (advanced) ¶ Latches ¶ Using STASH to remember where locos are parked ¶ NeoPixel support ¶ Defining the hardware driver ¶ Setting neopixels ¶ Signal Basics ¶ LED Signals ¶ Neopixel signals ¶ Signals with flashing ¶ Always blink AMBER ¶ Amber and Flashing Amber ¶ Semaphore (servo) Signals ¶ DCC Signals ¶ Common signals ¶ Advanced aspect signals ¶ Controlling Sounds in EXRAIL ¶ Playing a sound (PLAY_TRACK, PLAY_REPEAT) ¶ Pause and Resume (PLAY_PAUSE, PLAY_RESUME) ¶ Changing default volume (PLAY_VOLUME) ¶ Stop playing (PLAY_STOP) ¶ Changing current folder (PLAY_FOLDER) ¶ Things that happen at startup ¶ Startup power ¶ Startup - Define Tracks ¶ Defining DCC turnouts ¶ Defining PIN turnouts ¶ Defining Servo turnouts ¶ Important considerations for servo operation ¶ Defining servo based turnout objects ¶ Facing turnouts ¶ Animated turnouts ¶ Toggle turnouts with button or sensor ¶ Lew's Duino Gear boards ¶ DNIN8 8 Input board ¶ DNIN8K 8 Input board ¶ DNOU8 8 Output board ¶ I2C Multiplexors ¶ MCP23017, PCA955x and TCA955x devices ¶ Device variations ¶ Defining devices ¶ TCA8418 keyboard scanner ¶ TM1638 Buttons, leds and 7 segment display ¶ Using buttons and LEDs ¶ Using the 7 Segment display ¶ Trainbrains Devices ¶ Turnout drivers (solenoid and servo) ¶ Signal controller ¶ Sensors ¶ XL9535 Relay Board ¶ EX‑MotorShield8874 ¶ Features ¶ Why did we make it ¶ Purchase ¶ Licensing ¶ Assembly with EX-MotorShield8874 ¶ Engineering notes ¶ Stacking two motor shields ¶ EX-WiFiShield 8266 ¶ Overview ¶ Features ¶ Purchase ¶ Assembly ¶ EX-FastClock ¶ Background ¶ What is EX-FastClock? ¶ Credit where credit is due ¶ Next Steps ¶ Hardware ¶ What you need for EX-FastClock ¶ Calibration ¶ Installation ¶ Libraries ¶ Configuration ¶ Standalone use ¶ Serial Mode ¶ I2C mode ¶ Screen Header ¶ Configure existing clock ¶ Connecting your own FastClock ¶ Operation ¶ Time Control ¶ EXRAIL Commands ¶ Testing Timed Sequences ¶ EX-IOExpander ¶ EX-Turntable ¶ EX-SensorCAM ¶ Introduction ¶ Hardware ¶ Software requirements ¶ Documentation ¶ Outline of install process ¶ Installation Guide ¶ EX-SensorCAM Manual ¶ CONTENTS ¶ Appendix ¶ 1. Overview ¶ 2. ESP32-CAM ¶ 3. Physical Installation ¶ 4. Notation & Help commands ¶ 5. Configuration ¶ 6 PROCESSING4 monitor/console ¶ 7 Wiring Requirements ¶ 8 Host Communication ¶ 9. Methodology of operation ¶ APPENDIX A ¶ APPENDIX B ¶ APPENDIX C ¶ APPENDIX D ¶ APPENDIX E ¶ APPENDIX F ¶ APPENDIX G ¶ APPENDIX H ¶ APPENDIX I ¶ APPENDIX J ¶ APPENDIX K ¶ ADDITIONAL RANDOM NOTES: ¶ Native EX-SensorCAM Command List ¶ Conventions used on this page ¶ Native cam USB & CS cmd formats ¶ EX-SensorCAM Abridged Manual ¶ CONTENTS ¶ Appendix ¶ 1. Overview ¶ 2. ESP32/WROVER-CAM ¶ 3. Physical Installation ¶ 4. Notation ¶ 5. Configuration ¶ 6 PROCESSING4 monitor/console ¶ 7 Wiring Requirements ¶ 8 Host Communication ¶ APPENDIX A ¶ APPENDIX B ¶ APPENDIX C ¶ APPENDIX E ¶ APPENDIX F ¶ APPENDIX H ¶ APPENDIX J ¶ EX-Toolbox - Overview ¶ Features ¶ Installing EX-Toolbox ¶ Installing EX-Toolbox on an Android phone or tablet ¶ Installing EX-Toolbox on MS Windows & macOS ¶ Connecting to your Command Station ¶ Starting EX-Toolbox ¶ EX-Toolbox User Guide ¶ CV Programming ¶ Issuing DCC-EX Serial Commands (<>) ¶ Speed Matching ¶ Speedometer ¶ Loco Status ¶ Track Manager ¶ Servo Motor Testing and Adjustment ¶ Sensor testing ¶ Current Meter ¶ Roster ¶ Neopixel Setup ¶ Power ¶ Preferences ¶ View log ¶ About ¶ EX-WebThrottle - Overview ¶ What you need to run EX-WebThrottle ¶ Getting started ¶ Run or Install EX-WebThrottle ¶ Run it now (Run from the cloud) ¶ Download ¶ Operation ¶ Throttle ¶ Routes/Automation ¶ Turnouts/Points ¶ CV Programmer ¶ Locomotives ¶ Function Maps ¶ Settings ¶ App ¶ Official DCC-EX Suppliers ¶ Third Party Products and Sellers ¶ Rosscoe ¶ David Yale ¶ Command Station Rack (The Mac Rack) ¶ Sumner's Mega Dual Configuration Case (3D Print) ¶ Hans Tanner's ioTT cube case system (3D Print) ¶ Nebbish's Arduino Mega case for DCC-EX (3D Print) ¶ DCC-EX Merchandise ¶ Using EX-Installer ¶ Installing ¶ Using Device Monitor ¶ EX-Installer ¶ Warning Antivirus Software ¶ Download EX-Installer ¶ Alternatives to the EX-Installer ¶ First Run installer ¶ Select Product to Install ¶ Installing Command Station Software ¶ Device Selection ¶ Version Selection ¶ Configuration ¶ Other options ¶ Compile and Load ¶ Backup ¶ Device Monitor ¶ Stored Configuration Files ¶ Advanced Users - VSCode/PlatformIO ¶ Build Your Own Command Station ¶ Getting the DCC-EX Software ¶ Quick and Easy Arduino Mega ¶ Slightly more difficult Mega ¶ Selecting a power supply ¶ Volts and Amps ¶ Using an EX8874 or CSB1 ¶ Other motor shields ¶ What to look for ¶ SAFETY WARNING ¶ Easy build - Arduino Mega ¶ What you need ¶ Step-by-Step Build ¶ Alternative build - Arduino Mega ¶ What you need ¶ Step By Step Build ¶ Complex Build - Nucleo ¶ Nucleo-F4 boards supported ¶ Reference - Nucleo ¶ Complex Build - ESP32 ¶ WeMos D1 R32 ¶ ESP32-WROOM-32 Development boards ¶ Reference ESP32 ¶ Optionally install Wifi ¶ EX-WiFiShield8266 ¶ Other shields ¶ ESP-01 or ESP-01S ¶ Optionally install Ethernet ¶ Arduino Network Shield 2 ¶ Wiznet WIZ850IO ¶ Sunfounder Ethernet Shield ¶ Installing Command Station firmware ¶ DIY - Other devices ¶ The following devices are NOT supported: ¶ Throttles and Other Controllers ¶ Throttles - By Client Technology ¶ Throttles - By Communication technology ¶ Comparison Table ¶ EX-WebThrottle ¶ Engine Driver ¶ Platforms ¶ Standard Features (all WiThrottle servers) ¶ EX-CommandStation Specific or Advantageous Features ¶ EX-CommandStation Specific Features - when using the DCC-EX Native Protocol ¶ Screenshots ¶ Operation ¶ Using a Bluetooth Gamepad Controller ¶ Adding a Physical Dial (Knob) ¶ Recording a log file in Engine Driver ¶ ThrottleCard ¶ Features ¶ DCC-EX News ¶ Get this in your RSS feed ¶ General DCC-EX News ¶ Frequently Answered Questions (FAQ) ¶ Controlling and Running Trains ¶ Programming and reading DCC decoders ¶ Throttle apps and software ¶ My CSB1 OLED display isnt working or looks "wrong" ¶ Why do I get FAULT pin warnings ¶ Why do my I2C connections fail ¶ Help and Support ¶ Information required for support queries ¶ Discord (recommended) ¶ GitHub ¶ TrainBoard ¶ Email (not recommended) ¶ The DCC-EX Discord Server ¶ Joining and Using Discord ¶ Sharing Code and Configuration Snippets ¶ Discord Channels ¶ Opening a Support Ticket ¶ Raising GitHub Issues ¶ Donations ¶ How We Use Donations ¶ Donation Options ¶ Glossary of Terms ¶ Access Point (AP) Mode ¶ Base Station, Command Station, DCC Command Station, DCC Base Station ¶ Consist, Multiple Unit2¶ ¶ DCC++ Commands, , DCC++ Protocol, DCC++ API ¶ DCC-EX Serial Commands, DCC-EX Native Commands, DCC-EX Native Protocol, DCC-EX Native API ¶ Pullup ¶ Pulldown ¶ Roster ¶ SSID ¶ Station (STA) Mode ¶ Turnout (Point2/Switch)¶ ¶ VPIN ¶ WiThrottle ¶ WiThrottle Protocol ¶ WiThrottle Server ¶ DCC-EX Serial Command Basics ¶ Notes ¶ DCC-EX Command Protocol Reference ¶ System Commands ¶ Power Control ¶ Locomotive Control ¶ Function Control ¶ Consist Control ¶ Turnout Control ¶ Sensor Control ¶ CV Programming ¶ DCC Accessory Commands ¶ Momentum Control ¶ Output Control ¶ Pin Control ¶ NeoPixel Control ¶ Turntable Control ¶ Sound Control ¶ Throttle Information Commands ¶ Track Manager ¶ Configuration Commands ¶ Diagnostic Commands ¶ Raw DCC Packets ¶ EXRAIL Command List ¶ Advanced config.h settings for Command Station build ¶ Non-standard Motor Shields ¶ TCP/IP Advanced settings ¶ LCD/OLED support ¶ Disable EEPROM ¶ Disable PROG ¶ Redefine DCC boundary between SHORT and LONG loco addresses ¶ Redefine locomotive state table size ¶ Define TURNOUTS and ACCESSORIES to follow norm RCN-213 ¶ Handling multiple serial throttles ¶ Bluetooth serial ON ESP32 ¶ Booster input pin on ESP32 CS ¶ ESP32 LED Wifi Indicator ¶ SABERTOOTH ¶ Tuning for deprecated UNO/NANO ¶ Track Manager ¶ What is the Track Manager ¶ Using the Track Manager (DCC) ¶ Using the Track Manager (DC) ¶ Connecting Hardware ¶ Configuring the Software ¶ Using EXRAIL to control Track Manager ¶ Where and How for the Code ¶ DC Mode - PWM Frequency ¶ DC Mode - Logic Gate Circuits ¶ DC Mode Track Sync ¶ Timers / Brake Pins ¶ Hardware considerations ¶ HAL Device Templates ¶ Command Station Internal Architecture ¶ Throttle Writers Guide (doc incomplete) ¶ General ¶ Considerations for throttle developers ¶ Key Throttle/Controller Commands ¶ Roster Information ¶ Controlling Locos ¶ Turnouts/Points ¶ DCC Accessories ¶ Automations/Routes ¶ COMMANDS TO AVOID TODO ¶ Gauges ¶ TCP vs UDP ¶ Legacy Command Reference ¶ EX-CSB1 FAQ ¶ CH340 USB Drivers ¶ Track voltage ¶ OLED ¶ Power supply ¶ Fault reporting ¶ Overcurrent reporting ¶ WiFi ¶ Discord ¶ EX-CSB1 Technical Reference ¶ WeMos D1 R32 + EX8874 ¶ WiFi reliability ¶ IOREF voltage ¶ One EX8874 ¶ Stacked EX8874 ¶ ACEBOTT + EX8874 ¶ ACEBOTT ESP32 Max v1.0 ¶ ACEBOTT vs. WeMos R1 D32 ¶ IOREF voltage ¶ One EX8874 ¶ Stacked EX8874 ¶ Keyestudio IOT ESP32 PLUS Development Board + EX8874 ¶ Keyestudio IOT ESP32 PLUS Development Board ¶ Keyestudio IOT ESP32 PLUS Development Board VS WeMos R1 D32 ¶ Incorrect IOREF voltage ¶ One EX8874 ¶ Stacked EX8874 ¶ ESP32 + L298 Shields ¶ Genuine Arduino Motor Shield R3 ¶ Clone Motor Shields ¶ Nucleo - USB Drivers ¶ Required for Windows ¶ Nucleo - STLink Firmware ¶ Upgrade the debugger firmware ¶ Nucleo - Debug ¶ Nucleo - Power ¶ VIN from EX8874 ¶ VIN voltage ¶ USB ¶ Nucleo 64 - EX8874 ¶ Nucleo 64 - WiFi and Pins ¶ MakerFabs WiFi shield ¶ Serial pins ¶ Pin diagram ¶ Nucleo 144 - EX8874 ¶ Stacked EX8874 motor shields on F429ZI F439ZI ¶ EX8874 - F413ZH F446ZE ¶ Nucleo 144 - WiFi ¶ MakerFabs WiFi shield ¶ Serial pins ¶ Pin diagram ¶ Nucleo 144 - Pins ¶ Pin diagrams ¶ 8 District PCB ¶ L298P & L298HN Shields ¶ Genuine Arduino R3 ¶ Clone shields ¶ Voltage drop ¶ Schematics ¶ I2C Wiring for the Tinkerer ¶ I2C concepts ¶ I2C bus voltage ¶ Qwiic/STEMMA QT ¶ I2C wire length ¶ Combined parallel resistance ¶ Wiring pattern for lower capacitance ¶ Power sources ¶ Tuning an I2C Bus for the Engineer ¶ Guiding Principles ¶ Measurement in situ ¶ Examples ¶ About the DCC-EX Project ¶ A Brief History of DCC-EX ¶ The DCC-EX Team ¶ Related Software - Friends of DCC-EX ¶ How Can I Contribute? ¶ Documentation ¶ Development ¶ Web Support ¶ Organisation/Coordination ¶ Code of Conduct ¶ User Personas and Journeys - Front Page Tiles ¶ New to DCC-EX ¶ Ready-to-Run CSB1 ¶ DC Ready-to-Run Users ¶ Existing Users Adding Accessories ¶ Existing Users Looking to Automate/Animate ¶ Large Club Layout ¶ Downloader ¶ Release Checklist ¶ Content ¶ Release QA Items ¶ Menu and Page Structure ¶ Styling ¶ Team Info ¶ Release To Do ¶ Contributing to the public domain code ¶ Development Environment ¶ Coding Style Guidelines ¶ Using the Repository ¶ Pull Request Process ¶ Contributing to Documentation ¶ How to Contribute ¶ MkDocs Links ¶ What You Need to Install ¶ Getting Started ¶ Previewing and building MkDocs ¶ Documentation Standards ¶ General Content ¶ Do Not Duplicate Content ¶ Directory Naming, Page Naming, and Titles ¶ Address all MkDocs Warnings and Errors ¶ Directory Structure and Navigation ¶ Formatting Guide ¶ Page and Section Links ¶ Search Links ¶ Headings ¶ Glossary Terms and Linking ¶ Code blocks ¶ Understanding Links ¶ What the html browser sees is this ¶ What the mkdocs author sees ¶ The search link ¶ Using Our Logos ¶ Light and Dark Theme ¶ Branded and Non-Branded Product Logos ¶ Logo Sizing ¶ Working with MkDocs ¶ Previewing and Deploying MkDocs ¶ DCC-EX CSS Styling ¶ DCC-EX JavaScript Files ¶ MkDocs Material Extensions ¶ MkDocs Plugins ¶ Mermaid Diagrams ¶ Flowchart ¶ Sequence Diagram ¶ State Diagram ¶