UNO R4 Library Compatibility

The Arduino UNO R3 is a development board based on the 8-bit ATMega328P microcontroller. It is one of the most iconic boards ever designed, and it is known and loved by millions of makers worldwide.

In June 2023, the Arduino Uno R4 series was released, the first UNO to feature a 32-bit microcontroller, the RA4M1 from Renesas. While 32-bit microcontrollers are no new thing, it is the first official UNO board to feature one. The R4 series has two versions:

  • Arduino UNO R4 Minima (store / docs) - base version.
  • Arduino UNO R4 WiFi (store / docs) - version with a Wi-Fi/Bluetooth module (ESP32) and a 12x8 LED matrix.

This major change will introduce many challenges, mainly for the amazing libraries developed over the years, particularly around the ATMega328P.

This repository is a gathering point for you all who want to participate in the testing & porting of libraries to the new 32-bit platform. Here you will see the status, and we welcome you to submit your testing data directly to this repository!

See the tested and confirmed library list further down this page.

Donations

Please consider donating to your favorite library's developers. They are a fundamental part of the Arduino platform.

If your library is not yet supported on the UNO R4, donations may also ensure that your library can be ported to this new architecture.

Guidelines

There are many ways to contribute to this project, including:

  • As a library developer: can port your library to this new architecture, and document possible caveats.
  • As a tester: test out libraries and report the status in this repository.

Library Developers

As a library developer, you can support this project by making your existing library compatible with the 32-bit architecture, which the UNO R4 boards are based on.

This means making any changes needed for your library to compile and run on a UNO R4 board, i.e. porting your library.

For many libraries, there might be no changes at all, but for some that are focused on ATMega328P (e.g. accessing specific registers, memory management and so on), the challenge may be much bigger.

Essentially, the porting of a library should follow three crucial steps:

  • Migration to the 32-bit Renesas architecture.
  • Updating of library metadata (stating the compatibility).
  • Report the status of the migration in the issues section of this repository.

Testers

If you are not a library developer, you can support this project by testing out various libraries not yet stated as compatible.

The list that is found further below in this repository will show the progress of all tested libraries, regardless of a PASS / FAIL outcome.

We encourage you to test out the examples of a library with the UNO R4 and report the results both in this repository and in the library repository.

Some things to keep in mind are:

  • If the library is on the list, there is no need to test it again.
  • Follow the same structure as the list.

How to Contribute

Tested and ported libraries should be reported in the issues section of this repository, following the guidelines below:

  • The title of your issue should only contain Library Name + (Status). An ideal title: Servo (PASS).
  • If reporting a library that does not work, please report this in as much detail as possible, including:
    • Include link to tested example(s)
    • If it fails to compile, please attach the verbose log
    • If it compiles and uploads, but does not work as intended, please describe the issues you are having.

Issues reported in this repository will be continuously reviewed and added to the list of tested libraries, regardless of PASS/FAIL status.

Tested and Confirmed Libraries

This list contains the status of tested Arduino libraries with the UNO R4 board. To change the list, submit a pull request to this repository.

Robotics

No. Library Compilation Hardware Test Notes
1. Servo PASS ✅ PASS ✅
2. Stepper PASS ✅ PASS ✅
3. AccelStepper PASS ✅ FAIL ❌

Sensors

