Why can't I add the ArduinoGraphics library in Arduino App Lab?

I want to add the ArduinoGraphics library to my project but i can´t find it in the Arduino App Lab

I already tried arduino-cli lib update-index but still can´t find this library

I was able to do so with an app earlier...

But I am trying to remember if that was the one library that acted sort of screwy
on adding it.

There was one library that I clicked on that did nothing, as it was maybe part
of the install and not from the list of external libraries. Or if I had to edit
the yaml file

Edit: But as you mentioned, it does not show up in the library list to add it.
@ptillisch and others- Wondering if maybe it is because the library is marked in it's
library.properties file with: architectures=samd,renesas_uno ?

1 Like

In the mean time, you can get it to work, in the same way you can install
your own custom libraries. Hopefully the way you do this will improve over time.

But what I just tried on another "App"

I downloaded the ArduinoGraphics library to my Q.
On my Windows machine I did that using WinSCP app, and downloaded it to the
directory: /home/arduino/libraries/

I edited the sketches yaml file (sketch.yaml), to include that directory like:

profiles:
  default:
    fqbn: arduino:zephyr:unoq
    platforms:
      - platform: arduino:zephyr
    libraries:
      - MsgPack (0.4.2)
      - DebugLog (0.8.4)
      - ArxContainer (0.7.0)
      - ArxTypeTraits (0.3.1)
      - dir: /home/arduino/libraries/ArduinoGraphics
default_profile: default

Note: You can not easily edit this file on the Q. What I did was double click on it
in WinSCP, which brings up a window, where I could edit it and when I did a save
it copied back down to the Q. I had to get out of that project and back in to it
for the Q to see that this file was changed externally.

Edited my sketch.ino to include this file:

// SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA <http://www.arduino.cc>
//
// SPDX-License-Identifier: MPL-2.0

#include <Arduino_RouterBridge.h>
#include <ArduinoGraphics.h>

#include "weather_frames.h"

And it builds with the warnings:

WARNING: library ArduinoGraphics claims to run on samd, renesas_uno architecture(s) and may be incompatible with your current board which runs on zephyr architecture(s).
Sketch uses 19544 bytes (0%) of program storage space. Maximum is 1966080 bytes.

Hopefully others like @ptillisch will have other easier solutions.

3 Likes

That is correct. The Arduino App Lab developers decided that incompatible libraries should not be available for addition via the Arduino App Lab GUI.

This is reasonable. However, the fact is that some library developers take the approach of only listing architectures they have personally verified compatibility with, or are willing to provide support for. This even in the case where a library doesn't contain any architecture-specific code and thus can be used with any board for which the standard Arduino core API has been implemented.

There is nothing architecture-specific in the ArduinoGraphics library's codebase, so theoretically the metadata should instead use the wildcard to indicate universal compatibility:

architectures=*

The use of the dir key is only needed in the case where the library is not available for installation via Library Manager. This library is available from Library Manager, so you can add a standard element to the libraries sequence of the build profile:

profiles:
  default:
    fqbn: arduino:zephyr:unoq
    platforms:
      - platform: arduino:zephyr
    libraries:
      - MsgPack (0.4.2)
      - DebugLog (0.8.4)
      - ArxContainer (0.7.0)
      - ArxTypeTraits (0.3.1)
      - ArduinoGraphics (1.1.4)
default_profile: default

Arduino App Lab will automatically install the library via the Library Manager infrastructure the next time you start the App.

3 Likes

I agree, I created a pr:
library.properties - set architectures=* by KurtE · Pull Request #61 · arduino-libraries/ArduinoGraphics

2 Likes

where exactly to put this segment please? can you describe the exact file path?

Here is screenshot from app-lab

Your app should have a file in it under sketch called: sketch.yaml

This is showing mine. In order to include the ArduinoGraphics library you need to
edit your file like this and add the line ArduinoGraphics...

Note earlier, as mentioned a few posts up. I manually copied the library to a
directory on the Q, in particular:

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan  4 15:55:17 2026 from 192.168.2.230
arduino@bambie:~$ ls
ArduinoApps  Desktop  Documents  Downloads  libraries  lost+found  Music  Pictures  Public  Templates  Videos
arduino@bambie:~$ ls libraries
ArduinoGraphics  ST77XX_zephyr  XPT2046_Touchscreen
arduino@bambie:~$

This shows some other libraries I have added like one to output to an ST7796 display.

But with @ptillisch version which shows in my screen shot above, once you edit this
yaml file, the app-lab will download it from the library manager.

You should note, the app lab editor does not allow you to edit the .yaml file.
I have typically done it by editing it on my PC and copy back down the edited version.
I use WinSCP to do it, where I simply browse the window to the right directory, double click on the yaml file, which opens up a text editor, where I make the simple changes and when I save it back out, WinSCP copies it back to the Q. But you can accomplish this several different ways.

Also when edit these files, applab does not notice that the file changed. So I typically select a different project and then switch back and then it will use the updated file.

1 Like

but where to find that yaml file to edit? what is the path to it?

‘sketch.yaml’ is part of each App, stored in the ‘sketch’ folder shown under ‘Files’ on the left of App Lab.

