# Phyx LANA TNY CH32V203

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/134/544/medium800thumb/development_boards_LANA_01_DEFAULT.jpg?1737408542)

The LANA TNY board is&nbsp;[Phyx](http://phyx.be/)'s take on an [Adafruit QT Py](https://www.adafruit.com/category/595)&nbsp;and&nbsp;[Seeed studio XIAO](https://wiki.seeedstudio.com/Seeeduino-XIAO/) bite-sized development boards&nbsp;but with added SMD pins for optional extra IO capabilities and a built-in WS2811 compatible LED output. The LANA TNY is a small development board based around the&nbsp;[WCH CH32V203](https://www.wch-ic.com/products/CH32V203.html) RISC-V microcontroller.

![LANA](https://cdn-shop.adafruit.com/970x728/6042-03.jpg )

The&nbsp; **CH32V203G6** has a single 32-bit RISC-V core, running up to 144MHz, with 1-cycle multiply, and hardware divide. Inside is 10KB SRAM, 32KB single-cycle Flash as well as an additional 'external XIP' 224KB of Flash that can be used for program or data storage but it is not as fast as the 32KB. There are also extras you expect: ADC, timers, USB device, UART, I2C and SPI.&nbsp;

![LANA](https://cdn-shop.adafruit.com/970x728/6042-02.jpg )

### Features:

- Same size, form-factor, and pin-out as Seeed Xiao Plus
- **USB Type C connector&nbsp;** -&nbsp;[If you have only Micro B cables, this adapter will come in handy](https://www.adafruit.com/product/4299)!
- **CH32V203G6 RISC-V&nbsp;** microcontroller core with 3.3V power/logic. Internal 144 MHz oscillator.
- **Native USB Device** &nbsp;
- **Built in RGB NeoPixel LED with dedicated output pin**
  - Standard pin and 1.27mm pitch castellated pin

- **20x GPIO**
  - 11x standard pins
    - 9 ADCs
    - Hardware UART
    - Hardware SPI
    - Built-in I²C Pull-ups (If removed, I²C is 5V tolerant!)

  - **9x 1.27 mm pitch castellations pins**  

    - 7 of these are 5V tolerant
    - Reset pin
    - LED Data output
    - Extra hardware UART

  - I2C port with STEMMA QT plug-n-play connector

- 3.3V regulator with&nbsp; **250mA peak output**
- **Bootloader switch&nbsp;** for starting your project code over or entering USB ROM bootloader mode
- SWD data/clock pads and extra GND pads available for advanced debugging usage
- **Really really small**

### LANA TNY - CH32V203 mini microcontroller board by Phyx

[LANA TNY - CH32V203 mini microcontroller board by Phyx](https://www.adafruit.com/product/6042)
 **TNY** is [Phyx](http://phyx.be/)'s take on our [Adafruit QT Py](https://www.adafruit.com/category/595) and [Seeed studio XIAO](https://wiki.seeedstudio.com/Seeeduino-XIAO/)&nbsp;bite-sized development boards&nbsp;but with added SMD pins for...

In Stock
[Buy Now](https://www.adafruit.com/product/6042)
[Related Guides to the Product](https://learn.adafruit.com/products/6042/guides)
![Angled shot of white, square-shaped dev board.](https://cdn-shop.adafruit.com/640x480/6042-00.jpg)

# Phyx LANA TNY CH32V203

## Pinouts

Warning: This board does not run CircuitPython or MicroPython. Arduino support is very early.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/854/medium800/development_boards_pinout.png?1732711974)

# Phyx LANA TNY CH32V203

## Connections

There are two ways to flash a new firmware to your&nbsp; **LANA-TNY** &nbsp;board:

- **USB-C port** : Flash new firmware over the USB-C port.
- **SWD** : Use a dedicated flash/debug probe&nbsp;to flash new firmware (like the [WCH-LinkE](https://www.wch-ic.com/products/WCH-Link.html)).

## USB-C port

To flash new firmware over the USB-C port, boot the microcontroller in bootloader-mode. To achieve that, keep the BOOT switch pressed while inserting the USB-C cable:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/090/medium800/development_boards_connections_01.png?1733952197)

You'll need to install a driver on your computer to recognize the USB-C port.

## SWD Interface

Wire up the&nbsp;[WCH-LinkE-r0-1v3](https://www.wch-ic.com/products/WCH-Link.html)&nbsp;flash/debug probe to the SWD pins on the board. Of course, the board needs power. You have two choices:

- Power the board through the flash/debug probe via jumper wires.
- Power the board through the USB-C port. In this case, the board is powered through the USB-C port, and the flash/debug probe is only used for flashing and debugging.

Let's start with the first option - power the board via the flash/debug probe. The flash/debug probe delivers 5V to the&nbsp; **LANA-TNY** &nbsp;board (which is then further converted into 3V3):

![](https://cdn-learn.adafruit.com/assets/assets/000/134/091/medium800/development_boards_connections_02.png?1733952392)

You can see the following signals connected in the figure above:

- 5V: 5V power
- GND: Ground
- SWCLK: SWD Clock line
- SWDIO: SWD Data line
- RST: RST line. The need for this connection depends on the configuration files given to OpenOCD. The configuration file Embeetle gives you by default for the&nbsp; **LANA-TNY** &nbsp;board does not require this connection.
- TX: [Optional] UART Transmit line
- RX: [Optional] UART Receive line

The&nbsp;TX&nbsp;and&nbsp;RX&nbsp;wires are not essential for flashing and debugging. They are used for UART communication, so they can come in handy if you add print statements to your firmware.

As said before, you can also power the board via its USB-C connector. In that case, you don't need to draw power from the flash/debug probe 5V pin. That would be the only change compared to the previous setup:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/092/medium800/development_boards_connections_03.png?1733952421)

After wiring up everything, you still need to install a driver on your computer.

# Phyx LANA TNY CH32V203

## Installation USB-C

Remember: there are two ways to flash firmware to this board. Each requires a different driver installation process:

# Flash Firmware over USB-C Port&nbsp;

Keep the BOOT switch pressed while inserting the USB-C cable.

Now select the `wchisp` tool in Embeetle IDE:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/093/medium800/development_boards_dashboard_01.png?1733952793)

Click the&nbsp; **Flash** &nbsp;button at the top. It could be that flashing fails:

```
Failed to open USB device: Bus 001 Device 008: ID 4348:55e0Error: Failed to open USB device on Windows
```

On Linux you would get something like this:

```
Failed to open USB device: Bus 003 Device 010: ID 4348:55e0Error: Failed to open USB device on Linux due to no enough permission
```

Let's consider the solutions:

# Windows

You must install&nbsp;[Zadig](https://zadig.akeo.ie/)&nbsp;and replace the driver for the USB device with the WinUSB driver. First,&nbsp;[download Zadig](https://zadig.akeo.ie/):

![](https://cdn-learn.adafruit.com/assets/assets/000/134/094/medium800/development_boards_zadig_01.png?1733953049)

Then, open Zadig and select&nbsp; **Options** &nbsp;-\>&nbsp; **List All Devices** :

![](https://cdn-learn.adafruit.com/assets/assets/000/134/095/medium800/development_boards_zadig_02.png?1733953066)

Select&nbsp; **USB Module** &nbsp;from the list of devices and choose&nbsp; **WinUSB** &nbsp;as the driver. Then click&nbsp; **Replace Driver** :

![](https://cdn-learn.adafruit.com/assets/assets/000/134/096/medium800/development_boards_zadig_03.png?1733953092)

Maybe you didn't find&nbsp; **USB Module** &nbsp;in the list of devices? In that case, you might find&nbsp; **Unknown Device #1** &nbsp;instead. Take that one and choose&nbsp; **WinUSB** &nbsp;as the driver. Then click&nbsp; **Replace Driver** :

![](https://cdn-learn.adafruit.com/assets/assets/000/134/097/medium800/development_boards_zadig_03b.png?1733953106)

Wait for the driver installation to complete:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/098/medium800/development_boards_zadig_04.png?1733953134)

Success:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/099/medium800/development_boards_zadig_05.png?1733953152)

# Linux

The&nbsp;`wchisp`&nbsp;tool needs sudo rights to access USB drivers, unless you add the device to the&nbsp; **plugdev** group. First you need to add the current user:

Check the groups related to the current user:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/106/medium800/development_boards_Screenshot_2024-12-11_224934.png?1733953789)

If&nbsp;`plugdev`&nbsp;would not be listed, add the current user to that group:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/107/medium800/development_boards_Screenshot_2024-12-11_225019.png?1733953827)

Figure out your device's Vendor ID and Product ID through the&nbsp;`$ lsusb`&nbsp;command:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/108/medium800/development_boards_Screenshot_2024-12-11_225125.png?1733953893)

As you can see, the ID for my device consists of two 4-digit hex numbers:&nbsp;`ID 4348:55e0`. The first one is the Vendor ID, the second one the Product ID. Do not confuse them!

In the console, navigate to&nbsp;`/etc/udev/rules.d`&nbsp;and list the contents of the directory:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/110/medium800/development_boards_Screenshot_2024-12-11_225225.png?1733953953)

Now create a new file, for example with the gedit editor:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/111/medium800/development_boards_Screenshot_2024-12-11_225257.png?1733953985)

You can name this file whatever you want, so long as it ends in&nbsp;`.rules`. Rules files by convention begin with a number. Linux parses rules files in lexical order, and the number makes it easy to see which files will be parsed first. Choosing a low number (like 10, as above) means that your file will be parsed before system rules files.

Now you need to add a line in the file that represents your device. If the file already existed (from a previous device you added this way), you can leave all the content as-is and just add a line at the bottom. The line you need to add is:

```
ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", MODE="666", GROUP="plugdev"
```

Of course, fill in your own Vendor ID and Product ID!&nbsp;(although the ones above should be correct for the&nbsp; **LANA-TNY** &nbsp;board)

Save the file and close it. Now you need to tell Linux to reload the&nbsp; **udev** &nbsp;rules:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/113/medium800/development_boards_Screenshot_2024-12-11_225413.png?1733954061)

Any member of the&nbsp; **plugdev** &nbsp;group should now be able to run&nbsp;`wchisp`&nbsp;without using sudo.

Try again in Embeetle IDE. Don't forget to keep the boot switch&nbsp;pressed while plugging in the USB-C cable!

# Phyx LANA TNY CH32V203

## Installation SWD

If you decide to flash your firmware with the WCH flash/debug probe, you'll have to select that probe in Embeetle IDE and choose for OpenOCD as your flashtool:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/114/medium800/development_boards_ezgif-1-b51b29d84b.png?1733954169)

You'll also need to install the WCH driver.

Warning: The probe can work in RISC-V-mode or ARM-mode. Make sure the probe is set to the appropriate mode (RISC-V).

# Windows

The **WCH-LinkE-r0-1v3** &nbsp;flash/debug probe is a WinUSB device. Just like other devices in this class, there is no need to install a driver. Plug it in a USB-port and open the Windows Device Manager. There are three ways the probe can be visible now:

- `Interface > WCH CMSIS-DAP`: the probe is in its default&nbsp; **ARM-mode**.
- `Interface > WCH-LinkRV`: the probe is in&nbsp; **RISC-V-mode**.
- `Other devices > WCH-Link`: Windows doesn't recognize the device right away.

We'll go over these cases one-by-one. Let's start with the first one:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/115/medium800/development_boards_Screenshot_2024-12-11_225955.png?1733954406)

Being shown as&nbsp;`WCH CMSIS-DAP`&nbsp;means that the probe is in its default&nbsp; **ARM-mode**. In&nbsp; **RISC-V-mode** &nbsp;the Device Manager shows the probe as&nbsp;`WCH-LinkRV`:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/116/medium800/development_boards_Screenshot_2024-12-11_230044.png?1733954455)

What should you do if Windows doesn't recognize the device right away? With a bit of bad luck, you see this in the Device Manager:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/117/medium800/development_boards_Screenshot_2024-12-11_230256.png?1733954586)

No panic! Just go to the following webpage (load time can be quite long):&nbsp;[https://www.wch.cn/downloads/WCH-LinkUtility\_ZIP.html](https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html)  
Then click the big blue download button:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/118/medium800/development_boards_Screenshot_2024-12-11_230334.png?1733954623)

Unzip the downloaded folder and navigate to the driver executable&nbsp;`WCHLinkDrv_WHQL_S.exe`&nbsp;in the folder&nbsp;`WCH-LinkUtility/Drv_Link/`:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/119/medium800/development_boards_Screenshot_2024-12-11_230417.png?1733954665)

Double click the executable to run it. Windows will ask permission - click `YES`. That's all. There is no chain of popup windows to click through. It almost feels as if nothing happens, until you look in the Windows Device Manager:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/120/medium800/development_boards_Screenshot_2024-12-11_230459.png?1733954708)

# Linux

Embeetle uses OpenOCD to interact with the WCH-LinkE probe. OpenOCD needs sudo rights to access USB drivers, unless you add the device to the&nbsp; **plugdev** &nbsp;group. First you need to add the current user:

Check the groups related to the current user:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/121/medium800/development_boards_Screenshot_2024-12-11_224934.png?1733954771)

If&nbsp;`plugdev`&nbsp;would not be listed, add the current user to that group:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/122/medium800/development_boards_Screenshot_2024-12-11_225019.png?1733954793)

Figure out your device's Vendor ID and Product ID through the&nbsp;`$ lsusb`&nbsp;command:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/123/medium800/development_boards_Screenshot_2024-12-11_230703.png?1733954830)

As you can see, the ID for my device consists of two 4-digit hex numbers:&nbsp;`ID 1a86:8010`. The first one is the Vendor ID, the second one the Product ID. Do not confuse them!

In the console, navigate to&nbsp;`/etc/udev/rules.d`&nbsp;and list the contents of the directory:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/124/medium800/development_boards_Screenshot_2024-12-11_230803.png?1733954892)

Now create a new file, for example with the gedit editor:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/125/medium800/development_boards_Screenshot_2024-12-11_230838.png?1733954929)

You can name this file whatever you want, so long as it ends in&nbsp;`.rules`. Rules files by convention begin with a number. Linux parses rules files in lexical order, and the number makes it easy to see which files will be parsed first. Choosing a low number (like 10, as above) means that your file will be parsed before system rules files.

Now you need to add a line in the file that represents your device. If the file already existed (from a previous device you added this way), you can leave all the content as-is and just add a line at the bottom. The line you need to add is:

```
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", MODE="666", GROUP="plugdev"
```

Of course, fill in your own Vendor ID and Product ID!&nbsp;WCH distributes a few kinds of flash/debug probes. If you add the following three lines, you should be able to use all of them:

```
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", MODE="666", GROUP="plugdev"ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", MODE="666", GROUP="plugdev"ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8012", MODE="666", GROUP="plugdev"
```

Save the file and close it. Now you need to tell Linux to reload the&nbsp; **udev** &nbsp;rules:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/126/medium800/development_boards_Screenshot_2024-12-11_225413.png?1733954997)

