惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
IT之家
IT之家
博客园 - Franky
Stack Overflow Blog
Stack Overflow Blog
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
H
Help Net Security
V
V2EX
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
博客园 - 叶小钗
J
Java Code Geeks
博客园 - 【当耐特】
月光博客
月光博客
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件

Linux.org

PocketBeagle 2 TechLab - Part 1 Arduino Uno Q - LED Matrix - Rain Python Series Part 25: Canvas Widget - Part 2 Proxmox VE Series Part 5: Windows Virtual Machine PocketBeagle 2: Setup, Imaging, and Internet Access Orange Pi 6 Plus and Pimox 8.4.10 IRC is back on linux.org R36Pro Handheld with Linux ArkOS The Linux.org Story Python Series Part 25: Canvas Widget - Part 1: The Canvas and Its Drawable Objects Proxmox 04 - Linux Virtual Machine Banana Pi R4 (BPI-R4) - DHCP for Multiple Subnets Run Windows Apps on Linux with WinBoat Getting Started with the Radxa X5 SBC on Linux Python Series Part 23: Text Widget - Part 1 Proxmox VE Series Part 3: Basic Configuration Banana Pi R4 (BPI-R4) Python Series Part 23: Text Widget - Part 1 Proxmox VE Series Part 2: Installing Proxmox
Arduino UNO Q: A Debian Linux Board for Headless Projects
invalid@example.com (Jarret B) · 2026-08-12 · via Linux.org

The Arduino UNO Q is a new board that runs Debian.

Using the Arduino UNO Q allows you to run headless, no monitor, since it does not have an HDMI Port as most other Single Board computers (SBC), but it is a very useful board for learning.

Technical Specs

Just looking at the UNO Q, as shown in Figure 1, you can see it is a much smaller board compared to a regular SBC.

Figure 1.jpg

FIGURE 1

The specs are:

  • Module
    • Qualcomm Dragonwing™ QRB2210
  • CPU
    • Quad-core Arm® Cortex®-A53 @ 2.0 GHz
  • MCU
    • STM32U585 Arm® Cortex®-M33 up to 160 MHz
  • GPU
    • Adreno 702 GPU @ 845 MHz
    • 3D graphics accelerator
  • ISP
    • 2x Image Signal Processor (13 MP + 13 MP or 25 MP) @ 30 fps
  • Operating System
    • Debian Linux OS with upstream support
  • Storage (1 of these)
    • 16 GB (ABX000162) eMMC (has 2 GB of LPDDR4 RAM)
    • 32 GB (ABX00173) eMMC (has 4 GB of LPDDR4 RAM)
  • Media Interfaces
    • AudioMicrophone IN / Headphone OUT / Line OUT and Ear OUT on JMISC header
  • User Interfaces
    • RGB LED
  • Operating System
    • Arduino Code on Zephyr OS
  • Memory
    • Flash 2 MB
  • Wi-Fi
    • Wi-Fi® 5 Dual-band 2.4
    • 5 GHz with onboard antenna
  • Bluetooth
    • Bluetooth® 5.1 with onboard antenna
  • USB
    • USB-C with host/device role switching, power role switch and video output
  • Voltage
    • +5 VDC max at 3A

Initial Connection and Update

When you connect a PC to the USB-C connection on the UNO Q, the board, it should power up and start booting. During the boot process, the LCD matrix should show an infinity symbol. After the Debian system starts, the LCD matrix should show a heart when the system boots completely. There should be some animation with the heart.

You can use two methods to connect to the UNO Q:

  • Arduino App Lab
  • Android Debug Tool (ADB)

You can find the App Lab at ‘https://www.arduino.cc/en/software/#app-lab-section’. Here, you will need to select the Operating System you are using before you download the image.

Before you install the App Lab, you need to get the Host Linux system to allow access over the USB port. To do this, create the file ‘/etc/udev/rules.d/60-Arduino-UNO-Q.rules’. Place the following code into the file:

Code:

echo \

'# Operating mode

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0078", MODE="0660", TAG+="uaccess"

# EDL mode

SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0660", TAG+="uaccess"' \

| \

sudo \

tee \

"/etc/udev/rules.d/60-Arduino-UNO-Q.rules" \

&& \

sudo \

udevadm control \

--reload-rules \

&& \

sudo \

udevadm trigger

