# V0 Display Screen

V0 Display Flickering Instructions

1. **Connection**\
   The display is connected to the host computer via USB.
2. **Firmware Pre-Installation Check**\
   Determine if your display has firmware pre-installed:
   * **If the display has pre-flashed firmware:**

     * Install a jumper cap in the red area shown in the image below and press the RSSCT button to put the development board into DFU mode.

     <figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FldiFnUpWqCV1yB5WjeNN%2Fimage.png?alt=media&#x26;token=94e4d471-44d8-41dd-9bba-258a4e736bb8" alt=""><figcaption></figcaption></figure>
   * **If the display does not have firmware pre-flashed:**
     * The MCU defaults to DFU mode if no other firmware is installed.
     * Confirm that the development board enters DFU mode in step 4.
3. **Connect via SSH**\
   Connect to your host computer using SSH.
4. **Verify DFU Mode**\
   Run the command:

   ```
   lsusb
   ```

   Ensure the STM32 is listed in DFU mode.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FAv2jsdaZ04pPc9iKy2p0%2Fimage.png?alt=media&#x26;token=6b49bbee-2cd9-4993-8bcc-9bd3211858d0" alt=""><figcaption></figcaption></figure>

5. **List DFU Devices**\
   Run:

<pre><code><strong>dfu-util --list
</strong></code></pre>

Note the information in the red box.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FGnNmPqY3ngbNbSRYMnZN%2Fimage.png?alt=media&#x26;token=511593f8-fd5f-4530-bd45-85107463af45" alt=""><figcaption></figcaption></figure>

6. **Access Klipper Directory**\
   Run:

```
cd ~/klipper
```

7. **Configure Klipper**\
   Run:

```
make menuconfig
```

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2F0nRNAz75Vktbkc1CkKPf%2Fimage.png?alt=media&#x26;token=02e96cbf-81c9-4db4-8d4c-aca4bf00243c" alt=""><figcaption></figcaption></figure>

Set the configuration as required, then exit and save.

8. **Clean Make Environment**\
   Run:

```
make clean
```

9. **Flash Firmware**\
   Run:

```
make flash FLASH_DEVICE=0483:df11
```

(Use the appropriate xxxx:yyyy from the previous step.)

10. **Final Steps**

* Remove the power jumper.
* Press the reset button.

11. **Verify Serial Device**\
    After completion, run:

```
ls /dev/serial/by-id/*
```

This should return a device starting with `/dev/serial/by-id/usb-Klipper_stm32f042x6...`.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2F5znXN5WhkfJn7qXziSoz%2Fimage.png?alt=media&#x26;token=fa115e6e-3cd7-4b0e-8fda-c6cd17c43949" alt=""><figcaption></figcaption></figure>

12. **Update Display Configuration**\
    Copy the serial port name (e.g., `/dev/serial/by-id/usb-Klipper_stm32f042x6...`) and place it in the `[mcu display]` section of the display configuration file.

#### Example Configuration for V0Display.cfg

```plaintext
[mcu display]
serial: /dev/serial/by-id/usb-Klipper_stm32f042x6_JKYZ-if00
restart_method: command

[display]
lcd_type: sh1106
i2c_mcu: display
i2c_bus: i2c1a
encoder_pins: ^display:PA4, ^display:PA3
click_pin: ^!display:PA1
kill_pin: ^!display:PA5
x_offset: 2

[neopixel displayStatus]
pin: display:PA0
chain_count: 1
color_order: GRB
initial_RED: 0.24
initial_GREEN: 0.02
initial_BLUE: 0.25
```

Your display should now work with Klipper. To get started, it's recommended to copy the configuration file to the same directory as `printer.cfg`, and then add `[include V0Display.cfg]` at the end of `printer.cfg` to include the file.