Any member of the&nbsp; **plugdev** &nbsp;group should now be able to run OpenOCD without using sudo.

# Switching modes

The&nbsp; **WCH-LinkE-r0-1v3** &nbsp;flash/debug probe can operate in two modes: ARM and RISC-V. It is very important that the mode corresponds to the processor architecture of your target microcontroller!

In ARM-mode, the probe lits a persistent blue LED light. In RISC-V mode, there is no blue light (except while you're flashing code or debugging, then you'll have one ore more blue blinks).

## Hardware mode switch

Plug out the probe, make sure it's not connected to anything. Remove its plastic case (that can be a bit of a challenge). Then, press down the&nbsp;`ModeS`&nbsp;button:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/127/medium800/development_boards_Screenshot_2024-12-11_231129.png?1733955097)

While keeping the button pressed, plug the probe into your computer, such that it can draw power. Then release the button. It should now have switched its mode.

Once the mode has switched from ARM to RISC-V (or vice versa), it will stay in its new mode until you switch it again. In other words: the mode is stored in non-volatile memory on the probe.

## Software mode switch&nbsp;

To switch mode, download the&nbsp; **WCH-LinkUtility** tool software. This can only be done on Windows, for Linux refer to the hardware switch method above. Navigate to This webpage:  
[https://www.wch.cn/downloads/WCH-LinkUtility\_ZIP.html](https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html)  
Click the big blue download button:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/128/medium800/development_boards_Screenshot_2024-12-11_230334.png?1733955181)

