IDE and Multiple PCs, Best Method For Development

I have 4 separate computers (1 MacBook Pro, 1 RPi 3B+, 3 RPi 4B) that I use the Arduino IDE on, depending on where I’m working. I set up an SMB share on the RPi 3B+ and then mapped the share to the other devices. My intention was to be able to go to any machine, plug in an Arduino (or NodeMCU, or ESP, etc) and do quick modifications to a sketch. This has proved problematic at best. The IDE runs slow for compiles, has problems finding libraries and board managers, and so on. When I try to change the “home” directory in Preferences that sometimes fails. When I compile I get other errors as well, more often than not. I assume this is because I’m using an IDE set up for Mac OS X and another set up for Linux. And if I install a board manager on one environment it’s obviously not installed on the others.

I’m tired of dealing with these issues.

So the question is...is there a stable way to get these multiple IDE to work together more effectively? I though the network share might work OK, but apparently no. My next though is to locate the Arduino sketch source library on a USB stick and take it with me as I move around, but that likely means I’ll spend time making sure each IDE is pointed to the USB stick, and that they all have the exact same board managers and installed all the time.

Has anyone found a usable way to accomplish this kind of set up?

Background, I live off grid on 40 acres. I have solar power systems on 4 separate out buildings, separated by 100s of yards/meters. They all share a common network (connected by wires or Ubiquiti LiteBeam dishes). Each site has a RPi set up and the main site also has the MacBook. All sites also have multiple Arduinos installed (or other microcontrollers), and when I apply updates and enhancements it’s a PITA to haul the MacBook around to each site. I very much want to sit in my nice warm cabin and do development, and then just walk to the target out building and do the compile/uploads as needed. And if I find a code issue at a particular site and need to do additional code tweaks I don’t want to have to take that code and install it on multiple IDEs for deploying at the other outbuildings. If I can find a better solution it would be nice.

http://arduino.esp8266.com/Arduino/versions/2.0.0/doc/ota_updates/ota_updates.html#:~:text=OTA%20(Over%20the%20Air)%20update%20is%20the%20process,to%20the%20module.%20OTA%20may%20be%20done%20using%3A

OTA (Over the Air) update is the process of loading the firmware to ESP module using Wi-Fi connection rather that a serial port.

I don't know what your network has as bandwidth-capacity. How about using a software like TeamViewer or AnyDesk or VNC to remotely control the computer outside?

Another idea might be some kind of a backup-software that keeps particular directories in sync.
On windows I use puresync. What I have tested is configuring puresync to make an automated backup as soon as an externel drive USB-stick or USB-Harddisk gets plugged-in to start a copy of preconfigured directories automatically.

I don't know if it is possible do do synchronisation with network-drives but I guess this should be possible.

ESPs offer OTA (over the air update)

How about a small laptop which you carry with you that is used all the time for all the programming.

I guess you have to invest time with any solution and it is just about where to invest the time:

  • investing time into automating updating all computers that shall be used and check if they are all updated the right way
  • investing time into walk over and bring a certain mcu to your "headquarter" and then back
  • investing time to grab your macBook and walk over with the outside-place

I don't know if there are differencies between the Linux / Mac / Windows-Versions of the portable version of the IDE.
If not using a portable version might be a solution too.

Sadly, not all of the Arduinos I use are WiFi or Ethernet enabled, so OTA or remote isn't likely going to be a solution.

I already VNC to the RPis from my MacBook but that still means the source code, board managers, and libraries have to be installed locally (in the default users directory) on each RPi. That's because I can't seem to get each RPi to work stably using the network SMB share directory, where I'd like all the "source code" to exist.

If the IDE worked stably using the network share then as long as I had all the same board managers and libraries installed (and maintained) on each RPi things would work ok. The problem is, the IDE(s) doesn't.

For example...on a particular RPi I've gone to Preferences:Sketchbook location and set it to the shared network directory. This then means it takes a minute or more to simply boot the IDE. In addition, and this is probably the main issue, on Macs the application "Arduino.app" is really a package, not just a program. When you install "extra" things like board managers or other "special" packages it appears that they get installed inside the Arduino.app package directory, and not in the usual Arduino/libraries directory (like the Linux or Windoze versions do).

So, it appears to me, that because I'm using a Mac and Linux versions of the IDE this is always going to be an issue. And, even trying to use an SMB share for the sketch code has issues because it's 1) incredibly slow, and 2) added libraries and board managers aren't always installed on the SMB share. That creates all kinds of compile problems (can't find library, problem with board manager, etc). Sadly, it appears that I can't get to the simple solution I was hoping for.

It looks like the best I can do is whenever I install a new board manager or library I will have to go to (or remote to) each RPi, and the Mac, and make sure it's also installed locally. In addition, every time a library or board manager needs updating I'll have to do the same. I can then use the shared directory as a transfer location to put current copies of each sketch (and included accociated files). But if I'm at a particular RPi or Mac I'll need to move the latest source from the share dir to the local sketch dir, do my thing, and then copy back to the share dir. Seems like I could set up a source code repository manager (maybe GIT or CVS) and use a check in check out process for the sketches. But that is a bigger hassle than using a USB stick or the SMB share. Ugh...

Why not just bring the MacBook around with you?

...R

I can, it’s just a PITA hauling it around icon snow and rain. And it seemed like a fairly simple solution to set up a network share and run the IDE that way. Oh well...

I live out on an island. I also have a bunch of Macs spread about. One can only get online via a very iffy cellphone tether. Simple solution; github. I put my Arduino folder as a repository and Vola! Low bandwidth sharing of all my source code. And, source control to boot! Whenever I need to move to a different host, I check in my files. When I get there, I do a refresh and I'm at exactly where I left off. And, as I said before, the bandwidth is tiny.

-jim lee

I'm using a PC with Win7 at home for Arduino development. The files are stored locally. I have installed Cygwin on the PC where I have a bash script that use rsync to a linux server (main purpose is backup). Both the main folder for my code and my libraries are sync'ed to the linux server.

I also have a Win7 laptop, which I use when at my cabin. If I want to bring with me the I copy the code and library folders to the laptop. When I come home I do a rsync from the laptop to the linux server so that the linux server get the updates.

Then I can do a "reverse" rsync on the PC to get the updates from the linux server back to the stationary PC (another bash script in Cygwin).

I’m checking out the GIT option. Thx for the suggestion…using it I can also share some of my project code with my brother, who has expressed an interest in learning some of this stuff…