I’m using the Seeeduino Xiao for a work project alongside a Raspberry Pi Zero 2 W running Raspberry Pi OS - Debian GNU/Linux 11 (bullseye). Most things generally work quite well, except the process of loading the Arduino code onto the Xiao.
Context:
Until I got my hands on the Xiao, I’d been using an Arduino MKR WiFi 1010, also hooked up to the Pi. I’ve installed Arduino CLI (Command Line Interface) on the Pi, and I was using SSH and SFTP to transfer sketches from my PC to the Pi, compile the sketches on the Pi, and then upload them directly without having to unplug things. This had been working very well, so I hoped to continue the same process with the Xiao.
However, when I try to install the Seeed SAMD boards into the Arduino CLI (to allow for the compilation and uploading of sketches), I get the following error:
Error during install: Error downloading tool Seeeduino:[email protected]: no versions available for the current OS
Now, I’m no expert with Linux OS’s, but I’ve seen that people are able to upload sketches onto the Xiao from other Linux distros such as Ubuntu. Does this mean that the Xiao is not able to be programmed with the Raspberry Pi running Raspberry Pi OS? Is there any way Seeed could update this/make the package available?
I keep having to unplug the Xiao from my setup and then into my PC in order to upload sketches from the PC version of the Arduino IDE… which in itself is problematic as I get what seems to be a well known issue where the Xiao is seen on the IDE as an Arduino device, but trying to upload anything results in the Xiao not being detected until I short the reset pins twice. Back on topic - the Xiao and Pi will be put into an enclosure as the project progresses, so I would very much prefer to be able to program the two remotely (almost like OTA updates), rather than have to open it up every time.
I’m using the lite version of Raspberry Pi OS, unfortunately in order to free up as many resources as possible for the other stuff… If I’m not mistaken, I won’t be able to use GUI apps such as the IDE itself on that?
Also, VNC is not an option as this is a work project, as I’m limited to the resources and connections within my company’s regulations. The most I can do is SSH (hence the need for a standard command line interface).
Either way: based on the error I’m getting, it’s not a factor of the IDE or the CLI. It seems that the Seeed M0 boards are simply not available for download for my OS. Will installing the IDE make that much of a difference?
Is there any other way I can deploy the code to the Xiao from the Pi? I know I can compile the binary and save it on my PC, so could I deploy that compiled code from my Raspberry Pi without needing to install the Xiao board info?
I ran into this as well… this is a 32-bit vs. 64-bit problem.
You’ll need to use the 32-bit version of the Linux distribution in order to download the Seeeduino:bossac tool. I wish someone would compile and distribute this for 64-bits, as I would prefer to use that OS instead. I found it quite unpleasant to reinstall the OS just because this wasn’t compiled for 64-bits.
Once you get past that, though, you may run into serial communication issues with XIAO. I’ve tried to reliably program these chips using arduino-cli, but my experience has been sheer misery.
I suspect, if you want to use the XIAO industrially, you’ll need to use the SWD method, where you use another board with an SWD programmer on it, and tell that to program your XIAO chip over the two SWD wires (the left-most dots of the four dots located under the XIAO, where the four dots are oriented towards the left of the chip… top dot will be your SWDIO, bottom is the SWDCLK). I’m still trying to work out how to do this, but I suspect it’s the most reliable method since it bypasses bootloaders.
Correct, using SWD is the most bullet-proof method. As @jvanriper mentioned, the SWD pads are at the bottom of the board:
For XIAO M0, it is possible to do it even without soldering.
You can grab any ESP32 or ESP32C3 device and flash vcon firmware on it, following VCON::Docs . Flash and configure the Host for SAMD21. You could just take two wires and hold them onto those SWDIO/SWDCLK pads, and initiate reflash via the vcon dashboard.