Unzip the downloaded folder and navigate inside. You should see the&nbsp;`WCH-LinkUtility.exe`&nbsp;executable:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/129/medium800/development_boards_Screenshot_2024-12-11_231331.png?1733955229)

Launch the executable. The tool opens. At the bottom you should see the&nbsp;`Active WCH-Link Mode`&nbsp;field. Click the&nbsp;`Get`&nbsp;button next to it to see the current mode. By default, that would be&nbsp;`WCH-LinkDAP-WINUSB`, which indicates&nbsp; **ARM-mode**.

![](https://cdn-learn.adafruit.com/assets/assets/000/134/130/medium800/development_boards_Screenshot_2024-12-11_231427.png?1733955283)

To switch to&nbsp; **RISC-V-mode** , select&nbsp;`WCH-LinkRV`&nbsp;in the dropdown menu. Then click&nbsp;`Set`&nbsp;to apply the new mode. After doing so, you should see the result in the Windows Device Manager:

![](https://cdn-learn.adafruit.com/assets/assets/000/134/131/medium800/development_boards_Screenshot_2024-12-11_231527.png?1733955332)

As you can see, the device now shows up in the Device Manager as&nbsp;`WCH-LinkRV`. Once you switched the mode, it should remain like that forever - until you change it back.

# Phyx LANA TNY CH32V203

## Embeetle IDE Setup

[Install Embeetle IDE](https://embeetle.com/#embeetle-ide/download)
Launch Embeetle IDE once you've installed it.

## Download sample project

Select&nbsp;`CREATE`&nbsp;in the Home Window.

![](https://cdn-learn.adafruit.com/assets/assets/000/134/541/medium800/development_boards_Screenshot_2025-01-20_221604.png?1737407777)

Select&nbsp; **WCH** &nbsp;as the vendor and find the&nbsp;`lana-tny-01`&nbsp;project. As you can see, there is also a&nbsp;`lana-tny-01-blaster-2024`&nbsp;and&nbsp;`lana-tny-01-communicator-2024`&nbsp;project in the list. You can choose those if you have one of these devices. If you just want to flash an LED on your LANA TNY board, choose the simple&nbsp;`lana-tny-01`&nbsp;project.

![](https://cdn-learn.adafruit.com/assets/assets/000/134/542/medium800/development_boards_Screenshot_2025-01-20_221726.png?1737407857)

Click&nbsp;`CREATE`&nbsp;to download the project. Embeetle will offer you to download also all the required tools that are not yet on your computer. Accept these downloads. Make sure you've installed either the WCH USB-C drivers or the drivers for WCH-ISP tool.

## Build and Flash

Click the build&nbsp;button in the toolbar at the top, to start the code compilation. If all goes well, you should now have a&nbsp;`.elf`,&nbsp;`.bin`&nbsp;and&nbsp;`.hex`&nbsp;file in the&nbsp;`build/`&nbsp;folder.

Click the flash button.

![](https://cdn-learn.adafruit.com/assets/assets/000/134/543/medium800/development_boards_Screenshot_2025-01-20_222210.png?1737408142)

Depending on your earlier choice (flashing through the USB-C port or with the flash/debug probe), either the&nbsp;`wchisp`&nbsp;tool or&nbsp;`OpenOCD`&nbsp;launches to flash the firmware.

# Phyx LANA TNY CH32V203

## Arduino IDE Setup

Warning: Arduino support is very early.

# Install Arduino IDE

The first thing you will need to do is to download the latest release of the Arduino IDE. You will need to&nbsp;be using&nbsp; **version 2.0** &nbsp;or higher for this guide.

&nbsp;

[Arduino IDE Download](http://www.arduino.cc/en/Main/Software)
## Install the arduino\_core\_ch32 Board Support Package

After you have downloaded and installed **&nbsp;the latest version of Arduino IDE** , you will need to start the IDE and navigate to the&nbsp; **Preferences** &nbsp;menu. You can access it from the&nbsp; **File** &nbsp;menu in&nbsp;_Windows_&nbsp;or&nbsp;_Linux_, or the&nbsp; **Arduino** &nbsp;menu on&nbsp;_OS X_.

![File](https://cdn-learn.adafruit.com/assets/assets/000/101/639/original/esp32_s2_arduino_ide_setup_flora_prefs.png?1618870383 )

A dialog will pop up just like the one shown below.

![Preferences](https://cdn-learn.adafruit.com/assets/assets/000/101/640/original/esp32_s2_arduino_ide_setup_flora_Screen_Shot_2015-05-07_at_9.07.21_AM.png?1618870405 )

We will be adding a URL to the new&nbsp; **Additional Boards Manager URLs** &nbsp;option. The list of URLs is comma separated, and&nbsp;_you will only have to add each URL once._&nbsp;New Adafruit boards and updates to existing boards will automatically be picked up by the Board Manager each time it is opened. The URLs point to index files that the Board Manager uses to build the list of available & installed boards.

To find the most up to date list of URLs you can add, you can visit the list of&nbsp;[third party board URLs on the Arduino IDE wiki](https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls#list-of-3rd-party-boards-support-urls). We will only need to add one URL to the IDE in this example, but&nbsp;_ **you can add multiple URLs by separating them with commas** _. Copy and paste the link below into the&nbsp; **Additional Boards Manager URLs** &nbsp;option in the Arduino IDE preferences.

```auto
https://raw.githubusercontent.com/robinjanssens/WCH32V_board_manager_files/main/package_ch32v_index.json
```

![Multiple](https://cdn-learn.adafruit.com/assets/assets/000/131/609/original/hacks_bspJson.png?1722262092 )

If you have multiple boards you want to support, say ESP8266 and Adafruit, have both URLs in the text box separated by a comma (,)

Once done click&nbsp; **OK** &nbsp;to save the new preference settings.

## Installation Prerequisites

Before you install the board support package via the Arduino IDE, make sure to check the&nbsp;[toolchain prerequisites for your operating system](https://github.com/openwch/arduino_core_ch32?tab=readme-ov-file#os-support)&nbsp;in the board support package repository. It's very important that you follow the steps listed in the README before installing the board support package in the Arduino IDE.

Warning: Follow the steps listed in the GitHub README for your operating system before installing the board support package in the Arduino IDE.

## Install with the Board Manager

The next step is to actually install the Board Support Package (BSP). Go to the&nbsp; **Tools → Board → Boards Manager** &nbsp;submenu. A dialog should come up with various BSPs. Search for&nbsp; **ch32**.

![](https://cdn-learn.adafruit.com/assets/assets/000/134/537/medium800/development_boards_Screenshot_2025-01-20_220127.png?1737406919)

Select the `1.0.5-alpha` version, click the&nbsp; **Install** &nbsp;button and wait for it to finish. Once it is finished, you can close the dialog. This takes care of installing all of the backend dependencies and toolchain for the WCH chips.

## Code Upload options

Select the correct options in&nbsp;`Tools` . Under `Board`, `CH32 MCU EVT Boards`, select the `CH32V20X`

![](https://cdn-learn.adafruit.com/assets/assets/000/134/538/medium800/development_boards_Screenshot_2025-01-20_220411.png?1737407174)

Under `Board Select`, select the `LANA TNY` option

![](https://cdn-learn.adafruit.com/assets/assets/000/134/539/medium800/development_boards_Screenshot_2025-01-20_220342.png?1737407286)

Under `Upload method`, select `WCH-ISP`

![](https://cdn-learn.adafruit.com/assets/assets/000/134/540/medium800/development_boards_Screenshot_2025-01-20_220837.png?1737407424)

Info: If you don't select a port, your board will not be visible in the IDE. Once you put the LANA TNY in flash mode by holding down the button while plugging it in, it is discoverable by the external flashing tool.

# Phyx LANA TNY CH32V203

## Downloads

## Files

- [CH32V203 Product Page](https://www.wch-ic.com/products/CH32V203.html)
- [CH32V203 Datasheet](https://cdn-learn.adafruit.com/assets/assets/000/131/418/original/CH32V203DS0.PDF?1721655401)
- [Pinout on GitHub](https://github.com/phyx-be/LANA_TNY/blob/main/media/pinout.png)
- [Schematic PDF](https://github.com/phyx-be/LANA_TNY/blob/main/LANA_TNY_01/OUTPUT/LANA_TNY_01.PDF)
- [Altium source files](https://github.com/phyx-be/LANA_TNY/tree/main/LANA_TNY_01)


## Primary Products

### LANA TNY - CH32V203 mini microcontroller board by Phyx

[LANA TNY - CH32V203 mini microcontroller board by Phyx](https://www.adafruit.com/product/6042)
 **TNY** is [Phyx](http://phyx.be/)'s take on our [Adafruit QT Py](https://www.adafruit.com/category/595) and [Seeed studio XIAO](https://wiki.seeedstudio.com/Seeeduino-XIAO/)&nbsp;bite-sized development boards&nbsp;but with added SMD pins for...

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

## Related Guides

- [Adafruit AS7343 14-Channel Light / Color Sensor Breakout](https://learn.adafruit.com/adafruit-as7343-14-channel-light-color-sensor-breakout.md)
- [Raspberry Pi Video Synth with Blinka and Processing](https://learn.adafruit.com/raspberry-pi-video-synth-with-blinka-and-processing.md)
- [Adafruit HUSB238 USB Type C Power Delivery Breakout](https://learn.adafruit.com/adafruit-husb238-usb-type-c-power-delivery-breakout.md)
- [MakeCode Maker](https://learn.adafruit.com/makecode-maker.md)
- [Internet of Things Printer](https://learn.adafruit.com/internet-of-things-printer.md)
- [Print Your Own Circuit Boards](https://learn.adafruit.com/how-to-print-your-own-circuit-board.md)
- [Adafruit MEMENTO Camera Board](https://learn.adafruit.com/adafruit-memento-camera-board.md)
- [Water Drip Dress with Oozemaster 3000](https://learn.adafruit.com/water-drip-dress-with-oozemaster-3000.md)
- [Monster M4sk Is Watching You](https://learn.adafruit.com/monster-m4sk-is-watching-you.md)
- [Adafruit HX711 24-bit ADC](https://learn.adafruit.com/adafruit-hx711-24-bit-adc.md)
- [I2C/SPI LCD Backpack](https://learn.adafruit.com/i2c-spi-lcd-backpack.md)
- [GitHub Actions Status Tower Light](https://learn.adafruit.com/github-actions-status-tower-light.md)
- [Adafruit MAX17048 LiPoly / LiIon Fuel Gauge and Battery Monitor](https://learn.adafruit.com/adafruit-max17048-lipoly-liion-fuel-gauge-and-battery-monitor.md)
- [How to Fuse Motion Sensor Data into AHRS Orientation (Euler/Quaternions)](https://learn.adafruit.com/how-to-fuse-motion-sensor-data-into-ahrs-orientation-euler-quaternions.md)
- [How to Add a New Board to WipperSnapper](https://learn.adafruit.com/how-to-add-a-new-board-to-wippersnapper.md)