No. Library Compilation Hardware Test Notes
1. Adafruit Neopixel PASS ✅ FAIL ❌
2. Adafruit DHTSensor PASS ✅ PASS ✅
3. IRremote FAIL ❌ FAIL ❌
4. Grove_BMP280 PASS ✅ PASS ✅
5. Seeed_Arduino_LIS3DHTR PASS ✅ PASS ✅
6. DHT_sensor_library PASS ✅ PASS ✅
7. Grove_Temperature_And_Humidity_Sensor PASS ✅ PASS ✅
8. Keypad FAIL ❌ FAIL ❌
9. Adafruit_BMP280_Library PASS ✅ PASS ✅
10. Adafruit_Keypad PASS ✅ PASS ✅
11. Bounce2 PASS ✅ PASS ✅
12. Adafruit_BusIO PASS ✅ PASS ✅
13. Adafruit_SGP30_Sensor PASS ✅ PASS ✅
14. Adafruit_SHT31_Library PASS ✅ PASS ✅
15. Adafruit_LIS3DH PASS ✅ PASS ✅
16. Adafruit_LSM6DSOX PASS ✅ PASS ✅
17. Adafruit_LSM6DSO32 PASS ✅ PASS ✅
18. Adafruit_ADXL343 PASS ✅ PASS ✅
19. Adafruit-MLX90614-Library PASS ✅ PASS ✅
20. SparkFunMLX90614 FAIL ❌ FAIL ❌
21. Adafruit_TCS34725 PASS ✅ PASS ✅
22. DFRobot_TCS34725 FAIL ❌ FAIL ❌
23. DHTstable PASS ✅ PASS ✅
24. DHTNew PASS ✅ FAIL ❌ Returns incorrect temperature and humidity
25. Ultrasonic PASS ✅ PASS ✅
26. Adafruit_BME280_Library PASS ✅ PASS ✅
27. arduino-bme280 PASS ✅ PASS ✅
28. bme280 PASS ✅ PASS ✅
29. ER_OLEDM1_CH1115 PASS ✅ PASS ✅
30. ERM19264_UC1609 PASS ✅ PASS ✅
31. ADXL345 FAIL ❌ FAIL ❌
32. SHT21-Arduino-Library PASS ✅ PASS ✅
33. ArduinoJoystickLibrary FAIL ❌ FAIL ❌
34. SHT21-Arduino-Library PASS ✅ PASS ✅
35. DFRobot_SGP40 FAIL ❌ Compiles on Wifi fails on Minima
36. JoystickWin PASS ✅ PASS ✅

Displays

No. Library Compilation Hardware Test Notes
1. u8g2 PASS ✅ PASS ✅
2. Adafruit SSD1306 PASS ✅ FAIL ❌ Scattered pixels all over the display.
3. LiquidCrystal PASS ✅ PASS ✅
4. LiquidCrystal_I2C PASS ✅ PASS ✅
5. SevSeg PASS ✅ PASS ✅
6. Adafruit_ST7735 PASS ✅ PASS ✅
7. Adafruit_ILI9341 FAIL ❌ FAIL ❌
8. FastLED PASS ✅ PASS ✅ Use fork by @facchinm
9. ArduinoGraphics PASS ✅ -
10. TFTLCD-Library FAIL ❌ FAIL ❌ #include "wiring_private.h
11. TM1638plus PASS ✅ PASS ✅
12. NOKIA5110_TEXT PASS ✅ PASS ✅
13. HD44780_LCD_PCF8574 PASS ✅ PASS ✅
14. Arduino_GFX PASS ✅ PASS ✅ Supports many data buses, also
TFT UNO-format shields (e.g., MCUFriend shields)
15. DIYables_4Digit7Segment_74HC595 PASS ✅ PASS ✅

USB

No. Library Compilation Hardware Test Notes
1. Mouse PASS ✅ PASS ✅
2. Keyboard PASS ✅ PASS ✅

Analog

No. Library Compilation Hardware Test Notes
1. Adafruit_MCP4725 PASS ✅ PASS ✅

Communication / Network

No. Library Compilation Hardware Test Notes
1. Ethernet PASS ✅ PASS ✅ Some examples need to be revised
2. WiFi101 PASS ✅ FAIL ❌ No networks are found
3. RTClib PASS ✅ PASS ✅
4. JSON PASS ✅
5. Adafruit_GPS_Library PASS ✅ Not tested on hardware yet
6. Firmata FAIL ❌ FAIL ❌
7. OneWire PASS ✅ PASS ✅
8. Telemetrix4Arduino PASS ✅ PASS ✅ The R4 Branch
9. mWebSockets PASS ✅ PASS ✅
10. GPIO_NXP_Arduino PASS ✅ PASS ✅
11. LCDDriver_NXP_Arduino PASS ✅ PASS ✅
12. LEDDriver_NXP_Arduino PASS ✅ PASS ✅ Not working with PCA9957(SPI)
13. MUX_SW_NXP_Arduino PASS ✅ PASS ✅
14. RTC_NXP_Arduino PASS ✅ PASS ✅ Not working with PCA2131(SPI mode)
15. WiFiEspAT PASS ✅ PASS ✅
16. EthernetENCT PASS ✅ PASS ✅
17. ArduinoOTA PASS ✅ PASS ✅
18. TelnetStream PASS ✅ PASS ✅
19. StreamLib PASS ✅ PASS ✅
20. pubsubclient PASS ✅ PASS ✅

Storage

No. Library Compilation Hardware Test Notes
1. SD PASS ✅ PASS ✅

Power

No. Library Compilation Hardware Test Notes
1. Adafruit SleepyDog FAIL ❌ FAIL ❌

Audio

No. Library Compilation Hardware Test Notes
1. Talkie FAIL ❌ Fail on Minima and Wifi