I can't figure out how to upload Zip file libraries from my computer onto a project. I'm using an Arduino Uno Q with the Arduino App Lab application. Any help is appreciated.
It may or may not work, it's not the same as an UNO R3. First make sure it isn't already installed. Go to the on-board library and check.
Remember the UNO Q is an STM processor, so there is probably a lot of architecture gotchas. Check the library.properties.
Maybe someone else has a better answer than me.
I don't have a better answer. I'm just glad I didn't buy one of these Qs yet. (Q for questioning if it will ever work right)
I'm a person that likes value and reliability
I think I'll buy an R3 to go with my R4 until they get this mess of bugs figured out.
@star12
Unfortunately, the Arduino App Lab does not currently support the upload of a zip for a library.
A possible workaround solution is to use the dir: <LOCAL_LIB_PATH> in the sketch.yaml profile https://docs.arduino.cc/arduino-cli/sketch-project-file/ to add a local directory containing your library.
Example: put the Mylib folder containing your library in the sketch folder.
NOTE: To push a folder from your pc to the board, you can use adb
.arduino15/packages/arduino/tools/adb push MyLib /home/arduino/ArduinoApps/copy-of-blink-led/sketch/MyLib
/home/arduino/ArduinoApps/copy-of-blink-led
βββ app.yaml
βββ assets
β βββ docs_assets
β βββ app-lab-run-app.png
β βββ blink-banner.png
βββ python
β βββ main.py
βββ README.md
βββ sketch
βββ MyLib
β βββ library.properties
β βββ src
β βββ mylib.cpp
β βββ mylib.h
βββ sketch.ino
βββ sketch.yaml
Edit sketch.yaml adding the - dir: MyLib
# sketch/sketch.yaml
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: MyLib
default_profile: default
Seems like there should be an automatic way to do this other than jumping through hoops. I was just looking at this since I have a bunch of local libraries I would like to be able to import. This seems to be overly annoying to do especially if you may have several sketches that use the same library.
Sorry, slightly off topic, but some of the library handling does not feel like
... Arduino.
For example: if I am using the arduinoGraphics library in one app, and another
app I decide to use it and copy the #include lines in, on Arduino IDE it works.
Here it does not find it, I have to know to click again on the Libraries to add
it more specifically for this new app.
If I am using it in 10 different apps, does it make 10 copies of it?
If I go to the Add library to sketch and try to add one that is part of the release
like the Arduino_LED_Matrix, it shows up in the list:
But clicking on the Install button appears to not do anything. But the app builds.
From what I am seeing every docker container/App has a copy of the library.
It's similar to PlatformIO and CodeVS. The prevailing thought today is that although two or more apps may utilize the same library, it is not uncommon for one to only work with an older version. In reality, of course, the real problem is that the library is not 100% correct; however, it is quicker to create a working version than to wait for a maintainer to fix the actual issue. Of course, after a while, you have a major problem that totally defeats the entire library concept. Not unexpected by me and others of a certain era and experience.
Unfortunately that defeats the whole Arduino concept of using libraries and the simplicity of using libraries!
Sorry you lost me here! Yes I understood what you are saying, but...
How do I fix the library? Where is it installed? I don't see the
ArduinoGraphics library which I installed for this project anywhere in my
project, other than it tells me which version is installed.
If I actually do find it and edit it, does it use the version I edited, or does it
download a fresh copy? If the developer actually extends/fixes their library
how do I get it and how to make sure I update all of my copies?
...
Not sure what era and experience you have. But my first computer I learned on
in school was an IBM 1620 with punch cards... And first computers I
worked on other than as a Lab assistant, was using computers by Datapoint
![]()
Sorry, I just realized you are talking about UNO Q. I have no experience with it yet; I am waiting for them to resolve more bugs. For the Arduino libraries, it's standard github rules, so locally editing without going through github could be counterproductiveβno idea re UNO Q. Good luck.
I am having a lot of local created libraries for sensors, Let alone the remarks mentioned earlier about multiple copies needed : using the Arduino App Lab on Ubuntu 24.02 I can not find anything close like β/home/arduino/ArduinoApps/copy-of-blink-led/sketch/MyLibβ. There is NO β/home/arduino/ArduinoApps/β folder while I have apps created. Where does it store Myapps or a copy of it ?
In Arduino Labs App I am not allowed edit the sketch.yaml either.
FOUND THE ANSWER:
It is stored on the unoQ itself in β/home/arduino/ArduinoApps/β. Now trying to see how to make that work.
I am not sure if this is "exactly" the same issue, but when I install libraries, it does not
install the libraries that the library I am installing depend on.
That is I tried an example sketch where I plugged in an Adafruit external LED matrix
into the WIre object pins.
This library requires the library Adafruit IS31FL3731 library. So found it in the
library list and installed it.
Tried compiling again, and now it could not find the Adafruit_GFX header file,
I knew it probably required the Adafruit GFX library, again found it in the list
installed it and then it could not find some other file.
#include <Adafruit_I2CDevice.h>
I guessed right and it needed the Adafruit_BusIO library which I installed and now
the sketch builds and runs on the Q.
Actually I did not completely guess as I previously built and ran it using the Arduino
IDE, and looked at the list of libraries that was included...
So wish list, is that when you click to install a library it had the option to also install
the libraries it depends on.
Another side to the usage of libraries. Suppose I buy some new display to plug into
the Q, and I would like to try it out.
On the Arduino IDE, I might search for a library for that display and install it. I then likely
would open up one or more examples from that library which helps help me understand
how the library works. How do you get to such examples?
Looks like they are copied down as part of the library into the .arduino15/internal/...
directory.
We found something interesting. You dont need to save the library in the sketch directory. You can actually specify the path to where you saved the library and add it to the yaml. In other words:
dir: /home/arduino/libraries/library-name
and it will still work. This way you can create a directory of all your local libraries and the just reference them in the yaml.
An example:
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/BMI270_AUX_BMM150
- elapsedMillis (1.0.6)
- LibPrintf (1.2.13)
default_profile: default
Looking promising!
A couple more things I am wondering about.
does it process the library properties file and for example optionally convert the
library into an archive?
Does order matter, that is, does it include these libraries in the order given?
So if .a file generated, you want near end of list?
Will look more tomorrow
How did you work out that this is the syntax that would work?
Is this anywhere in Arduino documentation?
So I believe you are saying you are just manually modifying the yaml file?
Yes. It works exactly the same as it does when using Arduino IDE. The reason is that both use Arduino CLI under the hood.
Order does not matter. It doesn't "include" the libraries. It only installs the libraries in the isolated dependencies environment in which the sketch is compiled. The sketch code determines which of the installed libraries are actually used, and in which order they are #included.
It is documented here:
https://arduino.github.io/arduino-cli/latest/sketch-project-file/
great. that saves a lot of time. It make live easier for to use your own code. Iβll give a try as well.
Yes, I hand edited mine.
Note: I don't believe that the App lab will allow you to edit your sketch yaml file
directly.
What I ended up doing, was to connect to it using WinSCP, navigated to that
directory and double clicked on the yaml file, which brought up a bare bones
editor on my PC. I added the lines
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/ST77XX_zephyr
- dir: /home/arduino/libraries/XPT2046_Touchscreen
default_profile: default
And hit save, which transferred the updated file back to the Q.
However it did not notice that the file had been changed. I switched to another
project and switched back and then it did and I was able to build
my quick and dirty Touch paint for the ST7796 sketch.
@ptillish (Another wish list item) Watching files for changes

