MCPcopy
hub / github.com/teslamotors/light-show

github.com/teslamotors/light-show @main sqlite

repository ↗ · DeepWiki ↗
3 symbols 10 edges 1 files 1 documented · 33%
README

Tesla Light Show xLights Guide

Welcome to the Tesla Light Show xLights guide! You can create and run your own light shows on Tesla vehicles.

Running a custom show on a vehicle

A custom show can be run on a supported vehicle by loading it via a USB flash drive. Create and share your shows with others! A single show can be shared and run on any supported vehicle; they are not model-specific. The sequence data is stored in a .fseq file and the music comes from your choice of .mp3 or .wav.

Download a Show

Multiple light show repositories can be found online. A screenshot from XLightShows and TeslaLightShare.io is below.

Supported Vehicles

  • Model S (2021+)
  • Model 3
  • Model X (2021+)
  • Model Y
  • Cybertruck
  • Running Software v11.0 (2021.44.25) or newer

USB flash drive requirements

  • Must contain a base-level folder called "LightShow" (without quotation marks and case sensitive).
  • The LightShow folder must contain at least 2 files:
  • a show .fseq file
  • a show .mp3 or .wav file (wav is recommended)
  • The fseq filename must match the mp3/wav filenames
    • E.g., show1.fseq/show1.wav can exist with show2.fseq/show2.mp3
  • Multiple shows can be stored on 1 USB drive (2023.44.25+ Vehicle Software)
  • Must be formatted as exFAT, FAT 32 (for Windows), MS-DOS FAT (for Mac), ext3, or ext4. NTFS is currently not supported.
  • Must not contain a base-level TeslaCam folder.
  • Must not contain any map update or firmware update files.

Running the custom light show on a vehicle

  • Insert the flash drive into one of the front USB, USB-C ports, or glovebox USB port, then wait a few seconds.
  • In Toybox, select Light Show and tap Schedule Show.

  • If the files on the USB flash drive meet the requirements, then the custom shows will be available to select from the drop-down menu.

Light Show Community

reddit.com/r/TeslaLightShow/

Debug

  • If the popup title is "Light Show" instead of "Custom Light Show", then the requirements are not being met for the USB flash drive formatting and/or required folder and files.
  • Error messages will be provided if the required files exist but there is a problem with the light show sequence file.

General Limitations of Custom Shows

  • The maximum duration for a custom Tesla xLights show is 4 hours.
  • The limit on number of commands during a custom show has been removed.

Audio file requirements

You can use both the mp3 and wav format (.wav is recommended). Make sure the file is encoded with a sample rate of 44.1 kHz; less common 48 kHz files won't properly sync to the light show.

Getting started with the Tesla xLights project directory

  1. Visit xLights Downloads to download and install the xLights application.
  2. Download and unzip tesla_xlights_show_folder.zip, which is the Tesla xLights bare project directory.
  3. It is recommended to keep the project directory structure as-is and leave all files in their default locations.
  4. Open the xLights application.
  5. IMPORTANT: In File > Preferences > Sequences > FSEQ Version, select "V2 Uncompressed".

  6. In File > Select Show Folder, navigate to and select the unzipped project directory, then select Open.

  7. Select the Layout tab to view the Tesla 3D vehicle model.
  8. Make sure that the 3D preview checkbox is selected.

  9. Select the Sequencer tab.

  10. Note that the previewed Tesla Model S combined with the Cybertruck include the superset of lights and closures that are needed for all supported vehicles, and should be used to generate shows for all vehicle types. See light channel locations for information about where the lights are on each vehicle.

Opening the example sequence

An example sequence is provided that can be run on the vehicle and/or opened in xLights. These instructions cover how to open it in xLights. 1. Follow the getting started instructions to set up the xLights project. 2. Download and unzip the example light show: lightshow_example_1_elevator_music.zip or lightshow_example_2_Max_Carlisle_Auld_Lang_Syne_In_the_City.zip. 3. In File > Open Sequence, navigate to the unzipped folder and select the lightshow.xsq example file, then select Open. 4. In the Sequencer tab, double click groups in the timeline to reveal individual left / right control.

 <img src="https://github.com/teslamotors/light-show/raw/main/images/xlights_demo_track.png?raw=true" width="900" />

Creating a new sequence

  1. Follow the getting started instructions to set up the xLights project.
  2. Select File > New Sequence
  3. Select Musical Sequence
  4. Navigate to your chosen .wav or mp3 file, select it, then select Open. Note that .wav files may be hidden unless file type is set to xLights Audio Files.

  5. In the Wizard tab select Custom

  6. Change the Frame interval to 20ms then select OK.

    Note: any value between 15ms and 100ms is supported by the vehicle, but 20ms is recommended for nearly all use cases. The maximum show size limits do not depend on the frame interval.

  7. Select Quick Start and wait for the sequencer to load

  8. In the top left of the timeline, select "Group View" in the view selector. You can also choose "Old View" for the pre-update layout.

  9. If using the recommended "Group View", you can double click the light groups to reveal and hide individual left/right control. Placing light effects in the group object will activate both the left and right light

  10. If using the old view, double click on "GRP Tesla Model S" to view all channels

  11. For more information on the workflow of creating xLights sequences, please use existing online resources. The rest of these instructions contain Tesla-specific information for show creators.

Light Show Sequence Validator Script

A Python validator.py script is provided to help check if your custom light show sequence meets these limitations, without needing a Tesla vehicle.

Windows user can run validator.py by double clicking the file. Drag and drop the .fseq file into the new window.

Users who do not have Python installed can instead use validator-windows.exe or validator-macos (on macOS, run with Ctrl + Left Click -> Open).

Alternatively, run:

python validator.py lightshow.fseq

