My Laundry list ;)

Sorry in advance, many of these things are probably covered elsewhere, but
after playing with the Q now using App lab for a few days, I thought I would record
some of my first impressions, things that drive me nuts and things that I hope will be addressed over time (many hopefully soon).

Note order of items is arbitrary.

General
General question to self: Wondering why such a completely different IDE? Yes I know it needs to handle both Arduino as well as the other processor, but on RPI4/5 was running
Arduino IDE 2.x on it a while ago.

Also wondering if possible to do new Apps, directly on the PC and not on the Q, in the
same way you can do that now with the Q as an Arduino Sketch? That is if I running on a high power processor with tons of memory and many cores, I should be able to logically hit RUN and have it happen faster than on the slowest machine out there.

Note: I am running on Windows 11

Actual List

  1. where is the cursor? At times almost imposible to see it.

  2. trying to select lines, gets confusing as does not show all of the first line selected and looks like part of line after is selected.
    image

  3. Selected text is almost impossible to read:

  4. Some common IDE 2 operations are not implemented
    a) ctrl-t - reformat the text
    b) ctrl-m - find the matching brace
    c) ctrl-l - goto a line
    d) ctrl-f - find ... yes that is there, but how do I dismiss it. without using mouse
    e) Can I do a multiple line partial select (Middle button click on windows), where I
    can then type something and it goes to each of those lines.

(probably many more)

  1. I would like to have the ability to see the compiler errors at the same time I am looking at the source file. Likewise Serial output, and maybe Python output

5a) Ability to turn on that I want to see all error messages, also verbose output.
So maybe I can figure out where the library files were installed.

5b) How do I edit a library?