You can run the code with ‘sudo sh /etc/udev/rules.d/60-Arduino-UNO-Q.rules’. To test that the script has run correctly, use the command:

Code:

lsusb | grep -E "2341:0078|05c6:9008"

The output should show the bus that you connected to the Arduino on when you run the command, as in:

Code:

Bus 003 Device 007: ID 2341:0078 Arduino SA UNO Q - UQ

For Linux, you download it and then you can extract it. For example, my filename is ‘arduino-1.8.19-linux64.tar.xz’. You can use ‘File Roller’, or the like, to extract the files in the Graphical User Interface (GUI). You can use a command as follows, but change the filename to match your download:

Code:

tar -xvf ArduinoAppLab_0.4.0_Linux_x86-64.tar.gz

You will then change into the extracted folder. The name will depend on the version of the program:

Code:

cd ArduinoAppLab_0.4.0_Linux_x86-64

Then you simply start the program ‘./arduino-app-lab’. The program should be like that in Figure 2.

Figure 2.jpg

FIGURE 2

Here, you can see that it has detected the UNO Q. After the system detects the device, click on the image.

Next, you will specify the keyboard layout and the Hostname of the UNO Q, as in Figure 3. Once you have set both options, click on ‘Next’.

Figure 3.jpg

FIGURE 3

The next step is to select the Wi-Fi network and then specify the password to connect to the chosen wireless network.

After connecting to the Wi-Fi, the app will check for any updates. If it finds updates, a window similar to that in Figure 4 appears. Here, you can see that the updates will include those items listed.

Figure 4.jpg

FIGURE 4

After clicking on ‘Install Updates’, it downloads the updates and then sends the updates to the UNO Q.

Once it completes the updates, it prompts you to restart the App Lab, as shown in Figure 5.

Figure 5.jpg

FIGURE 5

Updating the Arduino Q Operating System

If you should cause issues with Debian, which is pre-installed on the Arduino UNO Q, you can reinstall Debian.

You need to note that this requires a jumper for two pins. The pins are for the jumpers labeled as ‘JCTL’. If you set the board so you can read the labels, the pins are in the top left corner and you jumper the right-most pins, as shown in Figure 6.

Figure 6.jpg

FIGURE 6

To get this to work, you need to download an app on your host Linux system as well as have the UNO Q hooked up by a USB-C cable.

You can find the file you need at ‘https://www.arduino.cc/en/software/#flasher-tool’.

Once you download this file to your default download directly, usually ‘~/Downloads/’ you need to use your compression tool to extract the file, or you can right-click on the file and select ‘Extract Here’.

After this is done, you need to open a terminal and use the following commands after you have hooked up the UNO Q with the jumper on it:

Code:

cd Downloads
cd arduino-flasher-cli<TAB> (the TAB key should fill in the version number in the folder name)
arduino-flasher-cli list

The last command will cause the app to contact the Internet and get a list of images that you can place on the UNO Q. The list generated when I ran the app is:

Code:

VERSION LATEST

20251229-457 ✓
20251127-441
20251024-412
20251006-395
20251002-387
20250807-136

You should see a similar list that is ordered by date and the newest is at the top of the list. You can specify the image you want, or you can use the parameter ‘latest’ to get the newest image:

Code:

sudo arduino-flasher-cli flash latest

Boot the UNO Q and wait a bit to start the flasher/ for the board to initialize properly. Once you start the flasher, it should prompt you if you want to proceed with the download and flashing of the board. Type in ‘yes’ and press enter. The app should then show it is downloading the file you specified. Once the download is complete, it will unzip the file and start writing to the UNO Q. The program sends each file separately to the UNO Q and shown in a line similar to:

Code:

