Writing and uploading sketches is easier once the IDE, USB permissions, and update path are sorted out before you connect a board. To install Arduino IDE on Debian, the first decision is whether you want Debian’s older distro-managed package or a newer Arduino IDE 2 path that follows upstream releases more closely.
On Debian, Arduino IDE handles sketch editing, board package management, compiling, and uploads to connected Arduino boards and compatible microcontrollers. Debian 13 and 12 currently ship Arduino 1.8.19 in the default package sources, Debian 11 ships 1.8.13, and both Flatpak and the official AppImage currently provide Arduino IDE 2.3.8.
Install Arduino IDE on Debian
| Method | Channel | Version | Updates | Best For |
|---|---|---|---|---|
| APT | Debian Packages | IDE 1.8.x | Through APT | Debian-managed installs and wider architecture support |
| Flatpak | Flathub | IDE 2.x | Through Flatpak | Most users who want Arduino IDE 2 with automatic updates |
| AppImage | Arduino Downloads | IDE 2.x | Manual | Portable x86_64 installs without Flatpak |
- Want the newest Arduino IDE 2 build with automatic updates: choose Flatpak.
- Want a Debian-managed package and the broadest architecture support: choose APT.
- Want a portable x86_64 copy in your home directory: choose AppImage.
The APT package is still the legacy IDE branch, so Debian’s default package sources are best when you value integration over new features. If you specifically want Arduino IDE 2 on Debian, Flatpak and the official AppImage are the current upstream-aligned paths.
Install Arduino IDE from Debian APT on Debian
The Debian package installs the legacy Arduino IDE together with the Java runtime and AVR toolchain packages it needs. This is the simplest path when you want a repository-managed install on Debian 13, 12, or 11.
Update Debian before installing Arduino IDE from APT
Refresh package metadata and install pending upgrades first so the Arduino package resolves against your current system state.
sudo apt update && sudo apt upgrade
If your account does not have sudo access yet, follow our guide to add a user to sudoers on Debian before you continue.
Install Arduino IDE from Debian APT on Debian
Install the Debian package with APT:
sudo apt install arduino
This package adds the legacy Arduino IDE, its Java runtime, AVR upload tools, and Debian’s arduino-add-groups helper.
Verify the Debian APT Arduino install
Use APT metadata to confirm the install. This is safer over SSH than trying to launch the GUI application from a headless shell.
apt-cache policy arduino
arduino:
Installed: 2:1.8.x+dfsg1-x
Candidate: 2:1.8.x+dfsg1-x
Version table:
*** 2:1.8.x+dfsg1-x 500
500 http://deb.debian.org/debian [release]/main amd64 Packages
Debian 13 and 12 currently resolve this package to 1.8.19, while Debian 11 still resolves it to 1.8.13 from the default package sources.
Install Arduino IDE 2 via Flatpak on Debian
Flatpak is the most practical Debian path when you want Arduino IDE 2 with automatic updates. The Flathub wrapper is community-maintained rather than published by Arduino, but it tracks the current IDE 2 release closely.
If Flatpak is not installed yet, first install Flatpak on Debian so the Flathub commands below have the required runtime and remote configuration.
Enable Flathub for Arduino IDE on Debian
Add the Flathub remote at system scope before installing the package. The --if-not-exists flag keeps Flatpak from erroring out if Flathub is already configured.
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Install Arduino IDE 2 with Flatpak on Debian
Install the IDE 2 package from Flathub:
sudo flatpak install flathub cc.arduino.IDE2 -y
Because the remote was added with sudo, keep using sudo for Flatpak update and remove commands so you stay on the same system scope.
Verify the Arduino IDE Flatpak install on Debian
Check the installed Flatpak app list for the Arduino IDE 2 application ID:
flatpak list | grep cc.arduino.IDE2
Arduino IDE v2 cc.arduino.IDE2 2.x.x stable system
The current Flathub build resolves to Arduino IDE 2.3.8.
Install Arduino IDE 2 via AppImage on Debian
The official AppImage is useful when you want a portable Arduino IDE 2 install without Flatpak. Updates stay manual, and Arduino currently publishes the Linux AppImage as a 64-bit x86_64 download, so Debian arm64 systems should use APT or Flatpak instead.
Install Arduino IDE AppImage dependencies on Debian
The AppImage needs wget for the automated download and a FUSE 2 library to mount the application bundle. Debian 13 renamed the library package to libfuse2t64, while Debian 12 and 11 still use libfuse2. If you do not use it often, our wget command examples guide explains the basics behind the download step.
On Debian 13:
sudo apt install wget libfuse2t64
On Debian 12 or Debian 11:
sudo apt install wget libfuse2
Download the latest Arduino IDE AppImage on Debian
Start by asking GitHub for the newest Linux AppImage URL. Keep the same terminal session open for the next block so the APPIMAGE_URL variable stays available.
mkdir -p "$HOME/Applications"
cd "$HOME/Applications"
APPIMAGE_URL="$(wget -qO- https://api.github.com/repos/arduino/arduino-ide/releases/latest | grep browser_download_url | grep 'Linux_64bit.AppImage"' | head -n 1 | cut -d '"' -f 4)"
printf '%s\n' "$APPIMAGE_URL"
https://github.com/arduino/arduino-ide/releases/download/2.3.8/arduino-ide_2.3.8_Linux_64bit.AppImage
Once the URL looks correct, download the file into a fixed local name and make it executable. Keeping the saved filename fixed makes later updates easier because the next download replaces the same local AppImage.
wget -O arduino-ide-latest.AppImage "$APPIMAGE_URL"
chmod +x arduino-ide-latest.AppImage
Verify the Arduino IDE AppImage download on Debian
Confirm that the file exists and has execute permissions:
ls -lh "$HOME/Applications/arduino-ide-latest.AppImage"
-rwxr-xr-x 1 username username 193M Mar 13 08:46 /home/username/Applications/arduino-ide-latest.AppImage
Launch the Arduino IDE AppImage on Debian
Start the AppImage from a graphical desktop session:
"$HOME/Applications/arduino-ide-latest.AppImage"
If you start the AppImage from an SSH-only shell, it can fail with display errors instead of opening the IDE. Use a local desktop session when you want to launch the GUI.
Grant Arduino board access on Debian
APT, Flatpak, and AppImage installs all rely on the same serial device permissions when you upload sketches to boards that appear as /dev/ttyACM* or /dev/ttyUSB*.
Add your user to the dialout group on Debian
Run one command that works across all three installation methods. The $USER variable expands to your current login name.
sudo usermod -aG dialout $USER
If you installed the Debian APT package, Debian also includes the arduino-add-groups helper. The manual command above is easier to document because it works for APT, Flatpak, and AppImage alike.
Verify dialout access on Debian
Sign out and back in, then confirm that dialout appears in your active group list.
id -nG
joshua sudo audio video dialout
If dialout is missing, the old login session is still active. Start a new desktop login before testing uploads again.
Launch Arduino IDE on Debian
Arduino IDE is a graphical application, so start it from a desktop session even if you used SSH for the install steps. Remote shells are still fine for package checks, but they are not a reliable place to launch the GUI.
Launch Arduino IDE from the Debian terminal
Use the launcher command that matches the method you installed.
For the Debian APT package:
arduino
For the Flathub package:
flatpak run cc.arduino.IDE2
For the official AppImage:
"$HOME/Applications/arduino-ide-latest.AppImage"
Open Arduino IDE from the Debian applications menu
APT and Flatpak installs add a launcher to the applications menu. The AppImage keeps working from your home directory unless you decide to create a separate desktop launcher for it later.
- Open the activities overview or application menu in your Debian desktop.
- Search for Arduino or Arduino IDE.
- Select the launcher that matches the package you installed.