macOS users should use this command instead:

python3 validator.py lightshow.fseq

Expected output looks like:

> python validator.py lightshow.fseq
Found 2247 frames, step time of 20 ms for a total duration of 0:00:44.940000.

Boolean Light Channels

Most lights available on the vehicle can only turn on or off instantly, which corresponds to 0% or 100% brightness of an 'Effect' in xLights. - For off, use blank space in the xLights timeline - For on, place Turn On; Instant (hotkey: 'F' on your keyboard)

The minimum on-time for boolean light channels to produce light is 15ms, although human eyes will have a hard time seeing anything this short! Minimum on-time or off-time of 100ms generally makes the show more pleasing to look at.

In this example, the Left Front Fog turns on and off 3x:

Light Channels with Brightness Control

Some channels can have a slow ramp in the intensity during turn-on or turn-off, to create graceful visual effects. Some even allow for full brightness control: | Channel | Model S | Model X | Model 3/Y | Cybertruck | | --- | --- | --- | --- | --- | | Outer Main Beam | Ramping on LED reflector headlights;

Boolean on LED projector headlights | Ramping on LED reflector headlights;

Boolean on LED projector headlights | Ramping on LED reflector headlights;

Boolean on LED projector headlights | Ramping | | Inner Main Beam | Ramping | Ramping | Ramping | Ramping | | Signature | Boolean | Boolean | Ramping | - | | Channels 4-6 | Ramping | Ramping | Ramping | - | | Front Turn | Boolean | Boolean | Ramping | Ramping | | Front Side Markers | Boolean | Boolean | Boolean | Ramping | | Front Light Bar | - | - | - | Full Brightness Control | | Offroad Light Bar | - | - | - | Full Brightness Control | | Rear Light Bar | - | - | - | Full Brightness Control | | Brake Light | Boolean | Boolean | Boolean | Full Brightness Control | | Rear Turn | Boolean | Boolean | Boolean | Full Brightness Control | | Bed Lights | - | - | - | Boolean |

Cybertruck Bed Lights always ramp on and off with a 500 ms duration, even with 'Turn on/off; Instant' effects.

Ramping light channels

To command a light to turn on or off and follow a ramp profile, place the effect with the corresponding keyboard shortcut:

Ramping Function xLights Effect Brightness Hotkey
Turn off; Instant 0% empty timeline
Turn off; 500 ms 10% W
Turn off; 1000 ms 20% S
Turn off; 2000 ms 30% X
Turn on; 500 ms 70% E
Turn on; 1000 ms 80% D
Turn on; 2000 ms 90% C
Turn on; Instant 100% F

The keyboard layout is designed to be easy to use. Note that the effect types are grouped into vertical keyboard rows and sorted by duration.

Other notes

  • Ramping can only prolong the time it takes to fully turn a light on or turn off. It is not possible to command a steady-state brightness setpoint between 0% and 100% intensity.
  • If an xLights effect is longer than the ramping duration, then the light will stay at 0% or 100% intensity after it finishes ramping.
  • Ramping effects can end early or be reversed before completion, and the light will immediately start following the new profile that is commanded.
  • To guarantee that a light reaches the 0% or 100% setpoint, the xLights effect must have a duration at least 50ms greater than the ramp duration. Conversely, to guarantee that a light does not fully reach the 0% or 100% setpoint, the xLights effect must have a duration at least 100ms less than the ramp duration.
  • Ramping Channels 4-6 have some unique aspects compared to other lights in order to use them effectively - see notes in Ramping Channels 4-6.

Ramping light examples

  • Left inner main beam, Turn on; 2000 ms, effect duration 1s: causes the light to ramp from 0% to 50% intensity over 1s, then instantly turn off (because of the empty timeline).

  • Left inner main beam, Turn on; 2000 ms, effect duration 4s: causes the light to ramp from 0% to 100% intensity over 2s, then stay at 100% intensity for 2s, then instantly turn off after 4s.

  • Left inner main beam, Turn on; 2000 ms for 2.06s, Turn off; 2000 ms for 1.9s, Turn on; 2000 ms for 2.06s: causes light to ramp to 100% intensity, then down close to, but not reaching, 0% intensity, then back up to 100% intensity, then instantly turn off.

Full Brightness Control Channels

Some lights on Cybertruck have full brightness control. Their brightness always corresponds to the value set in xLights. - Place an 'On' Effect using the shortcut F. Lights can be set to a steady-state brightness setpoint between 0% and 100% intensity using the 'Brightness' slider in the 'Colors' window.

<img src="https://github.com/teslamotors/light-show/raw/main/images/brightness_slider.png?raw=true" width="500" />
  • Custom ramp durations can be achieved using 'Value Curves'. The menu is opened when clicking the green arrow next to the brightness slider. To create a basic ramp, select 'Ramp' from the drop-down list and set the start/end duration to 0%/100%. The light will reach 0%/100% brightness at the end of the 'On' effect.

  • Value Curves can also be used to create more advanced custom brightness effects. Keep in mind that the maximum brightness is 100.
  • On cars without full brightness control, any brightness setting above 50% will set the light to ON and otherwise it will be OFF.

Light Channel Locations

The following tables and images help show which channels are controlled on each car. Some vehicles have lights that do not exist, or have multiple lights driven by the same control output - see notes in Light channel mapping details for this information. | Light Channel Name | Identifier in image - Model S/X | Identifier in image - Model 3/Y | | --- | --- | --- | | Outer Main Beam | 1 | 1 |

Core symbols most depended-on inside this repo

validate
called by 1
validator.py

Shape

Class 2
Function 1

Languages

Python100%

Modules by API surface

validator.py3 symbols

For agents

$ claude mcp add light-show \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact