This repository holds the most current firmware for CircuitSetup’s wonderful Time Circuits Display (“TCD”) kit, enabling you to reproduce an iconic part of the Delorean Time Machine.
The kit parts are available here. This TCD can be used stand-alone or in combination with several peripherals. If you went for the metal enclosure version, it is perfectly fit for mounting in an actual Delorean.
Features include
The difference between what you get here and CircuitSetup’s releases is that the code here might be ahead in development, uses some different sounds, and the pre-compiled binary has all the features enabled.
![]() |
---|
Click to watch the video |
If a previous version of the TCD firmware is installed on your device, you can update easily using the pre-compiled binary. Enter the Config Portal, click on “Update” and select the pre-compiled binary file provided in this repository (install/timecircuits-A10001986.ino.nodemcu-32s.bin).
If the previously installed firmware was from CircuitSetup (ie. pre-installed or downloaded from their github), you need to install the sound-pack from this repository afterwards.
If you are using a fresh ESP32 board, please see timecircuits-A10001986.ino for detailed build and upload information, or, if you don’t want to deal with source code, compilers and all that nerd stuff, go here and follow the instructions.
The firmware comes with some audio data (“sound-pack”) which needs to be installed separately. The audio data is not updated as often as the firmware itself. If you have previously installed the latest version of the sound-pack, you normally don’t have to re-install the audio data when you update the firmware. Only if the TCD displays “PLEASE INSTALL AUDIO FILES” during boot, an update of the audio data is needed.
If your TCD previously ran a firmware from CircuitSetup (ie. pre-installed or downloaded from their github), installing of the audio data from this repository is required. You cannot use CircuitSetup’s audio data with the firmware available here, or vice versa.
The first step is to download “install/sound-pack-xxxxxxxx.zip” and extract it. It contains one file named “TCDA.bin”.
Then there are two alternative ways to proceed. Note that both methods require an SD card.
1) Through the Config Portal. Click on Update, select the “TCDA.bin” file in the bottom file selector and click on Upload. Note that an SD card must be in the slot during this operation.
2) Via SD card:
After installation, the SD card can be re-used for other purposes.
The following instructions only need to be followed once, on fresh TCDs. They do not need to be repeated after a firmware update.
The first step is to establish access to the TCD’s configuration web site (“Config Portal”) in order to configure your TCD:
As long as the device is unconfigured, it creates a WiFi network of its own named “TCD-AP”. This is called “Access point mode”, or “AP-mode”. In this mode, other WiFi devices can connect to the TCD, but the TCD can’t access the internet (and therefore not synchronize time).
It is ok to leave the TCD in this mode, especially if it is mounted in a car or places with no WiFi networks available. In a typical home setup, however, you might want to connect the TCD to your WiFi network. To do so, click on “Configure WiFi”. The bare minimum is to select an SSID (WiFi network name) and a WiFi password.
Note that the TCD requests an IP address via DHCP, unless you entered valid data in the fields for static IP addresses (IP, gateway, netmask, DNS). If the device is inaccessible as a result of incorrect static IPs, hold ENTER when powering it up until the white LED lights up; static IP data will be deleted and the device will return to DHCP.
After saving the WiFi network settings, the TCD reboots and tries to connect to your configured WiFi network. If that fails, it will again start in access point mode.
Assuming the connection could be established, you now enter the Config Portal like this:
The next step is to set the TCD’s time zone. If the time zone isn’t properly configured, the TCD will show a wrong time, and DST (daylight saving) will not be switched on/off correctly.
Click on “SETUP” on the Config Portal’s main page, and specify your time zone. Then click “SAVE”; the TCD will reboot.
Setting actual time:
After completing these steps, your TCD is basically ready for use; you can also continue configuring it to your personal preferences through the Config Portal.
The “Config Portal” is the TCD’s configuration web site.
![]() |
---|
The Config Portal’s main page |
It can be accessed as follows:
navigate your browser to http://timecircuits.local
Accessing the Config Portal through this address requires the operating system of your hand-held/computer to support Bonjour/mDNS: Windows 10 version TH2 (1511) [other sources say 1703] and later, Android 13 and later; MacOS and iOS since the dawn of time.
If connecting to http://timecircuits.local fails due to a name resolution error, you need to find out the TCD’s IP address: Hold ENTER on the TCD’s keypad for 2 seconds, then repeatedly press ENTER until “NET-WORK” is shown, then hold ENTER for 2 seconds. The device will then show its current IP address. Then, on your handheld or computer, navigate to http://a.b.c.d (a.b.c.d being the IP address as shown on the display) in order to enter the Config Portal.
In the main menu, click on “Setup” to configure your TCD.
![]() |
---|
Click for full screenshot |
A full reference of the Config Portal is here.
Present time is a clock and normally shows the actual local present time, as received from the network or set up through the keypad menu.
Destination time and Last time departed are stale. These, by default, work like in the movie: Upon a time travel, present time becomes last time departed, and destination time becomes present time.
If “REPLACE BATTERY” is shown upon boot, the onboard CR2032 battery is depleted and needs to be replaced. Note that, for technical reasons, “REPLACE BATTERY” will also show up the very first time you power-up the TCD after changing the battery. You can, of course, disregard that message in this case.
The TCD sometimes writes data to either the internal flash file system or the SD card. These write operations should not be interrupted by a power loss.
In general, it is safe to power-down the TCD when it is idle or after it has been fake-powered-down. Try to avoid powering down the TCD
Since the update of Dec 11, 2023, the TCD firmware uses the Julian Calendar calendar from Jan 1, 1, until Sep 2, 1752, and for later dates the Gregorian one. Sep 2, 1752, was the last day the Julian calendar was used in the “First” British Empire (Great Britain and its colonies, including eastern parts of North America, Canada). Other countries stopped using this calendar system way earlier; most of Europe, including Spain plus its colonies worldwide, had switched in 1582 already. DK/NO/NL (except Holland and Zeeland) switched in 1700, Japan in 1872, China in 1912, Russia in 1918.
Since the time machine was built in the USA, using 1752 for the TCD seems appropriate.
So, what does this mean? First off, in the Julian calendar every 4th year is a leap year; in the Gregorian calendar there are some exceptions to this rule. This means, as a result, that the two calendars were drifting apart over time, and dates didn’t match. As of 2023, the Julian calendar is 13 days ahead.
Secondly, and as a result of this drift, when countries switched from one to the other calendar system, days were skipped. In case of the switch in 1752, Sep 3 until Sep 13 were skipped, so after Sep 2 came Sep 14. For using the TCD this means that dates entered within that skipped period are corrected to Sep 14.
Earlier versions of the firmware only supported the Gregorian Calendar, which it pretended to have been used since year 1. The Julian Calendar was not taken into account.
Neither the Gregorian nor the Julian Calendar know a “year 0”; 1AD followed after 1BC. Nevertheless, it is possible to travel to year 0. In good old Hollywood tradition, I won’t let facts and science stand in the way of an authentic movie experience.
“Time cycling” is a kind of decorative mode in which the device cycles through a list of pre-programmed destination and last time departed times. These pre-programmed times match the dates/times of all time-travels that take place in the three movies.
Time-cycling is enabled by setting up a Time-cycling Interval in the Config Portal or the keypad menu. The device will then cycle through named list every 5th, 10th, 15th, 30th or 60th minute.
Time-cycling will, if enabled, change the Destination and Last Time Departed displays regardless of the times already displayed, for instance as a result from an earlier time travel. Triggering a time-travel will, however, pause time-cycling for 30 minutes.
In World Clock (WC) mode, the red and yellow displays show not some stale times, but current time in other time zones. These time zones need to be configured in Config Portal. At least one time zone (for either the red or yellow display) must be configured in order to use WC mode. Optionally, also names for cities/locations for these time zones can be entered in the Config Portal; if a name for a time zone is configured, this name and the time will be shown alternately. Note that names can only contain letters a-z, numbers 0-9, space and minus.
![]() |
---|
Click to watch the video |
![]() |
---|
World Clock mode |
WC mode is toggled by typing “112” followed by ENTER.
For logical reasons, WC mode will be automatically disabled in some situations:
Room Condition (RC) mode can be enabled together with WC mode. In that case, only one timezone is used, and the other display shows the temperature. If there is a time zone configured for the red display, the temperature will be shown in the yellow display. If there no time zone for the red display, the temperature will be shown there, and the yellow display will show time for the time zone you set up for the yellow display.
![]() |
---|
WC/RC hybrid mode |
To toggle WC/RC hybrid mode, type “113” followed by ENTER.
In this mode, the TCD shows a fixed, pre-programmed time in the Present Time display. Also after a time travel, the Present Time display will stay fixed at the time you travelled to. This is useful for exhibitions or for filming.
To enable this mode, type 999 followed by ENTER. The default fixed time will be displayed. To change this time, type 99mmddyyyyhhMM followed by ENTER. 999 plus ENTER takes you back to normal mode.
Exhibition mode is persistent; the pre-programmed time will be stored and retrieved after a reboot/power-down.
Not strictly part of Exhibition mode, but related: If you want your TCD to display specific times in the Destination Time and/or Last Time Departed displays, you can program those times through the keypad menu. Those times will be displayed, but replaced as soon as a time travel takes place. To quickly restore the displays to your pre-programmed times, enter 998 followed by ENTER. Note that this only works if Make time travels persistent is unchecked in the Config Portal.
Control boards 1.4.5 and later have two ways of audio output:
By default, all audio is played over the speaker.
Entering 351 followed by ENTER enables playback over line-out for
All other sounds, which are supposed to be emitted by the TCD itself, are always played over the built-in speaker. Note that the TCD’s volume control (knob, software-selected level, rotary encoder) only has impact on the built-in speaker.
Entering 350 plus ENTER disables line-out output. This setting is persistent over reboots.
In this case, head to the Config Portal and
Note that actual time travel is not supported.
In this case, head to the Config Portal and
Time-travelling will interrupt the cycling of movie times for 30 minutes.
In this case, head to the Config Portal and
Then enter the keypad menu and set your favorite Destination and Last time departed times.
Note that time-travelling will naturally lead to the displays showing other times. After a reboot, your times will be displayed again. To bring them back without rebooting, type 998 followed by ENTER.
In the following, “pressing” means briefly pressing a key, “holding” means keeping the key pressed for 2 seconds or longer.
mm = month (01-12, 2 digits); dd = day (01-31, 2 digits); yyyy = year (4 digits); hh = hour (00-23, 2 digits); MM = minute (00-59, 2 digits)
Keypad reference: Destination time programming (⏎ = ENTER key) |
|
mmddyyyyhhMM⏎ | Set complete date/time for Time Travel |
mmddyyyy⏎ | Set date for Time Travel |
hhMM⏎ | Set time for Time Travel |
Keypad reference: Special key sequences (⏎ = ENTER key) |
|
Disable beep sound | 000⏎ |
Enable beep sound | 001⏎ |
Enable beep sound (30 seconds) | 002⏎ |
Enable beep sound (60 seconds) | 003⏎ |
Toggle Room Condition mode | 111⏎ |
Toggle World Clock mode | 112⏎ |
Toggle both World Clock and Room Condition (WC/RC hybrid) | 113⏎ |
Display weekday of currently displayed present time date | 33⏎ |
Select audio volume level | 300 - 319⏎ |
Disable/enable line-out audio for music and time travel sounds | 350⏎ / 351⏎ |
Enable built-in volume knob | 399⏎ |
Show current alarm time/weekday | 11⏎ |
Set alarm to hh:MM | 11hhMM⏎ |
Timer: Show remaining time | 44⏎ |
Timer: Set timer to MM minutes | 44MM⏎ |
Timer: Delete timer | 440 |
Reminder: Display reminder | 77⏎ |
Reminder: Display time until reminder | 777⏎ |
Reminder: Program reminder | 77mmdd⏎ |
Reminder: Program reminder | 77mmddhhMM⏎ |
Reminder: Delete reminder | 770⏎ |
Music Player: Show currently played song | 55⏎ |
Music Player: Shuffle off | 222⏎ |
Music Player: Shuffle on | 555⏎ |
Music Player: Go to song 0 | 888⏎ |
Music Player: Go to song xxx | 888xxx⏎ |
Disable / enable car mode | 990⏎ / 991⏎ |
Restore user destination/last time dep. times | 998⏎ |
Enable / disable Exhibition mode | 999⏎ |
Program time for Exhibition mode | 99mmddyyyyhhMM⏎ |
Reboot the device | 64738⏎ |
Keypad reference: Holding keys for 2 seconds | ||
1 Toggle Alarm on/off |
2 Music Player: Previous song |
3 Play "key3.mp3" |
4 Toggle Night mode on/off |
5 Music Player: Play/Stop</a> |
6 Play "key6.mp3" |
7 Re-enable WiFi |
8 Music Player: Next song |
9 Return from Time Travel |
0 Time Travel |
Here is a cheat sheet for printing or screen-use. (Note that MacOS’ preview application has a bug that scrambles the links in the document. Acrobat Reader does it correctly.)
To travel through time, hold “0” for 2 seconds (or use an external trigger). The destination time, as shown in the red display, will be your new present time, the old present time will be the last time departed. The new present time will continue to run like a normal clock.
Before triggering the time travel, you can also first quickly set a new destination time by entering a date on the keypad: mmddyyyy, mmddyyyyhhMM or hhMM, then press ENTER. While typing, there is no visual feedback, but the date is then shown on the destination time display after pressing ENTER.
To travel back to actual present time, hold “9” for 2 seconds.
On the Config Portal’s “Setup” page, there is an option item named Make time travels persistent. The default is off.
Note that in order to enable this feature, an SD card is required and the option Save secondary settings on SD must be checked as well.
If time travels are persistent
If time travels are non-persistent
If you want your device to display exactly the same after a power loss, choose persistent (and disable Time-cycling).
If you want to display your favorite destination time and last time departed upon power-up, and not have time travels overwrite them in storage, choose “non-persistent”, and program your times through the keypad menu (and disable Time-cycling). Later time travels will, of course, change what is displayed, but not overwrite your times in storage. To bring back your stored times to the displays, type 998 followed by ENTER.
Note that Time-cycling, if enabled, will force the device to cycle through the list of pre-programmed times, regardless of your time travel persistence setting. So, if Time-cycling is enabled, the only effect of persistence is that Present Time is kept at what it was before vs. reset to actual present time after a power loss.
In the movies, the Time Circuits emit a “beep” sound every second, which is only really audible in the scene in which Doc explains to Marty how the time machine works. The firmware supports that beep, too.
The beep can be permanently disabled, permanently enabled, or enabled for 30 or 60 seconds
The different modes are selected by typing 000 (disabled), 001 (enabled), 002 (enabled for 30 secs) or 003 (enabled for 60 secs), followed by ENTER. The power-up default is selected in the Config Portal.
For technical reasons, the beep is suppressed whenever other sounds are played-back.
In night-mode, by default, the destination time and last time departed displays are switched off, the present time display is dimmed to a minimum, and the volume of sound playback is reduced (except the alarm). Apart from considerably increasing the displays’ lifetime, night-mode reduces the power consumption of the device from around 4.5W to around 2.5W.
You can configure the displays’ behavior in night-mode in the Config Portal: They can individually be dimmed or switched off in night-mode.
To toggle night-mode on/off manually, hold “4”.
In the Config Portal, a schedule for night-mode can be programmed. You can choose from currently four time schedule presets, or a daily schedule with selectable start and end hours.
The presets are for (hopefully) typical home, office and shop setups, and they assume the TCD to be in use (ie night-mode off) at the following times:
The daily schedule works by entering start and end in the text fields below. The TCD will go into night-mode at the defined start hour (xx:00), and return to normal operation at the end hour (yy:00).
Night mode schedules are always based on actual local present time.
You can also connect a light sensor to your TCD for night-mode switching: When the sensor reports a lux level below or equal the threshold set in the Config Portal, the TCD will go into night-mode.
If both a schedule and the light sensor are enabled, the sensor will overrule the schedule only in non-night-mode hours; ie it will never switch off night-mode when night-mode is active according to the schedule.
Switching on/off night-mode manually deactivates any schedule and the light sensor for 30 minutes. Afterwards, a programmed schedule and/or the light sensor will overrule the manual setting.
In order to use a light sensor, check the option Use light sensor in the Config Portal. You can observe the measured lux level through the keypad menu to find out about the right lux threshold for your environment.
For information on supported sensor models/types and configuration, see here.
The firmware features a simple count-down timer. This timer can count down from max 99 minutes and plays a sound upon expiry.
A reminder is yearly or monthly alarm.
To program a yearly reminder, enter 77mmddhhMM and press ENTER. For example: 7705150900 sets the reminder to May 15 9am. Now a reminder sound will play every year on May 15 at 9am.
To program a monthly reminder, enter 7700ddhhMM and press ENTER. For example: 7700152300 sets the reminder to the 15th of each month, at 11pm.
You can also leave out the hhMM part; in that case the time remains unchanged from a previous setting, unless both hour and minute were 0 (zero), in which case the reminder time is set to 9am.
Note that all fields consist of two digits, and hours are entered in 24-hour notation.
Type 77 followed by ENTER to display the programmed reminder, 770 to delete it, and 777 to display the days/hours/minutes until the next reminder.
At the time the reminder is due, the TCD plays a sound. If a file named “reminder.mp3” is on your SD card, this will be layed instead of the default sound.
Preface note on SD cards: For unknown reasons, some SD cards simply do not work with this device. For instance, I had no luck with Sandisk Ultra 32GB and “Intenso” cards. If your SD card is not recognized, check if it is formatted in FAT32 format (not exFAT!). Also, the size must not exceed 32GB (as larger cards cannot be formatted with FAT32). Transcend SDHC cards work fine in my experience.
The SD card, apart from being required for installing of the built-in audio data, can be used for substituting built-in sound effects, some additional custom sound effects, and for music played back by the Music player. Also, it is strongly recommended to store secondary settings on the SD card to minimize Flash Wear.
Note that the SD card must be inserted before powering up the TCD. It is not recognized if inserted while the TCD is running. Furthermore, do not remove the SD card while the TCD is powered.
The TCD’s built-in sound effects can be substituted by your own sound files on a FAT32-formatted SD card. These files will be played back directly from the SD card during operation, so the SD card has to remain in the slot.
Your replacements need to be put in the root (top-most) directory of the SD card, be in mp3 format (128kbps max) and named as follows:
The following sounds are time-sync’d to display action. If you decide to substitute these with your own, be prepared to lose synchronicity:
The firmware supports some additional, user-provided sound effects, which it will load from the SD card. If the respective file is present, it will be used. If that file is absent, no sound will be played.
Those files are not provided here. You can use any mp3, with a bitrate of 128kpbs or less.
The firmware contains a simple music player to play mp3 files located on the SD card.
In order to be recognized, your mp3 files need to be organized in music folders named music0 through music9. The folder number is 0 by default, ie the player starts searching for music in folder music0. This folder number can be changed in the keypad menu.
The names of the audio files must only consist of three-digit numbers, starting at 000.mp3, in consecutive order. No numbers should be left out. Each folder can hold 1000 files (000.mp3-999.mp3). The maximum bitrate is 128kpbs.
Since renaming mp3 files manually is somewhat cumbersome, the firmware can do this for you - provided you can live with the files being sorted in alphabetical order: Just copy your files with their original filenames to the music folder; upon boot or upon selecting a folder containing such files, they will be renamed following the 3-digit name scheme (as mentioned: in alphabetic order). You can also add files to a music folder later, they will be renamed properly; when you do so, delete the file “TCD_DONE.TXT” from the music folder on the SD card so that the firmware knows that something has changed. The renaming process can take a while (10 minutes for 1000 files in bad cases). Mac users are advised to delete the ._ files from the SD before putting it back into the TCD as this speeds up the process.
To start and stop music playback, hold 5. Holding 2 jumps to the previous song, holding 8 to the next one.
By default, the songs are played in order, starting at 000.mp3, followed by 001.mp3 and so on. By entering 555 and pressing ENTER, you can switch to shuffle mode, in which the songs are played in random order. Enter 222 followed by ENTER to switch back to consecutive mode.
Entering 888 followed by ENTER re-starts the player at song 000, and 888xxx (xxx = three-digit number) jumps to song #xxx.
See here for a list of controls of the music player.
While the music player is playing music, most sound effects are disabled/muted, such as keypad sounds, sound-on-the-hour, sounds for switching on/off the alarm and night-mode. Initiating a time travel stops the music player, as does activating the keypad menu. The alarm, the reminder and the count-down timer will sound as usual and stop the music player.
The keypad menu is an additional way to configure your TCD; it only involves the three displays and the keypad. It is controlled by “pressing” or “holding” the ENTER key on the keypad.
A “press” is shorter than 2 seconds, a “hold” is 2 seconds or longer.
The menu is invoked by holding the ENTER button.
Note that if the keypad menu is active at a time when the alarm, the reminder, the count-down timer or sound-on-the-hour are due, those events will be missed and no sounds are played.
Data entry, such as for dates and times, is done through the keypad’s number keys and works as follows: Whenever a data entry is requested, the field for that data is lit (while the rest of the display is dark) and a pre-set value is shown. If you want to keep that pre-set, press ENTER to proceed to next field. Otherwise press a digit on the keypad; the pre-set is then overwritten by the value entered. 2 digits can be entered (4 for years), upon which the new value is stored and the next field is activated. You can also enter less than 2 digits (4 for years) and press ENTER when done with the field. Note that a month needs to be entered numerically (1-12), and hours need to be entered in 24-hour notation (0-23), regardless of 12-hour or 24-hour mode as per the Config Portal setting.
After invoking the keypad menu, the first step is to choose a menu item. The available items are
Pressing ENTER cycles through the list, holding ENTER selects an item.
When the alarm is set and enabled, the dot in the present time’s minute field will light up.
Under normal operation (ie outside of the menu), holding “1” toggles the alarm on/off.
The alarm time can also quickly be set by typing 11hhMM (eg. 110645 for 6:45am, or 112300 for 11:00pm) and pressing ENTER, just like when setting a time travel destination time. (The weekday selection has still to be done via the keypad menu.) Typing 11 followed by ENTER shows the currently set time and weekday selection briefly.
Note that the alarm is recurring, ie it rings at the programmed time, unless disabled. Also note, as mentioned, that the alarm is by default relative to your actual present time, not the time displayed (eg after a time travel). It can, however, be configured to be based on the time displayed, in the Config Portal.
Important: The alarm will not sound when the keypad menu is active at the programmed alarm time.
By default, the device uses the built-in hardware volume knob to determine the desired volume. You can change this to a pre-selected level as follows:
You can also quickly set the volume by typing a code on the keypad followed by ENTER. 300-319 select a level, 399 enables the volume knob.
If you are using a Rotary Encoder for volume, you need to disable the volume knob by pre-selecting a level (00-19). While the built-in volume knob is active, the Rotary Encoder will do nothing.
In order for this menu item to show up, an SD card is required.
If shuffle was enabled before, the new folder is also played in shuffled order.
Note that the Music Folder Number is saved in a config file on the SD card.
If you can’t use network time (NTP) as a source of time, you need to manually adjust the TCD’s clock. Moreover, manual clock adjustment is a required prerequisite for using GPS. Before setting the TCD’s clock, it is essential that you set the correct time zone in the Config Portal.
Always set your actual local present time here; if you want to display some other time, use the Time Travel function.
The time you entered will be re-set/overruled/re-adjusted when the TCD has access to authoritative time via NTP or GPS.
Your entered date/time(s) are stored, and shown until replaced by the results of time travels; you can then quickly bring your times back to the displays by typing 998 followed by ENTER.
When entering dates/times into the destination time or last time departed displays, the Time-cycling Interval is automatically set to 0.
Note: Your dates/times will be overwritten in storage after a time travel when Make time travels persistent is checked. Please see here for details.
Note: Sometimes a lux value of -1 might be displayed, indicating a sensor overload. This can have the following reasons: The TCD firmware sets up the sensors for indoor usage and, as a result, sensors will overload in broad daylight. Secondly, some sensors have issues with halogen lamps (reportedly TSL2561), and most sensors also “overload” if too much IR light is directed at them, for instance from surveillance cameras.
If the TCD, perhaps along with other props such as Flux Capacitor or SID, is mounted in a car, there are a few things to be considered:
This is what car mode is for: If enabled, the TCD will always boot in AP mode, regardless of a configured WiFi network. This speeds up booting.
To enable car mode, type 991 followed by ENTER. The TCD will reboot in AP mode.
To disable car mode, type 990 followed by ENTER. The TCD will reboot and attempt to connect to a previously configured WiFi network.
Car mode is persistent, i.e. it remains active (even across reboots and power-downs) until disabled.
Note that the TCD has no internet access while in car mode; this means that, unless a GPS receiver is present, it cannot update its clock automatically. If the time runs off over time, you need to re-adjust it using the keypad menu.
You probably noticed that the device takes longer to boot than would be required to re-create the movie experience where Doc turns the knob and the Time Circuits immediately turn on. As a remedy, the firmware supports a fake “power switch”:
If the Use fake power switch option is checked in the Config Portal, the device will power-up, initialize everything, but stay quiet and dark. Only when the fake “power switch” is activated, the device will visually “power up”. Likewise, you can also fake “power off” the device using this switch. Fake “off” disables the displays, all audio (except the alarm) and the keypad. Just like in the movie.
On Control Boards V1.3 and later, there is a dedicated header labeled “Fake PWR” to connect the switch to. The pins to be connected by the switch are labeled “GND” and “PWR Trigger”:
On earlier Control Boards (1.2 and below), the switch needs connect the pins labeled “IO13” and “GND” as shown here: (The pin headers are not present on original boards)
Note that the switch actually needs to be a switch with a maintained contact; the pins need to remain connected for as long as the device is fake-switched-on.
In order to use the Fake Power Switch, check Use fake power switch in the Config Portal.
Here are some hints for building a TFC Switch like this one:
As mentioned above, a time travel can be triggered by holding “0” on the keypad. Since this doesn’t really allow for an authentic movie-like experience, the firmware also supports an external trigger, such as a button switch or even another prop to trigger a time travel. Note that, unlike the Fake Power Switch, this trigger must be a momentary toggle.
On Control Boards V1.3 and later, there is a dedicated header for the button labeled “Time Travel”. The button needs to connect pins “TT IN” and “GND”.
![]() |
---|
TT_IN on TCB 1.3 |
Unfortunately, there is no header and no break out for IO27 on TC control boards V1.2 and below. There is, however, a row of solder pads right next to the socket on the control board, where a pin header or cable can easily be soldered on:
![]() |
---|
IO27 (TT_IN) on TCB 1.2 |
In order to trigger a time-travel sequence on the Time Circuits, “TT IN”/IO27 and GND must be connected for at least 200ms and then opened; the time travel is triggered upon release of the button. If the button is pressed for 3000ms (3 seconds), a “Return from Time Travel” is triggered.
The Config Portal allows configuring a delay for matching/synchronizing the TCD to another prop. The delay, if any, starts running after the button is released. The time travel sequence starts after the delay has expired.
The firmware supports CircuitSetups’s speedometer display as part of the time travel sequence and for other purposes.
![]() |
---|
Click to watch the video |
Full disclosure: The video was shot before the CircuitSetup speedo became available. The speedo shown is a DIY prop and not the - much better looking - CircuitSetup speedo. The video is only meant to demonstrate how the TCD and the speedo inter-operate. (The TFC switch was made by me, see here, it uses the Fake Power Switch feature of the TCD.)
The CircuitSetup Speedo Kit needs to be wired as shown below:
If you want to make your own speedo, see here.
In order to use the Speedometer display, select the correct model/display type in the Config Portal. This is, surprisingly, “CircuitSetup” for the CircuitSetup speedo.
A GPS receiver can be used as a source of authoritative time (like NTP) and speed of movement.
The CircuitSetup original speedo has a built-in GPS receiver. If you want to use a third party GPS receiver, see here.
GPS receivers receive signals from satellites, but in order to do so, they need to be “tuned in” (aka get a “fix”). This “tuning” process can take a long time; after first power up, it can take 30 minutes or more for a receiver to be able to determine its position. In order to speed up this process, modern GPS receivers have special “assisting” features. One key element is knowledge of current time, as this helps identifying satellite signals quicker. So, in other words, initially, you need to tell the receiver what it is supposed to tell you. However, as soon as the receiver has received satellite signals for 15-20 minutes, it saves the data it collected to its battery-backed memory and will find a fix within seconds after power-up in the future.
For using GPS effectively as a long-term source of accurate time, it is therefore essential, that
If/as long as the GPS receiver has a fix and receives data from satellites, the dot in the present time’s year field is lit.
In order to use the GPS receiver as a source of time, no special configuration is required. If it is detected during boot, it will be used.
One nice feature of GPS is that the receiver can deliver current speed of movement. If the Time Circuits are, for instance, mounted in a car or on a boat, and a speedo display is connected, this display will be just that: A real speedometer.
![]() |
---|
Click to watch the video |
In order to use the GPS receiver for speed, check Display GPS speed in the Config Portal.
If other props using GPS speed are connected via BTTF-Network, check the option Provide GPS speed for wireless props in the Config Portal.
A rotary encoder is, simply put, a turnable knob. On the TCD, rotary encoders can be used for speed and/or audio volume.
For information on supported encoder models/types and configuration, see here.
Up to two rotary encoders can be connected, one for speed, one for volume.
The rotary encoder, if configured for speed, allows manually selecting a speed to be displayed on the Speedo display, as well as to be sent to BTTFN clients in place of actual (GPS) speed.
![]() |
---|
Click to watch the video |
Remarks:
The rotary encoder for volume replaces the volume knob on back of the TCD’s keypad. The advantages of the rotary encoder are that it is more precise, especially at lower volume levels, and it can be relocated. In order to use the rotary encoder for volume, the TCD’s own volume knob must be disabled; this is done by pre-selecting an audio level in the keypad menu, or by typing 3xx (xx being 00-19) followed by ENTER.
The firmware supports connecting a temperature/humidity sensor for “room condition mode”; in this mode, destination and last departed times are replaced by temperature and humidity (if applicable), respectively. To toggle between normal and room condition mode, enter “111” and press ENTER.
Room condition mode can be used together with World Clock mode; if both are enabled, only one alternative time and only temperature is shown. To toggle RC and WC mode simultaneously, type “113” and press ENTER.
Temperature on speedometer display: Unless you do time travelling on a regular basis, the speedo display is idle most of the time in a typical home setup. To give it more of a purpose, the firmware can display ambient temperature on the speedo while idle.
In order to use a temperature/humidity sensor, no special configuration is required. If a sensor is detected by the firmware during boot, it will be used.
For information on supported sensor models/types and configuration, see here.
The device can tell other props about a time travel, and in essence act as a “master controller” in a setup of several props.
For detailed wiring instructions, please see the documentation for the prop (Flux capacitor, SID, Dash Gauges, VSR); for DIY props, see here.
If external gear is connected by wire and you want to use this control feature, check Control props connected by wire in the Config Portal.
For CircuitSetup original props connected by wire, the option Signal Time Travel without 5s lead should not be set since it skips the “acceleration phase”; however, if that option is set on the TCD (for instance, if third-party props are connected by wire as well), the respective option on the prop must be set, too. If those props are connected wirelessly, this option has no effect.
Note that a wired connection only allows for synchronized time travel sequences, no other communication takes place. A wireless connection allows for more features, see immediately below.
The TCD can communicate with other compatible props wirelessly, via the built-in “Basic-Telematics-Transmission-Framework” over WiFi. It can send out information about a time travel and an alarm, and other props can query the TCD for time, speed and some other data.
Here is a demonstration of all the props connected through BTTFN:
![]() |
---|
Click to watch the video |
On the TCD, no special configuration is required.
On the other prop, such as CircuitSetup’s Flux Capacitor, SID or the Dash Gauges, the TCD’s IP address (or hostname) must be entered into the IP address or hostname of TCD field on the Setup page in their Config Portal - that’s all.
The fact that the devices communicate directly with each other makes BTTFN the ideal solution for car setups. Also, while at home, the devices might be connected to an existing WiFi network, in a car, the TCD can act as access point for Flux Capacitor and SID (ie they are connecting to the TCD-AP WiFi network), and those then can talk the TCD wirelessly. The TCD has car mode for aiding this, see here and the documentation of the respective prop.
To see which BTTFN devices are currently known to the TCD, enter the keypad menu and select “BTTFN CLIENTS”.
The TCD supports the MQTT protocol version 3.1.1 for the following features:
The TCD can subscribe to a user-configured topic and display messages received for this topic on the Destination Time display. This can be used to display the status of other HA/MQTT devices, for instance alarm systems. If the SD card contains a file named “ha-alert.mp3”, this file will be played upon reception of a message (there is no default sound).
Only ASCII messages are supported, the maximum length is 255 characters.
The TCD can - to a limited extent - be controlled through messages sent to topic bttf/tcd/cmd. Support commands are
If both the TCD and the other props are connected to the same broker, and the option Send event notifications is checked on the TCD’s side, other compatible props will receive information on time travel and alarm and play their sequences in sync with the TCD. The topic is called bttf/tcd/pub.
The timing is identical to the wired protocol; TIMETRAVEL is sent to bttf/tcd/pub with a lead time of 5 seconds. REENTRY is sent when the re-entry sequence starts.
When the alarm sounds, the TCD sends “ALARM” to bttf/tcd/pub.
MQTT and BTTFN can co-exist. The TCD only sends out time travel and alarm notifications through either MQTT or BTTFN, never both; selection is done by checking or unchecking the option Send event notifications in the MQTT section of the Config Portal’s Setup page.
If you have other MQTT-aware devices listening to the TCD’s public topic (bttf/tcd/pub) in order to react to time travel or alarm messages, use MQTT (i.e. check Send event notifications). If only BTTFN-aware devices are to be used, uncheck this option to use BTTFN as it has less latency.
In order to connect to a MQTT network, a “broker” (such as mosquitto, EMQ X, Cassandana, RabbitMQ, Ejjaberd, HiveMQ to name a few) must be present in your network, and its address needs to be configured in the Config Portal. The broker can be specified either by domain or IP (IP preferred, spares us a DNS call). The default port is 1883. If a different port is to be used, append a “:” followed by the port number to the domain/IP, such as “192.168.1.5:1884”.
If your broker does not allow anonymous logins, a username and password can be specified.
If you want your TCD to display messages as described above, you also need to specify the topic in the respective field.
If you want your TCD to publish messages to bttf/tcd/pub (ie if you want to notify other devices about a timetravel and/or alarm), check the Send event notifications option.
Limitations: MQTT Protocol version 3.1.1; TLS/SSL not supported; “.local” domains (MDNS) not supported; maximum message length 255 characters; server/broker must respond to PING (ICMP) echo requests. For proper operation with low latency, it is recommended that the broker is on your local network. Note that using HA/MQTT will disable WiFi power saving (as described below).
The Config Portal offers two options for WiFi power saving, one for station mode (ie when the device is connected to a WiFi network), one for AP-mode (ie when the device acts as an access point). Both options do the same: They configure a timer after whose expiry WiFi is switched off; the device is no longer transmitting or receiving data over WiFi.
The timers can be set to 0 (which disables them; WiFi is never switched off; this is the default), or 10-99 minutes.
The reason for having two different timers for AP-mode and for station mode is that if the device is used in a car, it might act as an access point (such as in car mode), while at home it is most probably connected to a WiFi network as a client. Since in a car, unless other props are installed that communicate wirelessly, WiFi will most likely not be used on a regular basis, the timer for AP mode can be short (eg 10 minutes), while the timer for station mode can be disabled.
After WiFi has been switched off due to timer expiry, it can be re-enabled by holding “7” on the keypad for approx. 2 seconds, in which case the timers are restarted (ie WiFi is again switched off after timer expiry).
Note that if your configured WiFi network was not available when the TCD was trying to connect, it will end up in AP-mode. Holding “7” in that case will trigger another attempt to connect to your WiFi network.
Flash memory has a somewhat limited life-time. It can be written to only between 10.000 and 100.000 times before becoming unreliable. The firmware writes to the internal flash memory when saving settings and other data. Every time you change settings through the keypad menu or the Config Portal, data is written to flash memory.
In order to reduce the number of write operations and thereby prolong the life of your TCD, it is recommended to use a good-quality SD card and to check Save secondary settings on SD in the Config Portal; secondary settings (volume, alarm, reminder, carmode state, exhibition mode data and state, time travel data and state) are then stored on the SD card (which also suffers from wear but is easy to replace). See here for more information.
Clicking this leads to the WiFi configuration page. On that page, you can connect your TCD to your WiFi network by selecting/entering the SSID (WiFi network name) as well as a password (WPA2). By default, the TCD requests an IP address via DHCP. However, you can also configure a static IP for the TCD by entering the IP, netmask, gateway and DNS server. All four fields must be filled for a valid static IP configuration. If you want to stick to DHCP, leave those four fields empty.
Note that this page has nothing to do with Access Point mode; it is strictly for connecting your TCD to an existing WiFi network as a client.
This leads to the Setup page.
This leads to the firmware and audio update page.
In order to upload a new firmware binary (such as the ones published here in the install/ folder), select that image file in the top file selector and click “Update”.
You can also install the TCD’s audio data on this page; download the current sound-pack, extract it and select the resulting TCDA.bin file in the bottom file selector. Finally, click “Upload”. Note that an SD card is required for this operation.
Note that either a firmware or audio data can be uploaded at once, not both at the same time.
Clicking this (and saying “yes” in the confirmation dialog) erases the WiFi configuration (WiFi network and password) and reboots the device; it will restart in “access point” mode. See here.
Selects whether the animated intro should be played upon power-up.
Selects 24-hour clock mode, ie hours go from 0 to 23, “AM” and “PM” are permanently dark.
Selects the default, power-up “beep” mode. “Auto: xx secs” enables the beep for xx seconds after entering a destination time, after triggering a time travel, and upon (real or fake) power-on. Can be changed at any time by typing 000 (off), 001 (on), 002 (Auto 30secs) or 003 (Auto 60secs) followed by ENTER.
In this decorative mode the device cycles through a list of pre-programmed, movie-accurate destination and last time departed times. This mode is enabled by setting the “Time-cycling Interval” to anything but “off”. The device will cycle through named list every 5th, 10th, 15th, 30th or 60th minute, and thereby change the displays. Set the interval to “off” to disable. See here
Selects whether the alarm and sound-on-the-hour are based on real, actual present time, or “present” time as displayed (eg after a time travel).
Note that the night mode schedules and the Reminder are always based on actual present time.
The device’s hostname in the WiFi network. Defaults to ‘timecircuits’. This also is the domain name at which the Config Portal is accessible from a browser in the same local network. The URL of the Config Portal then is http://hostname.local (the default is http://timecircuits.local)
If you have more than one TCD in your local network, please give them unique hostnames.
By default, if the TCD creates a WiFi network of its own (“AP-mode”), this network is named “TCD-AP”. In case you have multiple TCDs in your vicinity, you can have a string appended to create a unique network name. If you, for instance, enter “-ABC” here, the WiFi network name will be “TCD-AP-ABC”. Characters A-Z, a-z, 0-9 and - are allowed.
By default, and if this field is empty, the TCD’s own WiFi network (“AP-mode”) will be unprotected. If you want to protect your TCD access point, enter your password here. It needs to be 8 characters in length and only characters A-Z, a-z, 0-9 and - are allowed.
If you forget this password and are thereby locked out of your TCD, power-down, hold the ENTER key, power-up and wait until the white LED flashes, then release the ENTER key. The TCD will boot and start the access point temporarily without a password. Then connect to the TCD’s AP with your computer or handheld, enter the Config Portal ( http://192.168.4.1 ) and either look up or change your AP WiFi password. Note that this ENTER-key-procedure is not persistent: When you reboot or re-power the TCD, the AP will be password protected again.
Number of times the firmware tries to reconnect to a WiFi network, before falling back to AP-mode. See here
Number of seconds before a timeout occurs when connecting to a WiFi network. When a timeout happens, another attempt is made (see immediately above), and if all attempts fail, the device falls back to AP-mode. See here
Selects whether periodic re-connection attempts (between 12am and 6am) should be made after a failure to connect to a configured WiFi network.
In typical home setups with 24/7 WiFi, this option hardly matters. However, if you have connected your TCD to your WiFi network, but move it between environments (with and without WiFi access) on a regular basis, uncheck this to keep the TCD from searching for your configured WiFi network unnecessarily.
This option has no effect if the TCD is in Car Mode.
See here
See here
The time zone of the place where the device is operated in POSIX format. Needs to be set in order to use NTP or GPS, and for DST (daylight saving). Defaults to UTC0. See here, here or here for a list of valid time zones.
Name of your preferred NTP (network time protocol) server for time synchronization. Leave this empty to disable NTP.
The time zone for the red display in World Clock mode. Default: unset. Needs to be in Posix format.
The time zone for the yellow display in World Clock mode. Default: unset. Needs to be in Posix format.
For each World Clock time zones, a city or location name can be configured. For example “SYDNEY” or “LORD HOWE”. This name will be shown every few seconds alternately with time.
Selects whether the destination time display is dimmed or switched of in night mode.
Selects whether the present time display is dimmed or switched of in night mode.
Selects whether the last time departed display is dimmed or switched of in night mode.
Selects a schedule for night-mode. See here
If “Daily” is chosen in the “Schedule”-drop-down, enter night-mode start hour here.
If “Daily” is chosen in the “Schedule”-drop-down, enter night-mode end hour here.
Select whether to use a light sensor’s data to enable night-mode. See here.
If the light sensor reports a number of lux below or equal to this value, night-mode is activated. See here.
Selects between Fahrenheit and Celsius for temperature display. See here
This offset, which can range from -3.0 to 3.0, is added to the sensor measurement, in order to compensate sensor inaccuracy or suboptimal sensor placement.
Type of speedo display. Apart from CircuitSetups’s own, several other types are also supported, mostly Adafruit or Seeed/Grove LED segment displays. For 4-digit-displays there are options to display speed left- or right-aligned. Two special options for Adafruit 828 and 1911 are at the end of the list; use these if you connect only one 2-digit-tube to the respective i2c backpack.
Brightness of speedo display when displaying speed.
Since the DMC-12 wasn’t the world’s fastest car, it’s acceleration figures might soon cause boredom if played in real-time as part of the time travel sequence with a speedo display. This factor speeds up the acceleration. 2.0 means twice as fast as the real car.
If a GPS receiver is connected, this selects whether to display GPS speed on the speedo display. This only makes sense if the Time Circuits are mounted in a car. See here
If GPS speed is to be shown on a speedo display (see option immediately above), you can select in what rate the speed should be updated. The choices are once, twice, four times or five times per second.
It appears that the GPS receiver calculates speed on every satellite position update, and the higher the update rate, the shorter the travelled distance, and the higher the error rate. The default is therefore 2Hz (twice per second) as it provides the (IMHO) best combination of quickness and accuracy.
Selects whether temperature as received from a suitable sensor is displayed on the speedo display, when it is idle (ie no time travel is in progress).
Brightness of speedo display when displaying temperature.
Selects whether the temperature display is dimmed or switched of in night mode.
Check this if you want to use a fake power switch. See here.
Selects a delay (in milliseconds) from when pressing the external time travel button until the time travel sequence starts. See here.
This selects whether the TT_OUT/IO14 pin is activated upon a time-travel in order to play synchronized time travel sequences on other props, if those props are connected by wire. See here.
If this option is unchecked (which is the default), a time travel is signaled for wired props with a 5 second lead, in order to give the prop time to play an acceleration sequence. If this option is checked, TT_OUT/IO14 is activated when the time travel actually starts.
For CircuitSetup original props, if they are connected by wire, this option should not be set. If it has to be set (because you are also driving third-party props, for instance), the corresponding option must be set in the prop’s Config Portal.
For wirelessly connected props this option has no effect. Also see here.
Some BTTF-Network clients query the TCD for GPS speed, such as CircuitSetup’s Flux Capacitor and SID. Check this option if such clients are connected, so that they get frequent GPS speed updates.
If other props are connected, they might bring their own time travel sound effects. In this case, you can uncheck this to disable the Time Circuit’s own time travel sounds. Note that this only covers sounds played during time travel, not other sound effects.
If checked, the TCD will connect to the broker (if configured) and send and receive messages via MQTT.
The broker server address. Can be a domain (eg. “myhome.me”) or an IP address (eg “192.168.1.5”). The default port is 1883. If different port is to be used, it can be specified after the domain/IP and a colon “:”, for example: “192.168.1.5:1884”. Specifying the IP address is preferred over a domain since the DNS call adds to the network overhead. Note that “.local” (MDNS) domains are not supported.
The username (and optionally the password) to be used when connecting to the broker. Can be left empty if the broker accepts anonymous logins.
An optional topic the TCD subscribes to in order to display messages on the Destination Time display.
Check this if you want the TCD to send notifications on time travel and alarm via MQTT.
Note that if this option is checked, the TCD will not send out such notifications via BTTF-Network.
When checked, songs are shuffled when the device is booted. When unchecked, songs will be played in order.
If this is checked, secondary settings (brightness, time cycling interval, volume, alarm, reminder, car mode state, exhibition mode data and state, time travel state and data) are stored on the SD card (if one is present). This helps to minimize write operations to the internal flash memory and to prolong the lifetime of your TCD. See Flash Wear.
Apart from Flash Wear, there is another reason for using an SD card for settings: Writing data to internal flash memory can cause delays of up to 1.5 seconds, which interrupt sound playback and have other undesired effects. The TCD needs to save data from time to time, so in order for a smooth experience without unexpected and unwanted delays, please use an SD card and check this option.
It is safe to have this option checked even with no SD card present.
If you want copy settings from one SD card to another, do as follows:
This procedure ensures that all your settings are copied from the old to the new SD card.
See here. For this option to take effect, it is required that the Save secondary settings on SD is checked as well, and an SD card is present. Time travel data is only ever stored on SD, never in internal flash memory.
Here are the probably most used times zones:
America:
Europe:
A full list is here.
Text & images: (C) Thomas Winischhofer (“A10001986”). See LICENSE.