UNO Q and open source

Hi,

what will be the open source support for the UNO Q board ?

I do no see datasheet for QRB2210 and no explanation of what will be available at open source/close source for this platform.

To my mind, to have a useful platform for hobbyist, it should be fully open source.

Without such information, I prefer to use rpi like platform.

Hi @matccc.

The board's schematic and PCB design files have been released under the CC BY-SA 4.0 license. They are available for download from the links on the board's documentation page:

https://docs.arduino.cc/hardware/uno-q/


The open source Debian Linux operating system is used on the board's microprocessor.


The Arduino sketches that run on the board's STM32U585 microcontroller are built on the ["Arduino Zephyr Boards" platform, which is offered under the Apache 2.0 open source license:

The platform's core is based on the open source Zephyr OS:


Arduino IDE, which may be used to develop sketches for the board is offered under the AGPL 3.0 open source license.


Arduino CLI, which may be used to develop sketches for the board is offered under the GPL 3.0 open source license.


The new Arduino App Lab development tool that is used to create projects for the UNO Q board is offered under the GPL 3.0 open source license (the source code is available for download from the link here, and the GitHub repositories will be made public soon).


Quite a few different pieces of software are used with the UNO Q in the common use case, and of course the user has the freedom to use many others. So it is difficult to provide a comprehensive answer to such a question. If you have any doubts about the licensing of any other aspects, just let us know and we'll try to clarify.

It is available for download from the link on this page:

Keep in mind that the Raspberry Pi boards are not open source hardware.

You also won't find datasheets for the Broadcom microprocessors used by the RPi SBCs (though the situation is better for the Raspberry Pi RP2040 and RP2350 microcontrollers).

1 Like

I wonder if Qualcomm are aiming at hobbyists or at a more lucrative market

I doubt that hobbyists are are the main reason.

Though it's fair to say that a lot of other large companies and electronics distributors have begun to realise the importance of appealing to an audience that could become the big developers and buyers in the future.

It used to be said that whichever car you took your driving lessons in, you went on to buy for yourself. I took my driving test in a Triumph Herald famed for it's tight turning circle, and guess what? It was the first car I bought.

2 Likes

What makes you think that the Raspberry Pi is in any way open source?

It is not, it has a great deal of the display software that is only available via a “blob” of unreachable software..

It is much more closed than the Arduino is going to be with the new chip. Remember nothing is developed for hobbyists , we just hang off the coat tails of industry.

1 Like

STM32U585

For the STM it is ok. My point that about qualcomm chip.

QRB2210 It is available for download from the link on this page:

That is not a real datasheet on this page. It is not 87 pages. No register description. No boot information, ...

Raspberrypi try to provide more datasheet and open source as possible. To open new hardware as much as possible.
So far with qualcomm chip I used, lot's of stuff was lacking documentation and where using close source binaries.

What make you think it will be better with the qualcomm chip ?

It is years that qualcomm is trying to develop robotic platform.

You can check comment on
Archived: Qualcomm Snapdragon Flight Kit — Copter documentation mentioning it was difficult to use the platform (lack of documentation, licensing issue, ...)

Recommandation was to use a rpi platform (navio2).

ardupilot is/was using some arduino platform.

Are you intentionally or accidentally not reading the comments pointing out that the Pi is NOT open source?
see post 2.

Question I have besides OpenSource is that is the Qualcom chip going to be run ROS. Then it will get interesting.

Also how is support for cameras - is that through the QualComm chip? Which means it through linux???

The hardware docs mention USB-C Linux camera support and they also mention MIPI-CSI camera support which I read as cameras on the Arduino side.
Sounds like you have a lot of flexibility and choices.

1 Like

A couple of machine vision-based projects were presented during the announcement stream. They are light on technical details, but maybe still of interest:

I think it would generally be done that way. The Qualcomm chip is ideally suited for demanding image and video processing tasks. The "Bricks", which provide reusable capabilities such as machine vision for the "Apps" created with Arduino App Lab run on the Linux machine.

But of course the STM32 microcontroller is quite capable and of course you have the freedom to use that as is appropriate for your project.

1 Like

@ptillisch

Thanks for all the info and links now to go through the videos.

PS> Already got one on pre-order and very familiar with zephyr on Arduino. Should be interesting. First impression was that it reminder me a LattePanda or and the other board that had both the arduino and anoter SBC type chip on it - forgot he name.

You are welcome. There is another demonstration of using the board in machine vision applications here:

https://www.youtube.com/live/4HFb-FGQ8_w?t=2652

Are you ignoring the answer of @ptillisch?

I was at the Open Source conference in New York when the audience was asked to rase their hands if they thought that the Raspberry Pi was open source. Not many people put their hand up and those who did were told in no uncertain terms it was not open source. This is an organisation that is the authority on those things.

1 Like

Would it be from GitHub - arduino/linux-qcom: Linux kernel source tree (Arduino fork to mainline UNO Q) ?

If so, where can I find the configuration or source code for the Golang router used by the Arduino Q for inter-processor communication?

Could you confirm the transport used for this ?

It seems to be Serial1 for the MCU @ 115200 bauds - would it be that link (highlighted in red)?

Hi @J-M-L.

Correct.