5c) highlighted errors and ability to double click to navigate to it.

  1. option to see what column the cursor is on... (so if editing for Zephyr, make
    sure I am not at column > 100.

  2. Easier ability to copy and paste between two sketches/projects. I was having to
    change to a different project, select some text change back to current one, and
    paste...

  3. Ability to clear the Serial and Python Console windows.

  4. configure things like, tabs vs spaces, indent size...

Probably a lot more things, but probably enough for first post

1 Like

Have you posted your suggestions in github? BTW, many of those are how the Arduino IDE works.

Do you have to use the Arduino IDE or is there VS Code plugin?

Thanks @sonofcy and @cedarlakeinstruments,
Note: Most all of the things I mentioned in the first post, are things that yes you can do with IDE 2.x that are not implemented in the "App Lab", which is the only IDE that is I believe currently fully supports the Arduino UNO Q.

For programming the STM32xxx processor on the board you can program it directly using the Arduino IDE and program it either over USB or WiFi, which is nice. You can also connect up and use the "App lab" and program it again either using USB or WiFi.

You can also use a USB powered hub connected up to the Q, and plug in Monitor, Keyboard, mouse, and run the "App Lab" directly on the Q. The Applab running on
the PC almost acts like it is running it on the Q and seeing it through a VNC.
That is when you click the run button, the sketch is compiled on the Q at Q speed,
and then it starts up the Python interface on the q...

There are a lot of things to like about it, But what I am mentioning are a few of the things I miss or find frustrating.

Not yet, I have lots of other Issues/PRs up on ArduinoCore-zephyr and zephyr, etc. However sometimes I find that some issues get more traction on the forum than they do on github.

I mostly use the IDE for a lot of the zephyr stuff (UNO Q is implemented with Zephyr).
A lot of the Zephyr specific stuff, like updating Camera support, I do most of the
zephyr work using their build system. However I have not done any specific stuff for the Q directly on Zephyr as last time I checked there was no upload program... Although you can start up a debugger with it.

However AFAIK the only way to setup a complete UNO Q app that uses both the Linux processor (Python) as well as the Microcontroller is by using this IDE, which is why
I have been playing with it.

Hi @KurtE. Thanks for your feedback!

I'm not sure I understand what you mean by "do new Apps".

Compiling the sketch on the host PC instead of on the UNO Q's Linux machine could certainly be a way to improve the efficiency of the code, run, stop, repeat App development cycle by reducing the time required to start the App incurred by compiling the sketch. Arduino's developers are tracking this potential improvement.

I have reported this to the Arduino App Lab developers:

I have submitted a report about this to the Arduino App Lab developers. I'll post an update here if I receive any news from them on the subject.

I have submitted a report about this to the Arduino App Lab developers. I'll post an update here if I receive any news from them on the subject.

Initially, I wasn't able to reproduce this. Here is how it looked for me:

The gray selection highlight I had gives a much better contrast for the brackets and code items like the matrix. However, it is significantly worse for comments.

I hypothesized that the colors are affected by the operating system theme. So I tried changing my operating system theme to a dark theme (I was using a light theme before) and sure enough after that my colors matched those in the customer screenshot. However, I found that the editor colors did not go back to the previous gray background theme even after I changed my operating system setting back to the original light theme. I also found that I have the lavender background theme on my Linux and macOS machines, even though those both have a light theme (and I have never changed the theme settings on those machines). So I don't know what is going on with the theme in App Lab, but this problem could at least be significantly improved if we could figure out how to force it to use the gray highlight theme.

I have submitted a report about this to the Arduino App Lab developers. I'll post an update here if I receive any news from them on the subject.

You can use Ctrl+F once again (it acts as a toggle). However, the established convention is that this should be done by Esc, and that is what we have in our muscle memory. I have submitted a report about this to the Arduino App Lab developers. I'll post an update here if I receive any news from them on the subject.

I'm not familiar with the user of the middle mouse button for that purpose. The common convention is to use Ctrl+left mouse button to set multiple cursors. This is supported by Arduino App Lab.

I see you created a dedicated topic for that subject. I provided a response over there:


I'll try to find time to circle back to the rest of your feedback later.

1 Like

Thanks @ptillisch

I know that is the standard keyboard bindings for linux, which is different than windows.
One document I found for sublimetext shows some of this:
Column Selection

I know the Arduino IDE 2.x I found similar mouse usage bindings. Which I adjust
to when using linux. The ctrl+left did not work on my windows machine with
App lab, will try again later maybe directly on Q

Thanks again

Sorry, bad wording, should have been more something like:
How do I create a whole new APP that use both Linux and Arduino without
having to use the App Lab?

Maybe the answer is along the lines mentioned in the thread:

Of using arduino-app-cli. I have not tried this at all yet, but sounds interesting

Thanks again

Thanks for the clarification. Arduino App CLI will be an excellent tool for this use case.

Note that, even when you are using the UNO Q in "hosted mode", Arduino App CLI is designed to run on the Linux machine of the UNO Q board, not on your PC. So you will still need to run the arduino-app-cli commands from a shell terminal on the UNO Q. When using the board in ''hosted mode", you can open a terminal via the USB connection using adb shell, or via the Wi-Fi connection using SSH.

The App files must be stored on the UNO Q's drive, so you will also need to find an efficient way to work with the files from your PC. I think the best way to do that is via a Samba share.

1 Like

Thanks,

For what it is worth, on Windows, for SSH, I most often use KiTTY
KiTTY, a free telnet/ssh client for Windows

Which is based on PuTTY
PuTTY: a free SSH and Telnet client

On Ubuntu I have been using: Tabby Terminal. I also have it installed on WIndows
but have not converted to using it as much.
Tabby - a terminal for a more modern age

For File Transfers, I typically use WinSCP
WinSCP :: Official Site :: Free SFTP and FTP client for Windows

I think that having to explicitly perform file transfers would make App development too tedious. The "Remote - SSH" VS Code extension suggested by @milanriha looks quite promising:

That would be an alternative to the Samba share approach I suggested. I guess if you are going to be using SSH anyway to run the arduino-app-cli commands on the UNO Q's Linux machine, you might as well also use it to access the App source files.

1 Like

Here is a Winscp window as well as a kitty window, both looking at the Q
And to launch WinSCP, there is a menu item in KiTTY to launch it and it passes
in the same username and password


The left pane is on my Windows D: drive and the right pane is on the
Q - for some reason mine came with the name Bambie...

For command line oriented stuff, at one point I was playing with the file transfer
command line tools that come with PuTTy.

C:\>pscp -h
PuTTY Secure Copy client
Release 0.83
Usage: pscp [options] [user@]host:source target
       pscp [options] source [source...] [user@]host:target
       pscp [options] -ls [user@]host:filespec

Side note: At one point years ago, I had hacked up boards.txt and platform.txt on Teensy boards
to allow me to build a sketch on the Teensy, and then the upload would use
the pscp command to transfer the binary file to a specific directory on an RPI (probably RPI 2), and I had a script running on the RPI, that when I saw a file change, it would
use a version of teensyloadercli that ran on the RPI to program the teensy connected
to it... (otherwise I manually copied it using winscp and and command prompt to
issue the command...

That was probably the last time I played with the pscp command.

Depends on the toolset. At my day job, many of our products use a Linux front end with a microprocessor handling the real-time needs. The UI framework supports both Linux and Windows, so a lot of UI developers opt to do 90% of their work on Windows and then push the files over to Linux for integration testing. It works pretty well.

I have to confess that this is the first time that I’ve heard of an IDE that does both aspects of the system.

With the Samba share approach I suggested, you wouldn't even need a special capability in the IDE. You would simply open the files on the share drive in any development tool you like.

I use this approach to have a simple NAS system that consists of a Raspberry Pi SBC providing a Samba share so that I can access the files stored on that share from any of my computers on the network. I have a collection of computers of each significant operating system and CPU architecture connected to a KVM switch, used to facilitate the support and testing work I do for Arduino and so often find the need to share files between computers.

Is there a UNO Q specific tutorial showing how to set up a Samba share for the project directories on the UNO Q? I feel this would be very useful for some of us.
EDIT
A google search gives me a Google AI generated procedure. I may try it but no idea if it is viable.
EDIT2
I found the following (which I am guessing is more trustworthy)

If somebody interested it looks like this.

3 Likes

These two problems should be resolved in the latest version 0.2.4 of Arduino App Lab. Arduino App Lab auto-updates, so you should not need to take any special action to receive the fixes.

1 Like