qupfw_a [##################################################] 100.00

flashed "qupfw_a" successfully

This should occur for each file written on the UNO Q.

Once the flashing is complete, you’ll see a message similar to:

Code:

13 patches applied

partition 0 is now bootable

The board has been successfully flashed. You can now power-cycle the board (unplug and re-plug). Remember to remove the jumper.

You need to remove power from the UNO Q, remove the jumper, and then restore power to the board. The LED Matrix should show a moving Infinity symbol, then a heart and the LEDs should go blank, showing it boots properly into the new OS. You can connect with App Lab, as described above, and set up the board again since it is a new install and no configuration is on the system.

Even though you may have installed the latest image, the system may perform a software update for:

Code:

arduino:zephyr
arduino-app-cli
arduino-app-lab
arduino-cli
arduino-router

Since the configuration is being managed by the App Lab on the Host system, the update will also check for an update for the App Lab as well.

It is possible for the update to take longer than the actual OS flash.

After the update is complete, you’ll see a window that shows information about ‘What’s new’. Once this is closed, you are then in the App Lab and can run example programs or create your own.

Adding Ports

Now, it needs to be noted that the only available port is a USB-C 3.2 Gen 1 port. For fun, I tried the J5 Create JCD371 hub. This is a USB-C hub that has 2 USB 3.1 ports, a USB-C PD 2.0 charging port and 4K HDMI port. It worked well to allow the UNO Q to operate as a stand-alone SBC. This didn’t allow for much expansion for adding ports except for the HDMI port. Anything else, I needed to have a USB-A connection, such as USB-A to Ethernet.

The next option I tried was the J5 Create JCD542. This is a more expansive choice since it has the following ports available:

  • USB-C PD 3.0 100W power throughput
  • 3 USB-A 3.0 ports
  • 4K HDMI port
  • HDMI port
  • Aux port for mic/speaker
  • SD and micro-SD card slot
  • Gigabit Ethernet port

The connection to the host system is a USB-C 3.1 Gen 1 connector which connects to the Arduino UNO Q port.

The requirement of the JCD542 is that the host system must support ‘DisplayPort Alt Mode’, which the Arduino UNO Q supports. The ‘DisplayPort Alt Mode’ is when the USB-C chip allows for video to be sent through the USB-C port.

I had to use the 4K HDMI port and not the HDMI port for the video to work properly with one monitor.

By using this hub, I could make the Arduino UNO Q feel more like a full-blown PC because I could expand it with more devices.

There was an issue with the AUX port on the JCD542, but since the Arduino UNO Q has Bluetooth and it was easier to just connect a Bluetooth device for playing audio. If using a monitor with built-in speakers or a television for video, the audio would play through the HDMI connection.

Setting Up a Printer Queue

You can use the Arduino UNO Q as any type of server type, but for an example, we will set up a printer queue to a network printer.

To set up printer sharing, you need to install the ‘Common Unix Printer System (CUPS)’:

After the system installs the service, we need to enable and start it:

Code:

sudo systemctl enable cups
sudo systemctl start cups

If you want to use the current user, in this case it should be ‘arduino’, to manage the printers, then add it to the ‘lpadmin’ group:

Code:

sudo usermod -aG lpadmin $USER

By default, you can connect to the web administration for CUPS from the host system only. The web address is ‘

http://localhost:631

’ from the host system.

Once this is done, you need to restart the CUPS service with the command:

Code:

sudo systemctl restart cups

After opening the website ‘<a href="http://localhost:631/">http://localhost:631</a>’, you should then see a screen similar to Figure 7.

Figure 7.jpg

FIGURE 7

Click on the ‘Administration’ tab at the top of the website and you should see a screen like Figure 8.

Figure 8.jpg

FIGURE 8

Click on ‘Find New Printers’. Turn on the local or network printer. It should generate a list of printers found. In the list, find the one you want to add to the CUPS server and click on ‘Add This Printer’.

Now, it shows a new list that gives the name of the printer, description, location, connection and sharing option. Definitely check the ‘sharing’ option. You can change all options except the connection, which is read-only. Next, click on ‘Continue’.

The next screen will show all the settings you previously made and will let you select a printer make or a PPD file. Select the make and click ‘Add Printer’.

Now you have three tabs: ‘General’, ‘Banners’ and ‘Policies’.

The ‘General’ tab lets you set the paper type, source, sets 2-sided printing (if available), quality and scale.

For ‘Banners’, it lets you specify if the system prints a banner with each print job.

‘Policies’ allows you to set up rules for the printer.

Once you've set all this, the system initializes the printer on the UNO Q and you can add the printer from other devices on the network easily. Add a printer and let it find all the printers. Choose the printer and it sets up that printer on your remote Linux system.

Conclusion

The Arduino UNO Q is a powerful little board that you can definitely expand with hub devices if you want to expand it.

There is a lot you can do with the board, such as programming. If you are into programming and using an SBC as a device to configure as you need, you definitely need to look into the Arduino UNO Q.