{"id":20833373,"url":"https://github.com/reala10001986/sid","last_synced_at":"2026-02-26T19:10:08.054Z","repository":{"id":206646033,"uuid":"691236658","full_name":"realA10001986/SID","owner":"realA10001986","description":"Firmware for CircuitSetup's Status Indicator Display (SID) kit, known from the Delorean Time Machine","archived":false,"fork":false,"pushed_at":"2026-02-16T14:39:49.000Z","size":19649,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-16T16:03:28.362Z","etag":null,"topics":["bttf","circuitsetup","delorean","deloreantimemachine","display","docbrown","dtm","esp32","indicator","mcfly","sid","status","status-indicator","time-machine"],"latest_commit_sha":null,"homepage":"https://circuitsetup.us/product/delorean-time-machine-status-indicator-display-sid/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/realA10001986.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-13T19:12:28.000Z","updated_at":"2026-02-16T14:39:53.000Z","dependencies_parsed_at":"2024-01-21T22:47:40.851Z","dependency_job_id":"4c83ada3-4475-49e0-a854-ca15c7063f24","html_url":"https://github.com/realA10001986/SID","commit_stats":null,"previous_names":["reala10001986/sid"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/realA10001986/SID","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realA10001986%2FSID","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realA10001986%2FSID/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realA10001986%2FSID/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realA10001986%2FSID/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/realA10001986","download_url":"https://codeload.github.com/realA10001986/SID/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realA10001986%2FSID/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29868112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T18:42:30.764Z","status":"ssl_error","status_checked_at":"2026-02-26T18:41:47.936Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bttf","circuitsetup","delorean","deloreantimemachine","display","docbrown","dtm","esp32","indicator","mcfly","sid","status","status-indicator","time-machine"],"created_at":"2024-11-18T00:15:21.167Z","updated_at":"2026-02-26T19:10:08.040Z","avatar_url":"https://github.com/realA10001986.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SID - Status Indicator Display\n\nThis [repository](https://sid.out-a-ti.me) holds the most current firmware for CircuitSetup's magnificent [SID](https://circuitsetup.us/product/delorean-time-machine-status-indicator-display-sid/) kit. The SID, also known as \"Field Containment System Display\", is an important part of Doc Brown's Delorean Time Machine.\n\nThe hardware is available [here](https://circuitsetup.us/product/delorean-time-machine-status-indicator-display-sid/). The SID replica can be used stand-alone, or in connection with CircuitSetup's [Time Circuits Display](https://tcd.out-a-ti.me). It's made of metal and perfectly fit for mounting in an actual Delorean.\n\n![mysid](img/mysid.jpg)\n\n| [![Watch the video](https://img.youtube.com/vi/1HX0PiZ1YL0/0.jpg)](https://youtu.be/1HX0PiZ1YL0) |\n|:--:|\n| Click to watch the video |\n\nFeatures include\n- various idle patterns\n- [Time Travel](#time-travel) function, triggered by button, [Time Circuits Display](https://tcd.out-a-ti.me) or via [MQTT](#home-assistant--mqtt)\n- [IR remote controlled](#ir-remote-control); can learn keys from third-party remote\n- [Spectrum Analyzer](#spectrum-analyzer) mode via built-in microphone\n- advanced network-accessible [Config Portal](#the-config-portal) for setup (http://sid.local, hostname configurable)\n- [Wireless communication](#bttf-network-bttfn) with [Time Circuits Display](https://tcd.out-a-ti.me); used for synchronized time travels, GPS-speed adapted patterns, alarm, night mode, fake power, remote control of SID through TCD keypad, or [remote controlling](#remote-controlling-the-tcds-keypad) the TCD keypad.\n- [Home Assistant](#home-assistant--mqtt) (MQTT) support\n- [*Siddly*](#siddly) and [*Snake*](#snake) games\n- [SD card](#sd-card) support\n- built-in OTA installer for firmware updates\n\n\u003eThis [repository](https://sid.out-a-ti.me) is the upstream source for CircuitSetup's releases. The only difference is that both code and documentation [here](https://sid.out-a-ti.me) might be ahead in development.\n\nFor information on updating the firmware on your SID, see [here](#firmware-installation--firmware-update).\n\n## Initial Configuration\n\n\u003eThe following instructions only need to be followed once, on fresh SIDs. They do not need to be repeated after a firmware update.\n\nThe first step is to establish access to the SID's configuration web site (\"Config Portal\") in order to configure your SID:\n\n- Power up your SID and wait until the startup sequence has completed.\n- Connect your computer or handheld device to the WiFi network \"SID-AP\".\n- Navigate your browser to http://sid.local or http://192.168.4.1 to enter the Config Portal.\n\n### Connecting to a WiFi network\n\nYour SID knows two ways of WiFi operation: Either it creates its own WiFi network, or it connects to a pre-existing WiFi network.\n\nAs long as your SID is unconfigured, it creates its own WiFi network named \"SID-AP\". This mode of operation is called \"**Access point mode**\", or **\"AP-mode\"**. In this mode, computers/handhelds can connect to your SID in order to access the Config Portal, but ways of communication end right here. There is no inter-prop-communication ([BTTFN](#bttf-network-bttfn)) and no [HA/MQTT](#home-assistant--mqtt).\n\n![APmode](img/apmode.png)\n\nIt is ok to leave it in AP-mode, predominantly if used stand-alone. To keep operating your SID in AP-mode, simply _do not configure_ a WiFi network connection as described below.\n\n\u003cdetails\u003e\n\u003csummary\u003eMore...\u003c/summary\u003e\n\n\u003ePlease do not leave computers/handhelds permanently connected to the SID in AP-mode. These devices might think they are connected to the internet and therefore hammer your SID with DNS and HTTP requests which might lead to disruptions.\n\n\u003eIf you wish for your device to remain in AP-mode, please select a suitable WiFi channel on the Config Portal's \"WiFi Configuration\" page. See [here](#-wifi-channel).\n\n\u003e In AP-mode, the SID can switch off WiFi to save power. See [here](#wifi-power-saving-features).\n\n\u003c/details\u003e\n\n#### Home setup with a pre-existing local WiFi network\n\nIn this case, you can connect your SID to your home WiFi network. This allows for inter-prop-communication ([BTTFN](#bttf-network-bttfn)) and [HA/MQTT](#home-assistant--mqtt).\n\n![STAmode-home](img/stamode-home.png)\n\nClick on \"WiFi Configuration\" and either select a network from the top of the page or enter a WiFi network name (SSID), and enter your WiFi password. After saving the WiFi network settings, your SID reboots and tries to connect to your selected WiFi network.\n\n\u003cdetails\u003e\n\u003csummary\u003eMore...\u003c/summary\u003e\n  \n\u003eYour SID 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, wait until it has completed its startup sequence, then type \\*123456ok on the IR remote; static IP data will be deleted and the device will return to DHCP after a reboot.\n\n\u003c/details\u003e\n\nIf the SID fails to connect, it falls back to AP-mode. You can trigger another connection attempt by entering *77ok.\n\n#### Places without a WiFi network\n\nIn this case and with no [Time Circuits Display](https://tcd.out-a-ti.me) at hand, keep your SID operating in AP-mode.\n\nIf you have a TCD, you can connect your SID to the TCD's own WiFi network: \n\n![STAmode-car](img/stamode-car.png)\n\nThis setup is meant for cars, but suitable for any place with no WiFi network. See [here](#car-setup) for details.\n\nAfter completing WiFi setup, your SID is ready for use; you can also continue configuring it to your personal preferences through the Config Portal.\n\n## The Config Portal\n\nThe \"Config Portal\" is the SID's configuration web site. \n\n| ![The Config Portal](img/cpm.png) |\n|:--:| \n| *The Config Portal's main page* |\n\nIt can be accessed as follows:\n\n#### If SID is in AP mode\n\n- Connect your computer or handheld device to the WiFi network \"SID-AP\".\n- Navigate your browser to http://sid.local or http://192.168.4.1 to enter the Config Portal.\n- (For proper operation, please disconnect your computer or handheld from SID-AP when you are done with configuring your SID. These devices can cause high network traffic, resulting in severe performance penalties.)\n\n#### If SID is connected to a WiFi network\n\n- Connect your handheld/computer to the same (WiFi) network to which the SID is connected, and\n- navigate your browser to http://sid.local  \u003cdetails\u003e\u003csummary\u003eMore...\u003c/summary\u003e\n\n  \u003eAccessing the Config Portal through this address requires the operating system of your handheld/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.\n\n  \u003eIf connecting to http://sid.local fails due to a name resolution error, you need to find out the SID's IP address: Type *90ok on the remote control; the IP address will be shown on the display. 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 SID's display) in order to enter the Config Portal.\u003c/details\u003e\n\nIn the main menu, click on \"Settings\" to configure your SID. \n\n| [\u003cimg src=\"img/cps-frag.png\"\u003e](img/cp_setup.png) |\n|:--:| \n| *Click for full screenshot* |\n\nA full reference of the Config Portal is [here](#appendix-a-the-config-portal).\n\n## Basic Operation\n\nWhen the SID is idle, it shows an idle pattern. There are alternative idle patterns to choose from, selected by *10ok through *14ok on the remote, or via MQTT. If an SD card is present, the chosen setting will be persistent across reboots.\n\nIf the option **_Adhere strictly to movie patterns_** is set (which is the default), the idle patterns #0 through #3 will only use patterns extracted from the movies (plus some interpolations); the same goes for when [TCD-provided speed](#bttf-network-bttfn) is used. If this option is unset, random variations are shown, which is less boring, but also less accurate.\n\nFor ways to trigger a time travel, see [here](#time-travel).\n\nThe main control device is the supplied IR remote control. If a TCD is connected through [BTTF-Network](#bttf-network-bttfn), the SID can also be controlled through the TCD's keypad.\n\n### IR remote control\n\nYour SID comes with an IR remote control included. This remote works out-of-the-box and needs no setup. \n\n| ![Supplied IR remote control](img/irremote.jpg) |\n|:--:| \n| *The SID's standard IR remote control* |\n\nEach time you press a (recognized) key on the remote, an IR feedback LED will briefly light up. This LED is located at the bottom of the board.\n\nApart from the feedback LED, your SID will also show some feedback signals on its main display:\n- By default, when initiating a command sequence by pressing \\*, SID will start to show each key pressed afterwards by lighting up another red LED. This kind of feedback can be disabled using command sequence *63ok or in the Config Portal;\n- By default, after executing a command, SID will show a \"success\" signal. This kind of feedback can be disabled using command sequence *62ok or in the Config Portal;\n- If a command was unsuccessful or not recognized, a \"bad input\" signal will be shown.\n\nSee [here](#appendix-b-led-signals) for all supported signals.\n\n### IR learning\n\nYour SID can learn the codes of another IR remote control. Most remotes with a carrier signal of 38kHz (which most IR remotes use) will work. However, some remote controls, especially ones for TVs, send keys repeatedly and/or send different codes alternately. If you had the SID learn a remote and the keys are not (always) recognized afterwards or appear to the pressed repeatedly while held, that remote is of that type and cannot be used.\n\nIR learning can be initiated by entering *987654ok on the standard IR remote.\n\n\u003eAlternatively, IR learning can be started by pressing and holding a connected [Time Travel](#time-travel) button for a few seconds (while the option **_TCD connected by wire_** in the Config Portal is unchecked).\n\nWhen IR learning is started, the display first shows \"GO\", immediately followed by \"0\". Press \"0\" on your remote, which the SID will visually acknowledge by displaying the next key to press. Then press \"1\", wait for the acknowledgement, and so on. Enter your keys in the following order:\n\n```0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - * - # - Arrow up - Arrow down - Arrow left - Arrow right - OK``` \n\nIf your remote control lacks the \\* (starts command sequence) and \\# (aborts command sequence) keys, you can use any other key, of course. \\* could be eg. \"menu\" or \"setup\", \\# could be \"exit\" or \"return\".\n\nIf no key is pressed for 10 seconds, the learning process aborts (as does briefly pressing the Time Travel button): The keys already learned are forgotten and nothing is saved.\n\nTo make the SID forget a learned IR remote control, type *654321ok.\n\n### Locking IR control\n\nYou can have your SID ignore IR commands from any IR remote control (be it the supplied standard one, be it one you had your SID learn) by entering *71ok. After this sequence, the SID will ignore all IR commands until *71ok is entered again. The purpose of this function is to enable you to use the same remote for your SID and other props.\n\nThe status of the IR lock is saved 10 seconds after its last change, and is persistent across reboots.\n\nIn order to only disable the supplied IR remote control, check the option **_Disable supplied IR remote control_** in the [Config Portal](#-disable-supplied-ir-remote-control). In that case, any learned remote will still work.\n\n### Remote control reference\n\n\u003ctable\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\" colspan=\"3\"\u003eSingle key actions\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e1\u003cbr\u003eGames: New game\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e2\u003cbr\u003e-\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e3\u003cbr\u003e-\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e4\u003cbr\u003e-\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e5\u003cbr\u003eGames: Pause\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e6\u003cbr\u003e-\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e7\u003cbr\u003e-\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e8\u003cbr\u003e-\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e9\u003cbr\u003eGames: Quit\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e*\u003cbr\u003eStart command sequence\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e0\u003cbr\u003e\u003ca href=\"#time-travel\"\u003eTime Travel\u003c/a\u003e\u003cbr\u003eSiddly: Fall down\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e#\u003cbr\u003eAbort command sequence\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e\u0026#8593;\u003cbr\u003eIncrease Brightness\u003cbr\u003eSiddly: Rotate\u003cbr\u003eSnake: Up\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e\u0026#8592;\u003cbr\u003eGames: Left\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eOK\u003cbr\u003eExecute command\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e\u0026#8594;\u003cbr\u003eGames: Right\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003e\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e\u0026#8595;\u003cbr\u003eDecrease Brightness\u003cbr\u003eGames: Down\u003c/td\u003e\n     \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable id='special_key_sequences'\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\" colspan=\"3\"\u003eCommand sequences\u003cbr\u003e(\u0026#9166; = OK key)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003eFunction\u003c/td\u003e\u003ctd\u003eCode on remote\u003c/td\u003e\u003ctd\u003eCode on TCD\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eDefault idle pattern\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*10\u0026#9166;\u003c/td\u003e\u003ctd\u003e6010\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eIdle pattern 1\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*11\u0026#9166;\u003c/td\u003e\u003ctd\u003e6011\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eIdle pattern 2\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*12\u0026#9166;\u003c/td\u003e\u003ctd\u003e6012\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eIdle pattern 3\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*13\u0026#9166;\u003c/td\u003e\u003ctd\u003e6013\u003c/td\u003e\n    \u003c/tr\u003e\n     \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eIdle pattern 4\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*14\u0026#9166;\u003c/td\u003e\u003ctd\u003e6014\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eSwitch to idle mode\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*20\u0026#9166;\u003c/td\u003e\u003ctd\u003e6020\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eStart Spectrum Analyzer\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*21\u0026#9166;\u003c/td\u003e\u003ctd\u003e6021\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eStart Siddly game\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*22\u0026#9166;\u003c/td\u003e\u003ctd\u003e6022\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eStart Snake game\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*23\u0026#9166;\u003c/td\u003e\u003ctd\u003e6023\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eEnable/disable \"\u003ca href=\"#-adhere-strictly-to-movie-patterns\"\u003estrictly movie patterns\u003c/a\u003e\"\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*60\u0026#9166;\u003c/td\u003e\u003ctd\u003e6060\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eEnable/disable peaks in Spectrum Analyzer\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*61\u0026#9166;\u003c/td\u003e\u003ctd\u003e6061\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eEnable/disable positive IR feedback\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*62\u0026#9166;\u003c/td\u003e\u003ctd\u003e6062\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eEnable/disable IR command entry feedback\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*63\u0026#9166;\u003c/td\u003e\u003ctd\u003e6063\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u003ca href=\"#locking-ir-control\"\u003eDisable/Enable\u003c/a\u003e IR remote commands\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*71\u0026#9166;\u003c/td\u003e\u003ctd\u003e6071\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u003ca href=\"#wifi-power-saving-features\"\u003eRe-enable WiFi\u003c/a\u003e or re-try to \u003ca href=\"#home-setup-with-a-pre-existing-local-wifi-network\"\u003econnect to WiFi\u003c/a\u003e\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*77\u0026#9166;\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eDisplay current IP address\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*90\u0026#9166;\u003c/td\u003e\u003ctd\u003e6090\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eEnter \u003ca href=\"#remote-controlling-the-tcds-keypad\"\u003eTCD keypad remote control mode\u003c/a\u003e\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*96\u0026#9166;\u003c/td\u003e\u003ctd\u003e6096\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eQuit \u003ca href=\"#remote-controlling-the-tcds-keypad\"\u003eTCD keypad remote control mode\u003c/a\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e-\u003c/td\u003e\u003ctd\u003e6097\u003c/td\u003e\n    \u003c/tr\u003e\n   \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eSet brightness level (00-15)\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*400\u0026#9166; - *415\u0026#9166;\u003c/td\u003e\u003ctd\u003e6400-6415\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eReboot the device\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*64738\u0026#9166;\u003c/td\u003e\u003ctd\u003e6064738\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eToggle firmware update signals at power-up\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*53281\u0026#9166;\u003c/td\u003e\u003ctd\u003e6053281\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eDelete static IP address\u003cbr\u003eand WiFi-AP password\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*123456\u0026#9166;\u003c/td\u003e\u003ctd\u003e6123456\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eStart IR remote \u003ca href=\"#ir-learning\"\u003elearning process\u003c/a\u003e\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*987654\u0026#9166;\u003c/td\u003e\u003ctd\u003e6987654\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003eDelete learned IR remote control\u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e*654321\u0026#9166;\u003c/td\u003e\u003ctd\u003e6654321\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n1: Not supported through HA/MQTT [_INJECT_](#the-inject_x-command) command\n\n[Here](https://github.com/realA10001986/SID/blob/main/CheatSheet.pdf) 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.)\n\n## Time travel\n\nTo travel through time, type \"0\" on the remote control. The SID will play its time travel sequence.\n\nYou can also connect an external Time Travel button to your SID; the button must connect \"TT\" to \"3.3V\" on the \"Time Travel\" connector. Pressing this button briefly will trigger a time travel.\n\nOther ways of triggering a time travel are available if a [Time Circuits Display](#connecting-a-time-circuits-display) is connected.\n\n## Spectrum Analyzer\n\nThe spectrum analyzer (or rather: frequency-separated vu meter) works through a built-in microphone. This microphone is located behind the right-hand side center hole of the enclosure.\n\nSticky peaks are optional, they can be switched on/off in the Config Portal and by typing *61ok on the remote.\n\nIf an SD card is present, your SID will start the spectrum analyzer upon power-up if it was on for at least 15 seconds before power-down.\n\n## Games\n\n### Siddly\n\nSiddly is a simple game where puzzle pieces of various shapes fall down from the top. You can slide them left and right, as well as rotate them while they are falling. When the piece lands at the bottom, a new piece will appear at the top and start falling down. If a line at the bottom is completely filled with fallen pieces or parts thereof, that line will be cleared, and everything piled on top of that line will move down. The target is to keep the pile at the bottom as low as possible; the game ends when the pile is as high as the screen and no new piece has room to appear. I think you get the idea. Note that the red LEDs at the top are not part of the playfield (but show a level-progress bar instead), the field only covers the yellow and green LEDs, and that similarities of Siddly with computer games, especially older ones, exist only in your imagination.\n\n### Snake\n\nSnakes like apples (at least so I have heard). You control a snake that feels a profound urge to eat apples. After each eaten apple, the snake grows, and a new apple appears. Unfortunately, snakes don't like to hit their heads, so you need to watch out that the snake's head doesn't collide with its body.\n\n## SD card\n\nPreface 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, Sandisk Industrial, Verbatim Premium and Samsung Pro Endurance SDHC cards work fine in my experience.\n\nThe SD card is used for saving [secondary settings](#-save-secondary-settings-on-sd), in order to avoid [Flash Wear](#flash-wear) on the SID's CPU. For instance, the chosen idle pattern (*1x), and the running state of the Spectrum Analyzer, is only stored on SD, so for your selection to be persistent across reboots, an SD card is required.\n\nNote that the SD card must be inserted before powering up the device. It is not recognized if inserted while the SID is running. Furthermore, do not remove the SD card while the device is powered.\n\n## Connecting a Time Circuits Display\n\n### BTTF-Network (\"BTTFN\")\n\nThe TCD can communicate with the SID wirelessly, via the built-in \"**B**asic-**T**elematics-**T**ransmission-**F**ramework\" over WiFi. It can send out information about a time travel and an alarm, and the SID queries the TCD for speed and some other data. Furthermore, the TCD's keypad can be used to remote-control the SID.\n\n| [![Watch the video](https://img.youtube.com/vi/u9oTVXUIOXA/0.jpg)](https://youtu.be/u9oTVXUIOXA) |\n|:--:|\n| Click to watch the video |\n\nBTTFN requires the props all to be connected to the same network, such as, for example, your home WiFi network. BTTFN does not work over the Internet.\n\n![STAmode-bttfn](img/stamode-bttfn.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore...\u003c/summary\u003e\n  \n\u003eThe term \"WiFi network\" is used for both \"WiFi network\" and \"ip subnet\" here for simplicity reasons. However, for BTTFN communication, the devices must be on the same IP subnet, regardless of how they take part in it: They can be connected to different WiFi networks, if those WiFi networks are part of the same ip subnet.\n\n\u003c/details\u003e\n\nIn order to connect your SID to the TCD using BTTFN, just enter the TCD's IP address or hostname in the **_IP address or hostname of TCD_** field in the SID's Config Portal. On the TCD, no special configuration is required. \n\nAfterwards, the SID and the TCD can communicate wirelessly and \n- play time travel sequences in sync,\n- both play an alarm-sequence when the TCD's alarm occurs,\n- the SID can be remote controlled through the TCD's keypad (command codes 6xxx),\n- the SID can remote control the TCD's keypad (see [below](#remote-controlling-the-tcds-keypad))\n- the SID queries the TCD for speed (GPS, rotary encoder, Remote) if desired to adapt its idle pattern to speed,\n- the SID queries the TCD for fake power and night mode, in order to react accordingly if so configured,\n- pressing \"0\" on the IR remote control or the SID's Time Travel button can trigger a synchronized Time Travel on all BTTFN-connected devices, just like if that Time Travel was triggered through the TCD.\n\nYou can use BTTF-Network and MQTT at the [same time](#receive-commands-from-time-circuits-display).\n\n#### Remote controlling the TCD's keypad\n\nThe SID can, through its IR remote control, remote control the TCD keypad. The TCD will react to pressing a key on the IR remote as if that key was pressed on the TCD keypad.\n\nIn order to start TCD keypad remote control, type *95ok on the SID's IR remote control (or issue command 6095 from the TCD or through [HA/MQTT](#control-the-sid-via-mqtt)).\n\nKeys 0-9 as well as OK (=ENTER) on your IR remote control will now be registered by the TCD as key presses.\n\n\"Holding\" a key on the TCD keypad is emulated by pressing \\* followed by the key, for instance *1 (in order to toggle the TCD alarm). Only keys 0-9 can be \"held\".\n\nPressing \\# quits TCD keypad remote control mode, as does issuing command 6097 on the TCD or through HA/MQTT.\n\n\u003eSince the TCD itself can remote control every other compatible prop (3xxx = Flux Capacitor, 6xxx = SID, 7xxx = Futaba Remote Control, 8xxx = VSR, 9xxx = Dash Gauges), and the IR remote can emulate the TCD keypad, it can essentially remote control every other prop.\n\n### Connecting a TCD by wire\n\n\u003eNote that a wired connection only allows for synchronized time travel sequences, no other communication takes place. A wireless connection over BTTFN/WiFi is much more powerful and therefore recommended over a wired connection.\n\nFor a connection by wire, connect GND and GPIO on the SID's \"Time Travel\" connector to the TCD like in the table below:\n\n\u003ctable\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003eSID\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eTCD with control board \u003e=1.3\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eTCD with control board 1.2\u003c/td\u003e\n    \u003c/tr\u003e\n   \u003ctr\u003e\n     \u003ctd align=\"center\"\u003eGND of 3-pin connector\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eGND of \"Time Travel\" connector\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eGND of \"IO14\" connector\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"center\"\u003eTT of 3-pin connector\u003c/td\u003e     \n     \u003ctd align=\"center\"\u003eTT OUT of \"Time Travel\" connector\u003c/td\u003e\n     \u003ctd align=\"center\"\u003eIO14 of \"IO14\" connector\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n_Do not connect 3_3V to the TCD!_\n\nNext, head to the Config Portal and set the option **_TCD connected by wire_**. On the TCD, the option [TT-OUT] _\"signals Time Travel\"_ must be checked.\n\n\u003cdetails\u003e\n\u003csummary\u003eMore...\u003c/summary\u003e\n\n\u003eYou can connect both the TCD and a button to the TT connector. But the button should not be pressed when the option **_TCD connected by wire_** is set, as it might yield unwanted results. Also, note that the button connects IO13 to 3_3V (not GND!).\n\n\u003c/details\u003e\n\n## Home Assistant / MQTT\n\nThe SID supports MQTT protocol versions 3.1.1 and 5.0 for the following features:\n\n### Control the SID via MQTT\n\nThe SID can be controlled through messages sent to topic **bttf/sid/cmd**. Supported commands are\n- TIMETRAVEL: Start a [time travel](#time-travel)\n- IDLE: Switch to idle mode\n- SA: Start spectrum analyzer\n- IDLE_0, IDLE_1, IDLE_2, IDLE_3, IDLE_4: Select idle pattern\n- INJECT_x: See immediately below.\n\n#### The INJECT_x command\n\nThis command allows remote control of your SID through HA/MQTT in the same way as through the TCD keypad by injecting commands in the SID's command queue (hence the name). Commands are listed [here](#special_key_sequences); nearly all are supported. For example:\n\nTo set idle pattern #4 (6014), issue the following command: **INJECT_6014**\n\nTo start the Spectrum Analyzer (6021), issue **INJECT_6021**\n\nTo set the brightness level to 15 (6415), issue **INJECT_6415**\n\n### Receive commands from Time Circuits Display\n\nIf both TCD and SID are connected to the same broker, and the option **_Publish time travel and alarm events_** is checked on the TCD's side, the SID will receive information on time travel and alarm and play their sequences in sync with the TCD. Unlike BTTFN, however, no other communication takes place.\n\nMQTT and BTTFN can co-exist. However, the TCD only sends out time travel and alarm notifications through either MQTT or BTTFN, never both. 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 (ie check **_Publish time travel and alarm events_**). If only BTTFN-aware devices are to be used, uncheck this option to use BTTFN as it has less latency.\n\n### Setup\n\nMQTT requires a \"broker\" (such as [mosquitto](https://mosquitto.org/), [EMQ X](https://www.emqx.io/), [Cassandana](https://github.com/mtsoleimani/cassandana), [RabbitMQ](https://www.rabbitmq.com/), [Ejjaberd](https://www.ejabberd.im/), [HiveMQ](https://www.hivemq.com/) to name a few).\n\n![STAmode-mqtt](img/stamode-mqtt.png)\n\nThe broker's address needs to be configured in the Config Portal. It 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\". \n\nIf your broker supports protocol version 3.1.1, stick with 3.1.1. Version 5.0 has no advantages, but more overhead.\n\nIf your broker does not allow anonymous logins, a username and password can be specified.\n\nLimitations: TLS/SSL not supported; \".local\" domains (MDNS) not supported; 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. MQTT is disabled when your SID is operated in AP-mode or when connected to the TCD run in AP-Mode (TCD-AP).\n\n## Car setup\n\nIf your SID, along with a [Time Circuits Display](https://tcd.out-a-ti.me), is mounted in a car, the following network configuration is recommended:\n\n![STAmode-car](img/stamode-car2.png)\n\n#### TCD\n\n- Run your TCD in [*car mode*](https://tcd.out-a-ti.me/#car-mode);\n- disable WiFi power-saving on the TCD by setting **_Power save timer_** to 0 (zero) in the \"AP-mode settings\" section on the WiFi Configuration page.\n\n#### SID\n\nEnter the Config Portal on the SID, click on *Settings* and\n  - enter *192.168.4.1* into the field **_IP address or hostname of TCD_**\n  - click on *Save*.\n\nAfter the SID has restarted, re-enter the SID's Config Portal (while the TCD is powered and in *car mode*) and\n  - click on *WiFi Configuration*,\n  - select the TCD's access point name in the list at the top (\"TCD-AP\"; if there is no list, click on \"WiFi Scan\") or enter *TCD-AP* into the *Network name (SSID)* field; if you password-protected your TCD's AP, enter this password in the *password* field. Leave all other fields empty,\n  - click on *Save*.\n\nIn order to access the SID's Config Portal in your car, connect your handheld or computer to the TCD's WiFi access point (\"TCD-AP\"), and direct your browser to http://sid.local ; if that does not work, go to the TCD's keypad menu, press ENTER until \"BTTFN CLIENTS\" is shown, hold ENTER, and look for the SID's IP address there; then direct your browser to that IP by using the URL http://a.b.c.d (a-d being the IP address displayed on the TCD display).\n\nThis \"car setup\" can also be used in a home setup with no local WiFi network present.\n\n## WiFi power saving features\n\nThe Config Portal offers an option for WiFi power saving for AP-mode (ie when the device acts as an access point). This option configures a timer after whose expiration WiFi is switched off; the device is no longer transmitting or receiving data over WiFi.\n\nThe timer can be set to 0 (which disables it; WiFi is never switched off; this is the default), or 10-99 minutes. \n\nAfter WiFi has been switched off due to timer expiration, it can be re-enabled by entering *77ok, in which case the timers are restarted (ie WiFi is again switched off after timer expiration).\n\n\u003e This command is also used to trigger a re-connection attempt in case your configured WiFi network was not available when the SID was trying to connect, see [here](#home-setup-with-a-pre-existing-local-wifi-network).\n\n## Flash Wear\n\nFlash memory has a somewhat limited lifetime. 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, data is written to flash memory.\n\nIn order to reduce the number of write operations and thereby prolong the life of your SID, it is recommended to use a good-quality SD card and to check **_[\"Save secondary settings on SD\"](#-save-secondary-settings-on-sd)_** in the Config Portal; some settings as well as learned IR codes are then stored on the SD card (which also suffers from wear but is easy to replace). See [here](#-save-secondary-settings-on-sd) for more information.\n\n## Firmware Installation / Firmware Update\n\nIf a previous version of the SID firmware is installed on your device, you can update easily using the pre-compiled binary. Enter the [Config Portal](#the-config-portal), click on \"Update\", select the pre-compiled binary file (\"**sid-A10001986.ino.nodemcu-32s.bin**\" or \"**SID_vX.YY.bin**\") provided in the [Release package](https://github.com/realA10001986/SID/releases), and click on *Update*.\n\n\u003cdetails\u003e\n\u003csummary\u003eInstalling on a fresh ESP32...\u003c/summary\u003e\nIf you are using a fresh ESP32, please go \u003ca href=\"https://install.out-a-ti.me\"\u003ehere\u003c/a\u003e and follow the instructions, or - if you are a nerd and want to deal with source code, compilers'n'stuff - see \u003ca href=\"https://github.com/realA10001986/SID/blob/main/sid-A10001986/sid-A10001986.ino\"\u003esid-A10001986.ino\u003c/a\u003e for detailed build and upload information.\n\u003c/details\u003e\n\n*After a firmware update, a \"wait\" symbol (hourglass) might be shown for a short while after reboot. Do NOT unplug the device during this time.*\n\n---\n\n## Appendix A: The Config Portal\n\n### Main page\n\n##### \u0026#9193; WiFi Configuration\n\nThis leads to the [WiFi configuration page](#wifi-configuration)\n\n##### \u0026#9193; Settings\n\nThis leads to the [Settings page](#settings).\n\n##### \u0026#9193; HA/MQTT Settings\n\nThis leads to the [HomeAssistant/MQTT Settings page](#hamqtt-settings).\n\n##### \u0026#9193; Update\n\nThis leads to the firmware update page.\n\nIn order to upload a new firmware, such as published in the [Release packages](https://github.com/realA10001986/SID/releases), select the \"**sid-A10001986.ino.nodemcu-32s.bin**\" or \"**SID_vX.YY.bin**\" file as contained in the Release package in the file selector and click *Update*.\n\nSee also [here](#firmware-installation--firmware-update).\n\n---\n\n### WiFi Configuration\n\nThrough this page you can either connect your SID to your local WiFi network, or configure AP mode. \n\n#### \u003cins\u003eConnecting to an existing WiFi network\u003c/ins\u003e\n\nIn order to connect your SID to your WiFi network, all you need to do is either to click on one of the networks listed at the top or to enter a __Network name (SSID)__, and optionally a __password__ (WPAx). If there is no list displayed, click on \"WiFi Scan\".\n\n\u003eBy default, the SID requests an IP address via DHCP. However, you can also configure a static IP for the SID 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. If you connect your SID to your Time Circuits Display acting as access point (\"TCD-AP\"), leave these all empty.\n\n##### \u0026#9193; Forget Saved WiFi Network\n\nChecking this box (and clicking SAVE) deletes the currently saved WiFi network (SSID and password as well as static IP data) and reboots the device; it will restart in \"access point\" (AP) mode. See [here](#connecting-to-a-wifi-network).\n\n##### \u0026#9193; Hostname\n\nThe device's hostname in the WiFi network. Defaults to 'sid'. 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://\u003ci\u003ehostname\u003c/i\u003e.local (the default is http://sid.local)\n\nIf you have more than one SID in your local network, please give them unique hostnames.\n\n_This setting applies to both AP-mode and when your SID is connected to a WiFi network._ \n\n##### \u0026#9193; WiFi connection attempts\n\nNumber of times the firmware tries to reconnect to a WiFi network, before falling back to AP-mode. See [here](#connecting-to-a-wifi-network)\n\n##### \u0026#9193; WiFi connection timeout\n\nNumber 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](#connecting-to-a-wifi-network)\n\n#### \u003cins\u003eSettings for AP-mode\u003c/ins\u003e\n\n##### \u0026#9193; Network name (SSID) appendix\n\nBy default, when your SID creates a WiFi network of its own (\"AP-mode\"), this network is named \"SID-AP\". In case you have multiple SIDs 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 \"SID-AP-ABC\". Characters A-Z, a-z, 0-9 and - are allowed.\n\n##### \u0026#9193; Password\n\nBy default, and if this field is empty, the SID's own WiFi network (\"SID-AP\") will be unprotected. If you want to protect your SID 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.\n\nIf you forget this password and are thereby locked out of your SID, enter *123456ok on the IR remote control; this deletes the WiFi password. Then power-down and power-up your SID and the access point will start unprotected.\n\n##### \u0026#9193; WiFi channel\n\nHere you can select one out of 11 channels, or have the SID choose a random channel for you. The default channel is 1. Preferred are channels 1, 6 and 11.\n\nWiFI channel selection is key for a trouble-free operation. Disturbed WiFi communication can lead to disrupted sequences, packet loss, hanging or freezing props, and other problems. A good article on WiFi channel selection is [here](https://community.ui.com/questions/Choosing-the-right-Wifi-Channel-on-2-4Ghz-Why-Conventional-Wisdom-is-Wrong/ea2ffae0-8028-45fb-8fbf-60569c6d026d).\n\nIf a WiFi Scan was done (which can be triggered by clicking \"WiFI Scan\"), \n\n- a list of networks is displayed at the top of the page; click \"Show All\" to list all networks including their channel;\n- a \"proposed channel\" is displayed near the \"WiFi channel\" drop-down, based on a rather simple heuristic. The banner is green when a channel is excellent, grey when it is impeded by overlapping channels, and when that banner is red operation in AP mode is not recommended due to channels all being used.\n\nThe channel proposition is based on all WiFi networks found; it does not take non-WiFi equipment (baby monitors, cordless phones, Bluetooth devices, microwave ovens, etc) into account.\n\n##### \u0026#9193; Power save timer\n\nSee [here](#wifi-power-saving-features).\n\n---\n\n### Settings\n\n#### \u003cins\u003eBasic settings\u003c/ins\u003e\n\n##### \u0026#9193; Adhere strictly to movie patterns\n\nIf this option is checked, in idle modes 0-3 as well as when using TCD-provided speed, only patterns which were extracted from the movies (plus some interpolations) are shown. If this option is unchecked, random variations will be shown, which is less accurate, but also less monotonous. Purists will want this option to be set, which is also the default. This option can also be changed by typing *50ok on the IR remote control.\n\nNote that this option setting, along with the current idle pattern, is only saved if there is an SD card present. Without an SD card, this setting is always reset to \"checked\" upon power-up.\n\n##### \u0026#9193; Skip time tunnel animation\n\nWhen set, the time travel sequence will not be animated (no flicker, no \"moving bar\"). Purists will want this option to be set; the default is unset.\n\n##### \u0026#9193; Show peaks in Spectrum Analyzer\n\nThis selects the boot-up setting for showing or not showing the peaks in the Spectrum Analyzer. Can be changed anytime by typing *61ok on the IR remote control.\n\n##### \u0026#9193; Show positive IR feedback on display\n\nIf this option is checked, your SID will show a signal on its display upon a successful command sequence. \n\nThis setting can also be toggled by *62ok. This option has no impact on the small IR feedback LED at the bottom of the SID.\n\nSee [here](#appendix-b-led-signals) for all supported signals.\n\n##### \u0026#9193; Show IR command entry feedback on display\n\nIf this option is checked, your SID will, upon pressing * on the IR remote control, show command sequence entry progress by lighting up another red LED on each key pressed. This setting can also be toggled by *63ok.\n\n##### \u0026#9193; Screen saver timer\n\nEnter the number of minutes until the Screen Saver should become active when the SID is idle.\n\nThe Screen Saver, when active, disables all LEDs, until \n- a key on the IR remote control is pressed; if IR is [locked](#locking-ir-control), only the # key deactivates the Screen Saver;\n- the time travel button is briefly pressed (the first press when the screen saver is active will not trigger a time travel),\n- on a connected TCD, a destination date is entered (only if TCD is wirelessly connected) or a time travel event is triggered (also when wired).\n\n#### \u003cins\u003eSettings for BTTFN communication\u003c/ins\u003e\n\n##### \u0026#9193; IP address or hostname of TCD\n\nIf you want to have your SID to communicate with a Time Circuits Display wirelessly (\"BTTF-Network\"), enter the TCD's hostname - usually 'timecircuits' - or IP address here.\n\nIf you connect your SID to the TCD's access point (\"TCD-AP\"), the TCD's IP address is 192.168.4.1.\n\n##### \u0026#9193; Adapt pattern to TCD-provided speed\n\nIf this option is checked and your TCD is equipped with a GPS receiver or a rotary encoder, the SID will adapt its display pattern to current GPS speed or the reading of the encoder, respectively.\n\n##### \u0026#9193; Follow TCD night-mode\n\nIf this option is checked, and your TCD goes into night mode, the SID will activate the Screen Saver with a very short timeout. \n\n##### \u0026#9193; Follow TCD fake power\n\nIf this option is checked, and your TCD is equipped with a fake power switch, the SID will also fake-power up/down. If fake power is off, no LED is active and the SID will ignore all input from buttons, knobs and the IR control.\n\n##### \u0026#9193; '0' and button trigger BTTFN-wide TT\n\nIf the SID is connected to a TCD through BTTFN, this option allows to trigger a synchronized time travel on all BTTFN-connected devices when pressing \"0\" on the IR remote control or pressing the external Time Travel button, just as if the Time Travel was triggered by the TCD. If this option is unchecked, pressing \"0\" or the Time Travel button only triggers a Time Travel sequence on the SID.\n\n##### \u0026#9193; Show clock when Screen Saver is active\n\nIf this option is checked, the SID will show current local time - as queried from the TCD - when the Screen Saver is active.\n\n#### \u003cins\u003eSettings for wired connections\u003c/ins\u003e\n\n##### \u0026#9193; TCD connected by wire\n\nCheck this if you have a Time Circuits Display connected by wire. Note that a wired connection only allows for synchronized time travel sequences, no other communication takes place.\n\nWhile you can connect both a button and the TCD to the \"time travel\" connector on the SID, the button should not be pressed when this option is set, as it might yield unwanted effects.\n\nDo NOT check this option if your TCD is connected wirelessly (BTTFN, MQTT).\n\n##### \u0026#9193; TCD signals Time Travel without 5s lead\n\nUsually, the TCD signals a time travel with a 5 second lead, in order to give a prop a chance to play an acceleration sequence before the actual time travel takes place. Since this 5 second lead is unique to CircuitSetup props, and people sometimes want to connect third party props to the TCD, the TCD has the option of skipping this 5 second lead. If that is the case, and your SID is connected by wire, you need to set this option.\n\nIf your SID is connected wirelessly, this option has no effect.\n\n#### \u003cins\u003eOther settings\u003c/ins\u003e\n\n##### \u0026#9193; Save secondary settings on SD\n\nIf this is checked, secondary settings (brightness, IR lock status, learned IR keys) 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 SID. See [Flash Wear](#flash-wear).\n\nApart 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 sequences and have other undesired effects. The SID needs to save data from time to time, so for a smooth experience without unexpected and unwanted delays, please use an SD card and check this option.\n\nIt is safe to have this option checked even with no SD card present.\n\nIf you want copy settings from one SD card to another, do as follows:\n- With the old SD card still in the slot, enter the Config Portal, turn off _Save secondary settings on SD_, and click \"SAVE\".\n- After the SID has rebooted, power it down, and swap the SD card for your new one.\n- Power-up the SID, enter the Config Portal, re-enable _Save secondary settings on SD_, and click \"SAVE\".\n\nThis procedure ensures that all your settings are copied from the old to the new SD card.\n\n#### \u003cins\u003eHardware configuration settings\u003c/ins\u003e\n\n##### \u0026#9193; Disable supplied IR remote control\n\nCheck this to disable the supplied remote control; the SID will only accept commands from a learned IR remote (if applicable). \n\nNote that this only disables the supplied remote, unlike [IR locking](#locking-ir-control), where IR commands from any known remote are ignored.\n\n---\n\n### HA/MQTT Settings\n\n##### \u0026#9193; Home Assistant support (MQTT)\n\nIf checked, the SID will connect to the broker (if configured) and send and receive messages via [MQTT](#home-assistant--mqtt)\n\n##### \u0026#9193; Broker IP[:port] or domain[:port]\n\nThe 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.\n\n##### \u0026#9193; Protocol version\n\nThe firmware supports MQTT 3.1.1 and 5.0. There is no difference in features, so there is no advantage in selecting 5.0. This was implemented only for brokers that do not support 3.1.1.\n\n##### \u0026#9193; User[:Password]\n\nThe username (and optionally the password) to be used when connecting to the broker. Can be left empty if the broker accepts anonymous logins.\n\n## Appendix B: LED signals\n\nSignals are shown in the top two rows of the display.\n\n\u003ctable\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9675; \u0026#9675; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679;\u003cbr\u003e\n                      \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675;\u003c/td\u003e\n     \u003ctd align=\"left\"\u003eSuccessful input from IR (optional)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u0026#9675; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9675;\u003cbr\u003e\n                      \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675;\u003c/td\u003e\n     \u003ctd align=\"left\"\u003eBad/unsuccessful input from IR\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9675;\u003cbr\u003e\n                      \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675;\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e\u003ca href='#remote-controlling-the-tcds-keypad'\u003eTCD-keypad remote control mode\u003c/a\u003e started\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9679; \u0026#9675; \u0026#9675;\u003cbr\u003e\n                      \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675;\u003c/td\u003e\n     \u003ctd align=\"left\"\u003e\u003ca href='#remote-controlling-the-tcds-keypad'\u003eTCD-keypad remote control mode\u003c/a\u003e ended\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n     \u003ctd align=\"left\"\u003e\u0026#9675; \u0026#9679; \u0026#9675; \u0026#9679; \u0026#9675; \u0026#9679; \u0026#9675; \u0026#9679; \u0026#9675; \u0026#9679;\u003cbr\u003e\n                      \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675; \u0026#9675;\u003c/td\u003e\n     \u003ctd align=\"left\"\u003eFirmware update available; shown briefly at power-up (optional)\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n_Text \u0026 images: (C) Thomas Winischhofer (\"A10001986\"). See LICENSE._ Source: https://sid.out-a-ti.me  \n_Other props: [Time Circuits Display](https://tcd.out-a-ti.me) ... [Flux Capacitor](https://fc.out-a-ti.me) ... [Dash Gauges](https://dg.out-a-ti.me) ... [VSR](https://vsr.out-a-ti.me) ... [Remote Control](https://remote.out-a-ti.me) ... [TFC](https://tfc.out-a-ti.me)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freala10001986%2Fsid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freala10001986%2Fsid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freala10001986%2Fsid/lists"}