EPICS-for-Dummies

Start Here

You are about to learn a control system that has been in continuous development since 1988, is deployed at several hundred facilities, and has no single installer. That’s fine. Thousands of people have done it, most of them from a physics or engineering background rather than a software one.

This section is the on-ramp.

Page What it gives you
What is EPICS? The 10-minute version. What problem it solves, who uses it, what it is not.
Core Concepts Process variables, records, the database, IOCs, Channel Access, PV Access. The vocabulary everything else assumes.
Linux Prerequisites The shell, paths, environment variables, and build tools you need before compiling anything.
Your First Week at a Facility The questions to ask your colleagues, because the most important knowledge at any site was never written down.
Glossary Every acronym in this guide, expanded.
FAQ The questions every newcomer asks on the mailing list.

A realistic learning path

Nobody learns EPICS by reading. You learn it by making a number change on a screen and then working out why.

=== “Week 1 — Get a PV to move”

**Goal: understand what a process variable is by owning one.**

1. Read [What is EPICS?](/EPICS-for-Dummies/docs/start-here/what-is-epics.html) and [Core Concepts](/EPICS-for-Dummies/docs/start-here/core-concepts.html). Don't try to memorise; you'll come back.
2. Get EPICS Base onto a Linux machine — either [build it](/EPICS-for-Dummies/docs/build-install/epics-base.html) (30 minutes, teaches you the build system) or `conda install epics-base` / grab a [training VM](/EPICS-for-Dummies/docs/reference/training.html) (5 minutes, teaches you nothing but gets you moving).
3. Run `softIoc` with no arguments. Type `dbl` at the `epics>` prompt. Nothing there yet.
4. Follow [Your First IOC](/EPICS-for-Dummies/docs/build-install/first-ioc.html) to create two records and watch one drive the other.
5. In a second terminal: `caget`, `caput`, `camonitor` your records. See the [cheat sheet](/EPICS-for-Dummies/docs/reference/cheatsheet.html).

**You have finished week 1 when** you can explain, out loud, what happened between `caput` in one terminal and the value changing in the other.

=== “Week 2 — Make a screen”

**Goal: connect a GUI to your IOC.**

1. [Install Phoebus](/EPICS-for-Dummies/docs/build-install/phoebus.html) (Java) or `pip install pydm` ([PyDM](/EPICS-for-Dummies/docs/toolbox/operator-interfaces.html), Python). Either is fine; Phoebus is what most facilities run.
2. Build a display with a text-entry widget and a meter bound to your two PVs.
3. Break it deliberately: stop the IOC and watch the widgets go disconnected (pink/white, depending on the toolkit). That disconnect behaviour is a feature, and understanding it early saves hours later.
4. Read [Protocols](/EPICS-for-Dummies/docs/architecture/protocols.html) up to the section on search and connect, so you know what "disconnected" actually means on the wire.

=== “Week 3 — Talk to something real”

**Goal: an IOC that isn't making its numbers up.**

Pick whichever you can get your hands on:

- A serial or Ethernet instrument (power supply, temperature controller, pressure gauge) → [StreamDevice](/EPICS-for-Dummies/docs/toolbox/plc-and-fieldbus.html#streamdevice) over [asyn](/EPICS-for-Dummies/docs/toolbox/soft-support-modules.html#asyn).
- A PLC → [Modbus](/EPICS-for-Dummies/docs/toolbox/plc-and-fieldbus.html#modbus), [ether_ip](/EPICS-for-Dummies/docs/toolbox/plc-and-fieldbus.html#ether_ip-allen-bradley) or [opcua](/EPICS-for-Dummies/docs/toolbox/plc-and-fieldbus.html#opc-ua).
- A USB webcam → [areaDetector](/EPICS-for-Dummies/docs/toolbox/detectors-and-imaging.html) with ADUVC, or `ADSimDetector` if you have no camera.
- Nothing at all → simulate a device with [Lewis](/EPICS-for-Dummies/docs/toolbox/simulation-and-testing.html#lewis) and talk to it over TCP as if it were real. This is genuinely how a lot of facility software gets developed.

Walked end to end, with the failure modes: [Talk to a Real Device](/EPICS-for-Dummies/docs/build-install/talk-to-a-device.html).

You will spend most of this week on protocol details and terminator characters. That is the job.

=== “Week 4 — Add the services”

**Goal: see why a facility needs more than IOCs.**

1. Archive your PVs: the [Phoebus RDB archive engine](/EPICS-for-Dummies/docs/toolbox/archiving.html#phoebus-rdb-archive-engine) is easier for a first run; the [Archiver Appliance](/EPICS-for-Dummies/docs/toolbox/archiving.html#epics-archiver-appliance) is what scales. Plot a trend of yesterday.
2. Put one PV into an [alarm state](/EPICS-for-Dummies/docs/toolbox/alarms.html) and acknowledge it in the Phoebus alarm tree.
3. Snapshot and restore your PV values with [save & restore](/EPICS-for-Dummies/docs/toolbox/save-and-restore.html), or crash-proof your IOC with [autosave](/EPICS-for-Dummies/docs/toolbox/soft-support-modules.html#autosave).
4. Skim [The Toolbox](/EPICS-for-Dummies/docs/toolbox/) index in full — one pass, no depth. You now have hooks to hang the names on.

=== “Month 2+ — Think like a facility”

**Goal: understand the decisions, not just the commands.**

1. Read the [Example Facility](/EPICS-for-Dummies/docs/example-facility/) chapters in order. This is where naming, segmentation, sizing, and alarm philosophy stop being abstract.
2. Read the [EPICS Application Developer's Guide](/EPICS-for-Dummies/docs/reference/documentation.html) properly. Yes, all of it. It is the actual specification and it is readable.
3. Work through a real training course: the [USPAS and EPICS Collaboration Meeting material](/EPICS-for-Dummies/docs/reference/training.html) is free, complete, and has exercises.
4. Subscribe to [tech-talk](/EPICS-for-Dummies/docs/reference/community.html). Lurk for a month. The archive is the largest EPICS troubleshooting corpus in existence.
5. Learn how your site actually deploys IOCs — [containers](/EPICS-for-Dummies/docs/toolbox/deployment-and-operations.html#epics-containers), [e3](/EPICS-for-Dummies/docs/toolbox/deployment-and-operations.html#e3-ess-epics-environment), plain `make` and `procServ`, or something homegrown. This is the most site-specific knowledge you will acquire, and none of it is in this guide. [Your First Week at a Facility](/EPICS-for-Dummies/docs/start-here/first-week-at-a-facility.html) is the list of questions to ask.

Three things that will confuse you, stated up front

1. “EPICS” means two different things. Sometimes it means EPICS Base, the core library. Sometimes it means the whole ecosystem — Base plus modules plus Phoebus plus the archiver plus everything in the Toolbox. When someone says “we run EPICS 7”, they mean Base 7. When someone says “the EPICS ecosystem”, they mean the other thing.

2. There are two network protocols and both are current. Channel Access (CA) dates from the early 1990s and carries the overwhelming majority of production traffic. PV Access (PVA) arrived with EPICS 7, carries structured data, and is what new services target. Neither replaces the other yet. See Protocols.

3. Version numbers are per-module and unrelated. Base is at 7.0.x. asyn, autosave, motor, areaDetector, Phoebus and everything else version independently, and any given combination may or may not have been tested together. Curated bundles like synApps exist precisely because this is a real problem.