# Qualia S3 Fireplace

## Overview

https://youtu.be/VhVh7sbFcZw

Build a miniature fireplace that plays Yule Log video clips using an Adafruit Qualia ESP32-S3 and a 3.2" rectangle bar TFT display.

![3d_printing_hero-loop-rainbow-.gif](https://cdn-learn.adafruit.com/assets/assets/000/126/513/medium640thumb/3d_printing_hero-loop-rainbow-.jpg?1701811539)

Load a series of your favorite video files on a micro SD card and display them on the long TFT bar screen. Cycle through them by touching the screen.&nbsp;

3D print the parts to secure the display, Qualia ESP32-S2, and micro SD breakout. The fireplace mantel is decorative and swappable so you can customize it.

![3d_printing_hero-grinch.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/514/medium640/3d_printing_hero-grinch.jpg?1701812212)

![3d_printing_hero-buttons.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/515/medium640/3d_printing_hero-buttons.jpg?1701812298)

![](https://cdn-learn.adafruit.com/assets/assets/000/126/517/medium800/3d_printing_parts.jpg?1701812355)

## Parts
Featured
### Rectangle Bar RGB TTL TFT Display - 3.2" 320x820 with Cap Touch

[Rectangle Bar RGB TTL TFT Display - 3.2" 320x820 with Cap Touch](https://www.adafruit.com/product/5797)
This is a screen for advanced hackers who like the look of a long rectangular&nbsp;TFT screen with tons of pixels. The 3.2"&nbsp;display has 320x820 18-bit full-color pixels and is an&nbsp; **IPS** &nbsp;display, so the color looks great up to 80 degrees off-axis in any...

In Stock
[Buy Now](https://www.adafruit.com/product/5797)
[Related Guides to the Product](https://learn.adafruit.com/products/5797/guides)
![Capacitive 3.2" 320x820 RGB666 TFT](https://cdn-shop.adafruit.com/640x480/5797-00.jpg)

Featured
### Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays

[Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays](https://www.adafruit.com/product/5800)
There's a few things everyone loves: ice cream, kittens, and honkin' large TFT screens. We're no strangers to small TFT's - [from our itsy 1.14" color display](https://www.adafruit.com/search?q=1.14+tft) that graces many-a-TFT-Feather to <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/5800)
[Related Guides to the Product](https://learn.adafruit.com/products/5800/guides)
![Overhead shot of TFT driver board connected to a round TFT display, which says, "Hello world!"](https://cdn-shop.adafruit.com/640x480/5800-06.jpg)

Featured
### Adafruit Micro SD SPI or SDIO Card Breakout Board - 3V ONLY!

[Adafruit Micro SD SPI or SDIO Card Breakout Board - 3V ONLY!](https://www.adafruit.com/product/4682)
Micro SD cards and microcontrollers go together like micro-peanutbutter-and-jelly: SD cards are inexpensive, durable, easy to find at any shop, come in many sizes and can plug into any computer using a common SD card reader. That makes them perfect for microcontroller storage and retrieval -...

In Stock
[Buy Now](https://www.adafruit.com/product/4682)
[Related Guides to the Product](https://learn.adafruit.com/products/4682/guides)
![Angled Shot of the Adafruit Micro SD SPI or SDIO Card Breakout Board](https://cdn-shop.adafruit.com/640x480/4682-05.jpeg)

Featured
### SD/MicroSD Memory Card (8 GB SDHC)

[SD/MicroSD Memory Card (8 GB SDHC)](https://www.adafruit.com/product/1294)
Add mega-storage in a jiffy using this 8 GB class 4 micro-SD card. It comes with a SD adapter so you can use it with any of our shields or adapters. Preformatted to FAT so it works out of the box with our projects. Tested and works great with our <a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/1294)
[Related Guides to the Product](https://learn.adafruit.com/products/1294/guides)
![Hand removing/installing micro SD card from SD adapter](https://cdn-shop.adafruit.com/640x480/1294-03.jpg)

Featured
### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5153)
[Related Guides to the Product](https://learn.adafruit.com/products/5153/guides)
![Angled shot of coiled pink and purple USB cable with USB A and USB C connectors.](https://cdn-shop.adafruit.com/640x480/5153-02.jpg)

Featured
### 1.25mm Pitch 8-pin Cable Matching Pair - 10 cm long

[1.25mm Pitch 8-pin Cable Matching Pair - 10 cm long](https://www.adafruit.com/product/4976)
These solid 1.25mm pitch connector cable pairs are great when you need something that can carry a couple of amps of current and are easy to connect and disconnect.

These cables are nice and long, 10cm each, in fact. They've got both small form-factor and are a matching set, with an...

In Stock
[Buy Now](https://www.adafruit.com/product/4976)
[Related Guides to the Product](https://learn.adafruit.com/products/4976/guides)
![Angled shot of two matching 8-pin 1.25mm pitch cable assemblies.](https://cdn-shop.adafruit.com/640x480/4976-02.jpg)

### Part: M2.5x5mm Screws
quantity: 6
M2.5x5mm Screws

## Prerequisite Guides

Take a moment to review the following guides to learn more about the products.

- [Adafruit Qualia ESP32-S3 Guide](https://learn.adafruit.com/adafruit-qualia-esp32-s3-for-rgb666-displays)

![](https://cdn-learn.adafruit.com/assets/assets/000/126/524/medium800thumb/3d_printing_hero-decorated-loop-.jpg?1701823652)

# Qualia S3 Fireplace

## Circuit Diagram

The diagram below provides a general visual reference for wiring of the components once you get to the **Assembly** page. This diagram was created using the software package [Fritzing](http://fritzing.org/download/).

## Adafruit Library for Fritzing

Adafruit uses the Adafruit's Fritzing parts library to create circuit diagrams for projects. You can download the library or just grab individual parts. Get the library and parts from [GitHub - Adafruit Fritzing Parts](https://github.com/adafruit/Fritzing-Library/tree/master/parts).

![](https://cdn-learn.adafruit.com/assets/assets/000/126/492/medium800/3d_printing_Fireplace_TFT-circuit.jpg?1701792524)

## Wired Connections

The Qualia ESP32-S3 is powered by a 5V 1A USB power supply.

- **SCK** from Qualia S3 to **CLK** on Micro SD
- **MISO** from Qualia S3 to **SO** on Micro SD
- **MOSI** from Qualia S3 to **SI** on Micro SD
- **CS** from Qualia S3 to **CS** on Micro SD
- **A1** from Qualia S3 to **DAT2** on Micro SD
- **A0** from Qualia S3 to **D1** on Micro SD
- **3.3V** from Qualia S3 to **3V** on Micro SD
- **GND** from Qualia to **GND** on Micro SD

# Qualia S3 Fireplace

## Converting Videos

## Video File Preparation

You'll want to use a video file in a common format such as H.264 (.MP4 or .MOV) with a duration of anywhere from 10 seconds to 3 minutes in length. Your video clip should ideally have a 16:9 aspect ratio (such as 1920 x 1080 or 1280 x 720). Note: the final video ratio will be ~2.6:1, so there will be some cropping off the top and bottom.

The 3.2" display has a screen resolution of 320x820

## Online Converter

You can use the website linked below to convert your video file into MJPEG. (maximum file size is 100MB.)

[Convert IO Website](https://convertio.co/)
![](https://cdn-learn.adafruit.com/assets/assets/000/126/494/medium800/3d_printing_convertio-site.jpg?1701794878)

Click on the **Choose Files** icon. Navigate to your video file and click **Open**. Click on the dropdown icon and select **MJPEG** under the video section. Then, click on the **gear** icon to open the settings dialog.

![3d_printing_convertio-file.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/496/medium640/3d_printing_convertio-file.jpg?1701794926)

Use the following settings for best playback performance.

- Codec: MJPEG
- Quality: Highest
- Resize: Custom / 320 x 820
- Resize Method: Zoom and crop
- Frame rate : 12 FPS
- Rotate: Rotate by 90 degrees counterclockwise

Click on the Convert button when finished.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/493/medium800/3d_printing_convertio-mjpeg-settings.jpg?1701794794)

## Format SD

Format a micro SD card to FAT32.

&nbsp;

## Create VIDEOS folder

Make a new folder in the SD card and name it **VIDEOS**.

![3d_printing_sd-format.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/521/medium640/3d_printing_sd-format.jpg?1701812830)

![3d_printing_sd-folder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/522/medium640/3d_printing_sd-folder.jpg?1701812885)

## Conversion Completed

Click the **Download** button when the upload and conversion is complete.

Use the [VLC media player app](https://www.videolan.org/)to playback the video for reviewing.

Rename the video file so it only contains the **.MJPEG** extension. Then, drag and drop it into the **VIDEOS** folder on the micro SD card.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/497/medium800/3d_printing_convert-complete.jpg?1701795403)

Danger: 

# Qualia S3 Fireplace

## CAD Files

## 3D Printed Parts

STL files for 3D printing are oriented to print "as-is" on FDM style machines. Parts are designed to 3D print without any support material using PLA filament. Original design source may be downloaded using the links below.

![3d_printing_parts-3d.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/518/medium640/3d_printing_parts-3d.jpg?1701812442)

[Edit Victorian Mantel](https://a360.co/3NBlOAT)
[Edit Design](https://a360.co/47V6RkU)
[Download STLs](https://www.thingiverse.com/thing:6355752)
[3-2-Fireplace-step.zip](https://cdn-learn.adafruit.com/assets/assets/000/126/525/original/3-2-Fireplace-step.zip?1701868594)
## Parts List

- button-qualia.stl
- case-cover.stl
- case-tft.stl
- modern-fireplace-base.stl
- modern-fireplace.stl
- qualia-tft-mount.stl
- victorian-fireplace.stl
- victorian-platform.stl

![3d_printing_slice-case.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/519/medium640/3d_printing_slice-case.jpg?1701812642)

## Build Volume

The parts require a 3D printer with a minimum build volume.

- 150mm (X) x 150mm (Y) x 84mm (Z)

![3d_printing_cura-bed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/498/medium640/3d_printing_cura-bed.jpg?1701806251)

## Design Source Files

The project assembly was designed in Fusion 360. This can be downloaded in different formats like STEP, STL and more. Electronic components like Adafruit's boards, displays, connectors and more can be downloaded from the&nbsp;[Adafruit CAD parts GitHub Repo](https://github.com/adafruit/Adafruit_CAD_Parts/).

![3d_printing_5800-Qualia-ESP32-S3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/499/medium640/3d_printing_5800-Qualia-ESP32-S3.jpg?1701806328)

![](https://cdn-learn.adafruit.com/assets/assets/000/126/520/medium800/3d_printing_frames.jpg?1701812728)

# Qualia S3 Fireplace

## Install Bootloader

The Qualia ESP32-S3 microcontroller ships running a circular rainbow gradient example for the round 480x480 display. It's lovely, but you probably had other plans for the board. As you start working with your board, you may want to return to the original code to begin again, or you may find your board gets into a bad state. Either way, this page has you covered.

You're probably used to seeing the&nbsp; **TFT\_S3BOOT** &nbsp;drive when loading CircuitPython or Arduino. The **TFT\_S3BOOT** &nbsp;drive is part of the UF2 bootloader, and allows you to drag and drop files, such as CircuitPython. However, on the ESP32-S3 the UF2 bootloader can become damaged.

# Install the Factory Reset Firmware UF2
If you have a bootloader still installed - which means you can double-click to get the&nbsp; **TFT\_S3BOOT** &nbsp;drive to appear, then you can simply drag this UF2 file over to the&nbsp; **BOOT** &nbsp;drive.

To enter UF2 bootloader mode, plug in the board into a USB cable with data/sync capability. Press the reset button once, wait till the RGB LED turns purple, then quickly press the reset button again. (You are doing a "slow double-click"). Then drag this file over:

[Qualia S3 RGB-666 Factory Reset UF2](https://github.com/adafruit/Adafruit-Qualia-S3-RGB666-PCB/blob/main/factory-reset/Qualia_S3_RGB666_FactoryReset.uf2)
Your board is now back to its factory-shipped state, running again with the original factory program. You can now begin again with your plans for your board.

Info: Re-loading the factory reset UF2 isn't necessary to start over with the board, but it's a good way to show the board is working.

# UF2 Bootloader Installation and Repair
What if you tried double-tapping the reset button, and you still can't get into the UF2 bootloader? Whether your board shipped without the UF2 bootloader, or something damaged it, this section has you covered.

Warning: There is no protection for the UF2 bootloader. That means it is possible to erase or damage the UF2 bootloader, especially if you upload an Arduino sketch to an ESP32-S2/S3 board that doesn't "know" there's a bootloader it should not overwrite!

It turns out, however, the ESP32-S2/S3 comes with a second, built-in, bootloader, the ROM bootloader, which cannot be erased or damaged. You can always reload the UF2 bootloader using&nbsp;the ROM bootloader.

There are three ways to do a factory reset and bootloader repair. The first and easiest is to [use the **OPEN INSTALLER** button](https://learn.adafruit.com/using-open-installer-on-circuitpython-org) on the page for your board on [circuitpython.org](https://circuitpython.org). This method requires no manual downloads and guides you through the steps interactively. **We highly recommend this method as your first choice.**

The second method is to use&nbsp;the browser-based **Adafruit WebSerial ESPTool** , and the third is to use `esptool.py` via the command line.&nbsp;

For both OPEN INSTALLER and the Adafruit WebSerial tool, you must use Firefox 151 or later, or Chrome 89 or later.

Danger: Installing the UF2 bootloader will erase everything on your board, including CircuitPython, any Arduino program, and any files stored in flash! Be sure to back up your data first.

## OPEN INSTALLER Method for UF2 Bootloader Installation
The OPEN INSTALLER button on&nbsp;[circuitpython.org](https://circuitpython.org/) is the easiest way to install or update the UF2 bootloader. See the Learn Guide [Using the OPEN INSTALLER Button on circuitpython.org](https://learn.adafruit.com/using-open-installer-on-circuitpython-org) for all the details.

![This image shows OPEN INSTALLER button for firmware installation available on some boards on circuitpython.org.](https://cdn-learn.adafruit.com/assets/assets/000/140/085/medium640/esp32_s2_s3_factory_reset_open-installer-hero.png?1759343276)

## Adafruit WebSerial ESPTool and `esptool.py` Methods for UF2 Bootloader Installation

The other methods for bootloader installation require you to download the bootloader yourself. The next section walks you through the prerequisite steps needed for both of these methods.

## Step 1. Download the UF2 Bootloader&nbsp; **.bin** File for your board
Clik on the green button below to download the **.bin** file you need (there may be more than one listed), and save wherever is convenient for you. You will need to be able to access the file from the Adafruit WebSerial ESPTool or another upload method.

Primary: Note that this file is approximately 3MB. This is not because the bootloader is that large, but because the bootloader needs to write data at both the beginning and end of flash. Most of the file is empty.

[Qualia S3 RGB-666 bootloader 0.33.0 combined.bin](https://adafruit-circuit-python.s3.amazonaws.com/bootloaders/esp32/adafruit_qualia_s3_rgb666/tinyuf2-adafruit_qualia_s3_rgb666-0.33.0-combined.bin)
## Step 2. Enter ROM bootloader mode

Entering the ROM bootloader is easy. Complete the following steps.

**Before you start, make sure your ESP32-S2/S3 is plugged into USB port to your computer using a data/sync cable.** &nbsp;Charge-only cables will not work!

To enter the bootloader:

1. **Press and hold the BOOT/DFU button down.** &nbsp;Don't let go of it yet!
2. **Press and release the Reset button.** &nbsp;You should still have the BOOT/DFU button pressed while you do this.
3. **Now you can release the BOOT/DFU button.**

![](https://cdn-learn.adafruit.com/assets/assets/000/124/830/medium800thumb/circuitpython_bootloader_mode.jpg?1696441563)

No USB drive will appear when you've entered the ROM bootloader. This is normal!

Now that you've downloaded the **.bin** file and entered the ROM bootloader, you're ready to continue installing the UF2 bootloader. The next two sections walk you through using the Adafruit WebSerial ESPTool (Alternative A) or&nbsp;`esptool.py`&nbsp;(Alternative B).

(There is also an Alternative C below, using the Arduino IDE, but it is less desirable, because it does not allow you to choose the bootloader that will be used.)

## Step 3: Alternative A. The Adafruit WebSerial ESPTool Method
Primary: We highly recommend using the Adafruit  WebSerial ESPTool method to perform a factory reset and bootloader repair. However, if you'd rather use **esptool.py** via the command line, you can skip this section and use Alternative B instead.

This method uses the Adafruit WebSerial ESPTool through a browser. Adafruit WebSerial ESPTool is a web-based option for programming ESP32-S2/S3 boards. It allows you to erase the the microcontroller flash and program up to four files at different offsets.

You have to use a browser that supports WebSerial for this to work. FIrefox versions 151 or later and and Chrome versions 89 or later work. Safari and is _not_ supported because they don't have support for Web Serial functionality.

Follow the steps below to flash the UF2 bootloader.

Warning: 

## Connect

You should have plugged in **only the ESP32-S2/S3 that you intend to flash**. That way there's no confusion in picking the proper port when it's time!

In the **Chrome browser** visit [https://adafruit.github.io/Adafruit\_WebSerial\_ESPTool/](https://adafruit.github.io/Adafruit_WebSerial_ESPTool/). You should see something like the image shown.

Leave the **No reset for Passthrough updates** toggle **off**.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/135/medium640/esp32_s2_s3_factory_reset_adafruit.github.io_Adafruit_WebSerial_ESPTool_.png?1751474093)

Press the&nbsp; **Connect** &nbsp;button in the top right of the web browser. You will get a pop up asking you to select the COM or Serial port.

**Remember, you should remove all other USB devices so**  **_only_ the ESP32-S2/S3 board is attached, that way there's no confusion over multiple ports!**

On some systems, such as MacOS, there may be additional system ports that appear in the list.

![factory_reset___esp32_s2_s3_Select_Device.png](https://cdn-learn.adafruit.com/assets/assets/000/116/446/medium640/factory_reset___esp32_s2_s3_Select_Device.png?1667580185)

The JavaScript code will now try to connect to the ROM bootloader. It may timeout for a bit until it succeeds. On success, you will see that it is **Connected** and will print out a unique **MAC address** identifying the board along with other information that was detected.

![factory_reset___esp32_s2_Screen_Shot_2022-04-04_at_3.16.00_PM.png](https://cdn-learn.adafruit.com/assets/assets/000/110/503/medium640/factory_reset___esp32_s2_Screen_Shot_2022-04-04_at_3.16.00_PM.png?1649111586)

&nbsp;

&nbsp;

Once you have successfully connected, the command toolbar will appear.

![factory_reset___esp32_s2_s3_Connected.png](https://cdn-learn.adafruit.com/assets/assets/000/116/447/medium640/factory_reset___esp32_s2_s3_Connected.png?1667580336)

## Erase the Contents of Flash
Warning: 

To erase the contents, click the Erase button. You will be prompted whether you want to continue. Click OK to continue or if you changed your mind, just click cancel.

![factory_reset___esp32_s2_s3_Erase.jpg](https://cdn-learn.adafruit.com/assets/assets/000/116/448/medium640/factory_reset___esp32_s2_s3_Erase.jpg?1667580381)

&nbsp;

You'll see "Erasing flash memory. Please wait..." This will eventually be followed by "Finished." and the amount of time it took to erase.

**Do not disconnect!** Immediately continue on to programming the ESP32-S2/S3.

![factory_reset___esp32_s2_WebSerial_ESPTool_erase_board_text.png](https://cdn-learn.adafruit.com/assets/assets/000/106/947/medium640/factory_reset___esp32_s2_WebSerial_ESPTool_erase_board_text.png?1638491869)

Danger: 

## Flash the Bootloader **.bin** File
Programming the ESP32-S2/S3 can be done with up to four files at different locations, but with the board-specific bootloader **.bin** file, which you should have downloaded under **Step 1** on this&nbsp;page, you only need to use one file.

Click on the first **Choose a file...**. (The tool will only attempt to program buttons with a file and a unique location.) Then, select the bootloader **.bin** file you downloaded in Step 1 that matches your board.

Verify that the&nbsp; **Offset** &nbsp;box next to the file location you used is (0x) **0**.

![install_uf2_bootloader_adafruit_products_image_(3).png](https://cdn-learn.adafruit.com/assets/assets/000/101/574/medium640/install_uf2_bootloader_adafruit_products_image_%283%29.png?1618608677)

Once you choose a file, the button text will change to match your filename. You can then select the **Program** button to begin flashing.

![factory_reset___esp32_s2_s3_Program.jpg](https://cdn-learn.adafruit.com/assets/assets/000/116/449/medium640/factory_reset___esp32_s2_s3_Program.jpg?1667580433)

A progress bar will appear and after a minute or two, you will have written the firmware.

![factory_reset___esp32_s2_s3_Programming.jpg](https://cdn-learn.adafruit.com/assets/assets/000/116/450/medium640/factory_reset___esp32_s2_s3_Programming.jpg?1667580456)

Once completed, you can skip down to the section titled Reset the Board.

## Step 3: Alternative B. The&nbsp;`esptool.py` Method (for advanced users)
Danger: If you used Adafruit WebSerial ESPTool, you do not need to complete the steps in this section!

Once you have entered ROM bootloader mode, you can then&nbsp;[use Espressif's esptool program](https://github.com/espressif/esptool)&nbsp;to communicate with the chip!&nbsp;`esptool`&nbsp;is the 'official' programming tool and is the most common/complete way to program an ESP chip.

## Install `esptool.py`

You will need to use the command line or Terminal to install and run&nbsp;`esptool`.

You will also need to have pip and Python installed (any version!).

Install the latest version using pip (you may be able to run&nbsp;`pip`&nbsp;without the&nbsp;`3`&nbsp;depending on your setup):

`pip3 install --upgrade esptool`

Then, you can run:

`esptool.py`

Info: 

## Test the Installation

Run&nbsp;`esptool.py`&nbsp;in a new terminal/command line and verify you get something like the below:

![](https://cdn-learn.adafruit.com/assets/assets/000/107/692/medium800/factory_reset___esp32_s2_install_uf2_bootloader_adafruit_products_image_%282%29.png?1641494911)

## Find the Serial Port

First, you need to determine the name of the serial port you board has when it's plugged in and ROM bootloader mode.

- For Windows, it will be a COM port, such as `COM5`. Look in Device Manager -\> Ports.
- For macOS, you can do `ls /dev/tty.*` in a Terminal to find the names of the serial ports.&nbsp;
- For Linux, you can do ls `/dev/tty*` in a terminal window. The name is often /dev/ttyACM0 or similar.

If you are not sure you've found the right port, unplug the board, and see if the port disappears.

For more information on determining serial ports, follow these links for help on [Windows](https://learn.adafruit.com/welcome-to-circuitpython/advanced-serial-console-on-windows#whats-the-com-2977217), [macOS](https://learn.adafruit.com/welcome-to-circuitpython/advanced-serial-console-on-mac-and-linux#whats-the-port-2977243), or [Linux](https://learn.adafruit.com/welcome-to-circuitpython/advanced-serial-console-on-linux#whats-the-port-3104855).

## Connect

Run the following command, replacing the identifier after&nbsp;`--port`&nbsp;with the&nbsp;`COMxx`,&nbsp;`/dev/cu.usbmodemxx`&nbsp;or&nbsp;`/dev/ttySxx`&nbsp;you found above.

For example, if you're using Windows, and you think the board is on COM88, type this following:

`esptool.py --port COM88 chip_id`

You should get a notice that it connected over that port and found an ESP32-S2/S3.

![](https://cdn-learn.adafruit.com/assets/assets/000/107/693/medium800/factory_reset___esp32_s2_install_uf2_bootloader_adafruit_products_image_%283%29.png?1641495017)

## Erase the Flash

Before programming the board, it is a good idea to erase the flash. Run the following command.

`esptool.py --port COM88 erase_flash`

You must be connected (by running the command in the previous section) for this command to work as shown.

![](https://cdn-learn.adafruit.com/assets/assets/000/123/927/medium800/factory_reset___esp32_s2_s3_esptool_erase_flash.png?1692912297)

## Flash the UF2 Bootloader

Run this command and replace the serial port name with your matching port and the file you just downloaded

`esptool.py --port COM88 write_flash 0x0 tinyuf2-some-board-0.32.0-combined.bin`

Don't forget to change the `--port` name to match.

Info: Adjust the bootloader filename accordingly if it differs from `tinyuf2-some-board-0.32.0-combined.bin`.

There might be a bit of a 'wait' when programming, where it doesn't seem like it's working. Give it a minute, it has to erase the old flash code which can cause it to seem like it's not running.

You'll finally get an output like this:

![](https://cdn-learn.adafruit.com/assets/assets/000/107/694/medium800/factory_reset___esp32_s2_install_uf2_bootloader_adafruit_products_image.png?1641495051)

Once completed, you can continue to the next section.

## Step 4. Reset the board
The board should restart automatically, and start up the UF2 bootloader. If not, press the reset button to start the bootloader.

If you have a 480x480 round display plugged in, you should see a circular rainbow gradient appear on the display.

You've successfully returned installed the UF2 bootloader on your board. If you now want to return the board to a factory reset state, follow the instructions at the top of the page to **Install the Factory Reset Firmware UF2**.

## Older Versions of Chrome
Primary: 

We suggest updating to Chrome 89 or newer, as Web Serial is enabled by default.

If you must continue using an older version of Chrome, follow these steps to enable Web Serial.

If you receive an error like the one shown when you visit the Adafruit WebSerial ESPTool site, you're likely running an older version of Chrome.

**You must be using Chrome 78 or later to use Web Serial.**

![factory_reset___esp32_s2_WebSerial_ESPTool_Not_Supported_Error.png](https://cdn-learn.adafruit.com/assets/assets/000/106/929/medium640/factory_reset___esp32_s2_WebSerial_ESPTool_Not_Supported_Error.png?1638484333)

To enable Web Serial in Chrome versions 78 through 88:

- Visit **chrome://flags** &nbsp;from within Chrome.
- Find and enable the&nbsp; **Experimental Web Platform features**
- **Restart Chrome**

![install_uf2_bootloader_adafruit_products_Enable_Features.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/562/medium640/install_uf2_bootloader_adafruit_products_Enable_Features.jpg?1618608210)

# Step 3: Alternative C. The Flash an Arduino Sketch Method

This section outlines flashing an Arduino sketch onto your ESP32-S2/S3 board, which automatically installs the UF2 bootloader as well. However, it does not allow you to choose which UF2 bootloader to install, so Alternative A or B above are preferred.

## Arduino IDE Setup

If you don't already have the Arduino IDE installed, the first thing you will need to do is to download the latest release of the Arduino IDE. ESP32-S2/S3 requires **version 1.8** &nbsp;or higher. Click the link to download the latest.

[Arduino IDE Download](https://www.arduino.cc/en/software)
After you have downloaded and installed **&nbsp;** the latest version of Arduino IDE, you will need to start the IDE&nbsp;and navigate to&nbsp;the&nbsp; **Preferences** &nbsp;menu. You can access it from the&nbsp; **File \> Preferences** menu in&nbsp;Windows&nbsp;or&nbsp;Linux, or the&nbsp; **Arduino \> Preferences** menu on&nbsp;OS X.

The **Preferences** window will open.

In the **Additional Boards Manager URLs** field, you'll want to add a new URL. The list of URLs is comma separated, and&nbsp;_you will only have to add each&nbsp;URL once._ The URLs point to index files that the Board Manager uses to build the list of available & installed boards.

Copy the following URL.

`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json`

Add the URL to the the **Additional Boards Manager URLs** field (highlighted in red below).

![](https://cdn-learn.adafruit.com/assets/assets/000/107/697/medium800/factory_reset___esp32_s2_CP_Template_ESP32-S2_factory_reset_Arduino_preferences_window.png?1641495433)

Click **OK** to save and close **Preferences**.

In the **Tools \> Boards** menu you should see the **ESP32 Arduino** menu. In the expanded menu, it should contain the ESP32 boards along with all the latest ESP32-S2 boards.

Now that your IDE is setup, you can continue on to loading the sketch.

## Load the Blink Sketch
In the&nbsp; **Tools \> Boards** &nbsp;menu you should see the&nbsp; **ESP32 Arduino** &nbsp;menu. In the expanded menu, look for the menu option for the&nbsp; **Adafruit Qualia ESP32-S3 RGB666** , and click on it to choose it.

Open the Blink sketch by clicking through **File \> Examples \> 01.Basics \> Blink**.

![](https://cdn-learn.adafruit.com/assets/assets/000/107/696/medium800/factory_reset___esp32_s2_Arduino_Template_RP2040_open_Blink.png?1641495423)

For the Arduino IDE to upload TinyUF2 you must select a TinyUF2 partition layout, under the&nbsp; **Tools \> Partition Scheme** &nbsp;menu.

If you have a 4MB board, won't be doing Over-The-Air firmware updates (OTA), or are unsure, then choose the 'No OTA' TinyUF2 entry.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/883/medium800/adafruit_products_pjIhorTc9w.png?1754610534)

Finally, click Upload from the sketch window.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/885/medium800/adafruit_products_Bvj2oHayFn.png?1754610624)

Once successfully uploaded, the little red LED will begin blinking once every second. At that point, you can now enter the bootloader.

Danger: 

If you change&nbsp;`LED_BUILTIN`&nbsp;to&nbsp;`13`, the sketch will compile and upload. Be aware that, once the sketch is loaded, nothing will happen on the board. However, you will have a bootloader. The updated code would look like this:

```auto
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000); 
  digitalWrite(13, LOW); 
  delay(1000); 
}
```

Alternatively, you could load a different sketch. It doesn't matter which sketch you use.

# Qualia S3 Fireplace

## Software Setup and Use

## Prep SD Card

Create a folder called **VIDEOS** on your SD card. Save your converted video files in this folder. Eject the SD card from your computer and place it in the MicroSD reader.

## Upload UF2 File

The Qualia S3 Fireplace code is available as a pre-compiled .UF2 file for the 3.2" 320x820 display that you can drag and drop onto your Qualia S3 board.

[Qualia S3 Fireplace UF2 File](https://github.com/adafruit/Adafruit_Learning_System_Guides/raw/main/Qualia/Qualia_S3_YuleLogPlayer/Qualia_S3_3.2_320x820_Yule_Log.UF2)
 **Click the link above to download the UF2 file.**

Save it wherever is convenient for you.

![3d_printing_Capture.png](https://cdn-learn.adafruit.com/assets/assets/000/126/503/medium640/3d_printing_Capture.png?1701809871)

![](https://cdn-learn.adafruit.com/assets/assets/000/126/501/medium800/3d_printing_circuitpython_bootloader.jpg?1701808862)

Plug your board into your computer, using a known-good data-sync USB cable, directly, or via an adapter if needed.

Double-click the **reset** button (highlighted in red above),&nbsp;wait about a half a second and then tap reset again.

You will see a new disk drive appear called **TFT\_S3BOOT**.

&nbsp;

Drag the **Qualia\_S3\_3.2\_320x820\_Yule\_Log.UF2** &nbsp;file to **TFT\_S3BOOT**.

![3d_printing_circuitpython_Screenshot_2023-10-03_at_1.54.46_PM.png](https://cdn-learn.adafruit.com/assets/assets/000/126/502/medium640/3d_printing_circuitpython_Screenshot_2023-10-03_at_1.54.46_PM.png?1701809020)

The code will begin running by playing the first video file on the SD card. Touch the right side of the screen to play the next file. Touch the left side of the screen to play the previous file.

## Advanced Users: Source Code in Arduino IDE
Warning: 

[Qualia S3 Fireplace Arduino Code](https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/Qualia/Qualia_S3_YuleLogPlayer)
https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Qualia/Qualia_S3_YuleLogPlayer/Qualia_S3_YuleLogPlayer.ino

The source code for the Fireplace is [available on GitHub](https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/Qualia/Qualia_S3_YuleLogPlayer). It consists of an Arduino script .ino file and a header file. You will need both files to compile it in the Arduino IDE. There are a few items you'll need to manually configure in the Arduino IDE:

- The header file requires the ESP32\_JPEG library, which isn't currently available in the Arduino IDE library bundle. You'll need to install it manually from its [GitHub repository](https://github.com/esp-arduino-libs/ESP32_JPEG).
- Currently the Arduino GFX library is not compatible with the ESP BSP 3.0 since it uses IDF 5. You will need to use an older BSP package and manually add the Qualia S3 board to your local installation.

If you defeat these dragons though, you can update the code to run on different RGB-666 displays and customize any other parameters that you want.

# Qualia S3 Fireplace

## Assemble

## Prep SD breakout

Use an 8 pin matching cable pair to easily connect the SD breakout board to the pins on the Qualia board.&nbsp;

&nbsp;

## Mount SD to Lid

Use 2.5x5mm screws to secure the breakout to the lid part.

![3d_printing_sd-wires.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/504/medium640/3d_printing_sd-wires.jpg?1701810258)

![3d_printing_sd-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/505/medium640/3d_printing_sd-mount.jpg?1701810363)

## Mount display

Take note of how the ribbon cable attaches to the Qualia board. Align the display to the cutout and place face down between the walls inside the case.&nbsp;

Slightly bend the case while gently pressing the edges of the display to fit.&nbsp;

![3d_printing_display-mounting.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/506/medium640/3d_printing_display-mounting.jpg?1701810486)

![3d_printing_display-mounted.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/507/medium640/3d_printing_display-mounted.jpg?1701810701)

## Mounting The Frame

Align cutout on the mounting frame to the ribbon cable

Slide the mounting frame into the case at an angle, between the snaps on the case.

## Attach The Buttons

Align buttons to the cutouts on the case.

![3d_printing_frame-place.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/508/medium640/3d_printing_frame-place.jpg?1701810918)

![3d_printing_button-align.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/509/medium640/3d_printing_button-align.jpg?1701811168)

## Mount The Qualia Board

Use four M2.5x5mm screws to attach the Qualia board to the standoffs on the frame.&nbsp;

Connect the display and SD cables to the Qualia board.&nbsp;

## Attach The Lid

Align the snaps on the lid to the snaps on the case to press fit together.&nbsp;

![3d_printing_qualia-sd-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/510/medium640/3d_printing_qualia-sd-connect.jpg?1701811285)

![3d_printing_lid-attached.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/511/medium640/3d_printing_lid-attached.jpg?1701811374)

Power it up with a USB power bank and your fireplace will come to life!

![](https://cdn-learn.adafruit.com/assets/assets/000/126/512/medium800thumb/3d_printing_hero-loop-rainbow-.jpg?1701811499)


## Guide Products

### Rectangle Bar RGB TTL TFT Display - 3.2" 320x820 with Cap Touch

[Rectangle Bar RGB TTL TFT Display - 3.2" 320x820 with Cap Touch](https://www.adafruit.com/product/5797)
This is a screen for advanced hackers who like the look of a long rectangular&nbsp;TFT screen with tons of pixels. The 3.2"&nbsp;display has 320x820 18-bit full-color pixels and is an&nbsp; **IPS** &nbsp;display, so the color looks great up to 80 degrees off-axis in any...

In Stock
[Buy Now](https://www.adafruit.com/product/5797)
[Related Guides to the Product](https://learn.adafruit.com/products/5797/guides)
### Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays

[Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays](https://www.adafruit.com/product/5800)
There's a few things everyone loves: ice cream, kittens, and honkin' large TFT screens. We're no strangers to small TFT's - [from our itsy 1.14" color display](https://www.adafruit.com/search?q=1.14+tft) that graces many-a-TFT-Feather to <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/5800)
[Related Guides to the Product](https://learn.adafruit.com/products/5800/guides)
### Adafruit Micro SD SPI or SDIO Card Breakout Board - 3V ONLY!

[Adafruit Micro SD SPI or SDIO Card Breakout Board - 3V ONLY!](https://www.adafruit.com/product/4682)
Micro SD cards and microcontrollers go together like micro-peanutbutter-and-jelly: SD cards are inexpensive, durable, easy to find at any shop, come in many sizes and can plug into any computer using a common SD card reader. That makes them perfect for microcontroller storage and retrieval -...

In Stock
[Buy Now](https://www.adafruit.com/product/4682)
[Related Guides to the Product](https://learn.adafruit.com/products/4682/guides)
### SD/MicroSD Memory Card (8 GB SDHC)

[SD/MicroSD Memory Card (8 GB SDHC)](https://www.adafruit.com/product/1294)
Add mega-storage in a jiffy using this 8 GB class 4 micro-SD card. It comes with a SD adapter so you can use it with any of our shields or adapters. Preformatted to FAT so it works out of the box with our projects. Tested and works great with our <a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/1294)
[Related Guides to the Product](https://learn.adafruit.com/products/1294/guides)
### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5153)
[Related Guides to the Product](https://learn.adafruit.com/products/5153/guides)
### 1.25mm Pitch 8-pin Cable Matching Pair - 10 cm long

[1.25mm Pitch 8-pin Cable Matching Pair - 10 cm long](https://www.adafruit.com/product/4976)
These solid 1.25mm pitch connector cable pairs are great when you need something that can carry a couple of amps of current and are easy to connect and disconnect.

These cables are nice and long, 10cm each, in fact. They've got both small form-factor and are a matching set, with an...

In Stock
[Buy Now](https://www.adafruit.com/product/4976)
[Related Guides to the Product](https://learn.adafruit.com/products/4976/guides)

## Related Guides

- [Adafruit MicroSD SPI or SDIO Card Breakout Board](https://learn.adafruit.com/adafruit-microsd-spi-sdio.md)
- [Adafruit Qualia ESP32-S3 for RGB-666 Displays](https://learn.adafruit.com/adafruit-qualia-esp32-s3-for-rgb666-displays.md)
- [DIY USB Cable Aviation Connector Retro-Fit](https://learn.adafruit.com/aviation-connector-diy-usb-cables.md)
- [Toddler Timer](https://learn.adafruit.com/toddler-timer.md)
- [Adafruit Metro ESP32-S3](https://learn.adafruit.com/adafruit-metro-esp32-s3.md)
- [Infinite Text Adventure](https://learn.adafruit.com/infinite-text-adventure.md)
- [Blurry Analog Clock](https://learn.adafruit.com/blurry-analog-clock.md)
- [Remote Shutter Button for MEMENTO](https://learn.adafruit.com/memento-shutter.md)
- [USB C Dock](https://learn.adafruit.com/usb-c-dock.md)
- [USB Rotary Media Dial](https://learn.adafruit.com/usb-rotary-media-dial.md)
- [Qualia 3D Printed Cases](https://learn.adafruit.com/qualia-3d-printed-cases.md)
- [Minecraft Turbopad](https://learn.adafruit.com/minecraft-turbopad.md)
- [MIDI for Makers](https://learn.adafruit.com/midi-for-makers.md)
- [Pico Bootloader Retro Console](https://learn.adafruit.com/pico-bootloader-retro-console.md)
- [QT Py RP2040 USB to Serial MIDI Friends](https://learn.adafruit.com/qt-py-rp2040-usb-to-serial-midi-friends.md)
- [NES Emulator for RP2040 & RP2350 DVI Boards](https://learn.adafruit.com/nes-emulator-for-rp2040-dvi-boards.md)
- [Controlling Objects in Unity with a 9 DoF Sensor and Arduino](https://learn.adafruit.com/controlling-objects-in-unity-with-arduino.md)
