Display ICAO METAR weather data with a Raspberry Pi. Watch the demo!
Unless you know what you're doing, it is recommended to start with a fresh install of Raspbian Desktop from NOOBS setup. The rest of these instructions are based on a clean Raspbian Install install.
This project requires Python 3.10+ to run the avwx library. Run these commands to see if you have it already. Whichever one prints 3.10+, use that.
python -V
python3 -VThis version runs the METAR program on a touchscreen display.
Officially supported/tested displays:
| Raspberry Pi 800x480 Touch Display | PiTFT Plus 480x320 3.5" TFT+Touchscreen | Adafruit 320x240 2.8" TFT+Touchscreen |
|---|---|---|
![]() |
![]() |
![]() |
However, the program can be run on any screen or computer in its own window for development purposes.
If you are using the official Raspberry Pi Touch Display, you won't need to do anything else to configure the display. Skip below to the Config section.
If you are using the Adafruit PiTFT displays, Adafruit has a script that will configure the Pi to use the type of screen you have.
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/adafruit-pitft.sh
chmod +x adafruit-pitft.sh
sudo ./adafruit-pitft.shReboot the Pi with the screen attached before continuing.
Unfortunately, the desktop doesn't configure itself to have a 1:1 pixel scaling ratio. We can fix this by editing the boot config.
sudo nano /boot/config.txtFind the line towards the bottom that starts with hdmi_cvt= and change the first two numbers to be the same pixel resolution as your display. For example, if you're using the 480x320 PiTFT, your line should look like this:
hdmi_cvt=480 320 60 1 0 0 0
Restart the Pi one last time for the display change to take effect.
Common project settings are stored in metar_raspi/config.py. For the screen, the ones you may want to change are:
layout: Size of the screen. Loads the layout frommetar_raspi/screen_settingsshutdown_on_exit: Set toTrueto shutdown the Pi when exiting the programclock_utc: Clock displays UTC or local time. Not applicable to 320x240 size
This version runs the METAR program on an LCD character display with physical buttons.
The METAR plate uses the Adafruit 16x2 LCD Pi Hat. You will need to use a different client library if using a different board.
You may wish to try some sample programs from their tutorial to verify that the plate is working, but there is no additional software setup necessary to use the plate.
Common project settings are stored in config.py. For the plate, the custom configs involve button and scrolling intervals. You may wish to change:
shutdown_on_exit: Set toTrueto shutdown the Pi when exiting the programinclude_remarks: Set toTrueto include the remarks section in scroll line
This project uses hatch for env management. As long as your Python version is valid, you should only need to install and run hatch commands.
pip3 install hatchThen just run the screen command to boot the display.
hatch run screen:runNote: If you are starting the screen program via SSH, you should prepend the DISPLAY config in the Python call:
DISPLAY=:0 hatch run screen:runOn the main display, pressing the RMK, WX, WX/RMK displays more METAR information. Pressing the gear displays more options.
Similarly, to run the plate version, run:
hatch run plate:runIf you want the METAR screen to run on boot, we can use autostart by creating this file:
/home/pi/.config/autostart/metar.desktop
[Desktop]
Type=Application
Name=Metar
Exec=cd /home/pi/METAR-RasPi;/usr/bin/python3 -m hatch run screen:run
Make sure the Exec line uses your version of Python and points to your project folder.
Replace screen:run with plate:run to run the METAR plate.


