No matter what I choose when installing Arduino IDE I always have some files
on C:\Users\MyName\AppData\Local...
Even if I install on disk E: (where I also have parts of Arduino IDE installed as a result)
When I choose "Install for all users" I expect it to install to c:\Users\All Users, but it always installs in C:\Users\MyName
I am trying to install Arduino IDE to get rid of cyrillic letters in its path (because they cause problems) but I can't. Completely stuck.
sonofcy
November 16, 2024, 12:44am
2
I have never done that, but it seems to me it would need to install some part of the program for each user. I know non-latin characters has been a frequent issue, so searching this forum might yield a better fix.
Hi @vvb333007 .
The options in the Arduino IDE installer only control where the application is installed. Even though you have been quite vague about these "some files", I am confident that you are not actually talking about the Arduino IDE application, but rather about some folders where it stores its data and configuration files.
This is incorrect. When you choose "Anyone who uses this computer (all users) " in the Windows installer, the Arduino IDE application is installed at this location:
C:\Program Files\Arduino IDE
There is no problem at all if Arduino IDE is installed under a path that contains such characters (and anyway it won't even be if you installed it with the "Anyone who uses this computer (all users) " option). Likewise, there is no problem if its configuration files are installed under a path that contains such characters.
The problem is caused when Arduino libraries are under a path that contains such characters:
opened 07:00PM - 26 Dec 19 UTC
topic: code
type: imperfection
### Describe the problem
If a library is installed under a path that contains C… yrillic characters, Arduino CLI is unable to discover it.
Compilation of sketches with an `#include` directive for a header file of a valid library fails with a "`No such file or directory`" error.
### To reproduce
```text
$ arduino-cli version
arduino-cli.exe Version: git-snapshot Commit: 4b70e023 Date: 2023-01-31T03:19:27Z
$ export ARDUINO_DIRECTORIES_USER="/tmp/arduino-cli-directories/мікроконтролер"
$ arduino-cli lib install Arduino_JSON
[...]
$ mkdir /tmp/FooSketch
$ printf "#include <Arduino_JSON.h>\nvoid setup() {}\nvoid loop() {}" > /tmp/FooSketch/FooSketch.ino
$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch/FooSketch.ino
C:\Users\per\AppData\Local\Temp\FooSketch\FooSketch.ino:1:10: fatal error: Arduino_JSON.h: No such file or directory
#include <Arduino_JSON.h>
^~~~~~~~~~~~~~~~
compilation terminated.
Used library Version Path
Arduino_JSON 0.2.0 C:\Users\per\AppData\Local\Temp\arduino-cli-directories\мікроконтролер\libraries\Arduino_JSON
Used platform Version Path
arduino:avr 1.8.6 C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Error during build: exit status 1
```
### Expected behavior
Any path supported by the file system is also supported by the library discovery system
### Arduino CLI version
#### Original report
Arduino IDE 1.8.10
#### Last verified with
a527c7cdea0694da3034ba9995b7c9eaecfe074b
### Operating system
Windows
### Operating system version
- 10
- 11
### Additional context
The issue is not specific to Cyrillic. For example, it also occurs with a folder named `文` or `Κώστας`.
---
The fault only occurs on Windows. I am not able to reproduce it on Ubuntu 22.04 or macOS Ventura machines.
---
After changing system's locale from English to Bulgarian (win1251) + restart, the compilation succeeded. Unfortunately this is not viable solution, because we have many computers (>150) and changing system locale requires admin privileges.
My suggestion is that the IDE is not using the unicode version of the API when searching for libraries?
---
This is more likely to occur for those using [Microsoft **Onedrive**](https://en.wikipedia.org/wiki/OneDrive) because the default location of the sketchbook is:
```text
C:\Users\<username>\OneDrive\<localized "Documents">\Arduino
```
The `<localized "Documents">` in the path above is a placeholder the word "Documents" localized for the user's locale (e.g., `文档` or `Документы`)
#### Additional reports
- https://forum.arduino.cc/t/wemos-d1-mini-upload-problem/1084371
- https://forum.arduino.cc/t/no-such-file-or-directory-but-i-already-had-this-file/961118
- https://forum.arduino.cc/t/fatal-error-adafruit-neopixel-h-no-such-file-or-directory-but-i-have-it/1070069/15
- https://forum.arduino.cc/t/library-gives-error/1089633
- https://forum.arduino.cc/t/except-for-the-available-libraries-i-cant-use-other-libraries-even-though-i-have-downloaded-them/1092556
- https://forum.arduino.cc/t/compilation-error-due-to-library-hpp-file-not-being-detected/1127096
- https://forum.arduino.cc/t/which-arduino-nano-clone-i-have/1192347/11
- https://forum.arduino.cc/t/cannot-verify-the-arduino-code-because-the-installed-library-cannot-be-found/1215989
- https://forum.arduino.cc/t/10-fatal-error-onewire-h-no-such-file-or-directory/1223739
- https://forum.arduino.cc/t/unknown-error-for-arduino-1-8-19/1234260
- https://forum.arduino.cc/t/compilation-of-keypad-library-example-fails-key-h-no-such-file-or-directory/1241109
- https://forum.arduino.cc/t/mg135-library-please-answer/1254438
- https://forum.arduino.cc/t/i-keep-getting-library-compilation-error-despite-having-the-library/1255423
- https://forum.arduino.cc/t/no-such-file-or-directory/1255862/1
- https://forum.arduino.cc/t/no-such-file-or-directory/1255862/18
- https://forum.arduino.cc/t/arduino-ide-2-3-2-do-not-read-any-installed-library/1256849
- https://forum.arduino.cc/t/have-library-error-eventhough-installed/1258722
- https://forum.arduino.cc/t/arduino-ide-cannot-find-time-library-even-though-it-exists/1261462
- https://forum.arduino.cc/t/adafruit-bmp280-h-no-such-file-or-directory/1265651
- https://forum.arduino.cc/t/compilation-error-adafruit-mpu6050-h-no-such-file-or-directory/1279099
- https://forum.arduino.cc/t/pcm-h-no-such-file-or-directory/1282193
- https://forum.arduino.cc/t/no-such-file-directory-even-though-i-have-already-installed-the-related-library/1300806/1
- https://forum.arduino.cc/t/no-such-file-directory-even-though-i-have-already-installed-the-related-library/1300806/8
- https://forum.arduino.cc/t/no-such-library-error-please-help/1302038
- https://forum.arduino.cc/t/fatal-error-no-such-file-or-directory/1304273
- https://forum.arduino.cc/t/compilation-error-for-missing-header-file-even-though-i-have-the-library-installed/1312514
- https://forum.arduino.cc/t/liquidcrystal-i2c-compile-error/1313541
- https://forum.arduino.cc/t/arduino-ide-unable-to-recognize-installed-libraries-liquidcrystal-i2c-h-not-found/1318022
- https://forum.arduino.cc/t/arduino-ide-cannot-find-the-header-file-of-the-librarys/1321753
<a name="workaround"></a>
#### Workaround
##### Arduino CLI
1. Configure Arduino CLI to use a `directories.user` location that does not contain any non-ASCII characters in its path:
https://arduino.github.io/arduino-cli/latest/configuration/
1. Move the contents of the folder at the previous `directories.user` location to the new location.
##### Arduino IDE
1. Select **File > Preferences...** (or **Arduino IDE > Settings...** for macOS users) from the Arduino IDE menus.
The "**Preferences**" dialog will open.
1. Set the path in the "**Sketchbook location**" preference to a location that does not contain any non-ASCII characters in its path.
1. Click the "**OK**" button.
The "**Preferences**" dialog will close.
1. Move the contents of the folder at the previous path of the "**Sketchbook location**" preference to the new location.
### Issue checklist
- [X] I searched for previous reports in [the issue tracker](https://github.com/arduino/arduino-cli/issues?q=)
- [X] I verified the problem still occurs when using the [nightly build](https://arduino.github.io/arduino-cli/dev/installation/#nightly-builds)
- [X] My report contains all necessary details
opened 02:48AM - 20 Jul 24 UTC
closed 12:38PM - 16 Oct 24 UTC
conclusion: resolved
type: imperfection
topic: build-process
### Describe the problem
I am using Windows 10, and my user name is in Cyrill… ic letters.

Every library gets recompiled every time I press "Compile button" even if no files were changed. This happens because .d (dependencies) files contain wrong path. Example below shows the problem win RTCLib but you can use any library/code to reproduce
I checked .d files in a temp folder and this is what I found inside:
(must be `C:\Users\ֲВячеслав....`)
```text
C:\Users\ֲקוסכאג\AppData\Local\Temp\arduino\sketches\5E52C855D96EEA0FECA98993020C8EE1\libraries\RTClib\RTC_DS1307.cpp.o: \
c:\Users\ֲקוסכאג\Desktop\Arduino\libraries\RTClib\src\RTC_DS1307.cpp \
c:\Users\ֲקוסכאג\Desktop\Arduino\libraries\RTClib\src\RTClib.h \
c:\Users\ֲקוסכאג\Desktop\Arduino\libraries\Adafruit_BusIO/Adafruit_I2CDevice.h \
```
So no wonder that is "up-to-date" check fails leading to full recompiling. Some paths are Ok tho.
PS: All the `.o` and `.a` files do exist in temp folder but get recompiled every time
### To reproduce
#### Setup environment
```text
$ arduino-cli version
arduino-cli Version: git-snapshot Commit: c86ca3012 Date: 2024-07-31T11:02:30Z
$ mkdir -p "/tmp/Håkan/arduino-cli-directories/user" # Note that the path contains the "å" character.
$ export ARDUINO_DIRECTORIES_USER="/tmp/Håkan/arduino-cli-directories/user"
$ arduino-cli lib install Servo
Downloading Servo@1.2.2...
Servo@1.2.2 Servo@1.2.2 already downloaded
Installing Servo@1.2.2...
Installed Servo@1.2.2
$ arduino-cli core install arduino:avr
Platform arduino:avr@1.8.6 already installed
$ mkdir "/tmp/ServoSketch"
$ printf '#include <Servo.h>\nvoid setup() {}\nvoid loop() {}\n' > "/tmp/ServoSketch/ServoSketch.ino"
```
#### Demo
```text
$ arduino-cli compile --fqbn arduino:avr:uno --verbose "/tmp/ServoSketch/ServoSketch.ino" # It is expected that the Servo library will be compiled from source on this first compile command.
[...]
Compiling library "Servo"
"C:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\standard" "-IC:\\Users\\per\\AppData\\Local\\Temp\\Håkan\\arduino-cli-directories\\user\\libraries\\Servo\\src" "C:\\Users\\per\\AppData\\Local\\Temp\\Håkan\\arduino-cli-directories\\user\\libraries\\Servo\\src\\avr\\Servo.cpp" -o "C:\\Users\\per\\AppData\\Local\\Temp\\arduino\\sketches\\BFDE784884ED2EECC432F1D25AE2F6D2\\libraries\\Servo\\avr\\Servo.cpp.o"
$ arduino-cli compile --fqbn arduino:avr:uno --verbose "/tmp/ServoSketch/ServoSketch.ino" # It is expected that the Servo library objects cached during the previous compile will be used this time.
[...]
Compiling library "Servo"
"C:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\standard" "-IC:\\Users\\per\\AppData\\Local\\Temp\\Håkan\\arduino-cli-directories\\user\\libraries\\Servo\\src" "C:\\Users\\per\\AppData\\Local\\Temp\\Håkan\\arduino-cli-directories\\user\\libraries\\Servo\\src\\avr\\Servo.cpp" -o "C:\\Users\\per\\AppData\\Local\\Temp\\arduino\\sketches\\BFDE784884ED2EECC432F1D25AE2F6D2\\libraries\\Servo\\avr\\Servo.cpp.o"
[...]
```
🐛 The "Servo" library was compiled from source instead of using cached objects produced by the previous `compile` command.
Now we try again, but this time with a `directories.user` path that only contains ASCII characters:
```text
$ mkdir -p "/tmp/Hakan/arduino-cli-directories/user" # Note that the path contains only ASCII characters.
$ export ARDUINO_DIRECTORIES_USER="/tmp/Hakan/arduino-cli-directories/user"
$ arduino-cli lib install Servo
Downloading Servo@1.2.2...
Servo@1.2.2 Servo@1.2.2 already downloaded
Installing Servo@1.2.2...
Installed Servo@1.2.2
$ arduino-cli compile --fqbn arduino:avr:uno --verbose "/tmp/ServoSketch/ServoSketch.ino" # It is expected that the Servo library will be compiled from source on this first compile command.
[...]
Compiling library "Servo"
"C:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\standard" "-IC:\\Users\\per\\AppData\\Local\\Temp\\Hakan\\arduino-cli-directories\\user\\libraries\\Servo\\src" "C:\\Users\\per\\AppData\\Local\\Temp\\Hakan\\arduino-cli-directories\\user\\libraries\\Servo\\src\\avr\\Servo.cpp" -o "C:\\Users\\per\\AppData\\Local\\Temp\\arduino\\sketches\\BFDE784884ED2EECC432F1D25AE2F6D2\\libraries\\Servo\\avr\\Servo.cpp.o"
[...]
$ arduino-cli compile --fqbn arduino:avr:uno --verbose "/tmp/ServoSketch/ServoSketch.ino" # It is expected that the Servo library objects cached during the previous compile will be used this time.
[...]
Compiling library "Servo"
Using previously compiled file: C:\Users\per\AppData\Local\Temp\arduino\sketches\BFDE784884ED2EECC432F1D25AE2F6D2\libraries\Servo\nrf52\Servo.cpp.o
[...]
```
🙂 When `directories.user` was changed to a path that only contains ASCII characters, the library compilation caching system worked as expected.
### Expected behavior
Expected behaviour: not to recompile files which were not modified
### Arduino CLI version
c86ca3012
### Operating system
Windows
### Operating system version
- 10
- 11
### Additional context
Originally reported at https://forum.arduino.cc/t/ide-2-3-2-very-slow-compiling/1281480
#### Additional reports
- https://forum.arduino.cc/t/lgvldemo-recompiles-libraries-every-time/1286840
### Issue checklist
- [X] I searched for previous reports in [the issue tracker](https://github.com/arduino/arduino-ide/issues?q=)
- [X] I verified the problem still occurs when using the latest [nightly build](https://www.arduino.cc/en/software#nightly-builds)
- [X] My report contains all necessary details
Depending on the method of installation, Arduino IDE stores libraries under two different folders:
sketchbook folder
Arduino data folder
You can configure the paths of each of these. I'll provide instructions for doing that below:
Configuring the Sketchbook Folder Location
Select File > Preferences... from the Arduino IDE menus.
The "Preferences " dialog will open.
Set the "Sketchbook location " preference to the new path you want for your sketchbook.
Click the "OK " button.
The "Preferences " dialog will close.
Copy the files from the folder at the previous sketchbook path to the new location.
Configuring the Arduino Data Folder Location
Select File > Quit from the Arduino IDE menus if it is running.
All IDE windows will close.
Open the file at the following path in any text editor:C:\Users\<username>\.arduinoIDE\arduino-cli.yaml
(where <username>
is your Windows username)
In the content of the arduino-cli.yaml
file, you will see some lines like this:directories:
data: c:\Users\<username>\AppData\Local\Arduino15
Change the value of the directories.data
property to the path you want used as the Arduino data folder.
Save the file.
Move the files from the previous paths to the newly configured paths.
Start Arduino IDE.
1 Like
As was noted in Non-ASCII characters in library installation or cache path breaks library compilation caching · Issue #2671 · arduino/arduino-cli · GitHub , there is also a problem when the temporary build folder is under a path that contains non-ASCII characters. The reason is that Arduino IDE caches the compiled library to that folder, so that it can be reused on subsequent compilations to reduce their duration.
It is possible to configure the path of the temporary build folder by adding a build_cache.path
property to `arduino-cli.yaml. However, unfortunately currently this doesn't control where Arduino IDE caches compiled libraries:
opened 03:02AM - 17 Jul 24 UTC
closed 01:53PM - 18 Sep 24 UTC
conclusion: resolved
topic: code
type: imperfection
### Describe the problem
Per [the documentation](https://arduino.github.io/ardu… ino-cli/1.0/configuration/) the config key `build_cache.path` (or environment `$ARDUINO_BUILD_CACHE_PATH`, etc) should cause temp files to go in the designated directory instead of `$TMP/arduino` which is actually global on the system.
However, while setting that config does redirect the `cores/` directory, it does NOT redirect `sketches/`
### To reproduce
- find some sketch
- `rm -rf /tmp/arduino /tmp/test_dir` # clean up to avoid confusion
- `export ARDUINO_BUILD_CACHE_PATH=/tmp/test_dir`
- `arduino-cli compile` # with any flags needed for the sketch
- look in `/tmp/test_dir` and `/tmp/arduino`
### Expected behavior
- find temp files in `/tmp/test_dir`
- find nothing in `/tmp/arduino`
INSTEAD, I see something like this
```
% ls -l /tmp/test_dir
total 4
drwxr-xr-x 3 egnor egnor 4096 Jul 16 19:58 cores/
% ls -l /tmp/arduino
total 4
drwxr-xr-x 3 egnor egnor 4096 Jul 16 19:58 sketches/
```
So, `cores/` got moved but `sketches/` did not.
### Arduino CLI version
arduino-cli Version: 1.0.0 Commit: 05c9852a Date: 2024-06-12T14:13:32Z
### Operating system
Linux
### Operating system version
Ubuntu 24.04 LTS, kernel 6.8.0-36-generic
### Additional context
Code that might be relevant
https://github.com/arduino/arduino-cli/blob/b4f8849cae83199d05e14aa15a2fc050fd5aed1b/commands/service_compile.go#L434
https://github.com/arduino/arduino-cli/blob/b4f8849cae83199d05e14aa15a2fc050fd5aed1b/internal/arduino/sketch/sketch.go#L285
I think the latter one is probably the important one (the first one is just for purging, but it should be made consistent). Both should really be using the common build cache dir.
### Issue checklist
- [X] I searched for previous reports in [the issue tracker](https://github.com/arduino/arduino-cli/issues?q=)
- [X] I verified the problem still occurs when using the [nightly build](https://arduino.github.io/arduino-cli/dev/installation/#nightly-builds)
- [X] My report contains all necessary details
That has already been fixed , but the fix has not yet been pulled into Arduino IDE (not even the nightly build).
So currently there is no way to control the location where libraries are cached via the Arduino settings. The only way to do this would be to change the location of the operating system's temporary folder. I haven't tried it, but I believe that can be done by following the instructions provided here:
https://www.tenforums.com/general-support/194825-can-windows-temp-folder-location-changed.html#post2429800
I choosed to install on E:
Now I got:
E:/Program Files/Arduino IDE
C:/Users/Вячеслав/AppData/Local/Arduino15
I tried to get rid of "C:/Users/Вячеслав/AppData/Local/Arduino15" path at all cost but it seems impossible. So I either need to reinstall my Windows and choose latin1 user name or...
Is this possible to install Arduino IDE in just one folder which I choose?
Or in other words:
What should I do (except to reinstall Windows) in order to install Arduino IDE in a location different from c:\Users\Вячеслав? Choosing another drive or directory doesn't help: it just spread all arduino files over E: and C:.
Why not install it in a single directory? I though it is even simplier.
Also, removing Arduino IDE doesn't remove it fully: there are bunch of files (not libraries, but arduino files) which remain undeleted
Sad to know that all these problems arise from non-latin1 encoding. :(.
Currently I switched to experimental test build of arduino-cli which supports russian letters.
This sound promising. Lets try it. Will post results here
Because these files are not part of the Arduino IDE application distribution, but instead are installed on demand from the Internet. In many cases, operating system security or application packaging systems prevent the modification of an application installation.
1 Like
Whoa! It worked: i moved whole Arduino15 to another disk :). Now it doesn't recompile every file every time, thats awesome. Now i don't have to wait for 3 minutes every time I press /compile/.
There is a bit more, than just data folder:
board_manager:
additional_urls:
- https://espressif.github.io/arduino-esp32/package_esp32_index.json
build_cache:
compilations_before_purge: 10
ttl: 720h0m0s
daemon:
port: "50051"
directories:
builtin:
libraries: e:\Arduino15\libraries
data: e:\Arduino15
downloads: e:\Arduino15\staging
user: e:\Arduino
library:
enable_unsafe_install: false
locale: en
logging:
file: ""
format: text
level: info
metrics:
addr: :9090
enabled: true
output:
no_color: false
sketch:
always_export_binaries: false
updater:
enable_notification: true
I'm glad it is working now.
I intentionally only mentioned the relevant part of the file in my post.
If you want to learn about the rest, the documentation is here:
https://arduino.github.io/arduino-cli/latest/configuration/
system
Closed
May 15, 2025, 8:19am
10
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.