Related is the repository where the operating system image generation infrastructure is hosted:

It is here:

I confirm:

1 Like

Arduino is definitely fully open source by definition. Its the only way a beginner like me can make advanced hardware run.
Ever try to make a LCD character display run on C and print 'hello world' on another compiler? Try that and then appreciate just how open source Arduino truly is. Constantly improving with a community of people behind it.
People don't like it because it's 'easier'
And people like me love it because I can understand it without clouding my brain with hexadecimal memory addresses :relieved_face:

I wrote this some time ago, you might want to read this.

Why Hex is easy

You might have come across the hexadecimal notation and thought that's complicated I don't understand it, all those numbers and letters it is hard.

Well every programmer and hardware designer uses hex for one simple reason, it is easy, far easer than the alternative. The only snag is that there is a very small learning curve, so small in fact that I like to think of it as a learning bump. I would like to explore what that is and why you should use it.

When we teach children to multiply say three times four, often to get them started we say write down a group of four marks. Then repeat that group three times and finally add up all the marks on the paper to get the answer.

That is supposed to get them the basic idea, but as a long term strategy it is a dead end. If you are not careful this becomes their only strategy for multiplication and I have seen 14 year olds multiply six by ten by covering the paper with marks. In this case all that is needed is a simple application of multiplication tables. Bear this in mind as we consider hex.

Now inside every computer information is stored as a collection of binary bits, that is a collection that we can represent by writing down a list of zeros and ones to represent each state. Inside the computer it is not a sequence of zeros and ones, it is in fact a system of switches where each switch can be open or closed.

To make life easer when designing a computer we arrange these individual bits into groups of eight and call these groups a byte. So each byte consists of eight bits, but what do they mean?

Well they can mean absolutely anything we want them to mean, depending on the context we find them we can interpret the bytes as numbers, text, computer instructions or patterns of lights to turn on. To the computer they are all the same, just a collection of bits. That is an important thing to remember, all a computer does is manipulate bits, it is us that put a construct on those bits.

However what ever they represent we have to have some way of representing them and the simplest is by writing down the string of zeros and ones, so a specific byte might be represented by say 00110010.

Now I don't know about you but that is a bit of a difficult thing to cope with, for a start it is a long sequence and there is very little encoding going on. That is each place in that representation can only be one of two things. That is great if you are a computer but that is not how the human mind works best. We work best when there is some chunking going on, that is to express the sequence with a shorter length but more variability of what can be in each place.

the obvious solution would be to turn that sequence into a decimal number by having each bit represent a power of two. So starting at the right hand side we have the first bit or bit zero as we call it represent two to the power of zero or one.

So if the right hand most bit is a one then that contributes a one to the whole number. We can then move to the left and the second bit represents two to the power of one, or two, and so on down the list. ending up with the left hand most bit representing two to the power of seven or 128. Then we add up all the bits in that byte that have a one in them according to their place value to get the final number of 146. This is then a decimal representation of that bit pattern. so do we have it cracked? I think not it requires quite a bit of mental gymnastics and the reverse operation, getting from the decimal representation to a bit pattern is definitely a pencil and paper job.

But we are half way there to making it easy. Let's consider breaking the byte into two, that is two groups of four bits. A group of four bits is rather amusingly called a nibble, not quite a byte. In binary this already looks much simpler we would write 0110 0011.

I don't know about you but that space in the middle makes it so much easer to keep your place. Now suppose we take each of those groups and apply the same decimal conversion to that as we did to the previous byte we get the number 63.

That is fine and easy to remember and you can do it quite simply in your head, there are only four add ups to do and they are only 8 + 4 + 2 + 1 at the worst. In fact the first group was 4 + 2 = 6 and the second 2 + 1 = 3. Great that was easy.

But hang on, what happens when we have a result that is more than 9 in a group. Suppose we had 0000 1010, that would give us zero for the first group and 10 for the second. so the number we would have would be 010, we wouldn't know if this was a three nibble number 0000 0001 0000 or a two nibble number 0000 1010.

To get round this problem we don't use numbers to represent values greater than nine we use letters. So if we get to a value of ten when we add up our nibble we call it A or a.

if we get eleven we call it B and so on up the alphabet until fifteen which is F. In that way we can stick to one position in our number representing four bits or a nibble. We have shortened the sequences length and chunked up to a good degree.

2 Likes

Nice and interesting read although I think that by “clouding my brain,” OP meant not having to clutter their mind with low-level details like I2C or register addresses, as those are defined and available in the open-source Arduino or 3P libraries.

I don’t think OP inferred hexadecimal was hard to read, just that you don’t need to memorize those values.

(But I liked your explanation)

PS: In France nowadays pupils in grade CM1 or CM2 (around age 9 to 11), learn about base 2, 10, and 16, not necessarily for computers (although it’s mentioned for binary), but to understand that numbers can be written in different systems and to practice converting between them. So I found it’s not a problem discussing HEX with teens later on in computer clubs / FabLabs.

1 Like

Thank you I'm always up for learning.
And I will look into what you wrote and do some further learning it will be good to advance on that. (Instead of just using a calculator it's always good to understand)
But yes low level addresses and registers definitely fog my brain with too many numbers lol.