The file can’t be edited in App Lab, so personally I use Samba to access all the App files in Windows File Explorer. At present I don’t think there’s a ‘reload’ function in App Lab, so you need to open another App and then reopen the one you’re working on to see your changes if you’ve edited the file in Windows (for example).

HTH, Jim

In Windows, the path to the folder is something like:

\192.168.0.88\uno-q-home\ArduinoApps\yourappid\sketch

As I have mentioned in other posts like:
My Laundry list ;) - Development Tools / App Lab - Arduino Forum
I often times use PuTTY or KiTTY to talk to the Q (or other boards) as a command prompt.
Most of the time KiTTy, where I have a configuration setup for my Q:

For some reason my Q had the name bambie, so my Kitty configuration looks like:


Note in my case in some of the configuration settings, I set the default user (arduino)
and Password ...

One nice thing with KiTTy it has a menu item to open WinSCP.
Which opens a window that looks like:

Note: the left side of the window you can navigate in your filesystem(s) on your PC,
the Right side you navigate the Q's file system.

From the Arduino Documents we know that your apps are stored in the ArduinoApps
directory of the linux host. If you double click on that it shows all of your logical
apps. In my case for the above it is weather2 under that you see sketch
And you can get down to where that file is: (Just the right hand Q side)


As I said, in previous post if I double click on sketch.yaml
It brings up a window:

Which I can edit and as I mentioned if I save changes WinSCP will copy the updated
file back.

But again this is only one way to do this. As @jgmdavies mentioned he uses
Samba, which I know @ptillisch mentioned in other thread he uses as well.
I believe there may be plugins to Visual Code (or was that Studio) that allowed you
to edit the files over these remote paths as well.

Hope that helps

Guys, why are you using putty/winscp/samba if VSCode is working perfectly with Uno Q?

This is x100 more convenient, you can use refactorings, formatting, every file is editable, you can use CoPilot as well.

All I did was added my public key to /home/Arduino/.ssh/authorized_keys (as a bonus I don't need to type password anymore)

Then just one click in VSCode remote ssh plugin. AppLab honestly is absolutely useless for anything except stop/run your app and check python and serial logs. Ok, also bricks adding

I like using Samba as it allows me to access Uno Q folders as though they are local. Then I use the text editor of my choice. I have been using Notepad++. I also have mounted a flash drive For image files that get stored by my webcam. I can then move these files easily with file explorer/Samba. This way I can avoid excessive file writes to the eMMC.

Don’t know how it is more convenient but then I have never used VScode. Every file is editable with my workflow and I never use Github CoPilot.

I forgot to mention git - it is one click commit and push in VSCode. You know, I burned one Q already, don't want all my work to disappear again

please how will i find out the port number - via Arduino App lab?

When I do something worthy to use version control I use git from the command line. A habit that stated years ago.

Not sure what you mean by Port number?
If you mean the IP address?

I found it two different ways: In previous post about KiTTy configuration, I addressed
it by Host Name, in this case bambie

Once I open up a terminal window on this, I could find the ip address, by using the
command line: ip addr
Which output a lot of stuff...

arduino@bambie:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
...
15: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 14:b5:cd:0a:80:47 brd ff:ff:ff:ff:ff:ff
    altname wlx14b5cd0a8047
    inet 192.168.2.231/24 brd 192.168.2.255 scope global dynamic noprefixroute wlan0
       valid_lft 84279sec preferred_lft 84279sec
    inet6 fe80::1345:fecc:5051:e97b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
16: br-078aa6d42669:
...
arduino@bambie:~$

There were 16 things in the list, but I looked for one that started with 192.168...
Which in my case was: 192.168.2.231

But I also just noticed in APP lab, at least when I connected over the net in the window:


The little command prompt near the bottom left, it opened a terminal window on
my PC, asking if I want to update... I said yes, closed it, and then clicked on it again:

Which again verified that is the correct IP address.

Now if you are asking about USB Port number, for where things you write to the
Monitor object within Arduino code, there are a few different ways. I typically
either have Arduino IDE running and look at the ports there.

Or I have TyCommander installed, that I use a lot when doing stuff with Teensy boards


Note: the COM23, is an FTDI USB to serial adapter that I have connected up to pins
D0,D1 which correspond to the Serial object.

Sorry, I know that a lot of this is off topic, other than trying to give user options on
how to edit the sketh.yaml file

I might use it at some point. But VSCode has not been my goto editor. Nothing wrong with it, but I am used to using SublimeText as my main editor. As for github, on windows I typically use github desktop, but sometimes do things at the command line.

But will try Samba again. Note several years ago, at times when I was using a Mac Book Pro as a backup computer, I used an editor named something like TextWrangler that allowed me to edit files directly on an RPI, or was that the BBB or Odroid...

IP Port number

It depends. If you are using the Web UI Brick the default port is 7000. The IP address and port number are generally given in the output on the python tab.

The reason one does not need to add a port number to a typical URL is that web servers watch for requests on port 80 in general. By using a number other than 80 it is possible more than one web server to run on the same platform.

Example:

http://{IP}:7000

The port number is the number after the colon after the IP address. As I was saying when the port number is not explicitly stated a web browser will default to using port 80.

You can find the open ports on your Uno Q by using ss -nltp on the command line:

1 Like

here is my Kitty. Port is COM4 and i tried also Port 22. Nothign works