Tesla Light Show is the official open-source toolkit from Tesla Motors for creating custom synchronized light shows on Tesla vehicles. You design sequences in xLights (free, third-party sequencing software), export them as .fseq files, validate them with the included validator.py tool, and load the result onto a USB drive that the car reads.
1. Quick Start
What you can do with this toolkit:
- Control exterior lights, interior lighting, and closures (doors, frunk, trunk) in a fully custom animated sequence
- Create single-car or synchronized multi-car shows (examples include up to 8 cars)
- Validate
.fseqfiles before loading — catch errors at your desk, not in the driveway - Start immediately from seven pre-built example shows
Prerequisites: A supported Tesla vehicle, xLights (free download), Python 3.7+ or a pre-compiled validator binary (Windows/macOS), a USB drive.
Validate an .fseq file:
python3 validator.py lightshow.fseq
Found 240 frames, step time of 50 ms for a total duration of 0:00:12.
Tip
Windows and macOS users can skip Python entirely — use the pre-compiled binaries
validator-windows.exeandvalidator-macos.zipincluded at the repo root. Just double-click and drag-and-drop your file.
Next steps:
- Load one of the example shows — see Common Tasks
- Create your own show — see Core Usage
- Troubleshoot a validator error — see Troubleshooting
2. Installation
System Requirements
| Component | Requirement |
|---|---|
| Tesla vehicle | Supported firmware with light show feature enabled |
| xLights | Third-party sequencing software (free, required for creating shows) |
| Python | 3.7 or later (required for validator.py; not needed for pre-built binaries) |
| USB drive | FAT32 formatted |
Validator Setup
Windows (pre-compiled)
Download validator-windows.exe from the repository root. No installation required — run it directly.
macOS (pre-compiled)
Download validator-macos.zip from the repository root. Unzip, then run the extracted binary.
Python (all platforms)
Python 3.7+ is required. No additional packages — validator.py uses only the standard library.
python3 --version
Python 3.11.4
Post-Install Verification
python3 validator.py examples/lightshow_example_3_The_Arrival_5_Car/"Car #1"/LightShow/lightshow.fseq
A valid file produces frame count and duration output. An invalid file produces a specific error message describing the violation.
Important
Always validate your
.fseqfile before loading it onto the USB drive. The vehicle will silently skip malformed files with no on-screen explanation.
3. Core Usage
Step 1 — Get the xLights Show Folder
Tesla provides a pre-configured xLights project that maps all Tesla light channels correctly.
- Download
xlights/tesla_xlights_show_folder.zipfrom the repository. - Extract it to a local directory.
- Open that directory as your xLights show folder.
Note
For synchronized multi-car shows, use
xlights/tesla_xlights_cross_vehicle_folder.zipinstead. The cross-vehicle project has a different channel layout for coordinating multiple vehicles.
Step 2 — Create Your Sequence in xLights
Design your light sequence using xLights' built-in effects. The Tesla show folder pre-configures all channel assignments so the correct lights respond to each channel.
Step 3 — Export as FSEQ
Export your completed sequence as a .fseq file from xLights.
Step 4 — Validate
python3 validator.py lightshow.fseq
The validator checks that the file meets Tesla's vehicle requirements:
| Check | Requirement |
|---|---|
| File format | FSEQ v2.0 (magic bytes PSEQ) |
| Channel count | Exactly 48 (standard vehicles) or 200 (Cybertruck) |
| Compression | V2 Uncompressed only |
| Step time | ≥ 15 ms |
| Total duration | ≤ 4 hours |
| FSEQ version | 2.0 or 2.2 (other versions: warning issued, not rejected) |
Warning
Your
.fseqmust be exported with exactly 48 or 200 channels. Model S, Model 3, Model X, and Model Y use 48 channels. Cybertruck uses 200 channels. Any other count fails validation.
Step 5 — Load onto USB
- Create a folder named
LightShowat the root of a FAT32 USB drive. - Copy
lightshow.fseqintoLightShow/. - Optionally copy your audio file (
lightshow.mp3orlightshow.wav) intoLightShow/.
USB root/
LightShow/
lightshow.fseq
lightshow.mp3 (optional)
- Insert the USB drive into your Tesla.
- Start the show from the vehicle interface.
4. Common Tasks
Try a Pre-Built Example Show
Seven complete examples are included in the examples/ directory:
| Example | Cars | Audio |
|---|---|---|
lightshow_example_1_elevator_music.zip |
1 | — |
lightshow_example_2_Max_Carlisle_Auld_Lang_Syne_In_the_City.zip |
1 | — |
lightshow_example_3_The_Arrival_5_Car/ |
5 | MP3 |
lightshow_example_4_Ready_for_Assault_8_Car/ |
8 | WAV |
lightshow_example_5_Cyber_Symphony_4_Car/ |
4 | WAV |
lightshow_example_6_Ready_for_Assault_1_Car.zip |
1 | — |
lightshow_example_7_Cyber_Symphony_1_Car.zip |
1 | — |
To try example 1:
- Extract
examples/lightshow_example_1_elevator_music.zip. - Validate the extracted
.fseqfile with the validator. - Copy to USB as described in Core Usage Step 5.
Run a Multi-Car Synchronized Show
Multi-car shows provide a separate sequence for each vehicle. Each car gets its own USB drive.
Using example 3 (5-car):
- Open
examples/lightshow_example_3_The_Arrival_5_Car/. - For each participating car, copy that car's
LightShow/contents to a separate USB drive:- Car #1's USB: contents of
Car #1/LightShow/→LightShow/on USB - Car #2's USB: contents of
Car #2/LightShow/→LightShow/on USB - (repeat for each car)
- Car #1's USB: contents of
- Validate each car's
lightshow.fseqbefore loading. - Insert USB drives into all cars simultaneously.
- Trigger all shows at the same moment.
Note
Examples 4 and 5 use WAV audio; example 3 uses MP3. Both formats are confirmed as working by the included example files.
Validate Without Python
Windows:
- Run
validator-windows.exe(double-click or terminal). - When prompted, drag-and-drop your
.fseqfile into the window.
macOS:
- Unzip
validator-macos.zip. - Run the extracted binary.
- Drag-and-drop your
.fseqfile when prompted.
Create a Cross-Vehicle Show
- Extract
xlights/tesla_xlights_cross_vehicle_folder.zip. - Read
cross-vehicle-shows/README.mdfor car positioning and channel layout details. - Design your sequence using the cross-vehicle channel assignments.
- Export and validate each car's
.fseqfile individually.
5. Troubleshooting
Quick diagnostic: Run validator.py on the file first. All validator errors are specific and self-describing.
Error: Unknown file format, expected FSEQ v2.0
Cause: The .fseq file is not a valid FSEQ v2 file. Common causes: wrong export format in xLights, file corruption, or exporting from the wrong project.
Solution:
- Re-open the sequence in xLights.
- Confirm you are exporting to FSEQ format (not a different output type).
- Re-export and re-validate.
- If the error persists, try downloading an older xLights release from https://github.com/smeighan/xLights/releases
Prevention: Use the official Tesla xLights show folder as your project base.
Warning
Community issue #67 documented this error when newer xLights versions defaulted to FSEQ v2.2. The validator now accepts v2.2 with a warning rather than an error — if you see this error, the problem is not version 2.2 but a more fundamental format mismatch.
Error: Expected 48 or 200 channels, got {N}
Cause: The exported file has the wrong channel count. The xLights project is not using Tesla's layout, or the wrong show folder was opened.
Solution:
- Reopen the xLights project.
- Confirm you opened the Tesla show folder from
xlights/tesla_xlights_show_folder.zip, not a custom layout. - Re-export and re-validate.
Prevention: Always start from the official Tesla show folder project. (GitHub issue #85)
Error: Expected file format to be V2 Uncompressed
Cause: The .fseq file uses FSEQ compression. Tesla vehicles require uncompressed V2 format.
Solution:
- In xLights, locate the output/export compression settings.
- Set compression to None (uncompressed).
- Re-export the
.fseqfile and re-validate.
Prevention: The Tesla show folder project should have compression disabled by default.
Error: Expected total duration to be less than 4 hours, got {duration}
Cause: The sequence exceeds 4 hours total length. Almost always a configuration error — check that the step time and frame count are set correctly in xLights.
Solution:
- Review the sequence length and step time in xLights.
- Verify step time is at least 15 ms.
- Confirm the total frame count matches the intended duration.
WARNING: FSEQ Version Message
Cause: Your xLights export produced a FSEQ version other than 2.0 or 2.2. This is a warning, not a failure — the file passed validation.
WARNING: FSEQ version is 2.3. Only version 2.0 and 2.2 have been validated.
If the car fails to read this file, download an older version of XLights at https://github.com/smeighan/xLights/releases
Solution: Test on the vehicle. If the car does not read the file, download an older xLights release that produces v2.0.
Warning
A version warning does not guarantee vehicle compatibility. Always test after seeing this message.
Example 3 (5-Car) Fails on Model Y
Cause: Pre-built multi-car examples may have been authored for specific vehicle configurations. (GitHub issue #84)
Solution:
- Validate the specific car's
.fseqfile with the validator. - Confirm the channel count matches your vehicle (48 for standard, 200 for Cybertruck).
- Confirm you are using the correct car number's files for each vehicle.
6. FAQ
Q: Which Tesla vehicles support custom light shows?
The validator accepts 48-channel files (Model S, Model 3, Model X, Model Y) and 200-channel files (Cybertruck). Light show support requires compatible vehicle firmware — check your vehicle's release notes for confirmation.
Q: Do I need to buy xLights?
No. xLights is free and open-source. Tesla provides the pre-configured show folder to map channels correctly.
Q: Which audio formats does the car accept?
The included examples use both MP3 (example 3) and WAV (examples 4 and 5). Both are confirmed working by the example files.
Q: Can I have multiple shows on one USB drive?
The car reads a LightShow/ folder at the USB root. For multiple shows, consult your vehicle's documentation on how to select among multiple stored shows.
Q: Why does the validator warn about FSEQ version but not fail?
FSEQ versions 2.0 and 2.2 are the only versions confirmed to work with Tesla vehicles. Version 2.2 was validated by the community. Other versions issue a warning so you can still test them rather than being blocked outright.
Q: The validator used to reject 200-channel files — is that fixed?
Yes. An older version of the validator required exactly 48 channels. The current validator.py accepts either 48 (standard vehicles) or 200 (Cybertruck). (GitHub issue #85)
Q: How long can a light show be?
Up to 4 hours, with a minimum step time of 15 ms. Practical shows are typically a few minutes.
Q: Can I share my show with other Tesla owners?
Yes — distribute your .fseq and audio files directly. Other creators can also share the xLights .xsq project file (included in examples 3, 4, 5) for remixing.
Q: Can I add new light channels beyond the current 48/200?
Not with the current validator or xLights project. This is an open feature request (GitHub issue #141) that would require changes to both the validator and the xLights channel layout.