Arduino IDE 2.x (for ARM64)
What is the name of the app?
Arduino IDE 2.x
Where is the app hosted?
https://github.com/arduino/arduino-ide
About the app
The newer and redefined Arduino IDE which allows you to code for embedded platforms (like the older 1.8.x based IDE, such as for Arduino Uno), supports many extensions just like the 1.8.x based one.
Upload file or Add PR Link
Confirmations
- [X] I have confirmed that this app is legal and not piracy.
- [X] I have confirmed that this app has never been discussed in https://github.com/Botspot/pi-apps/issues and https://github.com/Botspot/pi-apps/pulls, and it is not in the Pi-Apps app list.
- [X] I have read and followed the creating an app for Pi-Apps documentation.
- [X] I have confirmed that this app can run on all Pi-Apps supported systems.
A zipfile was found in the body of your issue. The sha1sum of the zip was: e4d00af8478068b29d99dd638c5338c8829092c7
Click to show contents preview
uninstall
#!/bin/bash
#Allow packages required by this app to be uninstalled
purge_packages || exit 1
description
The newer and refreshed Arduino IDE
based on the Electron and Javascript/Typescript Frameworks.
Use this to flash your code to Arduino microprocessors.
To run: Menu -> Programming -> Arduino IDE.
To run in a terminal: arduino-ide
install-64
#!/bin/bash
version=2.3.3
install_packages "https://ximitekcloud.com/downloads/arduino-ide_${version%-*}_arm64.deb" || exit 1
website
https://www.arduino.cc/en/main/software
Hello there 👋 Thanks for submitting your first issue to the Pi-Apps project! We'll try to get back to you as soon as possible. In the meantime, we encourage you join our Discord server, where you can ask any questions you might have.
Please respond as soon as possible if a Pi-Apps maintainer requests more information from you. Stale issues will be closed after a lengthy period of time with no response.
Who owns this domain? https://ximitekcloud.com/downloads Also this seems to be an unofficial build, so can we be sure that it will continue to receive updates in the future?
Who owns this domain? https://ximitekcloud.com/downloads Also this seems to be an unofficial build, so can we be sure that it will continue to receive updates in the future?
I own it, as its a unofficial build i will also make updates for it as its kinda odd for Arduino to make a ARM64 version for Mac while ignoring Linux.
I own it, as its a unofficial build i will also make updates for it as its kinda odd for Arduino to make a ARM64 version for Mac while ignoring Linux.
OK, so why not then host the build scripts and release assets on a github repo?
I own it, as its a unofficial build i will also make updates for it as its kinda odd for Arduino to make a ARM64 version for Mac while ignoring Linux.
OK, so why not then host the build scripts and release assets on a github repo?
I couldn't host the release assets on GitHub as when i tried a git pushing the repo with the main release assets, it just refused to do it (i was doing it on a private repo, will try on a public one and will reply to see if it does something)
I couldn't host the release assets on GitHub as when i tried a git pushing the repo with the main release assets, it just refused to do it (i was doing it on a private repo, will try on a public one and will reply to see if it does something)
If builds will only be periodic, consider the option to simply upload them manually.
I couldn't host the release assets on GitHub as when i tried a git pushing the repo with the main release assets, it just refused to do it (i was doing it on a private repo, will try on a public one and will reply to see if it does something)
If builds will only be periodic, consider the option to simply upload them manually.
As my Pi 5 (the Pi i used for compiling the IDE) isn't used heavy duty by another project, i could do like minor release versions when they come out (for example 2.3.3 > 2.3.4)
Who owns this domain? https://ximitekcloud.com/downloads
I own it
What are the chances of it going down? Is it self hosted?
Who owns this domain? https://ximitekcloud.com/downloads
I own it
What are the chances of it going down? Is it self hosted?
It is just a Linux based web server hosted on Linode with Caddy installed as the web server.
I own it, as its a unofficial build i will also make updates for it as its kinda odd for Arduino to make a ARM64 version for Mac while ignoring Linux.
OK, so why not then host the build scripts and release assets on a github repo?
And still nope, i cannot host the release assets on GitHub even when the repo is public.
I am going to close this. Not interested in another porting project and still waiting on Arduino to show that they care to maintain their IDE project. There has not been a commit since February and they are running an old version of electron with security issues.
This has already been requested of upstream by many many users. It is trivial for them to implement. Please add your request to the others there. If you are able to help make any modifications to their build CI to build arm64 linux releases then by all means help them out with a PR.
I am going to close this. Not interested in another porting project and still waiting on Arduino to show that they care to maintain their IDE project. There has not been a commit since February and they are running an old version of electron with security issues.
This has already been requested of upstream by many many users. It is trivial for them to implement. Please add your request to the others there. If you are able to help make any modifications to their build CI to build arm64 linux releases then by all means help them out with a PR.
I just recently moved the package to a GitHub repo and provided some instructions to build it so no more need for a external web server anymore. Also as @theofficialgman does not like the current state of the Arduino IDE 2.x (due to using a outdated Electron 27 build) then i do not think it will be ever published until Arduino updates Electron to the latest version and to contribute to the issues (as well as also responding to backlash on why they didn't ship a Linux ARM64 version of their IDE officially).
This should be revisited, now with more regular updates and their current dependence on "node": ">=18.17.0 <21"
The build from @matu6968 seems to be offline. Try again hosting release assets on github, or provide a script to convert the linux release to arm64.
@theofficialgman does not like the current state of the Arduino IDE 2.x (due to using a outdated Electron 27 build) then i do not think it will be ever published until Arduino updates Electron to the latest version and to contribute to the issues (as well as also responding to backlash on why they didn't ship a Linux ARM64 version of their IDE officially).
This issue still exists... There are so many critical bugs that have been resolved since 27 in August 2023, not to mention all the security vulnerabilities that come with such an out of date and unmaintained version of chromium. I simply will not accept new applications that use electron and don't do the basic maintenance to keep up to date with one of the stable electron releases (major version releases are supported for 8 months, they don't even need update frequently).
In any case, our current stance on such porting projects is for them to not exist when an effort could be contributed upstream. This seems like a prime candidate and would resolve an issue for many many users who have requested such a feature https://github.com/arduino/arduino-ide/issues/107 . Consider using your time to create CI for upstream to build for arm64/armhf linux.
The build from @matu6968 seems to be offline.
Regarding about the hosting before it got migrated my github repo, the server for that is long gone.
Try again hosting release assets on github, or provide a script to convert the linux release to arm64.
Since Arduino released their official 2.3.3 version of their 2.x based IDE, i will possibly today make a CI and/or a bash script to automate the build process and not to worry about updates if I made a CI (as long as Arduino themselves don't make breaking changes to their code especially with changing Electron versions to a newer version)
The build from @matu6968 seems to be offline. Try again hosting release assets on github, or provide a script to convert the linux release to arm64.
The script is ready it essentially builds the ide from source and has disclaimers for building for other arches and everything is there, except for checking if golang is installed (i will add the golang installed check later and put it on my repo)
build-ide.txt (rename build-ide.txt to build-ide.sh and enable execution permissions to make it work)
Did you ever encounter this error @matu6968?
pi@raspberrypi:~/arduino-ide $ /home/pi/Downloads/build-ide.sh build-package
64 bit ARM Architecture detected
v22.11.0
Now using node v20.18.0 (npm v10.8.2)
building package
installing node dependencies
yarn install v1.22.22
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
warning [email protected]: The engine "vscode" appears to be invalid.
[4/5] Linking dependencies...
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @theia/[email protected]" has unmet peer dependency "electron@^23.2.4".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @tippyjs/[email protected]" has unmet peer dependency "react@>=16.8".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @tippyjs/[email protected]" has unmet peer dependency "react-dom@>=16.8".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@>=16".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "@types/react@>=16".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@>=16".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@>=16.3.3".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react-dom@>=16.3.3".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@^16.8.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@^16.3.0 || ^17.0.0-0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > [email protected]" has unmet peer dependency "react-dom@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @theia/scm > [email protected]" has unmet peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @theia/scm > [email protected]" has unmet peer dependency "react-dom@^0.14.0 || ^15.0.0 || ^16.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > react-select > @emotion/[email protected]" has unmet peer dependency "react@>=16.8.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > react-select > [email protected]" has unmet peer dependency "react@>=16.6.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > react-select > [email protected]" has unmet peer dependency "react-dom@>=16.6.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > react-select > [email protected]" has unmet peer dependency "react@^16.8.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > @theia/debug > @theia/process > [email protected]" has incorrect peer dependency "node-gyp@^8.3.0".
warning "workspace-aggregator-92977e9f-fac2-4112-9b6a-a209b636165a > arduino-ide-extension > react-select > @emotion/react > @emotion/[email protected]" has unmet peer dependency "react@>=16.8.0".
[5/5] Building fresh packages...
$ lerna run prepare
lerna notice cli v7.4.2
lerna info versioning independent
> Lerna (powered by Nx) Running target prepare for 2 projects:
- arduino-ide-extension
- electron-app
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
> arduino-ide-extension:prepare
arduino-ide-extension: yarn run v1.22.22
arduino-ide-extension: $ yarn download-cli && yarn download-fwuploader && yarn download-ls && yarn copy-i18n && yarn download-examples
$ node ./scripts/download-cli.js
arduino-ide-extension: 📦 Identified released version of the CLI. Downloading version 1.0.4 from 'https://downloads.arduino.cc/arduino-cli/arduino-cli_1.0.4_Linux_ARM64.tar.gz'
arduino-ide-extension: >>> Downloading from 'https://downloads.arduino.cc/arduino-cli/arduino-cli_1.0.4_Linux_ARM64.tar.gz'...
arduino-ide-extension: <<< Download succeeded.
arduino-ide-extension: >>> Decompressing...
arduino-ide-extension: <<< Decompressing succeeded.
arduino-ide-extension: Done: /home/pi/arduino-ide/arduino-ide-extension/src/node/resources/arduino-cli
arduino-ide-extension: $ node ./scripts/download-fwuploader.js
arduino-ide-extension: 📦 Identified released version of the Firmware Uploader. Downloading version 2.4.1 from 'https://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_ARM64.tar.gz'
arduino-ide-extension: >>> Downloading from 'https://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_ARM64.tar.gz'...
arduino-ide-extension: <<< Download succeeded.
arduino-ide-extension: >>> Decompressing...
arduino-ide-extension: <<< Decompressing succeeded.
arduino-ide-extension: Done: /home/pi/arduino-ide/arduino-ide-extension/src/node/resources/arduino-fwuploader
arduino-ide-extension: $ node ./scripts/download-ls.js
arduino-ide-extension: Building language-server from https://github.com/arduino/arduino-language-server.git. Commitish: 05ec308
arduino-ide-extension: >>> Cloning language-server source to /tmp/d-20241014-972600-2ai2tu.h1aev...
arduino-ide-extension: Cloning into '/tmp/d-20241014-972600-2ai2tu.h1aev'...
arduino-ide-extension: <<< Cloned language-server repo.
arduino-ide-extension: >>> Checking out 05ec308...
arduino-ide-extension: Note: switching to '05ec308'.
arduino-ide-extension: You are in 'detached HEAD' state. You can look around, make experimental
arduino-ide-extension: changes and commit them, and you can discard any commits you make in this
arduino-ide-extension: state without impacting any branches by switching back to a branch.
arduino-ide-extension: If you want to create a new branch to retain commits you create, you may
arduino-ide-extension: do so (now or later) by using -c with the switch command. Example:
arduino-ide-extension: git switch -c <new-branch-name>
arduino-ide-extension: Or undo this operation with:
arduino-ide-extension: git switch -
arduino-ide-extension: Turn off this advice by setting config variable advice.detachedHead to false
arduino-ide-extension: HEAD is now at 05ec308 Merge pull request #191 from arduino/update_grpc
arduino-ide-extension: <<< Checked out 05ec308.
arduino-ide-extension: 05ec308
arduino-ide-extension: >>> Building the language-server...
arduino-ide-extension: Failed to execute go with args: ["build"]
arduino-ide-extension: Error: spawnSync go ENOENT
arduino-ide-extension: error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
arduino-ide-extension: error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
> Lerna (powered by Nx) Running target prepare for 2 projects failed
Tasks not run because their dependencies failed or --nx-bail=true:
- electron-app:prepare
Failed tasks:
- arduino-ide-extension:prepare
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
!!! An error happened during script execution
!!! Please check console output for bad sync,
!!! failed patch application, OOM killer messages, etc.
Found a solution here: https://github.com/arduino/arduino-ide/issues/2499#issuecomment-2316715572
Fixed and working script for arm64 debian/ubuntu only build-ide.txt There was a large number of issues with the script I started from.
@matu6968 Would you be willing to try adding the arm64 arch to Arduino's official CI build? I think the only file with needed changes is this one: https://github.com/arduino/arduino-ide/blob/main/.github/workflows/build.yml#L389 The changes needed may look similar to this PR for a similar project: https://github.com/Eugeny/tabby/pull/5907/files
@matu6968 Would you be willing to try adding the arm64 arch to Arduino's official CI build? I think the only file with needed changes is this one: https://github.com/arduino/arduino-ide/blob/main/.github/workflows/build.yml#L389
The changes needed may look similar to this PR for a similar project: https://github.com/Eugeny/tabby/pull/5907/files
These changes seem to add checking environment variables for getting armhf and arm64 support, however I believe this should not be needed because you can specify electron-builder configs in package.json inside of the electron-app folder to add other arches like armhf without needing to modify the workflow.
@matu6968, clearly you understand electron more than I do. Are you willing to open a pull request to arduino-ide to get arm build artifacts released alongside their x86 appimage and zip? If so, I will wait for you. If not, then I will see about doing something hacky here that theofficialgman would probably not be too fond of... ;)
@matu6968, clearly you understand electron more than I do. Are you willing to open a pull request to arduino-ide to get arm build artifacts released alongside their x86 appimage and zip? If so, I will wait for you. If not, then I will see about doing something hacky here that theofficialgman would probably not be too fond of... ;)
I will see how it turns out and make a pull request if cross compiling works, also imma see if I can update Electron 27 dependency to the latest version (which is version 27.3.11) without breaking changes.
@matu6968, clearly you understand electron more than I do. Are you willing to open a pull request to arduino-ide to get arm build artifacts released alongside their x86 appimage and zip? If so, I will wait for you. If not, then I will see about doing something hacky here that theofficialgman would probably not be too fond of... ;)
I will see how it turns out and make a pull request if cross compiling works, also imma see if I can update Electron 27 dependency to the latest version (which is version 27.3.11) without breaking changes.
I would suggest one change at a time. Try only doing a PR for arm builds, then if they merge that, try another PR for newer electron. If you try both at once, they might close it and then not want to see you again when you ask for only one of the two changes.
Did you ever encounter this error @matu6968? ...
This is cause the script didn't check if go was installed and hence the error because go wasn't installed to build the language-server.
Yeah I know, I fixed it in the script I sent back to you here. Please check it. It is simplified and only for debian arm64, but it fixed several issues you had in your script with how arduino-ide was being compiled and packaged. I think if you run your original script on the master branch of arduino-ide, you will see that much of it fails. I had to redo major parts of it based on their buildscripts.
@matu6968 Would you be willing to try adding the arm64 arch to Arduino's official CI build? I think the only file with needed changes is this one: https://github.com/arduino/arduino-ide/blob/main/.github/workflows/build.yml#L389 The changes needed may look similar to this PR for a similar project: https://github.com/Eugeny/tabby/pull/5907/files
To extend that, when building native libraries with yarn are involved you also need to manually specify and install the cross compilers when building on x86_64 for armhf/arm64 (eg: https://github.com/shiftkey/desktop/pull/897/files which was later refactored into a dockerfile for some other reasons https://github.com/shiftkey/desktop-ubuntu-arm64-packaging/blob/shiftkey-patch-1/Dockerfile)
Due to GitHub Actions limits and for the time being ARM64 runners being unavailable to the public until next year aswell as the limited amount of time i can work on this, i gave up implementing building for ARM64 into the action file. So for now build scripts will have to stay.
To extend that, when building native libraries with yarn are involved you also need to manually specify and install the cross compilers when building on x86_64 for armhf/arm64 (eg: https://github.com/shiftkey/desktop/pull/897/files which was later refactored into a dockerfile for some other reasons https://github.com/shiftkey/desktop-ubuntu-arm64-packaging/blob/shiftkey-patch-1/Dockerfile)
I am trying to get the IDE to work on armhf but ran into a wall of problems.
Here is what I tried:
- Cross compiling using arm64 system but with 32 bit cross compiler and some 32 bit native libraries: (note arduino-ide-extension and other arduino things are not cross compiled for armhf) After running
yarn --cwd electron-app rebuild, compiling errors out: https://pastebin.com/g67zgMfM - Using armhf system with all the 32 bit libraries and patched out download-ls.js file to allow downloading of 32 bit clang binaries: Running
yarn --cwd electron-app rebuildworks fine but after runningyarn --cwd electron-app buildErrors out with 2 possible outcomes: 1. a stack trace and a error with the lines: Allocation failed - JavaScript heap out of memory or 2. SIGABRT or SIGSEGV exit code with the error line for SIGSEGV:terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc(meant out of memory, but 32 bit OS has a hard memory limit of around 4 GB but adding in my enviroment variables NODE_OPTIONS= --max_old_space_size=4000 did not help nor decreasing running processes in parallel using webpack config flag:parallelism)