If you keep sketches in version control, it also helps to install Git on Debian before you start larger board or library projects.
Update or remove Arduino IDE on Debian
Use method-specific maintenance commands so you only touch the build you installed.
Update Arduino IDE from Debian APT on Debian
APT upgrades only the Arduino package when a newer Debian build is available.
sudo apt install --only-upgrade arduino
Update Arduino IDE from Flatpak on Debian
Because the install used system scope, keep the update at system scope too.
sudo flatpak update cc.arduino.IDE2
Update the Arduino IDE AppImage on Debian
Use method 1 when you only want a quick manual refresh. Use method 2 when you want a reusable updater script you can run later without rebuilding the command each time.
Method 1: Refresh the Arduino IDE AppImage with direct commands on Debian
Resolve the latest AppImage URL first, then keep using the same terminal session for the download block so APPIMAGE_URL stays available.
cd "$HOME/Applications"
APPIMAGE_URL="$(wget -qO- https://api.github.com/repos/arduino/arduino-ide/releases/latest | grep browser_download_url | grep 'Linux_64bit.AppImage"' | head -n 1 | cut -d '"' -f 4)"
printf '%s\n' "$APPIMAGE_URL"
https://github.com/arduino/arduino-ide/releases/download/2.3.8/arduino-ide_2.3.8_Linux_64bit.AppImage
Once the URL looks correct, download the newest release into the same local filename and set a known executable mode.
wget -O arduino-ide-latest.AppImage "$APPIMAGE_URL"
chmod 755 arduino-ide-latest.AppImage
ls -lh arduino-ide-latest.AppImage
-rwxr-xr-x 1 username username 193M Mar 13 08:46 arduino-ide-latest.AppImage
Method 2: Update the Arduino IDE AppImage with a bash script on Debian
Create a small updater script if you want the refresh process wrapped into one reusable command you can call from any directory. This version installs the updater into /usr/local/bin, which is already in the standard Debian PATH, so you only need to remember one command name.
sudo tee /usr/local/bin/update-arduino-ide-appimage > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
app_dir="$HOME/Applications"
appimage_path="$app_dir/arduino-ide-latest.AppImage"
api_url="https://api.github.com/repos/arduino/arduino-ide/releases/latest"
mkdir -p "$app_dir"
appimage_url="$(wget -qO- "$api_url" | grep browser_download_url | grep 'Linux_64bit.AppImage"' | head -n 1 | cut -d '"' -f 4)"
if [[ -z "$appimage_url" ]]; then
echo "Could not find the latest Arduino IDE AppImage URL." >&2
exit 1
fi
printf 'Downloading %s\n' "$appimage_url"
wget -O "$appimage_path" "$appimage_url"
chmod 755 "$appimage_path"
ls -lh "$appimage_path"
EOF
sudo chmod 755 /usr/local/bin/update-arduino-ide-appimage
The tee command writes the script into the root-owned /usr/local/bin directory, which a normal > redirection would not be allowed to modify with sudo. The set -euo pipefail line makes the script stop on errors instead of silently continuing with a bad or empty download URL.
update-arduino-ide-appimage
Downloading https://github.com/arduino/arduino-ide/releases/download/2.3.8/arduino-ide_2.3.8_Linux_64bit.AppImage -rwxr-xr-x 1 username username 193M Mar 13 08:46 /home/username/Applications/arduino-ide-latest.AppImage
Remove Arduino IDE installed from Debian APT on Debian
Remove the Debian package first, then confirm APT shows it as no longer installed.
sudo apt remove arduino
APT can mark the AVR toolchain, Java runtime, and related helper packages as no longer required after you remove
arduino. Review the list before you runsudo apt autoremoveif you want a fuller cleanup.
sudo apt autoremove
apt-cache policy arduino
arduino:
Installed: (none)
Candidate: 1.8.x
Version table:
1.8.x 500
500 http://deb.debian.org/debian [release]/main amd64 Packages
The candidate stays available because Debian can still reinstall the package later. What matters here is the Installed: (none) line.
Deleting
~/.arduino15removes your board packages, cached indexes, and Arduino preferences. Keep that directory if you plan to reinstall and want to preserve your setup.
rm -rf ~/.arduino15
Remove Arduino IDE installed from Flatpak on Debian
Remove the system Flatpak package and then verify that Flatpak no longer sees it as installed.
sudo flatpak remove --delete-data -y cc.arduino.IDE2
sudo flatpak info cc.arduino.IDE2
error: cc.arduino.IDE2/*unspecified*/*unspecified* not installed
The system uninstall can still leave per-user data behind. Remove
~/.var/app/cc.arduino.IDE2only when you want a full cleanup of that Flatpak profile.
rm -rf ~/.var/app/cc.arduino.IDE2
Remove the Arduino IDE AppImage on Debian
Deleting the AppImage file removes the portable install from your home directory.
rm -f "$HOME/Applications/arduino-ide-latest.AppImage"
test ! -e "$HOME/Applications/arduino-ide-latest.AppImage" && echo "AppImage removed"
AppImage removed
Fix Arduino IDE issues on Debian
Most Debian-side Arduino IDE problems come down to serial-port permissions or trying to start the GUI from a shell that has no graphical session attached.
Fix missing serial ports for Arduino IDE on Debian
If your board is connected but no upload port appears, Debian usually still needs the dialout group change or a fresh login session. Run id -nG again, make sure dialout is present, then reconnect the board and reopen the IDE.
The Flathub wrapper documents the same dialout requirement for USB access, so this fix applies to Flatpak as well as APT and AppImage installs.
Fix headless and AppImage launch errors for Arduino IDE on Debian
If you see HeadlessException, Missing X server or $DISPLAY, or similar dbus-launch messages, the IDE is being started without a graphical session. Launch it from Debian’s desktop session instead of a plain SSH shell.
For AppImage-specific failures, also confirm you installed the correct FUSE package for your release: libfuse2t64 on Debian 13, or libfuse2 on Debian 12 and 11.
Arduino IDE on Debian FAQ
No official Debian .deb installer is published for this workflow. The official direct Linux download is the x86_64 AppImage from Arduino, while Debian’s own package sources provide the legacy arduino package and Flathub provides Arduino IDE 2.
Use the Flatpak build if you want Arduino IDE 2 with automatic updates. Use the Debian package if you want a distro-managed 1.8.x install, and use the AppImage if you want a portable x86_64 copy without Flatpak.
Most upload failures come from missing dialout group membership. Run sudo usermod -aG dialout $USER, sign out and back in, then reconnect the board so Debian applies the new serial-port permissions to your session.
Not always. sudo flatpak remove --delete-data -y cc.arduino.IDE2 removes the system installation, but a user data directory such as ~/.var/app/cc.arduino.IDE2 can still remain and may need manual removal if you want a full cleanup.
Conclusion
Arduino IDE on Debian is ready to use, whether you stayed with Debian’s 1.8.x package or moved to Arduino IDE 2 through Flatpak or the official AppImage. The next useful step is testing board access with a real device and, if you want cleaner project history, you can also install Git on Debian to track sketch changes over time.
Formatting tips for your comment
You can use basic HTML to format your comment. Useful tags currently allowed:
<code>command</code>command<strong>bold</strong><em>italic</em><blockquote>quote</blockquote>