Main Menu

search

You are here

Uno-Q Operation & Programming

[last update: 2026-07-21]
Arduino boards

Uno-Q home page
-----



      On This Page:
  • Programming Modes
  • What's actually happening
  • Disable annoying sleep mode
  • Find installed packages
  • Create App to run at startup
  • Shutdown procedure
  • Problems
  • ...


---------------------------------------------------------

  • Programming modes:
    • Using App Lab
      (link to:) Develop Apps
      • As the name implies, this involves "App's", which are a set of programs/files that execute as an integrated whole.
      • The main, first-level driver,
        is a python program, main.py
      • Then there may be a .ino sketch to run on the Arduino MCU,
      • ... and there may be other components...
      • The App Lab software bundled with the Q comes with bunches of example Apps.
        You can copy them, rename them to your custom name, and edit them to do whatever you want.

      -----

    • Using arduino-app-cli:
      (link to:) arduino-app-cli
      arduino-app-cli is the command-line engine that App Lab uses. You can manage your Apps by executing arduino-app-cli directly,
      either from a terminal on the Q or via SSH from a host computer.

      -----

    • Using Arduino IDE (ie. by itself, without using App Lab)
      • As far as I can find, the Arduino IDE does not come pre-installed on the Q
      • To install it:
        haven't figured out how to do this yet, problems with network...
      • When you run a sketch from the Arduino IDE, the Linux MPU is uninvolved, unaffected.

    --------------------------------------

  • What's actually happening:
    • per google AI:
        "Because the Arduino Uno Q is a hybrid device, running a program triggers a complex interaction between its dual architectures: a Linux-based Single-Board Computer and a dedicated microcontroller.
        When you hit "Run" in Arduino App Lab, it compiles the code, builds Linux components, flashes the sketch to the microcontroller, and bridges the two environments.

        When you execute code on an Uno Q, the process divides into specific layers:

        Compilation: The App Lab IDE compiles your Python, JavaScript, or C++ project into actionable bytecode or binaries.
        https://www.youtube.com/watch?v=PZCBLSR4GCY

        The Hardware Bridge: Your logic is split. High-level processing (like web serving, AI, or data APIs) is executed on the Qualcomm Dragon Wing QRB 2210 System-on-Chip (running Debian Linux).
        Precise hardware controls (like reading analog sensors or driving motors) are sent via UART to the dedicated microcontroller

        Direct Execution: The Linux layer runs code either as standard background scripts or inside pre-bundled Docker containers.
        The microcontroller directly executes your low-latency instructions"

    --------------------------------------

  • Disable annoying sleep mode:
    • Execute (some version of) xset after every boot:
        $ sudo xset s off ... this didn't work
        $ sudo xset s off -dpms ... this worked
    • suggestions from forums:
      other settings to test:
      xset -dpms
      xset dpms 0 0 0
      xset s noblank

      I also have found another possible option.
      On my Linux laptop, which also runs XFCE, I have a battery icon in the panel. If you click it, there is a slider switch for presentation mode.
      The thing is, this applet is not installed on the UNO Q, but it can be installed with:
      sudo apt install xfce4-power-manager

      After that:
      right-click the panel and click Panel Preferences
      click on the Items tab
      click the +Add button near the bottom
      a list of plugins will appear. Select Power Manager and the battery icon will be added to the panel
      close the list of plugins. The Power Manager applet can then be selected and optionally moved to whatever position on the panel is preferred

      When the battery is clicked, the Presentation Mode switch should appear. This option might be more convenient than entering commands at the terminal, although I haven't tested it yet.

    --------------------------------------

  • Find installed packages:
    alt-F2 worked on my 0.9.0 board to bring up a list of installed packages for xfce
    this also worked: $ apt list --installed
    or perhaps: find xfce menu, find synaptic package manager, select Status (lower left sidebar), select installed ... couldn't figure this one out...
    --------------------------------------

  • Create App to run at startup:
      python code:
      import subprocess

      # Run a simple command (e.g., 'ls -l' on Unix or 'dir' on Windows)
      result = subprocess.run(["ls", "-l"])

      # Check the exit code (0 means success)
      print("Exit code:", result.returncode)

    --------------------------------------

  • Shutdown:
      (Google AI recommended procedure:)
    • Shut down all applications and running programs
    • Open a terminal
    • execute:
        $ sudo shutdown -H now
    • When the UnoQ LED matrix display shows its reboot graphics (?)
      it is safe to remove power

    --------------------------------------

  • Problems:
    • temporary failure resolving 'deb.debian.org'
      This error came when trying to: $ sudo apt-get update
      • google AI says: your system cannot access a DNS server to translate the domain into an IP address
      • Fix: Quickly fix this by forcing a public DNS server. Open your /etc/resolv.conf file with sudo nano /etc/resolv.conf and add the following lines:
        nameserver 8.8.8.8
        nameserver 1.1.1.1
      • OR: If you are running into this inside a Docker container, this is a known issue with the default bridge network.
        You can bypass it by appending public DNS servers to your Docker configuration:
        Edit or create the file at /etc/docker/daemon.json. Add the DNS configuration:
          {
          "dns": ["8.8.8.8", "1.1.1.1"]
          }

        Restart the Docker daemon by running sudo service docker restart.
        failed "control process exited with error code"
        "see 'systemctl status docker.service'
        and 'journalctl -xeu docker.service' for details."
        (link to:) stackoverflow forum post

      • from stackoverflow:
        Specifying a DNS server for docker containers helped me.
        Create a /etc/docker/daemon.json file with this content:
          {
          "dns": ["8.8.8.8", "8.8.4.4"]
          }

        and restart the docker service:
        sudo service docker restart

      • good: https://cyberpanel.net/blog/start-docker-daemon

      ----------

    • docker failed:
      • My very first attempt at creating an App - arrgghhh
      • The default place-holder App when you create a new one
        does nothing but print "hello world" and then sleep for 10 sec, then repeats.
      • However it failed to run, giving errors:
        failed to list apps status: failed to list containers: cannot connect to the Docker daemon at unix:// ,,,
        Is the docker daemon running?
      • Attempted to restart with:
        $ sudo service docker restart
        gave errors:
        Job for docker.service failed because the control process exited with error code.
        See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

      ----------

    --------------------------------------